diff --git a/core/WebLRU.go b/WebLRU.go similarity index 99% rename from core/WebLRU.go rename to WebLRU.go index fb40054..75113be 100644 --- a/core/WebLRU.go +++ b/WebLRU.go @@ -1,4 +1,4 @@ -package core +package vinegar import ( "bytes" diff --git a/core/campaign.go b/core/campaign.go deleted file mode 100644 index 886dd7d..0000000 --- a/core/campaign.go +++ /dev/null @@ -1,9 +0,0 @@ -package core - -type Campaign struct { - Targets *[]string - HostName string - ListeningPort int - WebRoot string - EmailTemplate string -} diff --git a/core/email.go b/core/email.go deleted file mode 100644 index 994a1d2..0000000 --- a/core/email.go +++ /dev/null @@ -1,161 +0,0 @@ -package core - -import ( - "context" - "encoding/base64" - "encoding/json" - "fmt" - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" - "google.golang.org/api/gmail/v1" - "google.golang.org/api/option" - "io/ioutil" - "log" - "net/http" - "os" -) - -// - -/*====================================================================================== - - - - secure gmail - - - -======================================================================================*/ - -// Retrieve a token, saves the token, then returns the generated client. - -func getClient(config *oauth2.Config) *http.Client { - - // The file token.json stores the user's access and refresh tokens, and is - - // created automatically when the authorization flow completes for the first - - // time. - - tokFile := "token.json" - - tok, err := tokenFromFile(tokFile) - - if err != nil { - - tok = getTokenFromWeb(config) - - saveToken(tokFile, tok) - - } - - return config.Client(context.Background(), tok) - -} - -// Request a token from the web, then returns the retrieved token. - -func getTokenFromWeb(config *oauth2.Config) *oauth2.Token { - - authURL := config.AuthCodeURL("state-token", oauth2.AccessTypeOffline) - - fmt.Printf("Go to the following link in your browser then type the "+ - "authorization code: \n%v\n", authURL) - - var authCode string - - if _, err := fmt.Scan(&authCode); err != nil { - - log.Fatalf("Unable to read authorization code: %v", err) - - } - - tok, err := config.Exchange(context.TODO(), authCode) - - if err != nil { - - log.Fatalf("Unable to retrieve token from web: %v", err) - - } - - return tok - -} - -// Retrieves a token from a local file. - -func tokenFromFile(file string) (*oauth2.Token, error) { - f, err := os.Open(file) - - if err != nil { - return nil, err - } - - defer f.Close() - - tok := &oauth2.Token{} - - err = json.NewDecoder(f).Decode(tok) - - return tok, err -} - -// Saves a token to a file path. - -func saveToken(path string, token *oauth2.Token) { - fmt.Printf("Saving credential file to: %s\n", path) - f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600) - - if err != nil { - log.Fatalf("Unable to cache oauth token: %v", err) - } - - defer f.Close() - - json.NewEncoder(f).Encode(token) -} - -func getMailService() *gmail.Service { - ctx := context.Background() - b, err := ioutil.ReadFile("gmail-creds.json") - - if err != nil { - log.Fatalf("Unable to read client secret file: %v", err) - } - - // If modifying these scopes, delete your previously saved token.json. - - config, err := google.ConfigFromJSON(b, gmail.GmailSendScope, gmail.GmailComposeScope) - - if err != nil { - log.Fatalf("Unable to parse client secret file to config: %v", err) - } - - client := getClient(config) - - srv, err := gmail.NewService(ctx, option.WithHTTPClient(client)) - - if err != nil { - log.Fatalf("Unable to retrieve Gmail client: %v", err) - } - - return srv -} - -func TestSend() { - srv := getMailService() - - payload := []byte("testing") - - msg := gmail.Message{Raw: base64.URLEncoding.EncodeToString(payload)} - - msgResp, err := srv.Users.Messages.Send("me", &msg).Do() - - if err != nil { - panic(err) - } - - fmt.Printf("%#v\n", msgResp) -} - -// diff --git a/core/dynamicRoute.go b/dynamicRoute.go similarity index 99% rename from core/dynamicRoute.go rename to dynamicRoute.go index b2b0b75..55ee143 100644 --- a/core/dynamicRoute.go +++ b/dynamicRoute.go @@ -1,4 +1,4 @@ -package core +package vinegar import ( "fmt" diff --git a/go.mod b/go.mod index 04ecd8f..9c470a1 100644 --- a/go.mod +++ b/go.mod @@ -1,23 +1,3 @@ module vinegar -require ( - golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 - google.golang.org/api v0.30.0 -) - -require ( - cloud.google.com/go v0.65.0 // indirect - github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect - github.com/golang/protobuf v1.4.2 // indirect - github.com/googleapis/gax-go/v2 v2.0.5 // indirect - go.opencensus.io v0.22.4 // indirect - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect - golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect - golang.org/x/text v0.3.7 // indirect - google.golang.org/appengine v1.6.6 // indirect - google.golang.org/genproto v0.0.0-20200825200019-8632dd797987 // indirect - google.golang.org/grpc v1.31.0 // indirect - google.golang.org/protobuf v1.25.0 // indirect -) - go 1.18 diff --git a/core/server.go b/server.go similarity index 99% rename from core/server.go rename to server.go index fb124fa..a2174ef 100644 --- a/core/server.go +++ b/server.go @@ -1,4 +1,4 @@ -package core +package vinegar import ( "fmt" diff --git a/core/staticRoute.go b/staticRoute.go similarity index 99% rename from core/staticRoute.go rename to staticRoute.go index aab632d..2a8b134 100644 --- a/core/staticRoute.go +++ b/staticRoute.go @@ -1,4 +1,4 @@ -package core +package vinegar import ( "net/http"