From 7116aaa5a868b9faf6802e46c8c26dedf4454c1a Mon Sep 17 00:00:00 2001
From: bjdgyc <bjdgyc@163.com>
Date: Tue, 5 Nov 2024 18:20:23 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 build_docker.sh            | 10 +++++++---
 server/sessdata/ip_pool.go | 20 +++++++++++---------
 2 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/build_docker.sh b/build_docker.sh
index 8a9701e..4bf4356 100644
--- a/build_docker.sh
+++ b/build_docker.sh
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+action=$1
+
 ver=$(cat version)
 echo $ver
 
@@ -18,6 +20,8 @@ docker build -t bjdgyc/anylink:latest --no-cache --progress=plain \
 echo "docker tag latest $ver"
 docker tag bjdgyc/anylink:latest bjdgyc/anylink:$ver
 
-
-# docker tag bjdgyc/anylink:$ver registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:test-$ver
-# docker push registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:test-$ver
+if [[ $action == "cntest" ]]; then
+  docker tag bjdgyc/anylink:$ver registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:test-$ver
+  docker push registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:test-$ver
+  echo registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:test-$ver
+fi
diff --git a/server/sessdata/ip_pool.go b/server/sessdata/ip_pool.go
index 8d49496..4127080 100644
--- a/server/sessdata/ip_pool.go
+++ b/server/sessdata/ip_pool.go
@@ -85,6 +85,13 @@ func initIpPool() {
 // 	ipPoolMux.Unlock()
 // }
 
+func ipInPool(ip net.IP) bool {
+	if utils.Ip2long(ip) >= IpPool.IpLongMin && utils.Ip2long(ip) <= IpPool.IpLongMax {
+		return true
+	}
+	return false
+}
+
 // AcquireIp 获取动态ip
 func AcquireIp(username, macAddr string, uniqueMac bool) (newIp net.IP) {
 	base.Trace("AcquireIp start:", username, macAddr, uniqueMac)
@@ -125,8 +132,7 @@ func AcquireIp(username, macAddr string, uniqueMac bool) (newIp net.IP) {
 		// IpPool.Ipv4IPNet.Contains(ip) &&
 		// ip符合规范
 		// 检测原有ip是否在新的ip池内
-		if !ok && utils.Ip2long(ip) >= IpPool.IpLongMin &&
-			utils.Ip2long(ip) <= IpPool.IpLongMax {
+		if !ok && ipInPool(ip) {
 			mi.Username = username
 			mi.LastLogin = tNow
 			mi.UniqueMac = uniqueMac
@@ -150,7 +156,7 @@ func AcquireIp(username, macAddr string, uniqueMac bool) (newIp net.IP) {
 
 	// 没有获取到mac的情况
 	ipMaps := []dbdata.IpMap{}
-	err = dbdata.FindWhere(&ipMaps, 50, 1, "username=?", username)
+	err = dbdata.FindWhere(&ipMaps, 30, 1, "username=?", username)
 	if err != nil {
 		// 没有查询到数据
 		if dbdata.CheckErrNotFound(err) {
@@ -180,8 +186,7 @@ func AcquireIp(username, macAddr string, uniqueMac bool) (newIp net.IP) {
 
 		// 没有mac的 不需要验证租期
 		// mi.LastLogin.Before(leaseTime) &&
-		if utils.Ip2long(ip) >= IpPool.IpLongMin &&
-			utils.Ip2long(ip) <= IpPool.IpLongMax {
+		if ipInPool(ip) {
 			mi.Username = username
 			mi.LastLogin = tNow
 			mi.MacAddr = macAddr
@@ -199,8 +204,7 @@ func AcquireIp(username, macAddr string, uniqueMac bool) (newIp net.IP) {
 var (
 	// 记录循环点
 	loopCurIp uint32
-	loopFarIp = &dbdata.IpMap{LastLogin: time.Now()}
-	loopFarI  = uint32(0)
+	loopFarIp *dbdata.IpMap
 )
 
 func loopIp(username, macAddr string, uniqueMac bool) net.IP {
@@ -211,7 +215,6 @@ func loopIp(username, macAddr string, uniqueMac bool) net.IP {
 
 	// 重新赋值
 	loopFarIp = &dbdata.IpMap{LastLogin: time.Now()}
-	loopFarI = uint32(0)
 
 	i, ip = loopLong(loopCurIp, IpPool.IpLongMax, username, macAddr, uniqueMac)
 	if ip != nil {
@@ -298,7 +301,6 @@ func loopLong(start, end uint32, username, macAddr string, uniqueMac bool) (uint
 		// 其他情况判断最早登陆
 		if mi.LastLogin.Before(loopFarIp.LastLogin) {
 			loopFarIp = mi
-			loopFarI = i
 		}
 	}