Improve performance when custom lists are not loaded

This commit is contained in:
Daniel 2023-08-11 11:55:04 +02:00
parent d9c76cf4dc
commit 8138a2aa4c
2 changed files with 24 additions and 0 deletions

View file

@ -619,6 +619,11 @@ matchLoop:
} }
func checkCustomFilterList(_ context.Context, conn *network.Connection, p *profile.LayeredProfile, _ packet.Packet) bool { func checkCustomFilterList(_ context.Context, conn *network.Connection, p *profile.LayeredProfile, _ packet.Packet) bool {
// Check if any custom list is loaded at all.
if !customlists.IsLoaded() {
return false
}
// block if the domain name appears in the custom filter list (check for subdomains if enabled) // block if the domain name appears in the custom filter list (check for subdomains if enabled)
if conn.Entity.Domain != "" { if conn.Entity.Domain != "" {
if ok, match := customlists.LookupDomain(conn.Entity.Domain, p.FilterSubDomains()); ok { if ok, match := customlists.LookupDomain(conn.Entity.Domain, p.FilterSubDomains()); ok {

View file

@ -36,6 +36,25 @@ func initFilterLists() {
domainsFilterList = make(map[string]struct{}) domainsFilterList = make(map[string]struct{})
} }
// IsLoaded returns whether a custom filter list is loaded.
func IsLoaded() bool {
filterListLock.RLock()
defer filterListLock.RUnlock()
switch {
case len(domainsFilterList) > 0:
return true
case len(ipAddressesFilterList) > 0:
return true
case len(countryCodesFilterList) > 0:
return true
case len(autonomousSystemsFilterList) > 0:
return true
default:
return false
}
}
func parseFile(filePath string) error { func parseFile(filePath string) error {
// Reset all maps, previous (if any) settings will be lost. // Reset all maps, previous (if any) settings will be lost.
for key := range countryCodesFilterList { for key := range countryCodesFilterList {