Compare commits

...

4 Commits

Author SHA1 Message Date
MkQtS
6b16be4020 category-social-media-!cn: add some mastodon domains (#3318) 2026-03-02 14:48:30 +08:00
MkQtS
42aafe324e main.go: optimize attr filter (#3317)
[skip ci]
2026-03-02 14:15:40 +08:00
0-Kutya-0
882f48e486 category-ip-geo-detect: add check-host.net (#3316) 2026-03-02 13:53:25 +08:00
Ivan
614b291120 category-ru: add mil.ru (#3315)
Ministry of Defense of the Russian Federation

Co-authored-by: karspls <iaplekh@gmail.com>
2026-03-02 13:51:03 +08:00
4 changed files with 14 additions and 5 deletions

View File

@@ -21,6 +21,7 @@ goskey.ru # GosKey - an electronic signature on a smartphone
grfc.ru # General radio frequency center
izbirkom.ru # Information on ongoing elections and referendums
kremlin.ru # Online representation of the President of Russia
mil.ru # Ministry of Defense of the Russian Federation
nalog.ru # Federal Tax Service
xn--80ajghhoc2aj1c8b.xn--p1ai # Honest Sign - State Labeling System

View File

@@ -3,6 +3,7 @@
2ip.ua
abstractapi.com
bigdatacloud.net
check-host.net
db-ip.com
extreme-ip-lookup.com
fraudguard.io

View File

@@ -13,3 +13,12 @@ include:twitter
include:vk
truthsocial.com
# Mastodon
# * We can not make a comprehensive domain list of all Mastodon instances.
# * Many more dynamic/random instance domains are not listed here.
# * geosite:mastodon is not provided to avoid creating excessive expectations among users.
joinmastodon.org
mastodon.online
mastodon.social
pawoo.net

View File

@@ -263,9 +263,6 @@ func (p *Processor) loadData(listName string, path string) error {
}
func isMatchAttrFilters(entry *Entry, incFilter *Inclusion) bool {
if len(incFilter.MustAttrs) == 0 && len(incFilter.BanAttrs) == 0 {
return true
}
if len(entry.Attrs) == 0 {
return len(incFilter.MustAttrs) == 0
}
@@ -352,12 +349,13 @@ func (p *Processor) resolveList(plname string) error {
for _, dentry := range pl.Entries { // Add direct entries
roughMap[dentry.Plain] = dentry
}
for _, inc := range pl.Inclusions {
for _, inc := range pl.Inclusions { // Add included entries
if err := p.resolveList(inc.Source); err != nil {
return fmt.Errorf("failed to resolve inclusion %q: %w", inc.Source, err)
}
isFullInc := len(inc.MustAttrs) == 0 && len(inc.BanAttrs) == 0
for _, ientry := range p.finalMap[inc.Source] {
if isMatchAttrFilters(ientry, inc) { // Add included entries
if isFullInc || isMatchAttrFilters(ientry, inc) {
roughMap[ientry.Plain] = ientry
}
}