diff --git a/mailHelper.go b/mailHelper.go index 4c150f0..4c7578c 100644 --- a/mailHelper.go +++ b/mailHelper.go @@ -3,9 +3,8 @@ package main import "fmt" import "io/ioutil" import "net/smtp" -import "samhofi.us/x/keybase" -func send(e Email, api keybase.ChatAPI) { +func send(e Email) { e.Body = appendSignature(e.Body) message := fmt.Sprintf("From: %s\n", conf.MyEmail) @@ -23,24 +22,28 @@ func send(e Email, api keybase.ChatAPI) { log.LogInfo("Message created") log.LogDebug(message) log.LogInfo("Sending message") - go chat.React(api.Msg.ID, ":mailbox_with_no_mail:") if conf.KeyPass == "" { - go chat.React(api.Msg.ID, ":unlock:") + log.LogDebug("Unsigned Message") } else { - go chat.React(api.Msg.ID, ":lock_with_ink_pen:") + log.LogDebug("Signed Message") } err := smtp.SendMail(conf.SmtpServer, smtp.PlainAuth("", conf.MyEmail, conf.EmailPass, conf.AuthServer), conf.MyEmail, e.Recipients, []byte(message)) - go chat.React(api.Msg.ID, ":mailbox_with_no_mail:") if err != nil { log.LogErrorType(err) - chat.React(api.Msg.ID, ":warning:") return } - go chat.React(api.Msg.ID, ":mailbox_with_mail:") log.LogInfo("Email Sent") } +func loadBodyFromFile(path string) string { + bytes, err := ioutil.ReadFile(path) + if err != nil { + log.LogErrorType(err) + return "" + } + return string(bytes) +} func appendSignature(body string) string { bytes, err := ioutil.ReadFile("default.sig") diff --git a/main.go b/main.go index ad2cbbf..13dfe79 100644 --- a/main.go +++ b/main.go @@ -4,113 +4,38 @@ import ( "encoding/json" "fmt" "io/ioutil" + "os" "strings" "syscall" + "time" "github.com/rudi9719/loggy" "golang.org/x/crypto/ssh/terminal" - "samhofi.us/x/keybase" ) var ( - k = keybase.NewKeybase() - logOpts = loggy.LogOpts{ - OutFile: "Keybase-Email.log", - KBTeam: "nightmarehaus.logs", - KBChann: "general", - ProgName: "KB-Email", + OutFile: "Reports.log", + ProgName: "Reports", Level: 4, UseStdout: true, } - - chann = keybase.Channel{ - Name: "rudi9719", - MembersType: keybase.USER, - } - chat keybase.Chat - log = loggy.NewLogger(logOpts) conf = Config{} ) func main() { - if !k.LoggedIn { - log.LogPanic("Keybase not logged in.") - } - log.LogInfo(fmt.Sprintf("Bot started using account %s", k.Username)) conf = loadConfig() - setupCredentials() - log.LogInfo("Starting keybase") - chat = k.NewChat(chann) - k.Run(func(api keybase.ChatAPI) { - handleMessage(api) - }) - -} - -func handleMessage(api keybase.ChatAPI) { - if api.Msg.Content.Type != "text" { - log.LogDebug("Wrong message type detected.") - return - } - parts := strings.Split(api.Msg.Content.Text.Body, " ") - if parts[0] != "!email" { - log.LogDebug("Wrong command detected") - return - } - if api.Msg.Sender.Username != k.Username { - log.LogDebug("Wrong username detected.") - chat = k.NewChat(api.Msg.Channel) - chat.Reply(api.Msg.ID, "[EMBot] No thanks!") - return - } - - if len(parts) < 4 { - log.LogDebug("Wrong length of parts detected.") - chat.Send("[KB-Email] Not enough components to send email.") - return - } - chann = api.Msg.Channel - chat = k.NewChat(chann) + //setupCredentials() + args := os.Args[1:] var e Email - partCounter := 1 - for _, subj := range parts[1:] { - if strings.Contains(subj, "@") { - break - } - partCounter++ - e.Subject += fmt.Sprintf("%s ", subj) - } - for _, to := range parts { - if strings.HasPrefix(to, "to:") { - if strings.Contains(to, "@") { - e.Recipients = append(e.Recipients, strings.Replace(to, "to:", "", -1)) - partCounter++ - } - } - } - for _, cc := range parts { - if strings.HasPrefix(cc, "cc:") { - if strings.Contains(cc, "@") { - e.Cc = append(e.Cc, strings.Replace(cc, "cc:", "", -1)) - partCounter++ - } - } - } - for _, bcc := range parts { - if strings.HasPrefix(bcc, "bcc:") { - if strings.Contains(bcc, "@") { - e.Bcc = append(e.Bcc, strings.Replace(bcc, "bcc:", "", -1)) - partCounter++ - } - } - } - for _, word := range parts[partCounter:] { - e.Body += fmt.Sprintf("%s ", word) + e.Subject = args[0] + e.Body = loadBodyFromFile(args[1]) + for _, arg := range args[2:] { + e.Recipients = append(e.Recipients, arg) } - log.LogDebug(fmt.Sprintf("%+v", e)) - go send(e, api) + send(e) + time.Sleep(1 * time.Second) } func loadConfig() Config { diff --git a/test.pgp b/test.pgp deleted file mode 100644 index 26fc7be..0000000 --- a/test.pgp +++ /dev/null @@ -1,2 +0,0 @@ -LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEEyNTYKCkhlbGxvLCB3b3JsZCEKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCndzRmNCQUVCQ0FBUUJRSmVSd0JMQ1JBYXUrNnl2c3RBZXdBQVFTa1FBQ3YzcEF0T1JyTnJUbjRGdG0xajN0ZFAKNk5SUHBuYXZNN0pBSVczR2V6d2RSY05VdENTaFI4dW5SUGMzWGY3RUdyeFVPK21BR1BOamhGZy9IU3p6cysrRAo0aTBmOGJBUDl3SnpqTE5maklPdXZrZll1M1ZMbEk2eStDZGNUQWZuTVhJa1Z0akJDaS9QcmNJVWhGay9NSXRmCnpxSUtQREloMnhOcG9PRWJhanFlR3hxS3c5cGJQcUhsSzBLMlpHUE9FcVJkZ3YzKy9YQWovcW1pdk41VDNVZlYKeUtXTDlybldoVktaZytUVUVSbEdmV3I5d1FvM3R4czFvMFZkQ3IrREd6OEFZUE5vZ2o2TytrSGZ3MU5yWm0xWQpmaGw5T1Z0MlkyQ3BsWnNaQ3IrRDAvRTVPY3FLZXdzZWptMmQ4NSs4VUFUMHJ0ZThvTnd2YnJON3dzQWl6emlrCm45Tk02eTBvVFo1bDVNR1ZiYjMvNW9lMmd1OVh3elc1YTl1YUdUb2tlWXRNYWdHV3RCeFl1UHprSmxYTDliREcKSlNiUDZpQXB6TW81UnRub0xKblduQ3Nya1Y5Z0w4NUd3RlZCM1dQTUdhdmtQNDBkWjY2YWFxdXh2UWdSQkpEUAowNWx6QVR1Z1cyYkJVUDRiVHpKWUtuNmZ4Y2o2QXFaSTI4RnFpdEhReHBqb2dzSUw2UjFzUjdxS3cwZ3pSY1V1CkJqajFtbnUwNFplVlBhVmZDakRGRDVRZS9tRDhtb2VTMzlLdFQ5azdYaTRNdHNKdnZub0tDUkh1R1FVV2M1R2IKVFNsZ04xc2tacjNYOHUzQUU5TjVCQ3kreVlGL3RRbnljTGZjd2RQb0RIZ2dyTkdSUHRRWHVQeE5nbmtmbmYzNApXYjNuWGJkS3UwOUlIUXlnSUIzTQo9WXdvdgotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0= -