bb9053212e4ed265cc8303b296a633d571a4965d.svn-base 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package setting
  2. import (
  3. "errors"
  4. "github.com/go-ini/ini"
  5. "github.com/jacobsa/go-serial/serial"
  6. "log"
  7. "os"
  8. "os/exec"
  9. "path/filepath"
  10. "runtime"
  11. "strings"
  12. "time"
  13. )
  14. type App struct {
  15. JwtSecret string
  16. PageSize int
  17. PrefixUrl string
  18. RuntimeRootPath string
  19. FileSavePath string
  20. FileMaxSize int // 普通文件上传的限制大小,单位byte, 最大单位1GB
  21. FileAllowType [] string // 允许上传的文件后缀名
  22. ImageSavePath string
  23. ImageMaxSize int
  24. ImageAllowExts []string
  25. ThumbnailSavePath string
  26. ThumbnailMaxWidth int
  27. ThumbnailMaxHeight int
  28. ExportSavePath string
  29. QrCodeSavePath string
  30. FontSavePath string
  31. LogSavePath string
  32. LogSaveName string
  33. LogFileExt string
  34. TimeFormat string
  35. }
  36. var AppSetting = &App{}
  37. type Server struct {
  38. RunMode string
  39. HttpPort int
  40. ReadTimeout time.Duration
  41. WriteTimeout time.Duration
  42. NoAuth int
  43. Mdns_servicename string
  44. Mdns_serviceport int
  45. }
  46. var ServerSetting = &Server{}
  47. var CommSetting = &serial.OpenOptions{}
  48. type Database struct {
  49. Type string
  50. User string
  51. Password string
  52. Host string
  53. Name string
  54. ShowXormlog bool
  55. ShowGetSqllog bool
  56. CacheApiSql bool
  57. TablePrefix string
  58. }
  59. var DatabaseSetting = &Database{}
  60. var cfg *ini.File
  61. var CurrentPath string
  62. func GetCurrentPath() (string, error) {
  63. file, err := exec.LookPath(os.Args[0])
  64. if err != nil {
  65. return "", err
  66. }
  67. path, err := filepath.Abs(file)
  68. if err != nil {
  69. return "", err
  70. }
  71. //fmt.Println("path111:", path)
  72. if runtime.GOOS == "windows" {
  73. path = strings.Replace(path, "\\", "/", -1)
  74. }
  75. //fmt.Println("path222:", path)
  76. i := strings.LastIndex(path, "/")
  77. if i < 0 {
  78. return "", errors.New(`Can't find "/" or "\".`)
  79. }
  80. //fmt.Println("path333:", path)
  81. return string(path[0 : i+1]), nil
  82. }
  83. func Setup(dir string) {
  84. var err error
  85. if strings.Trim(dir," ")=="" {
  86. CurrentPath, err = GetCurrentPath()
  87. }else {
  88. CurrentPath=dir
  89. }
  90. cfg, err = ini.Load(CurrentPath+"conf/app.ini")
  91. if err != nil {
  92. log.Fatalf("setting.Setup, fail to parse 'conf/app.ini': %v", err)
  93. }
  94. DatabaseSetting.ShowXormlog = false
  95. DatabaseSetting.ShowGetSqllog = false
  96. DatabaseSetting.CacheApiSql = false
  97. mapTo("app", AppSetting)
  98. mapTo("server", ServerSetting)
  99. mapTo("database", DatabaseSetting)
  100. mapTo("comm", CommSetting)
  101. AppSetting.ImageMaxSize = AppSetting.ImageMaxSize * 1024 * 1024
  102. ServerSetting.ReadTimeout = ServerSetting.ReadTimeout * time.Second
  103. ServerSetting.WriteTimeout = ServerSetting.ReadTimeout * time.Second
  104. }
  105. func mapTo(section string, v interface{}) {
  106. err := cfg.Section(section).MapTo(v)
  107. if err != nil {
  108. log.Fatalf("Cfg.MapTo RedisSetting err: %v", err)
  109. }
  110. }