static.go 3.4 KB

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