mirror of
				https://github.com/bjdgyc/anylink.git
				synced 2025-11-04 11:06:22 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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)
 | 
						||
	// xdb.ShowSQL(true)
 | 
						||
	if err != nil {
 | 
						||
		base.Fatal(err)
 | 
						||
	}
 | 
						||
 | 
						||
	// 初始化数据库
 | 
						||
	err = xdb.Sync2(&User{}, &Setting{}, &Group{}, &IpMap{}, &AccessAudit{})
 | 
						||
	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
 | 
						||
	}
 | 
						||
 | 
						||
	// SettingOther
 | 
						||
	other := &SettingOther{
 | 
						||
		LinkAddr:    "vpn.xx.com",
 | 
						||
		Banner:      "您已接入公司网络,请按照公司规定使用。\n请勿进行非工作下载及视频行为!",
 | 
						||
		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 = `<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}}"/>
 | 
						||
</p>
 | 
						||
<div>
 | 
						||
    使用说明:
 | 
						||
    <ul>
 | 
						||
        <li>请使用OTP软件扫描动态码二维码</li>
 | 
						||
        <li>然后使用anyconnect客户端进行登陆</li>
 | 
						||
        <li>登陆密码为 【PIN码+动态码】</li>
 | 
						||
    </ul>
 | 
						||
</div>
 | 
						||
<p>
 | 
						||
    软件下载地址: https://{{.LinkAddr}}/files/info.txt
 | 
						||
</p>`
 |