static.go 3.2 KB

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