Browse Source

Move file functions to new package

master
Matt Baer 9 years ago
parent
commit
6c193334e7
2 changed files with 47 additions and 36 deletions
  1. +44
    -0
      store/store.go
  2. +3
    -36
      write-telnet.go

+ 44
- 0
store/store.go View File

@@ -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)
}

+ 3
- 36
write-telnet.go View File

@@ -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)
}

Loading…
Cancel
Save