修改为sql数据库

This commit is contained in:
bjdgyc
2021-07-15 18:17:37 +08:00
parent 6daf9cbfa3
commit 884f41d2f8
19 changed files with 351 additions and 175 deletions

View File

@@ -67,10 +67,10 @@ func AcquireIp(username, macAddr string) net.IP {
// 判断已经分配过
mi := &dbdata.IpMap{}
err := dbdata.One("MacAddr", macAddr, mi)
err := dbdata.One("mac_addr", macAddr, mi)
if err == nil {
ip := mi.IpAddr
ipStr := ip.String()
ipStr := mi.IpAddr
ip := net.ParseIP(ipStr)
// 跳过活跃连接
_, ok := ipActive[ipStr]
// 检测原有ip是否在新的ip池内
@@ -78,7 +78,7 @@ func AcquireIp(username, macAddr string) net.IP {
mi.Username = username
mi.LastLogin = tNow
// 回写db数据
_ = dbdata.Save(mi)
_ = dbdata.Add(mi)
ipActive[ipStr] = true
return ip
}
@@ -99,12 +99,12 @@ func AcquireIp(username, macAddr string) net.IP {
}
v := &dbdata.IpMap{}
err = dbdata.One("IpAddr", ip, v)
err = dbdata.One("ip_addr", ipStr, v)
if err != nil {
if dbdata.CheckErrNotFound(err) {
// 该ip没有被使用
mi = &dbdata.IpMap{IpAddr: ip, MacAddr: macAddr, Username: username, LastLogin: tNow}
_ = dbdata.Save(mi)
mi = &dbdata.IpMap{IpAddr: ipStr, MacAddr: macAddr, Username: username, LastLogin: tNow}
_ = dbdata.Add(mi)
ipActive[ipStr] = true
return ip
}
@@ -120,9 +120,9 @@ func AcquireIp(username, macAddr string) net.IP {
// 已经超过租期
if tNow.Sub(v.LastLogin) > time.Duration(base.Cfg.IpLease)*time.Second {
_ = dbdata.Del(v)
mi = &dbdata.IpMap{IpAddr: ip, MacAddr: macAddr, Username: username, LastLogin: tNow}
mi = &dbdata.IpMap{IpAddr: ipStr, MacAddr: macAddr, Username: username, LastLogin: tNow}
// 重写db数据
_ = dbdata.Save(mi)
_ = dbdata.Add(mi)
ipActive[ipStr] = true
return ip
}
@@ -139,11 +139,11 @@ func AcquireIp(username, macAddr string) net.IP {
}
// 使用最早登陆的mac ip
ip := farIp.IpAddr
ipStr := ip.String()
mi = &dbdata.IpMap{IpAddr: ip, MacAddr: macAddr, Username: username, LastLogin: tNow}
ipStr := farIp.IpAddr
ip := net.ParseIP(ipStr)
mi = &dbdata.IpMap{IpAddr: ipStr, MacAddr: macAddr, Username: username, LastLogin: tNow}
// 回写db数据
_ = dbdata.Save(mi)
_ = dbdata.Add(mi)
ipActive[ipStr] = true
return ip
}
@@ -155,9 +155,9 @@ func ReleaseIp(ip net.IP, macAddr string) {
delete(ipActive, ip.String())
mi := &dbdata.IpMap{}
err := dbdata.One("IpAddr", ip, mi)
err := dbdata.One("ip_addr", ip.String(), mi)
if err == nil {
mi.LastLogin = time.Now()
_ = dbdata.Save(mi)
_ = dbdata.Add(mi)
}
}

View File

@@ -15,7 +15,8 @@ import (
func preData(tmpDir string) {
base.Test()
tmpDb := path.Join(tmpDir, "test.db")
base.Cfg.DbFile = tmpDb
base.Cfg.DbType = "sqlite3"
base.Cfg.DbDsn = tmpDb
base.Cfg.Ipv4CIDR = "192.168.3.0/24"
base.Cfg.Ipv4Start = "192.168.3.1"
base.Cfg.Ipv4End = "192.168.3.199"
@@ -27,7 +28,7 @@ func preData(tmpDir string) {
Name: "group1",
Bandwidth: 1000,
}
_ = dbdata.Save(&group)
_ = dbdata.Add(&group)
initIpPool()
}

View File

@@ -55,7 +55,7 @@ type ConnSession struct {
}
type DtlsSession struct {
isActive int32
isActive int32
CloseChan chan struct{}
closeOnce sync.Once
IpAddr net.IP
@@ -183,9 +183,9 @@ func (s *Session) NewConn() *ConnSession {
IpAddr: ip,
closeOnce: sync.Once{},
CloseChan: make(chan struct{}),
PayloadIn: make(chan *Payload),
PayloadOutCstp: make(chan *Payload),
PayloadOutDtls: make(chan *Payload),
PayloadIn: make(chan *Payload, 64),
PayloadOutCstp: make(chan *Payload, 64),
PayloadOutDtls: make(chan *Payload, 64),
dSess: &atomic.Value{},
}
@@ -236,7 +236,7 @@ func (cs *ConnSession) NewDtlsConn() *DtlsSession {
}
dSess := &DtlsSession{
isActive: 1,
isActive: 1,
CloseChan: make(chan struct{}),
closeOnce: sync.Once{},
IpAddr: cs.IpAddr,