|
|
@@ -0,0 +1,59 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "flag"
|
|
|
+ "log"
|
|
|
+ "math/rand"
|
|
|
+ "net/http"
|
|
|
+ "os"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+func RandomString(n int) string {
|
|
|
+ var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
|
|
|
+
|
|
|
+ s := make([]rune, n)
|
|
|
+ for i := range s {
|
|
|
+ s[i] = letters[rand.Intn(len(letters))]
|
|
|
+ }
|
|
|
+ return string(s)
|
|
|
+}
|
|
|
+
|
|
|
+func createHandler(rw http.ResponseWriter, req *http.Request) {
|
|
|
+ log.Println("Clicked!")
|
|
|
+ if req.Method == "GET" {
|
|
|
+ log.Println("You requested the create-file function.")
|
|
|
+ timestamp := time.Now()
|
|
|
+ file, err := os.OpenFile(timestamp.String()+".log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = file.Write([]byte(RandomString(8)))
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ file.Close()
|
|
|
+ log.Printf("A log file with filename %s is created.\n", timestamp.String())
|
|
|
+
|
|
|
+ } else {
|
|
|
+ http.Error(rw, "Method "+req.Method+" is not supported", http.StatusNotFound)
|
|
|
+ return
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func main() {
|
|
|
+ portPointer := flag.String("port", "8000", "An integer")
|
|
|
+ flag.Parse()
|
|
|
+ log.Println("Port Number: " + *portPointer)
|
|
|
+ httpFileServer := http.FileServer(http.Dir("./files"))
|
|
|
+ http.Handle("/", httpFileServer)
|
|
|
+
|
|
|
+ http.HandleFunc("/createfunction", createHandler)
|
|
|
+
|
|
|
+ log.Printf("Listening http://localhost:%s\n", *portPointer)
|
|
|
+ if error := http.ListenAndServe(":"+*portPointer, nil); error != nil {
|
|
|
+ log.Printf("Error: %s\n", error)
|
|
|
+ }
|
|
|
+}
|