main.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "net/http"
  6. )
  7. var loggedIn bool = false
  8. func checklogin() []byte {
  9. if loggedIn == true {
  10. return []byte(`{"loggedIn": true}`)
  11. } else {
  12. return []byte(`{"loggedIn": false}`)
  13. }
  14. }
  15. func loginHandler(rw http.ResponseWriter, req *http.Request) {
  16. if req.Method == "GET" {
  17. password := req.FormValue("password")
  18. log.Println("The typed password is:" + password)
  19. if password == "admin" {
  20. log.Println("Password is correct")
  21. rw.Write([]byte("true"))
  22. loggedIn = true
  23. log.Println("Logged in")
  24. } else {
  25. log.Println("WRONG password!!")
  26. }
  27. }
  28. }
  29. func logoutHandler(rw http.ResponseWriter, req *http.Request) {
  30. loggedIn = false
  31. http.Redirect(rw, req, "/login.html", http.StatusSeeOther)
  32. log.Println("Logged out successfully")
  33. }
  34. func checkloginHandler(rw http.ResponseWriter, req *http.Request) {
  35. rw.Write(checklogin())
  36. log.Println("Check button is clicked")
  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("/login", loginHandler)
  45. http.HandleFunc("/logout", logoutHandler)
  46. http.HandleFunc("/checklogin", checkloginHandler)
  47. log.Printf("Listening http://localhost:%s\n", *portPointer)
  48. if error := http.ListenAndServe(":"+*portPointer, nil); error != nil {
  49. log.Printf("Error: %s\n", error)
  50. }
  51. }