main.go 1.8 KB

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