main.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. "net/http"
  4. "sparrow/pkg/server"
  5. "github.com/go-martini/martini"
  6. "github.com/martini-contrib/render"
  7. "github.com/martini-contrib/sessions"
  8. "github.com/xyproto/permissionsql"
  9. )
  10. func main() {
  11. // init server
  12. err := server.Init("apiprovidor")
  13. if err != nil {
  14. server.Log.Fatal(err)
  15. return
  16. }
  17. DSN := *confDBUser + ":" + *confDBPass + "@tcp(" + *confDBHost + ":" + *confDBPort + ")/" + *confDBName + "?charset=utf8&parseTime=True"
  18. // martini setup
  19. store := sessions.NewCookieStore([]byte("secret123"))
  20. store.Options(sessions.Options{
  21. MaxAge: 0,
  22. })
  23. martini.Env = martini.Prod
  24. handler := martini.Classic()
  25. perm, err := permissionsql.NewWithDSN(DSN, *confDBName)
  26. if err != nil {
  27. server.Log.Fatal(err)
  28. return
  29. }
  30. handler.Use(render.Renderer())
  31. permissionHandler := func(w http.ResponseWriter, req *http.Request, c martini.Context) {
  32. // Check if the user has the right admin/user rights
  33. if perm.Rejected(w, req) {
  34. // Deny the request
  35. http.Error(w, "Permission denied!", http.StatusForbidden)
  36. // Reject the request by not calling the next handler below
  37. return
  38. }
  39. // Call the next middleware handler
  40. c.Next()
  41. }
  42. handler.Use(permissionHandler)
  43. route(handler, perm)
  44. // register a http handler
  45. err = server.RegisterHTTPHandler(handler)
  46. if err != nil {
  47. server.Log.Errorf("RegisterHTTPHandler Error: %s", err)
  48. return
  49. }
  50. // run notifier
  51. // err = RunNotifier()
  52. // if err != nil {
  53. // server.Log.Fatalf("Run Notifier Error: %s", err)
  54. // }
  55. // go
  56. err = server.Run()
  57. if err != nil {
  58. server.Log.Fatal(err)
  59. }
  60. }