package dbdata import ( "github.com/bjdgyc/anylink/base" _ "github.com/go-sql-driver/mysql" _ "github.com/lib/pq" _ "github.com/mattn/go-sqlite3" "xorm.io/xorm" ) var ( xdb *xorm.Engine ) func GetXdb() *xorm.Engine { return xdb } func initDb() { var err error xdb, err = xorm.NewEngine(base.Cfg.DbType, base.Cfg.DbSource) if err != nil { base.Fatal(err) } if base.Cfg.ShowSQL { xdb.ShowSQL(true) } // 初始化数据库 err = xdb.Sync2(&User{}, &Setting{}, &Group{}, &IpMap{}, &AccessAudit{}, &Policy{}, &StatsNetwork{}, &StatsCpu{}, &StatsMem{}, &StatsOnline{}) if err != nil { base.Fatal(err) } // fmt.Println("s1=============", err) } func initData() { var ( err error ) // 判断是否初次使用 install := &SettingInstall{} err = SettingGet(install) if err == nil && install.Installed { // 已经安装过 return } // 发生错误 if err != ErrNotFound { base.Fatal(err) } err = addInitData() if err != nil { base.Fatal(err) } } func addInitData() error { var ( err error ) sess := xdb.NewSession() defer sess.Close() err = sess.Begin() if err != nil { return err } // SettingSmtp smtp := &SettingSmtp{ Host: "127.0.0.1", Port: 25, From: "vpn@xx.com", Encryption: "None", } err = SettingSessAdd(sess, smtp) if err != nil { return err } // SettingAuditLog auditLog := SettingGetAuditLogDefault() err = SettingSessAdd(sess, auditLog) if err != nil { return err } // SettingOther other := &SettingOther{ LinkAddr: "vpn.xx.com", Banner: "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为!", Homeindex: "AnyLink 是一个企业级远程办公 sslvpn 的软件,可以支持多人同时在线使用。", AccountMail: accountMail, } err = SettingSessAdd(sess, other) if err != nil { return err } // Install install := &SettingInstall{Installed: true} err = SettingSessAdd(sess, install) if err != nil { return err } err = sess.Commit() if err != nil { return err } g1 := Group{ Name: "ops", AllowLan: true, ClientDns: []ValData{{Val: "114.114.114.114"}}, RouteInclude: []ValData{{Val: All}}, } err = SetGroup(&g1) if err != nil { return err } return nil } func CheckErrNotFound(err error) bool { return err == ErrNotFound } const accountMail = `

您好:

  您的{{.Issuer}}账号已经审核开通。

登陆地址: {{.LinkAddr}}
用户组: {{.Group}}
用户名: {{.Username}}
用户PIN码: {{.PinCode}}
用户动态码(3天后失效):

使用说明:

软件下载地址: https://{{.LinkAddr}}/files/info.txt

`