| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | package mainimport (    "encoding/base64"    "testbench/models/etc"    "testbench/models/statusMgr"    "testbench/models/userMgr"    _ "testbench/routers"    "testbench/tcp/bds"    "testbench/tcp/robot"    "testbench/tcp/zz"    "github.com/astaxie/beego"    "github.com/astaxie/beego/context"    "github.com/astaxie/beego/orm"    _ "github.com/mattn/go-sqlite3"    "strings"    "wb/cc"    "wb/cfg"    "wb/ctrl"    "wb/ii"    "wb/lg"    "wb/modbus"    "wb/usr")func initLog(){    dataPath := cfg.WbConfig.DataPath    if beego.BConfig.RunMode == "prod" {        lg.InitLog(lg.LevelInfo, dataPath + "/log")    }else{        lg.InitLog(lg.LevelDebug, dataPath + "/log")    }}func initDb() {    orm.RegisterDriver("sqlite", orm.DRSqlite)    dbPath := cfg.WbConfig.DataPath + "/db/main.db"    beego.Info("initDb file:", dbPath)    orm.RegisterDataBase("default", "sqlite3", dbPath)        postitionPath := cfg.WbConfig.DataPath + "/db/position.db"    beego.Info("initDb file:", postitionPath)    orm.RegisterDataBase(etc.DbNamePosition, "sqlite3", postitionPath)    historyPath := cfg.WbConfig.DataPath + "/db/gsstatus.db"    beego.Info("initDb file:", historyPath)    orm.RegisterDataBase(etc.DbNameGsStatus, "sqlite3", historyPath)    historyPath = cfg.WbConfig.DataPath + "/db/wpstatus.db"    beego.Info("initDb file:", historyPath)    orm.RegisterDataBase(etc.DbNameWpStatus, "sqlite3", historyPath)    orm.Debug = true}var needLogin boolvar FilterUser = func(ctx *context.Context) {    if v, _:=beego.AppConfig.Bool("demoEnable");v && ctx.Input.URL() == "/demo"{        return    }    if v, _:=beego.AppConfig.Bool("publicEnable");v&& ctx.Input.URL() == "/public"{        return    }    switch ctx.Input.URL() {    case "/login", "/logout","/ViewStatus":        return    }    _, ok := ctx.Input.Session(cc.SessionUser).(usr.Usr)    if !ok && ctx.Request.RequestURI != "/login" {        if needLogin == false{            u := userMgr.User{}            u.Role = "role_sysuser"            ctx.Input.CruSession.Set(cc.SessionUser, u)            return        }        lg.Debug("FilterUser need login: ", ctx.Input.URL(), ctx.Input.URI())        if strings.EqualFold("POST", ctx.Request.Method) {            if ctx.Input.IP() == beego.AppConfig.DefaultString("erpIP",""){                u := userMgr.User{}                u.Role = "role_sysadmin"                ctx.Input.CruSession.Set(cc.SessionUser, u)                return            }            ctx.WriteString("need_login")            return        }        redirect := ctx.Input.URI()        redirectB64 := base64.URLEncoding.EncodeToString([]byte(redirect))        ctx.Redirect(302, "/login?redirect=" + redirectB64)    }}func main() {    cfg.InitConfig()    initLog()    initDb()    ii.LoadItemInfo("conf/item/fields")    modbus.LoadModelInfo("conf/mdbs")    zz.LoadModelInfo("conf/zz/zz.xml")    needLogin = beego.AppConfig.DefaultBool("needLogin", true)    lg.Info("Init need login:", needLogin)    beego.InsertFilter("/*", beego.BeforeRouter, FilterUser)    ctrl.LoadSvcConfig("conf/svc")    statusMgr.InitStatusMgr()    //go mdbs.ServerRun()    go bds.ServerRun()    go zz.ServerRun()    go robot.ServerRun()    //for i := int16(1);i<99;i++{    //    time.Sleep(2 * time.Second)    //    print(i)    //    go client.BdsClient(i)    //}    beego.Run()}
 |