package conf
|
|
|
|
import (
|
|
"LAPP_GAAS_GFrame_BACKEND/web/supports"
|
|
"fmt"
|
|
"github.com/kataras/iris/v12"
|
|
"github.com/kataras/iris/v12/middleware/logger"
|
|
rcover "github.com/kataras/iris/v12/middleware/recover"
|
|
)
|
|
|
|
var ExampleFile = "http://localhost:8093/public/uploadxlsx/example.xlsx"
|
|
|
|
var Baseurl = "http://localhost:8093"
|
|
|
|
//var ExampleFile = "http://localhost:8097/public/uploadxlsx/example.xlsx"
|
|
//
|
|
//var Baseurl = "http://localhost:8097"
|
|
|
|
type AppConf struct {
|
|
DisablePathCorrection bool
|
|
EnablePathEscape bool
|
|
FireMethodNotAllowed bool
|
|
DisableBodyConsumptionOnUnmarshal bool
|
|
TimeFormat string
|
|
Charset string
|
|
Other Other
|
|
PublicRute []string
|
|
}
|
|
type Other struct {
|
|
IgnoreURLs []string
|
|
JWTTimeout int64
|
|
LogLevel string
|
|
Secret string
|
|
}
|
|
|
|
var AppConfig AppConf = AppConf{
|
|
DisablePathCorrection: false,
|
|
EnablePathEscape: false,
|
|
FireMethodNotAllowed: false,
|
|
DisableBodyConsumptionOnUnmarshal: false,
|
|
TimeFormat: "Mon, 01 Jan 2006 15:04:05 GMT",
|
|
Charset: "UTF-8",
|
|
Other: Other{
|
|
IgnoreURLs: []string{"/", "/user/login", "/user/plants", "/admin/tabnames/download", "/user/getimg", "/admin/api/screw/receive", "/admin/log/artdemandhead/selectlastmodify", "/admin/log/artdemandlst/synchronous", "/admin/log/artdemandlstcache/synchronouscache", "/admin/report/filterdatainfo/display", "/admin/ws","/datal", "/admin/om/workorder/display"}, //免token验证路径
|
|
JWTTimeout: 72000,
|
|
LogLevel: "debug",
|
|
Secret: "lapp_gaas_gframe",
|
|
},
|
|
PublicRute: []string{"/sysMenu", "/user/getuserinfo", "/user/pwd", "/user/avatar", "/user/profile", "/user/getimg", "/admin/tabnames/list", "/admin/stdeftab/selectarr", "/admin/stdeftab/selectall", "/admin/log/artdemandhead/selectlastmodify", "/admin/log/artdemandlst/synchronous", "/admin/log/artdemandlstcache/synchronouscache","/admin/om/workorder/display"}, //免权限检查路径
|
|
}
|
|
|
|
var (
|
|
// conf strut
|
|
C iris.Configuration
|
|
|
|
// 解析app.yml中的Other项
|
|
O Other
|
|
// app.conf配置项key定义
|
|
ignoreURLs string = "IgnoreURLs"
|
|
jwtTimeout string = "JWTTimeout"
|
|
logLevel string = "LogLevel"
|
|
secret string = "Secret"
|
|
)
|
|
|
|
func AppOtherParse() {
|
|
appData := AppConfig
|
|
c := iris.DefaultConfiguration()
|
|
c.DisableBodyConsumptionOnUnmarshal = appData.DisableBodyConsumptionOnUnmarshal
|
|
c.DisablePathCorrection = appData.DisablePathCorrection
|
|
c.EnablePathEscape = appData.EnablePathEscape
|
|
c.FireMethodNotAllowed = appData.FireMethodNotAllowed
|
|
c.TimeFormat = appData.TimeFormat
|
|
c.Charset = appData.Charset
|
|
other := make(map[string]interface{}, 0)
|
|
other["IgnoreURLs"] = appData.Other.IgnoreURLs
|
|
other["JWTTimeout"] = appData.Other.JWTTimeout
|
|
other["LogLevel"] = appData.Other.LogLevel
|
|
other["Secret"] = appData.Other.Secret
|
|
c.Other = other
|
|
C = c
|
|
|
|
// 解析other的key
|
|
iURLs := c.GetOther()[ignoreURLs].([]string)
|
|
fmt.Println(iURLs)
|
|
for _, v := range iURLs {
|
|
O.IgnoreURLs = append(O.IgnoreURLs, v)
|
|
}
|
|
|
|
jTimeout := c.GetOther()[jwtTimeout].(int64)
|
|
O.JWTTimeout = int64(jTimeout)
|
|
//golog.Info(reflect.TypeOf(O.JWTTimeout))
|
|
|
|
O.LogLevel = c.GetOther()[logLevel].(string)
|
|
|
|
O.Secret = c.GetOther()[secret].(string)
|
|
|
|
}
|
|
|
|
// 注册中间件、定义错误处理
|
|
func PreSettring(app *iris.Application) {
|
|
app.Logger().SetLevel(AppConfig.Other.LogLevel)
|
|
|
|
customLogger := logger.New(logger.Config{
|
|
//状态显示状态代码
|
|
Status: true,
|
|
// IP显示请求的远程地址
|
|
IP: true,
|
|
//方法显示http方法
|
|
Method: true,
|
|
// Path显示请求路径
|
|
Path: true,
|
|
// Query将url查询附加到Path。
|
|
Query: true,
|
|
//Columns:true,
|
|
// 如果不为空然后它的内容来自`ctx.Values(),Get("logger_message")
|
|
//将添加到日志中。
|
|
MessageContextKeys: []string{"logger_message"},
|
|
//如果不为空然后它的内容来自`ctx.GetHeader(“User-Agent”)
|
|
MessageHeaderKeys: []string{"User-Agent"},
|
|
})
|
|
app.Use(
|
|
rcover.New(),
|
|
customLogger,
|
|
//middleware.ServeHTTP
|
|
)
|
|
// ---------------------- 定义错误处理 ------------------------
|
|
app.OnErrorCode(iris.StatusNotFound, customLogger, func(ctx iris.Context) {
|
|
supports.Error(ctx, iris.StatusNotFound, supports.NotFound, nil)
|
|
})
|
|
//app.OnErrorCode(iris.StatusForbidden, customLogger, func(ctx iris.Context) {
|
|
// ctx.JSON(utils.Error(iris.StatusForbidden, "权限不足", nil))
|
|
//})
|
|
//捕获所有http错误:
|
|
//app.OnAnyErrorCode(customLogger, func(ctx iris.Context) {
|
|
// //这应该被添加到日志中,因为`logger.Config#MessageContextKey`
|
|
// ctx.Values().Set("logger_message", "a dynamic message passed to the logs")
|
|
// ctx.JSON(utils.Error(500, "服务器内部错误", nil))
|
|
//})
|
|
}
|