enumerate.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. // package conf 为配置相关.
  2. package conf
  3. import (
  4. "strings"
  5. "github.com/astaxie/beego"
  6. "strconv"
  7. "path/filepath"
  8. )
  9. // 登录用户的Session名
  10. const LoginSessionName = "LoginSessionName"
  11. const CaptchaSessionName = "__captcha__"
  12. const RegexpEmail = "^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
  13. //允许用户名中出现点号
  14. const RegexpAccount = `^[a-zA-Z][a-zA-z0-9\.]{2,50}$`
  15. // PageSize 默认分页条数.
  16. const PageSize = 10
  17. // 用户权限
  18. const (
  19. // 超级管理员.
  20. MemberSuperRole = 0
  21. //普通管理员.
  22. MemberAdminRole = 1
  23. //普通用户.
  24. MemberGeneralRole = 2
  25. )
  26. const (
  27. // 创始人.
  28. BookFounder = 0
  29. //管理者
  30. BookAdmin = 1
  31. //编辑者.
  32. BookEditor = 2
  33. //观察者
  34. BookObserver = 3
  35. )
  36. const (
  37. LoggerOperate = "operate"
  38. LoggerSystem = "system"
  39. LoggerException = "exception"
  40. LoggerDocument = "document"
  41. )
  42. const (
  43. //本地账户校验
  44. AuthMethodLocal = "local"
  45. //LDAP用户校验
  46. AuthMethodLDAP = "ldap"
  47. )
  48. var (
  49. VERSION string
  50. BUILD_TIME string
  51. GO_VERSION string
  52. )
  53. var (
  54. ConfigurationFile = "./conf/app.conf"
  55. WorkingDirectory = "./"
  56. LogFile = "./runtime/logs"
  57. BaseUrl = ""
  58. )
  59. // app_key
  60. func GetAppKey() string {
  61. return beego.AppConfig.DefaultString("app_key", "godoc")
  62. }
  63. func GetDatabasePrefix() string {
  64. return beego.AppConfig.DefaultString("db_prefix", "md_")
  65. }
  66. //获取默认头像
  67. func GetDefaultAvatar() string {
  68. return URLForWithCdnImage(beego.AppConfig.DefaultString("avatar", "/static/images/headimgurl.jpg"))
  69. }
  70. //获取阅读令牌长度.
  71. func GetTokenSize() int {
  72. return beego.AppConfig.DefaultInt("token_size", 12)
  73. }
  74. //获取默认文档封面.
  75. func GetDefaultCover() string {
  76. return URLForWithCdnImage(beego.AppConfig.DefaultString("cover", "/static/images/book.jpg"))
  77. }
  78. //获取允许的商城文件的类型.
  79. func GetUploadFileExt() []string {
  80. ext := beego.AppConfig.DefaultString("upload_file_ext", "png|jpg|jpeg|gif|txt|doc|docx|pdf")
  81. temp := strings.Split(ext, "|")
  82. exts := make([]string, len(temp))
  83. i := 0
  84. for _, item := range temp {
  85. if item != "" {
  86. exts[i] = item
  87. i++
  88. }
  89. }
  90. return exts
  91. }
  92. // 获取上传文件允许的最大值
  93. func GetUploadFileSize() int64 {
  94. size := beego.AppConfig.DefaultString("upload_file_size", "0")
  95. if strings.HasSuffix(size, "MB") {
  96. if s, e := strconv.ParseInt(size[0:len(size)-2], 10, 64); e == nil {
  97. return s * 1024 * 1024
  98. }
  99. }
  100. if strings.HasSuffix(size, "GB") {
  101. if s, e := strconv.ParseInt(size[0:len(size)-2], 10, 64); e == nil {
  102. return s * 1024 * 1024 * 1024
  103. }
  104. }
  105. if strings.HasSuffix(size, "KB") {
  106. if s, e := strconv.ParseInt(size[0:len(size)-2], 10, 64); e == nil {
  107. return s * 1024
  108. }
  109. }
  110. if s, e := strconv.ParseInt(size, 10, 64); e == nil {
  111. return s * 1024
  112. }
  113. return 0
  114. }
  115. //是否启用导出
  116. func GetEnableExport() bool {
  117. return beego.AppConfig.DefaultBool("enable_export",true)
  118. }
  119. //同一项目导出线程的并发数
  120. func GetExportProcessNum() int {
  121. exportProcessNum := beego.AppConfig.DefaultInt("export_process_num",1)
  122. if exportProcessNum <= 0 || exportProcessNum > 4 {
  123. exportProcessNum = 1
  124. }
  125. return exportProcessNum;
  126. }
  127. //导出项目队列的并发数量
  128. func GetExportLimitNum() int {
  129. exportLimitNum := beego.AppConfig.DefaultInt("export_limit_num",1)
  130. if exportLimitNum < 0 {
  131. exportLimitNum = 1
  132. }
  133. return exportLimitNum;
  134. }
  135. //等待导出队列的长度
  136. func GetExportQueueLimitNum() int {
  137. exportQueueLimitNum := beego.AppConfig.DefaultInt("export_queue_limit_num",10)
  138. if exportQueueLimitNum <= 0 {
  139. exportQueueLimitNum = 100
  140. }
  141. return exportQueueLimitNum
  142. }
  143. //默认导出项目的缓存目录
  144. func GetExportOutputPath() string {
  145. exportOutputPath := filepath.Join(beego.AppConfig.DefaultString("export_output_path", filepath.Join(WorkingDirectory,"cache")),"books")
  146. return exportOutputPath
  147. }
  148. //判断是否是允许商城的文件类型.
  149. func IsAllowUploadFileExt(ext string) bool {
  150. if strings.HasPrefix(ext, ".") {
  151. ext = string(ext[1:])
  152. }
  153. exts := GetUploadFileExt()
  154. for _, item := range exts {
  155. if strings.EqualFold(item, ext) {
  156. return true
  157. }
  158. }
  159. return false
  160. }
  161. //重写生成URL的方法,加上完整的域名
  162. func URLFor(endpoint string, values ...interface{}) string {
  163. baseUrl := beego.AppConfig.DefaultString("baseurl","")
  164. pathUrl := beego.URLFor(endpoint, values ...)
  165. if baseUrl == "" {
  166. baseUrl = BaseUrl
  167. }
  168. if strings.HasPrefix(pathUrl,"http://") {
  169. return pathUrl
  170. }
  171. if strings.HasPrefix(pathUrl,"/") && strings.HasSuffix(baseUrl,"/") {
  172. return baseUrl + pathUrl[1:]
  173. }
  174. if !strings.HasPrefix(pathUrl,"/") && !strings.HasSuffix(baseUrl,"/") {
  175. return baseUrl + "/" + pathUrl
  176. }
  177. return baseUrl + beego.URLFor(endpoint, values ...)
  178. }
  179. func URLForWithCdnImage(p string) string {
  180. if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
  181. return p
  182. }
  183. cdn := beego.AppConfig.DefaultString("cdnimg", "")
  184. //如果没有设置cdn,则使用baseURL拼接
  185. if cdn == "" {
  186. baseUrl := beego.AppConfig.DefaultString("baseurl","")
  187. if baseUrl == "" {
  188. baseUrl = BaseUrl
  189. }
  190. if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
  191. return baseUrl + p[1:]
  192. }
  193. if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
  194. return baseUrl + "/" + p
  195. }
  196. return baseUrl + p
  197. }
  198. if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
  199. return cdn + string(p[1:])
  200. }
  201. if !strings.HasPrefix(p, "/") && !strings.HasSuffix(cdn, "/") {
  202. return cdn + "/" + p
  203. }
  204. return cdn + p
  205. }
  206. func URLForWithCdnCss (p string) string {
  207. cdn := beego.AppConfig.DefaultString("cdncss", "")
  208. if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
  209. return p
  210. }
  211. //如果没有设置cdn,则使用baseURL拼接
  212. if cdn == "" {
  213. baseUrl := beego.AppConfig.DefaultString("baseurl","")
  214. if baseUrl == "" {
  215. baseUrl = BaseUrl
  216. }
  217. if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
  218. return baseUrl + p[1:]
  219. }
  220. if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
  221. return baseUrl + "/" + p
  222. }
  223. return baseUrl + p
  224. }
  225. if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
  226. return cdn + string(p[1:])
  227. }
  228. if !strings.HasPrefix(p, "/") && !strings.HasSuffix(cdn, "/") {
  229. return cdn + "/" + p
  230. }
  231. return cdn + p
  232. }
  233. func URLForWithCdnJs(p string) string {
  234. cdn := beego.AppConfig.DefaultString("cdnjs", "")
  235. if strings.HasPrefix(p, "http://") || strings.HasPrefix(p, "https://") {
  236. return p
  237. }
  238. //如果没有设置cdn,则使用baseURL拼接
  239. if cdn == "" {
  240. baseUrl := beego.AppConfig.DefaultString("baseurl","")
  241. if baseUrl == "" {
  242. baseUrl = BaseUrl
  243. }
  244. if strings.HasPrefix(p,"/") && strings.HasSuffix(baseUrl,"/") {
  245. return baseUrl + p[1:]
  246. }
  247. if !strings.HasPrefix(p,"/") && !strings.HasSuffix(baseUrl,"/") {
  248. return baseUrl + "/" + p
  249. }
  250. return baseUrl + p
  251. }
  252. if strings.HasPrefix(p, "/") && strings.HasSuffix(cdn, "/") {
  253. return cdn + string(p[1:])
  254. }
  255. if !strings.HasPrefix(p, "/") && !strings.HasSuffix(cdn, "/") {
  256. return cdn + "/" + p
  257. }
  258. return cdn + p
  259. }
  260. func WorkingDir(elem ...string) string {
  261. elems := append([]string{ WorkingDirectory },elem...)
  262. return filepath.Join(elems...)
  263. }