增加ip黑名单验证
This commit is contained in:
parent
de99272b07
commit
4f7a62347d
79
safe/ip.go
Normal file
79
safe/ip.go
Normal file
@ -0,0 +1,79 @@
|
||||
// Package safe...
|
||||
//
|
||||
// Description : 安全策略之,访问黑名单
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 2021-03-07 11:34 下午
|
||||
package safe
|
||||
|
||||
import (
|
||||
"github.com/go-developer/gopkg/easymap"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// IPBlack ip黑名单
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 11:35 下午 2021/3/7
|
||||
var IPBlack *ipBlack
|
||||
|
||||
// InitIPBlack 初始化ip黑名单
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 11:36 下午 2021/3/7
|
||||
func InitIPBlack(ipList []string) error {
|
||||
// 不分片等价于只分一片
|
||||
return InitIPBlackWithSeg(1, ipList)
|
||||
}
|
||||
|
||||
// InitIPBlackWithSeg ip黑名单分片存储
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 11:37 下午 2021/3/7
|
||||
func InitIPBlackWithSeg(seg int, ipList []string) error {
|
||||
var err error
|
||||
IPBlack = &ipBlack{}
|
||||
if IPBlack.blackIPTable, err = easymap.NewSegment(seg, true); nil != err {
|
||||
return errors.New("初始化IP黑名单表失败,失败原因 : " + err.Error())
|
||||
}
|
||||
for _, ip := range ipList {
|
||||
// 将黑名单IP添加到内存表, easymap.EasyMap 是并发安全的
|
||||
go IPBlack.blackIPTable.Set(ip, 1)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type ipBlack struct {
|
||||
blackIPTable easymap.EasyMap // 黑名单IP列表
|
||||
}
|
||||
|
||||
// Add 添加黑名单IP
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 12:05 上午 2021/3/8
|
||||
func (ib *ipBlack) Add(ip string) {
|
||||
ib.blackIPTable.Set(ip, 1)
|
||||
}
|
||||
|
||||
// Del 删除一个黑名单IP ...
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 12:06 上午 2021/3/8
|
||||
func (ib *ipBlack) Del(ip string) {
|
||||
ib.blackIPTable.Del(ip)
|
||||
}
|
||||
|
||||
// IsBlack 判断ip是否存在于和名单之中
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 12:07 上午 2021/3/8
|
||||
func (ib *ipBlack) IsBlack(ip string) bool {
|
||||
return ib.blackIPTable.Exist(ip)
|
||||
}
|
Loading…
Reference in New Issue
Block a user