Cleanup for release
This commit is contained in:
@ -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")
|
||||
|
||||
99
main.go
99
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)
|
||||
e.Subject = args[0]
|
||||
e.Body = loadBodyFromFile(args[1])
|
||||
for _, arg := range args[2:] {
|
||||
e.Recipients = append(e.Recipients, arg)
|
||||
}
|
||||
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)
|
||||
}
|
||||
log.LogDebug(fmt.Sprintf("%+v", e))
|
||||
go send(e, api)
|
||||
send(e)
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
|
||||
func loadConfig() Config {
|
||||
|
||||
2
test.pgp
2
test.pgp
@ -1,2 +0,0 @@
|
||||
LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEEyNTYKCkhlbGxvLCB3b3JsZCEKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCndzRmNCQUVCQ0FBUUJRSmVSd0JMQ1JBYXUrNnl2c3RBZXdBQVFTa1FBQ3YzcEF0T1JyTnJUbjRGdG0xajN0ZFAKNk5SUHBuYXZNN0pBSVczR2V6d2RSY05VdENTaFI4dW5SUGMzWGY3RUdyeFVPK21BR1BOamhGZy9IU3p6cysrRAo0aTBmOGJBUDl3SnpqTE5maklPdXZrZll1M1ZMbEk2eStDZGNUQWZuTVhJa1Z0akJDaS9QcmNJVWhGay9NSXRmCnpxSUtQREloMnhOcG9PRWJhanFlR3hxS3c5cGJQcUhsSzBLMlpHUE9FcVJkZ3YzKy9YQWovcW1pdk41VDNVZlYKeUtXTDlybldoVktaZytUVUVSbEdmV3I5d1FvM3R4czFvMFZkQ3IrREd6OEFZUE5vZ2o2TytrSGZ3MU5yWm0xWQpmaGw5T1Z0MlkyQ3BsWnNaQ3IrRDAvRTVPY3FLZXdzZWptMmQ4NSs4VUFUMHJ0ZThvTnd2YnJON3dzQWl6emlrCm45Tk02eTBvVFo1bDVNR1ZiYjMvNW9lMmd1OVh3elc1YTl1YUdUb2tlWXRNYWdHV3RCeFl1UHprSmxYTDliREcKSlNiUDZpQXB6TW81UnRub0xKblduQ3Nya1Y5Z0w4NUd3RlZCM1dQTUdhdmtQNDBkWjY2YWFxdXh2UWdSQkpEUAowNWx6QVR1Z1cyYkJVUDRiVHpKWUtuNmZ4Y2o2QXFaSTI4RnFpdEhReHBqb2dzSUw2UjFzUjdxS3cwZ3pSY1V1CkJqajFtbnUwNFplVlBhVmZDakRGRDVRZS9tRDhtb2VTMzlLdFQ5azdYaTRNdHNKdnZub0tDUkh1R1FVV2M1R2IKVFNsZ04xc2tacjNYOHUzQUU5TjVCQ3kreVlGL3RRbnljTGZjd2RQb0RIZ2dyTkdSUHRRWHVQeE5nbmtmbmYzNApXYjNuWGJkS3UwOUlIUXlnSUIzTQo9WXdvdgotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0=
|
||||
|
||||
Reference in New Issue
Block a user