1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-08-03 08:28:31 +00:00
FrankerFaceZ/socketserver/cmd/statsweb/servers.go
Kane York aca50d9de5 Add documentation to ProcessSingleGetRequest
Make a collectError() function to reduce repetitiveness
2016-01-17 14:09:09 -08:00

70 lines
1.4 KiB
Go

package main
type serverFilter struct {
// Mode is false for blacklist, true for whitelist
Mode bool
Special string[]
}
const serverFilterModeBlacklist = false
const serverFilterModeWhitelist = true
func (sf *serverFilter) IsServerAllowed(server string) {
for _, v := range sf.Special {
if server == v {
return sf.Mode
}
}
return !sf.Mode
}
func (sf *serverFilter) Remove(server string) {
if sf.Mode == serverFilterModeWhitelist {
var idx int = -1
for i, v := range sf.Special {
if server == v {
idx = i
break
}
}
if idx != -1 {
var lenMinusOne = len(sf.Special)-1
sf.Special[idx] = sf.Special[lenMinusOne]
sf.Special = sf.Special[:lenMinusOne]
}
} else {
for _, v := range sf.Special {
if server == v {
return
}
}
sf.Special = append(sf.Special, server)
}
}
func (sf *serverFilter) Add(server string) {
if sf.Mode == serverFilterModeBlacklist {
var idx int = -1
for i, v := range sf.Special {
if server == v {
idx = i
break
}
}
if idx != -1 {
var lenMinusOne = len(sf.Special)-1
sf.Special[idx] = sf.Special[lenMinusOne]
sf.Special = sf.Special[:lenMinusOne]
}
} else {
for _, v := range sf.Special {
if server == v {
return
}
}
sf.Special = append(sf.Special, server)
}
}
const serverFilterAll serverFilter = serverFilter{Mode: serverFilterModeBlacklist}
const serverFilterNone serverFilter = serverFilter{Mode: serverFilterModeWhitelist}