feat: 增加流量限制功能
This commit is contained in:

committed by
zhengkunwang223

parent
daa2e12420
commit
d5aee147f4
@@ -144,11 +144,28 @@ func (s *Server) UpdateRootProxy(proxy []string) {
|
||||
Parameters: proxy,
|
||||
})
|
||||
newDir.Block = block
|
||||
s.UpdateDirectives("location", newDir)
|
||||
s.UpdateDirectiveBySecondKey("location", "/", newDir)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) UpdateDirectiveBySecondKey(name string, key string, directive Directive) {
|
||||
directives := s.Directives
|
||||
index := -1
|
||||
for i, dir := range directives {
|
||||
if dir.GetName() == name && dir.GetParameters()[0] == key {
|
||||
index = i
|
||||
break
|
||||
}
|
||||
}
|
||||
if index > -1 {
|
||||
directives[index] = &directive
|
||||
} else {
|
||||
directives = append(directives, &directive)
|
||||
}
|
||||
s.Directives = directives
|
||||
}
|
||||
|
||||
func (s *Server) RemoveListenByBind(bind string) {
|
||||
index := 0
|
||||
listens := s.Listens
|
||||
@@ -176,14 +193,19 @@ func (s *Server) FindDirectives(directiveName string) []IDirective {
|
||||
}
|
||||
|
||||
func (s *Server) UpdateDirectives(directiveName string, directive Directive) {
|
||||
directives := make([]IDirective, 0)
|
||||
for _, dir := range s.Directives {
|
||||
directives := s.Directives
|
||||
index := -1
|
||||
for i, dir := range directives {
|
||||
if dir.GetName() == directiveName {
|
||||
directives = append(directives, &directive)
|
||||
} else {
|
||||
directives = append(directives, dir)
|
||||
index = i
|
||||
break
|
||||
}
|
||||
}
|
||||
if index > -1 {
|
||||
directives[index] = &directive
|
||||
} else {
|
||||
directives = append(directives, &directive)
|
||||
}
|
||||
s.Directives = directives
|
||||
}
|
||||
|
||||
@@ -197,7 +219,7 @@ func (s *Server) RemoveDirectives(names []string) {
|
||||
for _, name := range names {
|
||||
nameMaps[name] = struct{}{}
|
||||
}
|
||||
directives := s.GetDirectives()
|
||||
directives := s.Directives
|
||||
var newDirectives []IDirective
|
||||
for _, dir := range directives {
|
||||
if _, ok := nameMaps[dir.GetName()]; ok {
|
||||
|
Reference in New Issue
Block a user