Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

179 lines
4.3KB

  1. package main
  2. import (
  3. "encoding/json"
  4. log "github.com/sirupsen/logrus"
  5. "io/ioutil"
  6. "os"
  7. "path/filepath"
  8. "strings"
  9. )
  10. type configStaticHtml struct {
  11. Dir string
  12. StaticUrl string
  13. StripPrefix string
  14. }
  15. type configuration struct {
  16. Host string
  17. Port string
  18. DSN string
  19. TlsCert string
  20. TlsKey string
  21. Static []configStaticHtml
  22. Debug bool
  23. UploadsDir struct {
  24. FileDir string
  25. FileDefault string
  26. JpgDir string
  27. JpgDefault string
  28. ThumbDir string
  29. ThumbDefault string
  30. PdfDir string
  31. PdfDefault string
  32. JsonDir string
  33. }
  34. TempDir string
  35. Session struct { //TODO: figure what is this intended for
  36. Guest bool
  37. Year int //how many years
  38. Month int //how many years
  39. Day int //how many years
  40. }
  41. }
  42. var configFile = "config.json"
  43. var config = configuration{}
  44. func (m *configuration) readConfig() (e error) {
  45. log.Printf("read Path config from %s", configFile)
  46. body, e := ioutil.ReadFile(configFile)
  47. if e != nil {
  48. log.Fatal("Cannot read config from " + configFile)
  49. return
  50. }
  51. e = json.Unmarshal(body, m)
  52. // Check upload dir and defaults
  53. if !config.checkUploadDir() {
  54. log.Fatal("bad config file", configFile)
  55. return
  56. }
  57. if config.Debug {
  58. log.Println(config)
  59. }
  60. //TODO: check config before proceed further
  61. return
  62. }
  63. func (m *configuration) checkUploadDir() (valid bool) {
  64. valid = true
  65. if !fileExists(m.UploadsDir.ThumbDefault) {
  66. valid = false
  67. log.Fatal("default thumbnail is missing ", m.UploadsDir.ThumbDefault)
  68. }
  69. if !fileExists(m.UploadsDir.FileDefault) {
  70. valid = false
  71. log.Fatal("default file for upload is missing ", m.UploadsDir.FileDefault)
  72. }
  73. if !fileExists(m.UploadsDir.JpgDefault) {
  74. valid = false
  75. log.Fatal("default jpg for upload is missing ", m.UploadsDir.JpgDefault)
  76. }
  77. if !fileExists(m.UploadsDir.PdfDefault) {
  78. valid = false
  79. log.Fatal("default pdf for upload is missing ", &m.UploadsDir.PdfDefault)
  80. }
  81. //check dir
  82. if !fileExists(m.UploadsDir.FileDir) {
  83. valid = false
  84. log.Fatal("UploadsDir.FileDir is missing ", m.UploadsDir.FileDir)
  85. }
  86. if !fileExists(m.UploadsDir.JpgDir) {
  87. valid = false
  88. log.Fatal("UploadsDir.JpgDir is missing ", m.UploadsDir.JpgDir)
  89. }
  90. if !fileExists(m.UploadsDir.ThumbDir) {
  91. valid = false
  92. log.Fatal("UploadsDir.ThumbDir is missing ", m.UploadsDir.ThumbDir)
  93. }
  94. if !fileExists(m.UploadsDir.PdfDir) {
  95. valid = false
  96. log.Fatal("UploadsDir.PdfDir is missing ", m.UploadsDir.PdfDir)
  97. }
  98. if !fileExists(m.UploadsDir.JsonDir) {
  99. valid = false
  100. log.Fatal("UploadsDir.JsonDir is missing ", m.UploadsDir.JsonDir)
  101. }
  102. if !fileExists(m.TempDir) {
  103. valid = false
  104. log.Fatal("temp Dir is missing ", m.TempDir)
  105. }
  106. // convert to absolute path : fileDir
  107. p, e := filepath.Abs(m.UploadsDir.FileDir)
  108. if e != nil {
  109. valid = false
  110. log.Fatal("bad upload file dir", m.UploadsDir.FileDir, e)
  111. }
  112. m.UploadsDir.FileDir = p + string(os.PathSeparator) //change it to absolute dir
  113. // convert to absolute path : jpgDir
  114. p, e = filepath.Abs(m.UploadsDir.JpgDir)
  115. if e != nil {
  116. valid = false
  117. log.Fatal("bad jpg file dir", m.UploadsDir.JpgDir, e)
  118. }
  119. m.UploadsDir.JpgDir = p + string(os.PathSeparator) //change it to absolute dir
  120. // convert to absolute path : thumbDir
  121. p, e = filepath.Abs(m.UploadsDir.ThumbDir)
  122. if e != nil {
  123. valid = false
  124. log.Fatal("bad thumbnail dir", m.UploadsDir.ThumbDir, e)
  125. }
  126. m.UploadsDir.ThumbDir = p + string(os.PathSeparator) //change it to absolute dir
  127. // convert to absolute path : PdfDir
  128. p, e = filepath.Abs(m.UploadsDir.PdfDir)
  129. if e != nil {
  130. valid = false
  131. log.Fatal("bad pdf file dir", m.UploadsDir.PdfDir, e)
  132. }
  133. m.UploadsDir.PdfDir = p + string(os.PathSeparator) //change it to absolute dir
  134. // convert to absolute path : JsonDir
  135. p, e = filepath.Abs(m.UploadsDir.JsonDir)
  136. if e != nil {
  137. valid = false
  138. log.Fatal("bad pdf file dir", m.UploadsDir.JsonDir, e)
  139. }
  140. m.UploadsDir.JsonDir = p + string(os.PathSeparator) //change it to absolute dir
  141. // convert to absolute path : TmpDir
  142. p, e = filepath.Abs(m.TempDir)
  143. if e != nil {
  144. valid = false
  145. log.Fatal("bad TempDir dir", m.TempDir, e)
  146. }
  147. m.TempDir = p + string(os.PathSeparator) //change it to absolute dir
  148. return
  149. }
  150. func (m *configuration) getAvatarPath() (ret string) {
  151. for _, v := range m.Static {
  152. if strings.ToLower(v.Dir) == "avatar" {
  153. return v.Dir //found it
  154. }
  155. }
  156. return ""
  157. }