mirror of https://github.com/bjdgyc/anylink.git
commit
9a6aaa87e5
|
@ -117,11 +117,18 @@ func SetGroup(g *Group) error {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
ipMask, _, err := parseIpNet(v.Val)
|
ipMask, ipNet, err := parseIpNet(v.Val)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New("RouteInclude 错误" + err.Error())
|
return errors.New("RouteInclude 错误" + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 给Mac系统下发路由时,必须是标准的网络地址
|
||||||
|
if strings.Split(ipMask, "/")[0] != ipNet.IP.String() {
|
||||||
|
errMsg := fmt.Sprintf("RouteInclude 错误: 网络地址错误,建议: %s 改为 %s", v.Val, ipNet)
|
||||||
|
return errors.New(errMsg)
|
||||||
|
}
|
||||||
|
|
||||||
v.IpMask = ipMask
|
v.IpMask = ipMask
|
||||||
routeInclude = append(routeInclude, v)
|
routeInclude = append(routeInclude, v)
|
||||||
}
|
}
|
||||||
|
@ -130,10 +137,16 @@ func SetGroup(g *Group) error {
|
||||||
routeExclude := []ValData{}
|
routeExclude := []ValData{}
|
||||||
for _, v := range g.RouteExclude {
|
for _, v := range g.RouteExclude {
|
||||||
if v.Val != "" {
|
if v.Val != "" {
|
||||||
ipMask, _, err := parseIpNet(v.Val)
|
ipMask, ipNet, err := parseIpNet(v.Val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New("RouteExclude 错误" + err.Error())
|
return errors.New("RouteExclude 错误" + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.Split(ipMask, "/")[0] != ipNet.IP.String() {
|
||||||
|
errMsg := fmt.Sprintf("RouteInclude 错误: 网络地址错误,建议: %s 改为 %s", v.Val, ipNet)
|
||||||
|
return errors.New(errMsg)
|
||||||
|
}
|
||||||
|
|
||||||
v.IpMask = ipMask
|
v.IpMask = ipMask
|
||||||
routeExclude = append(routeExclude, v)
|
routeExclude = append(routeExclude, v)
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package dbdata
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -31,11 +32,16 @@ func SetPolicy(p *Policy) error {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
ipMask, _, err := parseIpNet(v.Val)
|
ipMask, ipNet, err := parseIpNet(v.Val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New("RouteInclude 错误" + err.Error())
|
return errors.New("RouteInclude 错误" + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.Split(ipMask, "/")[0] != ipNet.IP.String() {
|
||||||
|
errMsg := fmt.Sprintf("RouteInclude 错误: 网络地址错误,建议: %s 改为 %s", v.Val, ipNet)
|
||||||
|
return errors.New(errMsg)
|
||||||
|
}
|
||||||
|
|
||||||
v.IpMask = ipMask
|
v.IpMask = ipMask
|
||||||
routeInclude = append(routeInclude, v)
|
routeInclude = append(routeInclude, v)
|
||||||
}
|
}
|
||||||
|
@ -45,10 +51,15 @@ func SetPolicy(p *Policy) error {
|
||||||
routeExclude := []ValData{}
|
routeExclude := []ValData{}
|
||||||
for _, v := range p.RouteExclude {
|
for _, v := range p.RouteExclude {
|
||||||
if v.Val != "" {
|
if v.Val != "" {
|
||||||
ipMask, _, err := parseIpNet(v.Val)
|
ipMask, ipNet, err := parseIpNet(v.Val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New("RouteExclude 错误" + err.Error())
|
return errors.New("RouteExclude 错误" + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.Split(ipMask, "/")[0] != ipNet.IP.String() {
|
||||||
|
errMsg := fmt.Sprintf("RouteInclude 错误: 网络地址错误,建议: %s 改为 %s", v.Val, ipNet)
|
||||||
|
return errors.New(errMsg)
|
||||||
|
}
|
||||||
v.IpMask = ipMask
|
v.IpMask = ipMask
|
||||||
routeExclude = append(routeExclude, v)
|
routeExclude = append(routeExclude, v)
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,19 +21,19 @@ func TestGetPolicy(t *testing.T) {
|
||||||
err = SetPolicy(&p2)
|
err = SetPolicy(&p2)
|
||||||
ast.Nil(err)
|
ast.Nil(err)
|
||||||
|
|
||||||
route := []ValData{{Val: "192.168.1.1/24"}}
|
route := []ValData{{Val: "192.168.1.0/24"}}
|
||||||
p3 := Policy{Username: "a3", ClientDns: []ValData{{Val: "114.114.114.114"}}, RouteInclude: route, DsExcludeDomains: "com.cn,qq.com"}
|
p3 := Policy{Username: "a3", ClientDns: []ValData{{Val: "114.114.114.114"}}, RouteInclude: route, DsExcludeDomains: "com.cn,qq.com"}
|
||||||
err = SetPolicy(&p3)
|
err = SetPolicy(&p3)
|
||||||
ast.Nil(err)
|
ast.Nil(err)
|
||||||
// 判断 IpMask
|
// 判断 IpMask
|
||||||
ast.Equal(p3.RouteInclude[0].IpMask, "192.168.1.1/255.255.255.0")
|
ast.Equal(p3.RouteInclude[0].IpMask, "192.168.1.0/255.255.255.0")
|
||||||
|
|
||||||
route2 := []ValData{{Val: "192.168.2.1/24"}}
|
route2 := []ValData{{Val: "192.168.2.0/24"}}
|
||||||
p4 := Policy{Username: "a4", ClientDns: []ValData{{Val: "114.114.114.114"}}, RouteExclude: route2, DsIncludeDomains: "com.cn,qq.com"}
|
p4 := Policy{Username: "a4", ClientDns: []ValData{{Val: "114.114.114.114"}}, RouteExclude: route2, DsIncludeDomains: "com.cn,qq.com"}
|
||||||
err = SetPolicy(&p4)
|
err = SetPolicy(&p4)
|
||||||
ast.Nil(err)
|
ast.Nil(err)
|
||||||
// 判断 IpMask
|
// 判断 IpMask
|
||||||
ast.Equal(p4.RouteExclude[0].IpMask, "192.168.2.1/255.255.255.0")
|
ast.Equal(p4.RouteExclude[0].IpMask, "192.168.2.0/255.255.255.0")
|
||||||
|
|
||||||
// 判断所有数据
|
// 判断所有数据
|
||||||
var userPolicy *Policy
|
var userPolicy *Policy
|
||||||
|
|
|
@ -17,12 +17,12 @@ func TestCheckUser(t *testing.T) {
|
||||||
|
|
||||||
// 添加一个组
|
// 添加一个组
|
||||||
dns := []ValData{{Val: "114.114.114.114"}}
|
dns := []ValData{{Val: "114.114.114.114"}}
|
||||||
route := []ValData{{Val: "192.168.1.1/24"}}
|
route := []ValData{{Val: "192.168.1.0/24"}}
|
||||||
g := Group{Name: group, Status: 1, ClientDns: dns, RouteInclude: route}
|
g := Group{Name: group, Status: 1, ClientDns: dns, RouteInclude: route}
|
||||||
err := SetGroup(&g)
|
err := SetGroup(&g)
|
||||||
ast.Nil(err)
|
ast.Nil(err)
|
||||||
// 判断 IpMask
|
// 判断 IpMask
|
||||||
ast.Equal(g.RouteInclude[0].IpMask, "192.168.1.1/255.255.255.0")
|
ast.Equal(g.RouteInclude[0].IpMask, "192.168.1.0/255.255.255.0")
|
||||||
|
|
||||||
// 添加一个用户
|
// 添加一个用户
|
||||||
u := User{Username: "aaa", Groups: []string{group}, Status: 1}
|
u := User{Username: "aaa", Groups: []string{group}, Status: 1}
|
||||||
|
@ -59,7 +59,7 @@ func TestCheckUser(t *testing.T) {
|
||||||
}
|
}
|
||||||
// 添加用户策略
|
// 添加用户策略
|
||||||
dns2 := []ValData{{Val: "8.8.8.8"}}
|
dns2 := []ValData{{Val: "8.8.8.8"}}
|
||||||
route2 := []ValData{{Val: "192.168.2.1/24"}}
|
route2 := []ValData{{Val: "192.168.2.0/24"}}
|
||||||
p1 := Policy{Username: "aaa", Status: 1, ClientDns: dns2, RouteInclude: route2}
|
p1 := Policy{Username: "aaa", Status: 1, ClientDns: dns2, RouteInclude: route2}
|
||||||
err = SetPolicy(&p1)
|
err = SetPolicy(&p1)
|
||||||
ast.Nil(err)
|
ast.Nil(err)
|
||||||
|
|
Loading…
Reference in New Issue