Simple telnet server for write.as http://nerds.write.as
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

45 wiersze
748 B

  1. package store
  2. import (
  3. "os"
  4. "io"
  5. "bytes"
  6. "crypto/rand"
  7. )
  8. const (
  9. nameLen = 12
  10. )
  11. func SavePost(outDirectory string, post []byte) (string, error) {
  12. filename := generateFileName()
  13. f, err := os.Create(outDirectory + "/" + filename)
  14. if err != nil {
  15. return "", err
  16. }
  17. defer f.Close()
  18. out := post[:0]
  19. for _, b := range post {
  20. if b < 32 && b != 10 && b != 13 {
  21. continue
  22. }
  23. out = append(out, b)
  24. }
  25. _, err = io.Copy(f, bytes.NewReader(out))
  26. return filename, err
  27. }
  28. func generateFileName() string {
  29. c := nameLen
  30. var dictionary string = "0123456789abcdefghijklmnopqrstuvwxyz"
  31. var bytes = make([]byte, c)
  32. rand.Read(bytes)
  33. for k, v := range bytes {
  34. bytes[k] = dictionary[v%byte(len(dictionary))]
  35. }
  36. return string(bytes)
  37. }