engine.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. "database/sql"
  4. "net/http"
  5. "strings"
  6. _ "github.com/go-sql-driver/mysql"
  7. "golang-fave/engine/wrapper"
  8. templates "golang-fave/engine/wrapper/resources/templates"
  9. utils "golang-fave/engine/wrapper/utils"
  10. )
  11. func handlerPage(wrapper *wrapper.Wrapper) bool {
  12. if !(wrapper.R.URL.Path == "/cp" || strings.HasPrefix(wrapper.R.URL.Path, "/cp/")) {
  13. return handlerFrontEnd(wrapper)
  14. } else {
  15. return handlerBackEnd(wrapper)
  16. }
  17. }
  18. func handlerFrontEnd(wrapper *wrapper.Wrapper) bool {
  19. // Redirect to CP, if MySQL config file is not exists
  20. if !utils.IsMySqlConfigExists(wrapper.DirVHostHome) {
  21. (*wrapper.W).Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
  22. http.Redirect(*wrapper.W, wrapper.R, wrapper.R.URL.Scheme+"://"+wrapper.R.Host+"/cp/", 302)
  23. return true
  24. }
  25. // Connect to database
  26. // Else logic here
  27. if wrapper.R.URL.Path == "/" {
  28. return wrapper.TmplFrontEnd("index", nil)
  29. }
  30. return false
  31. }
  32. func handlerBackEnd(wrapper *wrapper.Wrapper) bool {
  33. // MySQL config page
  34. if !utils.IsMySqlConfigExists(wrapper.DirVHostHome) {
  35. return wrapper.TmplBackEnd(templates.CpMySQL, nil)
  36. }
  37. // Connect to database
  38. mc, err := utils.MySqlConfigRead(wrapper.DirVHostHome)
  39. if wrapper.EngineErrMsgOnError(err) {
  40. return true
  41. }
  42. db, err := sql.Open("mysql", mc.User+":"+mc.Password+"@tcp("+mc.Host+":"+mc.Port+")/"+mc.Name)
  43. if wrapper.EngineErrMsgOnError(err) {
  44. return true
  45. }
  46. defer db.Close()
  47. err = db.Ping()
  48. if wrapper.EngineErrMsgOnError(err) {
  49. return true
  50. }
  51. // Check if any user exists
  52. // Login page
  53. return wrapper.TmplBackEnd(templates.CpLogin, nil)
  54. }