main.go 895 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "net/http"
  6. "os"
  7. "os/signal"
  8. "syscall"
  9. )
  10. /*
  11. 台南吃貨 WebApp
  12. License: AGPLv3
  13. Author: tobychui
  14. */
  15. var (
  16. listening = flag.String("l", ":8080", "The default endpoint for request listening")
  17. )
  18. //Safe shutdown sequence
  19. func shutdown() {
  20. os.Exit(0)
  21. }
  22. //Close handler, close db and clearn up everything before exit
  23. func SetupCloseHandler() {
  24. c := make(chan os.Signal, 2)
  25. signal.Notify(c, os.Interrupt, syscall.SIGTERM)
  26. go func() {
  27. <-c
  28. shutdown()
  29. }()
  30. }
  31. //Main start functin
  32. func main() {
  33. //Prase start up flags
  34. flag.Parse()
  35. //Setup Ctrl+C Listener
  36. SetupCloseHandler()
  37. //Start static file server
  38. fs := http.FileServer(http.Dir("./web"))
  39. http.Handle("/", fs)
  40. //Register special HTTP requests handler
  41. //Start WebServer
  42. log.Println("Standard (HTTP) Web server listening at " + *listening)
  43. http.ListenAndServe(*listening, nil)
  44. }