main.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "math/rand"
  6. "net/http"
  7. "os"
  8. "time"
  9. )
  10. func RandomString(n int) string {
  11. var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
  12. s := make([]rune, n)
  13. for i := range s {
  14. s[i] = letters[rand.Intn(len(letters))]
  15. }
  16. return string(s)
  17. }
  18. func createHandler(rw http.ResponseWriter, req *http.Request) {
  19. log.Println("Clicked!")
  20. if req.Method == "GET" {
  21. log.Println("You requested the create-file function.")
  22. timestamp := time.Now()
  23. file, err := os.OpenFile(timestamp.String()+".log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
  24. if err != nil {
  25. log.Fatal(err)
  26. }
  27. _, err = file.Write([]byte(RandomString(8)))
  28. if err != nil {
  29. log.Fatal(err)
  30. }
  31. file.Close()
  32. log.Printf("A log file with filename %s is created.\n", timestamp.String())
  33. } else {
  34. http.Error(rw, "Method "+req.Method+" is not supported", http.StatusNotFound)
  35. return
  36. }
  37. }
  38. func main() {
  39. portPointer := flag.String("port", "8000", "An integer")
  40. flag.Parse()
  41. log.Println("Port Number: " + *portPointer)
  42. httpFileServer := http.FileServer(http.Dir("./files"))
  43. http.Handle("/", httpFileServer)
  44. http.HandleFunc("/createfunction", createHandler)
  45. log.Printf("Listening http://localhost:%s\n", *portPointer)
  46. if error := http.ListenAndServe(":"+*portPointer, nil); error != nil {
  47. log.Printf("Error: %s\n", error)
  48. }
  49. }