-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
69 lines (64 loc) · 1.92 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"flag"
log "github.com/sirupsen/logrus"
"github.com/gin-contrib/cors"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
v1 "github.com/gitran-com/gitran-server/api/v1"
"github.com/gitran-com/gitran-server/config"
"github.com/gitran-com/gitran-server/middleware"
"github.com/gitran-com/gitran-server/model"
"github.com/gitran-com/gitran-server/service"
)
func main() {
//解析命令行参数
flag.Parse()
//读取解析配置文件
if err := config.Init(); err != nil {
return
}
//数据库&语言文件初始化
if err := model.Init(); err != nil {
return
}
//服务初始化
if err := service.Init(); err != nil {
return
}
//API初始化
var r *gin.Engine
if config.IsDebug {
r = gin.Default()
r.Use(debugCORS())
} else {
log.Infof("writing log in file...")
r = gin.New()
r.Use(middleware.Logger())
r.Use(cors.Default())
}
r.Use(sessions.Sessions(config.APP.Name, cookie.NewStore([]byte(config.APP.SessionSecret))))
api := r.Group(config.APP.APIPrefix + "/api")
{
apiv1 := api.Group("/v1")
v1.Init(apiv1)
}
if err := r.Run(config.APP.Addr); err != nil {
log.Fatalf("server run error : %v\n", err.Error())
}
}
func debugCORS() gin.HandlerFunc {
return func(c *gin.Context) {
c.Writer.Header().Set("Access-Control-Allow-Origin", c.Request.Header.Get("Origin"))
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
c.Writer.Header().Set("Access-Control-Allow-Methods", "OPTIONS, GET, POST, DELETE, PUT, PATCH")
c.Writer.Header().Set("Content-Type", "*; charset=utf-8")
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(204)
return
}
c.Next()
}
}