Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package dfaExUtil
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestHandleWord(t *testing.T) {
|
||||
strs := []string{"ABC", "1234", "测试", "测试代码", "测试一下"}
|
||||
|
||||
dfaEx1 := NewDFAEx(strs)
|
||||
str := dfaEx1.HandleWord("abc按了数字12345来测试代码是否正常,结果测试出了bug", '*')
|
||||
t.Log(str)
|
||||
|
||||
dfaEx2 := NewDFAEx(strs, true)
|
||||
str = dfaEx2.HandleWord("abc按了数字12345来测试代码是否正常,结果测试出了bug", '*')
|
||||
t.Log(str)
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
提供统一的ip验证的逻辑;包括两部分:
|
||||
1、ManageCenter中配置到ServerGroup中的IP;系统内部自动处理,外部无需关注(暂时不用);
|
||||
2、各个应用程序中配置的ip;通过调用Init或InitString方法进行初始化;
|
||||
*/
|
||||
package ipMgr
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"goutil/stringUtil"
|
||||
)
|
||||
|
||||
var (
|
||||
ipMap = make(map[string]struct{}, 32) // 本地ip集合
|
||||
ipCheckFuncList = make([]func(string) bool, 0, 16) // ip检查函数列表
|
||||
mutex sync.RWMutex
|
||||
)
|
||||
|
||||
// 初始化IP列表
|
||||
func Init(ipList []string) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
// 先清空再初始化
|
||||
ipMap = make(map[string]struct{}, 32)
|
||||
for _, item := range ipList {
|
||||
ipMap[item] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化ip字符串(以分隔符分割的,分隔符为:",", ";", ":", "|", "||")
|
||||
func InitString(ipStr string) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
// 先清空再初始化
|
||||
ipMap = make(map[string]struct{}, 32)
|
||||
for _, item := range stringUtil.Split(ipStr, nil) {
|
||||
ipMap[item] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
func AddString(ipStr string) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
// 先清空再初始化
|
||||
if ipMap == nil {
|
||||
ipMap = make(map[string]struct{}, 32)
|
||||
}
|
||||
|
||||
for _, item := range stringUtil.Split(ipStr, nil) {
|
||||
ipMap[item] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
// RegisterIpCheckFunc 注册Ip检查函数
|
||||
func RegisterIpCheckFunc(funcName string, funcItem func(string) bool) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
ipCheckFuncList = append(ipCheckFuncList, funcItem)
|
||||
}
|
||||
|
||||
func isLocalValid(ip string) bool {
|
||||
mutex.RLock()
|
||||
defer mutex.RUnlock()
|
||||
|
||||
_, exist := ipMap[ip]
|
||||
return exist
|
||||
}
|
||||
|
||||
func isCheckFuncValid(ip string) bool {
|
||||
mutex.RLock()
|
||||
defer mutex.RUnlock()
|
||||
|
||||
for _, funcItem := range ipCheckFuncList {
|
||||
if funcItem(ip) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// 判断传入的Ip是否有效
|
||||
// ip:ip
|
||||
// 返回值:
|
||||
// 是否有效
|
||||
func IsIpValid(ip string) bool {
|
||||
return isLocalValid(ip) || isCheckFuncValid(ip)
|
||||
}
|
||||
Reference in New Issue
Block a user