Cleanup for release
This commit is contained in:
@ -3,9 +3,8 @@ package main
|
|||||||
import "fmt"
|
import "fmt"
|
||||||
import "io/ioutil"
|
import "io/ioutil"
|
||||||
import "net/smtp"
|
import "net/smtp"
|
||||||
import "samhofi.us/x/keybase"
|
|
||||||
|
|
||||||
func send(e Email, api keybase.ChatAPI) {
|
func send(e Email) {
|
||||||
e.Body = appendSignature(e.Body)
|
e.Body = appendSignature(e.Body)
|
||||||
|
|
||||||
message := fmt.Sprintf("From: %s\n", conf.MyEmail)
|
message := fmt.Sprintf("From: %s\n", conf.MyEmail)
|
||||||
@ -23,24 +22,28 @@ func send(e Email, api keybase.ChatAPI) {
|
|||||||
log.LogInfo("Message created")
|
log.LogInfo("Message created")
|
||||||
log.LogDebug(message)
|
log.LogDebug(message)
|
||||||
log.LogInfo("Sending message")
|
log.LogInfo("Sending message")
|
||||||
go chat.React(api.Msg.ID, ":mailbox_with_no_mail:")
|
|
||||||
if conf.KeyPass == "" {
|
if conf.KeyPass == "" {
|
||||||
go chat.React(api.Msg.ID, ":unlock:")
|
log.LogDebug("Unsigned Message")
|
||||||
} else {
|
} else {
|
||||||
go chat.React(api.Msg.ID, ":lock_with_ink_pen:")
|
log.LogDebug("Signed Message")
|
||||||
}
|
}
|
||||||
err := smtp.SendMail(conf.SmtpServer,
|
err := smtp.SendMail(conf.SmtpServer,
|
||||||
smtp.PlainAuth("", conf.MyEmail, conf.EmailPass, conf.AuthServer),
|
smtp.PlainAuth("", conf.MyEmail, conf.EmailPass, conf.AuthServer),
|
||||||
conf.MyEmail, e.Recipients, []byte(message))
|
conf.MyEmail, e.Recipients, []byte(message))
|
||||||
go chat.React(api.Msg.ID, ":mailbox_with_no_mail:")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.LogErrorType(err)
|
log.LogErrorType(err)
|
||||||
chat.React(api.Msg.ID, ":warning:")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
go chat.React(api.Msg.ID, ":mailbox_with_mail:")
|
|
||||||
log.LogInfo("Email Sent")
|
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 {
|
func appendSignature(body string) string {
|
||||||
bytes, err := ioutil.ReadFile("default.sig")
|
bytes, err := ioutil.ReadFile("default.sig")
|
||||||
|
|||||||
99
main.go
99
main.go
@ -4,113 +4,38 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/rudi9719/loggy"
|
"github.com/rudi9719/loggy"
|
||||||
"golang.org/x/crypto/ssh/terminal"
|
"golang.org/x/crypto/ssh/terminal"
|
||||||
"samhofi.us/x/keybase"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
k = keybase.NewKeybase()
|
|
||||||
|
|
||||||
logOpts = loggy.LogOpts{
|
logOpts = loggy.LogOpts{
|
||||||
OutFile: "Keybase-Email.log",
|
OutFile: "Reports.log",
|
||||||
KBTeam: "nightmarehaus.logs",
|
ProgName: "Reports",
|
||||||
KBChann: "general",
|
|
||||||
ProgName: "KB-Email",
|
|
||||||
Level: 4,
|
Level: 4,
|
||||||
UseStdout: true,
|
UseStdout: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
chann = keybase.Channel{
|
|
||||||
Name: "rudi9719",
|
|
||||||
MembersType: keybase.USER,
|
|
||||||
}
|
|
||||||
chat keybase.Chat
|
|
||||||
|
|
||||||
log = loggy.NewLogger(logOpts)
|
log = loggy.NewLogger(logOpts)
|
||||||
conf = Config{}
|
conf = Config{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if !k.LoggedIn {
|
|
||||||
log.LogPanic("Keybase not logged in.")
|
|
||||||
}
|
|
||||||
log.LogInfo(fmt.Sprintf("Bot started using account %s", k.Username))
|
|
||||||
conf = loadConfig()
|
conf = loadConfig()
|
||||||
setupCredentials()
|
//setupCredentials()
|
||||||
log.LogInfo("Starting keybase")
|
args := os.Args[1:]
|
||||||
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)
|
|
||||||
var e Email
|
var e Email
|
||||||
partCounter := 1
|
e.Subject = args[0]
|
||||||
for _, subj := range parts[1:] {
|
e.Body = loadBodyFromFile(args[1])
|
||||||
if strings.Contains(subj, "@") {
|
for _, arg := range args[2:] {
|
||||||
break
|
e.Recipients = append(e.Recipients, arg)
|
||||||
}
|
|
||||||
partCounter++
|
|
||||||
e.Subject += fmt.Sprintf("%s ", subj)
|
|
||||||
}
|
}
|
||||||
for _, to := range parts {
|
send(e)
|
||||||
if strings.HasPrefix(to, "to:") {
|
time.Sleep(1 * time.Second)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadConfig() Config {
|
func loadConfig() Config {
|
||||||
|
|||||||
2
test.pgp
2
test.pgp
@ -1,2 +0,0 @@
|
|||||||
LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEEyNTYKCkhlbGxvLCB3b3JsZCEKLS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KCndzRmNCQUVCQ0FBUUJRSmVSd0JMQ1JBYXUrNnl2c3RBZXdBQVFTa1FBQ3YzcEF0T1JyTnJUbjRGdG0xajN0ZFAKNk5SUHBuYXZNN0pBSVczR2V6d2RSY05VdENTaFI4dW5SUGMzWGY3RUdyeFVPK21BR1BOamhGZy9IU3p6cysrRAo0aTBmOGJBUDl3SnpqTE5maklPdXZrZll1M1ZMbEk2eStDZGNUQWZuTVhJa1Z0akJDaS9QcmNJVWhGay9NSXRmCnpxSUtQREloMnhOcG9PRWJhanFlR3hxS3c5cGJQcUhsSzBLMlpHUE9FcVJkZ3YzKy9YQWovcW1pdk41VDNVZlYKeUtXTDlybldoVktaZytUVUVSbEdmV3I5d1FvM3R4czFvMFZkQ3IrREd6OEFZUE5vZ2o2TytrSGZ3MU5yWm0xWQpmaGw5T1Z0MlkyQ3BsWnNaQ3IrRDAvRTVPY3FLZXdzZWptMmQ4NSs4VUFUMHJ0ZThvTnd2YnJON3dzQWl6emlrCm45Tk02eTBvVFo1bDVNR1ZiYjMvNW9lMmd1OVh3elc1YTl1YUdUb2tlWXRNYWdHV3RCeFl1UHprSmxYTDliREcKSlNiUDZpQXB6TW81UnRub0xKblduQ3Nya1Y5Z0w4NUd3RlZCM1dQTUdhdmtQNDBkWjY2YWFxdXh2UWdSQkpEUAowNWx6QVR1Z1cyYkJVUDRiVHpKWUtuNmZ4Y2o2QXFaSTI4RnFpdEhReHBqb2dzSUw2UjFzUjdxS3cwZ3pSY1V1CkJqajFtbnUwNFplVlBhVmZDakRGRDVRZS9tRDhtb2VTMzlLdFQ5azdYaTRNdHNKdnZub0tDUkh1R1FVV2M1R2IKVFNsZ04xc2tacjNYOHUzQUU5TjVCQ3kreVlGL3RRbnljTGZjd2RQb0RIZ2dyTkdSUHRRWHVQeE5nbmtmbmYzNApXYjNuWGJkS3UwOUlIUXlnSUIzTQo9WXdvdgotLS0tLUVORCBQR1AgU0lHTkFUVVJFLS0tLS0=
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user