engine.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package main
  2. import (
  3. "database/sql"
  4. "net/http"
  5. "strings"
  6. //"log"
  7. "golang-fave/engine/backend"
  8. "golang-fave/engine/frontend"
  9. "golang-fave/engine/wrapper"
  10. templates "golang-fave/engine/wrapper/resources/templates"
  11. utils "golang-fave/engine/wrapper/utils"
  12. )
  13. func handlerPage(wrapper *wrapper.Wrapper) bool {
  14. mysql_conf_exists := utils.IsMySqlConfigExists(wrapper.DirVHostHome)
  15. is_front_end := true
  16. if wrapper.R.URL.Path == "/cp" || strings.HasPrefix(wrapper.R.URL.Path, "/cp/") {
  17. is_front_end = false
  18. }
  19. if is_front_end {
  20. // Front-end
  21. if !mysql_conf_exists {
  22. (*wrapper.W).Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
  23. http.Redirect(*wrapper.W, wrapper.R, wrapper.R.URL.Scheme+"://"+wrapper.R.Host+"/cp/", 302)
  24. return true
  25. }
  26. } else {
  27. // Back-end
  28. if !mysql_conf_exists {
  29. return wrapper.TmplBackEnd(templates.CpMySQL, nil)
  30. }
  31. }
  32. // Connect to database or show error
  33. mc, err := utils.MySqlConfigRead(wrapper.DirVHostHome)
  34. if wrapper.EngineErrMsgOnError(err) {
  35. return true
  36. }
  37. db, err := sql.Open("mysql", mc.User+":"+mc.Password+"@tcp("+mc.Host+":"+mc.Port+")/"+mc.Name)
  38. if wrapper.EngineErrMsgOnError(err) {
  39. return true
  40. }
  41. defer db.Close()
  42. err = db.Ping()
  43. if wrapper.EngineErrMsgOnError(err) {
  44. return true
  45. }
  46. // Parse url
  47. /*
  48. url_buff := wrapper.R.URL.Path
  49. if len(url_buff) >= 1 && url_buff[:1] == "/" {
  50. url_buff = url_buff[1:]
  51. }
  52. if len(url_buff) >= 1 && url_buff[len(url_buff)-1:] == "/" {
  53. url_buff = url_buff[:len(url_buff)-1]
  54. }
  55. log.Printf("###############")
  56. log.Printf("(%s)", url_buff)
  57. */
  58. /*
  59. url_args := utils.UrlToArray(wrapper.R.URL.Path)
  60. log.Printf("############### (%d)", len(url_args))
  61. for key, value := range url_args {
  62. log.Printf(">>> (%d) -> (%s)", key, value)
  63. }
  64. */
  65. // log.Printf("###############")
  66. url_args := utils.UrlToArray(wrapper.R.URL.Path)
  67. // Run WebSite or CP
  68. if is_front_end {
  69. // Front-end
  70. return frontend.New(wrapper, db, &url_args).Run()
  71. } else {
  72. // Back-end
  73. return backend.New(wrapper, db, &url_args).Run()
  74. }
  75. }