| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- package dbdata
- import (
- "time"
- "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)
- // 初始化xorm时区
- xdb.DatabaseTZ = time.Local
- xdb.TZLocation = time.Local
- 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{}, &UserActLog{})
- 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: "[email protected]",
- Encryption: "None",
- }
- err = SettingSessAdd(sess, smtp)
- if err != nil {
- return err
- }
- // SettingAuditLog
- auditLog := SettingGetAuditLogDefault()
- err = SettingSessAdd(sess, auditLog)
- if err != nil {
- return err
- }
- // SettingDnsProvider
- provider := &SettingLetsEncrypt{
- Domain: "vpn.xxx.com",
- Legomail: "legomail",
- Name: "aliyun",
- Renew: false,
- DNSProvider: DNSProvider{
- AliYun: struct {
- APIKey string `json:"apiKey"`
- SecretKey string `json:"secretKey"`
- }{APIKey: "", SecretKey: ""},
- TXCloud: struct {
- SecretID string `json:"secretId"`
- SecretKey string `json:"secretKey"`
- }{SecretID: "", SecretKey: ""},
- CfCloud: struct {
- AuthToken string `json:"authToken"`
- }{AuthToken: ""}},
- }
- err = SettingSessAdd(sess, provider)
- if err != nil {
- return err
- }
- // LegoUser
- legouser := &LegoUserData{}
- err = SettingSessAdd(sess, legouser)
- 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}},
- Status: 1,
- }
- err = SetGroup(&g1)
- if err != nil {
- return err
- }
- return nil
- }
- func CheckErrNotFound(err error) bool {
- return err == ErrNotFound
- }
- const accountMail = `<p>您好:</p>
- <p> 您的{{.Issuer}}账号已经审核开通。</p>
- <p>
- 登陆地址: <b>{{.LinkAddr}}</b> <br/>
- 用户组: <b>{{.Group}}</b> <br/>
- 用户名: <b>{{.Username}}</b> <br/>
- 用户PIN码: <b>{{.PinCode}}</b> <br/>
- <!--
- 用户动态码(3天后失效):<br/>
- <img src="{{.OtpImg}}"/>
- -->
- 用户动态码(请妥善保存):<br/>
- <img src="{{.OtpImgBase64}}"/>
- </p>
- <div>
- 使用说明:
- <ul>
- <li>请使用OTP软件扫描动态码二维码</li>
- <li>然后使用anyconnect客户端进行登陆</li>
- <li>登陆密码为 【PIN码+动态码】</li>
- </ul>
- </div>
- <p>
- 软件下载地址: https://{{.LinkAddr}}/files/info.txt
- </p>`
|