static.go 3.5 KB

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