static.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package wrapper
  2. import (
  3. "fmt"
  4. "html/template"
  5. "io/ioutil"
  6. "net/http"
  7. "os"
  8. Images "golang-fave/engine/wrapper/resources/images"
  9. Others "golang-fave/engine/wrapper/resources/others"
  10. Scripts "golang-fave/engine/wrapper/resources/scripts"
  11. Styles "golang-fave/engine/wrapper/resources/styles"
  12. Templates "golang-fave/engine/wrapper/resources/templates"
  13. )
  14. func (e *Wrapper) staticResource() bool {
  15. if e.R.URL.Path == "/assets/sys/styles.css" {
  16. (*e.W).Header().Set("Content-Type", "text/css")
  17. (*e.W).Write(Styles.File_assets_sys_styles_css)
  18. return true
  19. } else if e.R.URL.Path == "/assets/cp/styles.css" {
  20. (*e.W).Header().Set("Content-Type", "text/css")
  21. (*e.W).Write(Styles.File_assets_cp_styles_css)
  22. return true
  23. } else if e.R.URL.Path == "/assets/sys/bootstrap.css" {
  24. (*e.W).Header().Set("Content-Type", "text/css")
  25. (*e.W).Write(Styles.File_assets_sys_bootstrap_css)
  26. return true
  27. } else if e.R.URL.Path == "/assets/sys/jquery.js" {
  28. (*e.W).Header().Set("Content-Type", "application/javascript; charset=utf-8")
  29. (*e.W).Write(Scripts.File_assets_sys_jquery_js)
  30. return true
  31. } else if e.R.URL.Path == "/assets/sys/popper.js" {
  32. (*e.W).Header().Set("Content-Type", "application/javascript; charset=utf-8")
  33. (*e.W).Write(Scripts.File_assets_sys_popper_js)
  34. return true
  35. } else if e.R.URL.Path == "/assets/sys/bootstrap.js" {
  36. (*e.W).Header().Set("Content-Type", "application/javascript; charset=utf-8")
  37. (*e.W).Write(Scripts.File_assets_sys_bootstrap_js)
  38. return true
  39. } else if e.R.URL.Path == "/assets/sys/logo.svg" {
  40. (*e.W).Header().Set("Content-Type", "image/svg+xml")
  41. (*e.W).Write(Others.File_assets_sys_logo_svg)
  42. return true
  43. } else if e.R.URL.Path == "/assets/sys/bg.png" {
  44. (*e.W).Header().Set("Content-Type", "image/png")
  45. (*e.W).Write(Images.File_assets_sys_bg_png)
  46. return true
  47. } else if e.R.URL.Path == "/assets/sys/logo.png" {
  48. (*e.W).Header().Set("Content-Type", "image/png")
  49. (*e.W).Write(Images.File_assets_sys_logo_png)
  50. return true
  51. } else if e.R.URL.Path == "/assets/sys/fave.ico" {
  52. (*e.W).Header().Set("Content-Type", "image/x-icon")
  53. (*e.W).Write(Others.File_assets_sys_fave_ico)
  54. return true
  55. }
  56. return false
  57. }
  58. func (e *Wrapper) staticFile() bool {
  59. file := e.R.URL.Path
  60. if file != "/" {
  61. f, err := os.Open(e.DirVhostHome + "/htdocs" + file)
  62. if err == nil {
  63. defer f.Close()
  64. st, err := os.Stat(e.DirVhostHome + "/htdocs" + file)
  65. if err != nil {
  66. return false
  67. }
  68. if st.Mode().IsDir() {
  69. return false
  70. }
  71. http.ServeFile(*e.W, e.R, e.DirVhostHome+"/htdocs"+file)
  72. return true
  73. }
  74. }
  75. return false
  76. }
  77. func (e *Wrapper) printPageDefault() {
  78. // Custom page
  79. f, err := os.Open(e.DirVhostHome + "/htdocs" + "/index.html")
  80. if err == nil {
  81. defer f.Close()
  82. http.ServeFile(*e.W, e.R, e.DirVhostHome+"/htdocs"+"/index.html")
  83. return
  84. }
  85. // Default page
  86. tmpl, err := template.New("template").Parse(string(Templates.PageDefault))
  87. if err != nil {
  88. e.printTmplPageError(err)
  89. return
  90. }
  91. (*e.W).Header().Set("Content-Type", "text/html")
  92. tmpl.Execute(*e.W, tmplDataAll{
  93. System: e.tmplGetSystemData(),
  94. })
  95. }
  96. func (e *Wrapper) printPage404() {
  97. // Custom 404 error page
  98. f, err := ioutil.ReadFile(e.DirVhostHome + "/htdocs" + "/404.html")
  99. if err == nil {
  100. (*e.W).WriteHeader(http.StatusNotFound)
  101. (*e.W).Header().Set("Content-Type", "text/html")
  102. (*e.W).Write(f)
  103. return
  104. }
  105. // Default error page
  106. tmpl, err := template.New("template").Parse(string(Templates.PageError404))
  107. if err != nil {
  108. e.printTmplPageError(err)
  109. return
  110. }
  111. (*e.W).WriteHeader(http.StatusNotFound)
  112. (*e.W).Header().Set("Content-Type", "text/html")
  113. tmpl.Execute(*e.W, tmplDataAll{
  114. System: e.tmplGetSystemData(),
  115. })
  116. }
  117. func (e *Wrapper) printTmplPageError(err error) {
  118. (*e.W).WriteHeader(http.StatusInternalServerError)
  119. (*e.W).Header().Set("Content-Type", "text/html")
  120. (*e.W).Write([]byte(fmt.Sprintf(string(Templates.PageTmplError), err.Error())))
  121. }