Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.82 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "crypto/md5"
  5.     "fmt"
  6.     "html/template"
  7.     "io"
  8.     "log"
  9.     "net/http"
  10.     "os"
  11.     "strconv"
  12.     "time"
  13.  
  14.     "github.com/gorilla/mux"
  15. )
  16.  
  17. func createToken() string {
  18.     crutime := time.Now().Unix()
  19.     h := md5.New()
  20.     io.WriteString(h, strconv.FormatInt(crutime, 10))
  21.     token := fmt.Sprintf("%x", h.Sum(nil))
  22.     return token
  23. }
  24.  
  25. func loginHandler(w http.ResponseWriter, r *http.Request) {
  26.     fmt.Println("method:", r.Method)
  27.     if r.Method == "GET" {
  28.         token := createToken()
  29.  
  30.         t, _ := template.ParseFiles("templates/login.html")
  31.         t.Execute(w, token)
  32.     } else {
  33.         // log in request
  34.         r.ParseForm()
  35.         token := r.Form.Get("token")
  36.         if token != "" {
  37.             // check token validity
  38.         } else {
  39.             // give error if no token
  40.         }
  41.         username := template.HTMLEscapeString(r.Form.Get("username"))
  42.         password := template.HTMLEscapeString(r.Form.Get("password"))
  43.         log.Printf("new login: %s %s", username, password)
  44.         template.HTMLEscape(w, []byte(r.Form.Get("username")))
  45.     }
  46. }
  47.  
  48. func uploadHandler(w http.ResponseWriter, r *http.Request) {
  49.     fmt.Println("method:", r.Method)
  50.     if r.Method == "GET" {
  51.         token := createToken()
  52.  
  53.         t, _ := template.ParseFiles("templates/upload.html")
  54.         t.Execute(w, token)
  55.     } else {
  56.         file, handler, err := r.FormFile("uploadfile")
  57.         if err != nil {
  58.             log.Println(err)
  59.             return
  60.         }
  61.         defer file.Close()
  62.  
  63.         out, err := os.Create("uploaded/" + handler.Filename)
  64.         if err != nil {
  65.             log.Println(err)
  66.             return
  67.         }
  68.         defer out.Close()
  69.  
  70.         // write the content from POST to file
  71.         _, err = io.Copy(out, file)
  72.         if err != nil {
  73.             log.Println(err)
  74.             return
  75.         }
  76.  
  77.         fmt.Fprintf(w, "File uploaded successfully: %v", handler.Filename)
  78.     }
  79. }
  80.  
  81. func helloHandler(w http.ResponseWriter, r *http.Request) {
  82.     vars := mux.Vars(r)
  83.     name := vars["name"]
  84.  
  85.     fmt.Fprintln(w, "Hello:", name)
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement