diff --git a/store/store.go b/store/store.go new file mode 100644 index 0000000..df76508 --- /dev/null +++ b/store/store.go @@ -0,0 +1,44 @@ +package store + +import ( + "os" + "io" + "bytes" + "crypto/rand" +) + +const ( + nameLen = 12 +) + +func SavePost(outDir string, post []byte) (string, error) { + filename := generateFileName() + f, err := os.Create(outDir + "/" + filename) + if err != nil { + return "", err + } + + defer f.Close() + + out := post[:0] + for _, b := range post { + if b < 32 && b != 10 && b != 13 { + continue + } + out = append(out, b) + } + _, err = io.Copy(f, bytes.NewReader(out)) + + return filename, err +} + +func generateFileName() string { + c := nameLen + var dictionary string = "0123456789abcdefghijklmnopqrstuvwxyz" + var bytes = make([]byte, c) + rand.Read(bytes) + for k, v := range bytes { + bytes[k] = dictionary[v%byte(len(dictionary))] + } + return string(bytes) +} diff --git a/write-telnet.go b/write-telnet.go index 1cbbfe1..f64fe25 100644 --- a/write-telnet.go +++ b/write-telnet.go @@ -5,11 +5,10 @@ import ( "net" "bytes" "io/ioutil" - "crypto/rand" - "io" - "os" "os/exec" "flag" + + "github.com/writeas/writeas-telnet/store" ) var ( @@ -153,7 +152,7 @@ func readInput(c net.Conn) { } if checkExit(b, n) { - file, err := savePost(post.Bytes()) + file, err := store.SavePost(outDir, post.Bytes()) if err != nil { fmt.Printf("There was an error saving: %s\n", err) output(c, "Something went terribly wrong, sorry. Try again later?\n\n") @@ -176,35 +175,3 @@ func readInput(c net.Conn) { } } } - -func savePost(post []byte) (string, error) { - filename := generateFileName() - f, err := os.Create(outDir + "/" + filename) - if err != nil { - return "", err - } - - defer f.Close() - - out := post[:0] - for _, b := range post { - if b < 32 && b != 10 && b != 13 { - continue - } - out = append(out, b) - } - _, err = io.Copy(f, bytes.NewReader(out)) - - return filename, err -} - -func generateFileName() string { - c := nameLen - var dictionary string = "0123456789abcdefghijklmnopqrstuvwxyz" - var bytes = make([]byte, c) - rand.Read(bytes) - for k, v := range bytes { - bytes[k] = dictionary[v%byte(len(dictionary))] - } - return string(bytes) -}