diff options
author | Christopher Speller <crspeller@gmail.com> | 2018-04-16 05:37:14 -0700 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2018-04-16 08:37:14 -0400 |
commit | 6e2cb00008cbf09e556b00f87603797fcaa47e09 (patch) | |
tree | 3c0eb55ff4226a3f024aad373140d1fb860a6404 /vendor/github.com/mattermost/rsc/google/gmailsend | |
parent | bf24f51c4e1cc6286885460672f7f449e8c6f5ef (diff) | |
download | chat-6e2cb00008cbf09e556b00f87603797fcaa47e09.tar.gz chat-6e2cb00008cbf09e556b00f87603797fcaa47e09.tar.bz2 chat-6e2cb00008cbf09e556b00f87603797fcaa47e09.zip |
Depenancy upgrades and movign to dep. (#8630)
Diffstat (limited to 'vendor/github.com/mattermost/rsc/google/gmailsend')
-rw-r--r-- | vendor/github.com/mattermost/rsc/google/gmailsend/send.go | 370 |
1 files changed, 0 insertions, 370 deletions
diff --git a/vendor/github.com/mattermost/rsc/google/gmailsend/send.go b/vendor/github.com/mattermost/rsc/google/gmailsend/send.go deleted file mode 100644 index ace6eb12b..000000000 --- a/vendor/github.com/mattermost/rsc/google/gmailsend/send.go +++ /dev/null @@ -1,370 +0,0 @@ -package main - -import ( - "bufio" - "bytes" - "encoding/base64" - "flag" - "fmt" - "io" - "net/smtp" - "os" - "regexp" - "strings" - - "github.com/mattermost/rsc/google" -) - -func enc(s string) string { - // TODO =? .. ?= - return s -} - -type Addr struct { - Name string - Email string -} - -func (a Addr) enc() string { - if a.Name == "" { - return "<" + a.Email + ">" - } - if a.Email == "" { - return enc(a.Name) + ":;" - } - return enc(a.Name) + " <" + a.Email + ">" -} - -type Addrs []Addr - -func (a *Addrs) String() string { - return "[addrlist]" -} - -func (a Addrs) has(s string) bool { - for _, aa := range a { - if aa.Email == s { - return true - } - } - return false -} - -func (a *Addrs) Set(s string) bool { - s = strings.TrimSpace(s) - if strings.HasSuffix(s, ">") { - j := strings.LastIndex(s, "<") - if j >= 0 { - *a = append(*a, Addr{strings.TrimSpace(s[:j]), s[j+1 : len(s)-1]}) - return true - } - } - - if strings.Contains(s, " ") { - fmt.Fprintf(os.Stderr, "invalid address: %s", s) - os.Exit(2) - } - *a = append(*a, Addr{"", s}) - return true -} - -func (a *Addrs) parseLine(s string) { - for _, f := range strings.Split(s, ",") { - f = strings.TrimSpace(f) - if f != "" { - a.Set(f) - } - } -} - -func (a Addrs) fixDomain() { - i := strings.Index(acct.Email, "@") - if i < 0 { - return - } - dom := acct.Email[i:] - for i := range a { - if a[i].Email != "" && !strings.Contains(a[i].Email, "@") { - a[i].Email += dom - } - } -} - -var from, to, cc, bcc, replyTo Addrs -var inReplyTo, subject string -var appendFile = flag.String("append", "", "file to append to end of body") - -var acct google.Account -var acctName = flag.String("a", "", "account to use") -var inputHeader = flag.Bool("i", false, "read additional header lines from stdin") - -func holdmode() { - if os.Getenv("TERM") == "9term" { - // forgive me - os.Stdout.WriteString("\x1B];*9term-hold+\x07") - } -} - -func match(line, prefix string, arg *string) bool { - if len(line) < len(prefix) || !strings.EqualFold(line[:len(prefix)], prefix) { - return false - } - *arg = strings.TrimSpace(line[len(prefix):]) - return true -} - -func main() { - flag.StringVar(&inReplyTo, "in-reply-to", "", "In-Reply-To") - flag.StringVar(&subject, "s", "", "Subject") - flag.Var(&from, "from", "From (can repeat)") - flag.Var(&to, "to", "To (can repeat)") - flag.Var(&cc, "cc", "CC (can repeat)") - flag.Var(&bcc, "bcc", "BCC (can repeat)") - flag.Var(&replyTo, "replyTo", "Reply-To (can repeat)") - - flag.Parse() - if flag.NArg() != 0 && !*inputHeader { - flag.Usage() - } - - var body bytes.Buffer - input := bufio.NewReader(os.Stdin) - if *inputHeader { - holdmode() - Loop: - for { - s, err := input.ReadString('\n') - if err != nil { - if err == io.EOF { - break Loop - } - fmt.Fprintf(os.Stderr, "reading stdin: %s\n", err) - os.Exit(2) - } - var arg string - switch { - default: - if ok, _ := regexp.MatchString(`^\S+:`, s); ok { - fmt.Fprintf(os.Stderr, "unknown header line: %s", s) - os.Exit(2) - } - body.WriteString(s) - break Loop - case match(s, "from:", &arg): - from.parseLine(arg) - case match(s, "to:", &arg): - to.parseLine(arg) - case match(s, "cc:", &arg): - cc.parseLine(arg) - case match(s, "bcc:", &arg): - bcc.parseLine(arg) - case match(s, "reply-to:", &arg): - replyTo.parseLine(arg) - case match(s, "subject:", &arg): - subject = arg - case match(s, "in-reply-to:", &arg): - inReplyTo = arg - } - } - } - - acct = google.Acct(*acctName) - from.fixDomain() - to.fixDomain() - cc.fixDomain() - bcc.fixDomain() - replyTo.fixDomain() - - smtpTo := append(append(to, cc...), bcc...) - - if len(from) == 0 { - // TODO: Much better - name := "" - email := acct.Email - if email == "rsc@swtch.com" || email == "rsc@google.com" { - name = "Russ Cox" - } - if email == "rsc@google.com" && (smtpTo.has("go@googlecode.com") || smtpTo.has("golang-dev@googlegroups.com") || smtpTo.has("golang-nuts@googlegroups.com")) { - from = append(from, Addr{name, "rsc@golang.org"}) - } else { - from = append(from, Addr{name, email}) - } - } - - if len(from) > 1 { - fmt.Fprintf(os.Stderr, "missing -from\n") - os.Exit(2) - } - - if len(to)+len(cc)+len(bcc) == 0 { - fmt.Fprintf(os.Stderr, "missing destinations\n") - os.Exit(2) - } - - if !*inputHeader { - holdmode() - } - _, err := io.Copy(&body, input) - if err != nil { - fmt.Fprintf(os.Stderr, "reading stdin: %s\n", err) - os.Exit(2) - } - - if *appendFile != "" { - f, err := os.Open(*appendFile) - if err != nil { - fmt.Fprintf(os.Stderr, "append: %s\n", err) - os.Exit(2) - } - _, err = io.Copy(&body, f) - f.Close() - if err != nil { - fmt.Fprintf(os.Stderr, "append: %s\n", err) - os.Exit(2) - } - } - - var msg bytes.Buffer - fmt.Fprintf(&msg, "MIME-Version: 1.0\n") - if len(from) > 0 { - fmt.Fprintf(&msg, "From: ") - for i, a := range from { - if i > 0 { - fmt.Fprintf(&msg, ", ") - } - fmt.Fprintf(&msg, "%s", a.enc()) - } - fmt.Fprintf(&msg, "\n") - } - if len(to) > 0 { - fmt.Fprintf(&msg, "To: ") - for i, a := range to { - if i > 0 { - fmt.Fprintf(&msg, ", ") - } - fmt.Fprintf(&msg, "%s", a.enc()) - } - fmt.Fprintf(&msg, "\n") - } - if len(cc) > 0 { - fmt.Fprintf(&msg, "CC: ") - for i, a := range cc { - if i > 0 { - fmt.Fprintf(&msg, ", ") - } - fmt.Fprintf(&msg, "%s", a.enc()) - } - fmt.Fprintf(&msg, "\n") - } - if len(replyTo) > 0 { - fmt.Fprintf(&msg, "Reply-To: ") - for i, a := range replyTo { - if i > 0 { - fmt.Fprintf(&msg, ", ") - } - fmt.Fprintf(&msg, "%s", a.enc()) - } - fmt.Fprintf(&msg, "\n") - } - if inReplyTo != "" { - fmt.Fprintf(&msg, "In-Reply-To: %s\n", inReplyTo) - } - if subject != "" { - fmt.Fprintf(&msg, "Subject: %s\n", enc(subject)) - } - fmt.Fprintf(&msg, "Date: xxx\n") - fmt.Fprintf(&msg, "Content-Type: text/plain; charset=\"utf-8\"\n") - fmt.Fprintf(&msg, "Content-Transfer-Encoding: base64\n") - fmt.Fprintf(&msg, "\n") - enc64 := base64.StdEncoding.EncodeToString(body.Bytes()) - for len(enc64) > 72 { - fmt.Fprintf(&msg, "%s\n", enc64[:72]) - enc64 = enc64[72:] - } - fmt.Fprintf(&msg, "%s\n\n", enc64) - - auth := smtp.PlainAuth( - "", - acct.Email, - acct.Password, - "smtp.gmail.com", - ) - var smtpToEmail []string - for _, a := range smtpTo { - if a.Email != "" { - smtpToEmail = append(smtpToEmail, a.Email) - } - } - - if err := sendMail("smtp.gmail.com:587", auth, from[0].Email, smtpToEmail, msg.Bytes()); err != nil { - fmt.Fprintf(os.Stderr, "sending mail: %s\n", err) - os.Exit(2) - } -} - -/* - MIME-Version: 1.0 -Subject: commit/plan9port: rsc: 9term: hold mode back door -From: Bitbucket <commits-noreply@bitbucket.org> -To: plan9port-dev@googlegroups.com -Date: Tue, 11 Oct 2011 13:34:30 -0000 -Message-ID: <20111011133430.31146.55070@bitbucket13.managed.contegix.com> -Reply-To: commits-noreply@bitbucket.org -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: quoted-printable - -1 new changeset in plan9port: - -http://bitbucket.org/rsc/plan9port/changeset/8735d7708a1b/ -changeset: 8735d7708a1b -user: rsc -date: 2011-10-11 15:34:25 -summary: 9term: hold mode back door - -R=3Drsc -http://codereview.appspot.com/5248056 -affected #: 2 files (-1 bytes) - -Repository URL: https://bitbucket.org/rsc/plan9port/ - --- - -This is a commit notification from bitbucket.org. You are receiving -this because you have the service enabled, addressing the recipient of -this email. - -*/ - -func sendMail(addr string, a smtp.Auth, from string, to []string, msg []byte) error { - c, err := smtp.Dial(addr) - if err != nil { - return err - } - if err = c.StartTLS(nil); err != nil { - return err - } - if err = c.Auth(a); err != nil { - return err - } - if err = c.Mail(from); err != nil { - return err - } - for _, addr := range to { - if err = c.Rcpt(addr); err != nil { - return err - } - } - w, err := c.Data() - if err != nil { - return err - } - _, err = w.Write(msg) - if err != nil { - return err - } - err = w.Close() - if err != nil { - return err - } - return c.Quit() -} |