Compare commits

..

46 Commits

Author SHA1 Message Date
Patrick Gu ddc1e21783 Add plex list (#3319)
with notes for some confusing domains
2026-03-05 15:05:42 +08:00
Sergey Morgunov 4437fb0c51 jetbrains: add jetbrains.cloud (#3326) 2026-03-04 23:45:40 +08:00
MkQtS d70840823b Misc updates (#3324)
* tiktok: add ttcdn-us.com

* category-entertainment-cn: add dongdianqiu.com

* geolocation-cn: add kaadas domains
2026-03-03 18:19:03 +08:00
MkQtS 5c0ddc9f24 category-entertainment-cn: add 172mix.com (#3323) 2026-03-03 17:58:20 +08:00
MkQtS b119839e7d icloud: add icloud.cn (#3322) 2026-03-03 17:49:33 +08:00
Minwe LUO a335e24269 category-ai-!cn: add diabrowser.engineering for Dia login (#3321) 2026-03-03 17:19:23 +08:00
wakesend d9d97a7132 Porn updates (#3313)
- illusion is dead. remove it from other categories
- dlsite is included in both category-entertainment and category-porn, no need to include it in geolocation-!cn
- dlsite: add dlaf.jp
- add illgames
- create category-urlshortner
2026-03-03 17:16:58 +08:00
ᡠᠵᡠᡳ ᡠᠵᡠ ᠮᠠᠨᡩ᠋ᠠᠨ deb950bb2b remove :: and 0.0.0.0 (#2780) 2026-03-02 23:47:20 +08:00
EvanLiu2000 be2ec83092 category-porn: add more domains (#3320) 2026-03-02 21:29:45 +08:00
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
grill-glitch 2b3211df98 geolocation-cn: add monika.love and edgemonix.top (#3314) 2026-03-02 13:43:57 +08:00
direnquanbuKO 71e31ba221 apple: mark more sub domains with cn attr (#3312)
Apple Music API endpoints
2026-02-27 17:35:44 +08:00
MkQtS b11bfaa138 sina: add weibopay.com (#3311) 2026-02-27 13:11:31 +08:00
MkQtS afb9e6cad0 main.go: clean up (#3310)
[skip ci]
2026-02-27 13:09:18 +08:00
Konstantin 5f7c4aa60a yandex: add yandexwebcache.net (#3308) 2026-02-27 13:03:46 +08:00
Nikita Ugnich 48eb616779 perplexity: add ppl-ai-file-upload.s3.amazonaws.com (#3307) 2026-02-27 13:02:30 +08:00
Ivan d57e3b3f45 category-gov-ru: add general radio frequency center domain (#3306)
Co-authored-by: Ivan Plekhanov <iaplekh@gmail.com>
2026-02-27 13:00:09 +08:00
dependabot[bot] c308e3430d Chore: bump actions/upload-artifact from 6 to 7 (#3309)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 12:10:39 +08:00
MkQtS 9a46bff5f3 amazon: add more domains (#3304)
* aws: add awswaf.com

Close https://github.com/v2fly/domain-list-community/issues/3303

* amazon: add more domains

source: https://crt.sh/?id=23663232392

* amazon: add more domains

source: https://crt.sh/?id=22217736606
2026-02-25 14:18:09 +08:00
MkQtS 051556734c category-dev: add packagecloud.io (#3302) 2026-02-24 16:45:44 +08:00
wakesend 8829b0ea28 Add mixi (#3299) 2026-02-24 16:37:58 +08:00
Konstantin a201aae131 category-ru: add t1.cloud and yclients.com; kinopub: add smarttvcdn.online (#3298) 2026-02-24 16:25:50 +08:00
sergeevms 2c661d32b6 Update salesforce (#3295) 2026-02-20 18:21:58 +08:00
MkQtS 1be2a927c0 category-cryptocurrency: add blockchain.com (#3294) 2026-02-20 16:30:41 +08:00
EvanLiu2000 3490c96b46 Update category-porn (#3291) 2026-02-20 16:27:57 +08:00
allkeltysss 8ae86bbb4a yandex: add yastatic-net.ru (#3293) 2026-02-20 16:16:51 +08:00
MkQtS db9c0fe466 main.go: improve codes (#3290) 2026-02-19 17:24:13 +08:00
Konstantin 109a50f048 Add more ru bank/financial domains (#3264) 2026-02-19 14:36:27 +08:00
EvanLiu2000 b258a6594e Update missav & category-porn (#3289) 2026-02-19 14:30:57 +08:00
Andrey Cherepkov 8d5ef88729 Update Russian websites (#3269)
* add category-bank-ru and category-finance-ru

* category-ecommerce-ru: include avito

* category-entertainment: add megogo.net

* add kinopoisk

* category-entertainment-ru: add more domains

* category-gov-ru: add more domains

* category-retail-ru: add more domains

* add category-travel-ru

* mailru-group: add more domains

* category-ru: add more domains

* Update category-retail-ru: remove duplicates as they are in x5

* Update category-travel-ru: return taxsee to the ru category

* Update category-ru: add taxsee

* cleanup and reorder

---------

Co-authored-by: MkQtS <81752398+MkQtS@users.noreply.github.com>
2026-02-19 14:10:09 +08:00
MkQtS 491d185657 category-cryptocurrency: add bitcoincore.org (#3287) 2026-02-17 21:16:32 +08:00
Emik d8852e85ea Add yostar (#3283) 2026-02-17 20:54:50 +08:00
MkQtS fb9754a371 add zscaler (#3285) 2026-02-17 18:07:56 +08:00
MkQtS a5fac50ae6 add anker (#3284) 2026-02-17 18:06:03 +08:00
TripleA 94d33011d4 create tld-ru (#3280) 2026-02-17 16:52:16 +08:00
MkQtS f1688340cd category-cryptocurrency: add walletconnect.org (#3281)
Co-authored-by: sinalphabeta <53267553+sinalphabeta@users.noreply.github.com>
2026-02-15 14:38:51 +08:00
sinalphabeta 515262667d Update category-cryptocurrency (#3277) 2026-02-15 13:16:55 +08:00
MkQtS 06af8b92a1 Add airbnb (#3279)
* add airbnb

* airbnb: add more domains

---------

Co-authored-by: Andrey Cherepkov <4404804+ACherepkov1989@users.noreply.github.com>
2026-02-15 10:58:53 +08:00
MkQtS be01a25015 Add 2gis (#3278)
* add 2gis

* 2gis: add more domains

---------

Co-authored-by: Andrey Cherepkov <4404804+ACherepkov1989@users.noreply.github.com>
2026-02-15 10:58:33 +08:00
MkQtS 98d161e89a Create pull_request_template.md (#3276)
[skip ci]
2026-02-14 21:19:33 +08:00
NetworK 8523573ba1 telegram: add ton.org (#3273) 2026-02-14 09:00:22 +08:00
jinqiang zhang 94997e5bd6 add grapheneos (#3272) 2026-02-13 22:43:43 +08:00
mcdemon05 939492e1b7 ubisoft: add more domains (#3201) 2026-02-13 22:01:28 +08:00
58 changed files with 653 additions and 185 deletions
+14
View File
@@ -0,0 +1,14 @@
<!--
Thanks for your contribution!
Please check the following items: (not mandatory)
- Adjacent rules should be sorted alphabetically
- It's not encouraged to create new list/file containing too few (one or two) rules
- Newly added list should be included in relevant categories if possible
- Subdomains are unnecessary as they are overridden by the parent domain. e.g. `[domain:]example.com` overrides `[domain:]app.example.com`
- Description for your changes is welcome (why the change is necessary, data source of added domains, potential impacts, etc.)
-->
+1 -1
View File
@@ -34,7 +34,7 @@ jobs:
mv dlc.dat TEST-${{ github.run_number }}-dlc.dat
- name: Upload TEST-${{ github.run_number }}-dlc.dat
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: TEST-${{ github.run_number }}-dlc.dat
path: TEST-${{ github.run_number }}-dlc.dat
+15
View File
@@ -0,0 +1,15 @@
# https://crt.sh/?id=24119301132
2gis.ae
2gis.am
2gis.az
2gis.by
2gis.com
2gis.com.cy
2gis.cz
2gis.ge
2gis.kg
2gis.kz
2gis.ru
2gis.tj
2gis.ua
2gis.uz
+86
View File
@@ -0,0 +1,86 @@
# https://crt.sh/?id=23815053677
# https://crt.sh/?id=24021548393
# https://crt.sh/?id=6327797853
abb.travel
accomable.com
airbnb.ae
airbnb.al
airbnb.am
airbnb.at
airbnb.az
airbnb.ba
airbnb.be
airbnb.ca
airbnb.cat
airbnb.ch
airbnb.cl
airbnb.cn
airbnb.co.cr
airbnb.co.id
airbnb.co.il
airbnb.co.in
airbnb.co.kr
airbnb.co.nz
airbnb.co.uk
airbnb.co.ve
airbnb.co.za
airbnb.com
airbnb.com.ar
airbnb.com.au
airbnb.com.bo
airbnb.com.br
airbnb.com.bz
airbnb.com.co
airbnb.com.ec
airbnb.com.ee
airbnb.com.gt
airbnb.com.hk
airbnb.com.hn
airbnb.com.hr
airbnb.com.kh
airbnb.com.mt
airbnb.com.my
airbnb.com.ni
airbnb.com.pa
airbnb.com.pe
airbnb.com.ph
airbnb.com.py
airbnb.com.ro
airbnb.com.sg
airbnb.com.sv
airbnb.com.tr
airbnb.com.tw
airbnb.com.ua
airbnb.com.vn
airbnb.cz
airbnb.de
airbnb.dk
airbnb.es
airbnb.fi
airbnb.fr
airbnb.gr
airbnb.gy
airbnb.hu
airbnb.ie
airbnb.is
airbnb.it
airbnb.jp
airbnb.la
airbnb.lt
airbnb.lu
airbnb.lv
airbnb.me
airbnb.mx
airbnb.nl
airbnb.no
airbnb.org
airbnb.pl
airbnb.pt
airbnb.rs
airbnb.ru
airbnb.se
airbnb.si
airbnb.tools
airbnb.travel
muscache.com
vamo.com
+13
View File
@@ -33,6 +33,7 @@ aboutamazon.in
aboutamazon.it
aboutamazon.jp
aboutamazon.pl
aboutamazon.sg
alexafund.cn @cn
alexafund.com.cn @cn
amaaozn.com
@@ -42,24 +43,35 @@ amazon-lantern.com
amazon-launchpad.com
amazon.ae
amazon.ca
amazon.cl
amazon.cn @cn
amazon.co.jp
amazon.co.uk
amazon.co.za
amazon.com
amazon.com.au
amazon.com.be
amazon.com.br
amazon.com.co
amazon.com.mx
amazon.com.ng
amazon.com.tr
amazon.de
amazon.dev
amazon.eg
amazon.es
amazon.fr
amazon.ie
amazon.in
amazon.it
amazon.jobs
amazon.jp
amazon.lu
amazon.nl
amazon.pl
amazon.red
amazon.sa
amazon.se
amazon.sg
amazonalexavoxcon.com
amazonauthorinsights.com
@@ -103,6 +115,7 @@ media-amazon.com
primeday.cn @cn
primeday.com.cn @cn
primeday.info
seattlespheres.com
siege-amazon.com
ssl-images-amazon.com
ueberamazon.de
+12
View File
@@ -0,0 +1,12 @@
anker-in.com @!cn
anker.com @!cn
anker.com.cn
ankersolix.com @!cn
ankerwork.cn
eufy.com @!cn
eufycn.com
eufylife.com @!cn
eufymake.com @!cn
eufymake.com.cn
soundcore.com @!cn
soundcore.com.cn
+4
View File
@@ -752,6 +752,7 @@ courier-push-apple.com.akadns.net
full:amp-api-edge-lb-cn.itunes-apple.com.akadns.net @cn
full:amp-api-edge-lb.itunes-apple.com.akadns.net @cn
full:amp-api-edge.apps.apple.com @cn
full:amp-api-edge.music.apple.com @cn
full:amp-api-search-edge.apps.apple.com @cn
full:amp-api.apps.apple.com @cn
full:amp-api.music.apple.com @cn
@@ -782,6 +783,8 @@ full:js-cdn.music.apple.com @cn
full:km.support.apple.com @cn
full:maps.apple.com @cn
full:misc-assets.itunes.apple.com @cn
full:musicstatus.music.apple.com @cn
full:mvod.itunes.apple.com @cn
full:myapp.itunes.apple.com @cn
full:np-edge.itunes.apple.com @cn
full:osxapps.itunes.apple.com @cn
@@ -794,6 +797,7 @@ full:se2.itunes.apple.com @cn
full:search.itunes.apple.com @cn
full:sf-api-token-service.itunes.apple.com @cn
full:sp.itunes.apple.com @cn
full:speedysub.music.apple.com @cn
full:streamingaudio.itunes.apple.com @cn
full:su.itunes.apple.com @cn
full:sync.itunes.apple.com @cn
+1
View File
@@ -40,6 +40,7 @@ awssecworkshops.com
awsstatic.com
awsthinkbox.com
awstrack.me
awswaf.com
cdkworkshop.com
cloudfront.com
cloudfront.net
+1
View File
@@ -33,6 +33,7 @@ chutes.ai
copilot.microsoft.com
devin.ai
diabrowser.com
diabrowser.engineering
dify.ai
duck.ai
gateway.ai.cloudflare.com
+40
View File
@@ -0,0 +1,40 @@
# Alfa Bank
alfabank.ru
# GazpromBank
gazprombank.ru
gpb.ru
# Mts dengi
dbo-dengi.online
mtsdengi.ru
# PSB Bank
psbank.ru
# RosBank
bankline.ru
rosbank.ru
# RUSSIA Bank
abr.ru
# Russian Agricultural Bank
rshb.ru
# SberBank
sber.ru
sberbank.com
sberbank.ru
# T-Bank (Tinkoff)
cdn-tinkoff.ru
tbank-online.com
tbank.ru
# Tochka bank
tochka-tech.com
tochka.com
# VTB Bank
vtb.ru
+3
View File
@@ -1,5 +1,6 @@
# This list contains Tech & Cyber companies and organizations outside China mainland.
include:2gis
include:acer
include:adobe
include:alibabacloud
@@ -65,6 +66,7 @@ include:openweather
include:oracle
include:panasonic
include:pccw
include:plex
include:qnap
include:qualcomm
include:qwant
@@ -91,6 +93,7 @@ include:westerndigital
include:wisekey
include:yahoo
include:yandex
include:zscaler
# Remote Control
include:category-remote-control
+5
View File
@@ -28,12 +28,14 @@ aave.com
bingx.com
bitbank.cc
bitcoin.org
bitcoincore.org
bitfinex.com
bitget.com
bitmex.com
bitquick.co
bitstamp.net
bittrex.com
blockchain.com
blockfrost.io
btcbox.co.jp
cex.io
@@ -55,6 +57,7 @@ dogecoin.com
dydx.exchange
fundingrates.xyz
gemini.com
gmgn.ai
guardarian.com
hashflow.com
infura.io
@@ -77,5 +80,7 @@ truefi.io
unisat.io
uniswap.org
walletconnect.com
walletconnect.org
web3modal.org
wintermute.com
zapper.fi
+1
View File
@@ -123,6 +123,7 @@ notepad-plus-plus.org
openresty.org
openssl.org
opensuse.org
packagecloud.io
packagist.org
pcre.org
phantomjs.org
+1
View File
@@ -1,6 +1,7 @@
include:category-ecommerce-ru
include:adidas
include:airbnb
include:bestbuy
include:booking
include:books
+1
View File
@@ -1,2 +1,3 @@
include:avito
include:ozon
include:wildberries
+1
View File
@@ -89,6 +89,7 @@ joox.com
kpacg.com
linetv.tw
megaphone.fm
megogo.net
mikanani.me
moov.hk
odysee.com
+3
View File
@@ -44,6 +44,8 @@ ldmnq.com
lsplayer.com
yeshen.com
# 172Mix 舞曲音乐
172mix.com
# 17K小说
17k.com
# https://github.com/supzhang/epg
@@ -63,6 +65,7 @@ bsbsb.top
dmzj.com
muwai.com
# 懂球帝
dongdianqiu.com
dongqiudi.com
# 飞卢小说
faloo.com
+20 -1
View File
@@ -1,3 +1,22 @@
# CDNvideo is a leading CDN provider in Russia and the CIS
cdnvideo.ru
trbcdn.net
# Information about films and series
kinorium.com
# Streaming services for watching TV series and movies
include:kinopoisk
include:okko
include:rutube
include:wink
24h.tv
amediateka.ru
ivi.ru
premier.one
smotreshka.tv
start.ru
tvigle.ru
viju.ru
# Video hosting
include:rutube
+1
View File
@@ -2,6 +2,7 @@
include:category-bank-ir
include:category-bank-jp
include:category-bank-mm
include:category-bank-ru
include:fibank
include:futu
+2 -1
View File
@@ -13,7 +13,7 @@ include:gaijin
include:garena
include:gog
include:hoyoverse
include:illusion
# Dead include:illusion
include:itchio
include:lowiro
include:modrinth
@@ -41,6 +41,7 @@ include:vrchat
include:wbgames
include:xbox
include:ynoproject
include:yostar
dinopoloclub.com
dodi-repacks.download
+11
View File
@@ -15,7 +15,15 @@ edu.ru
# Other Federal Resources
cbr.ru # Central Bank of Russia
cikrf.ru # Central Electoral Commission of the Russian Federation
ebs.ru # Unified Biometric System
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
#
# Regional sites and Public Services
@@ -149,3 +157,6 @@ chukotka.ru # Chukotka Autonomous Area
jamal.ru # Yamal-Nenets Autonomous Area
surgut.ru # Khanty-Mansi Autonomous Area Yugra
yamal.ru # Yamal-Nenets Autonomous Area
# Regional health services
zdrav10.ru # Republic of Karelia
+1
View File
@@ -3,6 +3,7 @@
2ip.ua
abstractapi.com
bigdatacloud.net
check-host.net
db-ip.com
extreme-ip-lookup.com
fraudguard.io
+1
View File
@@ -4,6 +4,7 @@ include:creativecommons
include:csis
include:emojipedia
include:f-droid
include:grapheneos
include:ieee
include:metabrainz
include:nist
+13 -4
View File
@@ -25,8 +25,9 @@ include:hentaichen
include:hentaivn
include:heyzo
include:hooligapps
include:illusion
# Dead include:illusion
include:illusion-nonofficial
include:illgames
include:jable
include:japonx
include:javbus
@@ -137,6 +138,7 @@ porn
18hmanga.com
18insta.com
18j.tv
18jav.tv
18jms.com
18mh.co
18mh.me
@@ -2223,6 +2225,8 @@ heavyfetish.com
hegre.com
heiguab.top
heijidi.life
heiliao.com
heiliao88.com
heise360181.buzz
heise360182.buzz
helixstudios.net
@@ -2690,12 +2694,14 @@ jasmin.com
jav-angel.net
jav-subtitles.com
jav-vr.net
jav.com.co
jav.dog
jav.gallery
jav.guru
jav.la
jav.land
jav.place
jav.sb
jav.si
jav.wine
jav01.cc
@@ -2758,6 +2764,7 @@ javhdporn.net
javher.com
javheroine.com
javhihi.com
javhub.com
javhub.me
javhub.net
javidol.org
@@ -2791,7 +2798,9 @@ javprime.net
javpub.me
javpush.com
javqd.com
javquick.com
javrank.com
javrate.com
javrave.club
javroot.com
javscat.net
@@ -2816,6 +2825,7 @@ javtrust.com
javtube.cc
javtube.com
javtube.net
javvideoporn.com
javvids.com
javxspot.com
javxxx.me
@@ -3587,6 +3597,7 @@ ninpu.cyou
niuc2.com
niziero.info
njav.tv
njavtv.com
nlsexfilmpjes.com
nlt-media.com
noc.syosetu.com
@@ -5566,9 +5577,6 @@ xgtd3.com
xgtdr.buzz
xh-porn.com
xh.video
xhamster.com
xhamster.desi
xhamster2.com
xhot.pro
xhub.tv
xiangrikui-app.com
@@ -6157,6 +6165,7 @@ regexp:(^|\.)tqav[1-9][0-9]\.com$
regexp:(^|\.)tt[1-2][0-9]\.tv$
regexp:(^|\.)ttghg[1-9][0-9]\.xyz$
regexp:(^|\.)tttv([1-9][0-9]?|100)\.com$
regexp:(^|\.)twav[1-9]\.xyz$
regexp:(^|\.)twseb([1-9][0-9]?)?\.com$
regexp:(^|\.)uu[a-z][1-9][0-9]?\.com$
regexp:(^|\.)whtdh0[1-3]\.cc$
+63
View File
@@ -1,6 +1,69 @@
# ABC of Taste
av.ru
# Auchan
auchan.ru
# Bristol
bristol.ru
# Children's World
detmir.ru
# Dixie
dixy.ru
# Dodo Pizza
dodois.com
dodois.io
dodopizza.com
dodopizza.ru
dodostatic.net
# Dostaevsky
dostaevsky.ru
# Eurasia
evrasia.rest
# Fast food restaurant chain "Vkusno i tochka"
vkusnoitochka.ru
# Fix Price
fix-price.com
# Lenta
lenta.com
lenta.tech
# Magnet
magnit.ru
# Metro
metro-cc.ru
# Pyaterochka, Perekrestok, Chizhik
include:x5
# Red and White
krasnoeibeloe.ru
# Rostics
rostics.ru
uni.rest
unirest.tech
# Sakura
ilovesakura.ru
# Spar
myspar.ru
# Sushi Wok
sushiwok.ru
# Vinlab
winelab.ru
# VkusVill
vkusvill.ru
+45 -33
View File
@@ -1,47 +1,59 @@
# Russian websites
# Russian TLDs
moscow
tatar
ru
su
xn--80adxhks
xn--80asehdb
xn--80aswg
xn--c1avg
xn--d1acj3b
xn--p1acf
xn--p1ai
ru.com
ru.net
include:tld-ru
include:category-ecommerce-ru
include:category-entertainment-ru
include:category-gov-ru
include:category-retail-ru
include:category-travel-ru
# Public transportation
include:aviasales
include:mosmetro
include:avito
# Well-known companies
include:mailru-group
include:x5
include:yandex
# Dodo Pizza
dodopizza.ru
dodopizza.com
dodostatic.net
dodois.com
dodois.io
# Bank & Finance & Insurance & Securities
include:category-bank-ru
# Credit History Bureaus
credistory.ru
nbki.ru
# Currency and stock exchanges
moex.com # Moscow Stock Exchange
spvb.ru # Saint-Petersburg Stock Exchange
# Financial marketplace
banki.ru
finuslugi.ru
# Investment
sistema-capital.com
# Mir payment system
mirpayonline.ru
# National Payment Card System
nspk.ru
# Tipping service
netmonet.co
tips.tips
# Rostics
rostics.ru
uni.rest
unirest.tech
# Telecom operators
beeline.ru
dom.ru
megafon.ru
mts.ru
mymts.ru
rostelecom.ru
rt.ru
t2.ru
tele2.ru
yota.ru
trbcdn.net
tbank-online.com
taxsee.com
# Other domains
gazfond-pn.ru # Non-state pension fund GAZFOND pension savings
litres.ru # E-book and audiobook service
meteoinfo.ru # Hydrometeorological Center of Russia
ngenix.net # NGENIX is a Russian provider of acceleration and security services for public web resources
pochta.ru # Russian post
qms.ru # Russian internet speed testing service
rustore.ru # RuStore is a Russian mobile app store for Android
t1.cloud # Russian cloud storage provider
taxsee.com # Taxi for business (self-employed drivers)
yclients.com # Russian SaaS platform for online booking and business automation for service companies
+10
View File
@@ -6,9 +6,19 @@ include:instagram
include:linkedin
include:mailru
include:misskey
include:mixi
include:ok
include:threads
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
+38
View File
@@ -0,0 +1,38 @@
# Aviasales
include:aviasales
# BlaBlaCar
blablacar.ru
# Bus stations
avtovokzaly.ru
# Ostrovok
ostrovok.ru
# Othello from 2GIS
otello.ru
# Public transport and ticketing
include:mosmetro
full:bilet.nspk.ru
full:metro.spb.ru
full:mos.transport.vtb.ru
full:podorozhnik.spb.ru
full:transport.mos.ru
gorodpay.ru
rrtp.ru
sbertroika.ru
# Russian Railways
rzd-bonus.ru
rzd.ru
# Tutu
tutu.ru
# Yandex Rent
full:arenda.yandex.ru
# Yandex Taxi
full:taxi.yandex.ru
+3
View File
@@ -0,0 +1,3 @@
include:bitly
include:shorturl
include:tinyurl
+1
View File
@@ -1,6 +1,7 @@
chobit.cc
ci-en.jp
ci-en.net
dlaf.jp
dlsite.com
dlsite.com.tw
dlsite.jp
+1 -4
View File
@@ -156,6 +156,7 @@ include:category-enhance-gaming
include:category-mobile-repair
include:category-ntp
include:category-password-management
include:category-urlshortner
include:category-web-archive
include:decryptipastore # iOS
@@ -170,7 +171,6 @@ include:addtoany
include:adguard
include:aptoide
include:arphic
include:bitly
include:blender
include:brightcove
include:buymeacoffee
@@ -224,7 +224,6 @@ include:sb
include:setapp
include:sharethis
include:shopify
include:shorturl
include:slideshare
include:sourceforge
include:squareup
@@ -234,7 +233,6 @@ include:svp
include:test-ipv6
include:tex
include:tidelift
include:tinyurl
include:trello
include:tumblr
include:tutanota
@@ -308,7 +306,6 @@ wiki.gg
# Others
include:avaxhome
include:dlsite
include:espressif
include:familymart
include:fzdm
+8
View File
@@ -180,6 +180,10 @@ wuyou.net # 无忧启动论坛
x-station.cn # X电站
znds.com # 智能电视网
# DCC Forum(心跳文学部中文论坛)
edgemonix.top # 图床
monika.love
423down.com # 423Down
acwifi.net # 路由器技术分享
appinn.com # 小众软件
@@ -422,6 +426,7 @@ zhaopin.cn
include:aisiku # 北京艾斯酷科技有限公司
include:akiko # 秋子酱科技
include:alibaba @-!cn
include:anker @-!cn
include:baidu
include:beisen
include:bluepoch
@@ -486,6 +491,9 @@ hlgdata.com
huanleguang.com
ttxsapp.com.cn
xsbapp.cn
# 凯迪仕
juziwulian.com
kaadas.com
# Telecommunication
include:chinabroadnet
+16
View File
@@ -0,0 +1,16 @@
attestation.app
grapheneos.app
grapheneos.ca
grapheneos.com
grapheneos.dev
grapheneos.foundation
grapheneos.info
grapheneos.net
grapheneos.network
grapheneos.online
grapheneos.org
grapheneos.ovh
grapheneos.page
grapheneos.social
seamlessupdate.app
vanadium.app
+1
View File
@@ -8,6 +8,7 @@ icloud-content.com
icloud-isupport.com
icloud-sandbox.com
icloud.ch
icloud.cn @cn
icloud.com
icloud.com.cn @cn
icloud.de
+3
View File
@@ -0,0 +1,3 @@
# Also known as "Illusion"
illgames.jp
japan-illgames.com
+1
View File
@@ -1,2 +1,3 @@
# Dead: https://en.wikipedia.org/wiki/Illusion_(company)
illusion.co.jp
illusion.jp
+5 -3
View File
@@ -1,13 +1,15 @@
datalore.io
intellij.com
intellij.net
intellij.org
jb.gg
jetbrains.cloud
jetbrains.com
jetbrains.net
jetbrains.space
jetbrains.team
datalore.io
kotlinlang.org
youtrack.cloud
cdn.jetbrains.com @cn
download-cdn.jetbrains.com.cn @cn
jb.gg
youtrack.cloud
+2
View File
@@ -0,0 +1,2 @@
kinopoisk.ru
kinopoisk-ru.clstorage.net
+1
View File
@@ -11,5 +11,6 @@ cdn-service.space
cdn2cdn.com
cdn2site.com
pushbr.com # poster images CDN
smarttvcdn.online
regexp:(\w+)-static-[0-9]+\.cdntogo\.net$
+2
View File
@@ -5,5 +5,7 @@ include:vk
boosty.to
donationalerts.com
max.ru
memealerts.com
oneme.ru
tamtam.chat
+2
View File
@@ -1,5 +1,7 @@
missav.ai
missav.com
missav.live
missav.uno
missav.vip
missav.ws
missav123.com
+3
View File
@@ -0,0 +1,3 @@
mixi.co.jp
mixi.jp
mixi.net
+1
View File
@@ -2,4 +2,5 @@ perplexity.ai
perplexity.com
pplx.ai
full:ppl-ai-file-upload.s3.amazonaws.com
full:pplx-res.cloudinary.com
+14
View File
@@ -0,0 +1,14 @@
# Plex Media Server domains
# Basic domains for Plex services
plex.com
plex.services
plex.tv
plexapp.com
# Note for Plex users
# * Plex's mechanism requires certain domains to go through a direct connection.
# * Using a proxy for these domains may cause the system to malfunction.
# * If you wish to access plex domains through a proxy, remember to ensure the following domains remain directly connected.
# * Related domains:
# plex.direct
# v4.plex.tv
-2
View File
@@ -22,7 +22,6 @@ internal
# References: https://www.iana.org/assignments/locally-served-dns-zones/locally-served-dns-zones.xhtml
# https://www.rfc-editor.org/rfc/rfc6303.html
0.in-addr.arpa
2.0.192.in-addr.arpa
10.in-addr.arpa
16.172.in-addr.arpa
@@ -47,7 +46,6 @@ internal
168.192.in-addr.arpa
254.169.in-addr.arpa
255.255.255.255.in-addr.arpa
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
8.b.d.0.1.0.0.2.ip6.arpa
8.e.f.ip6.arpa
+1
View File
@@ -25,6 +25,7 @@ quotable.com
radian6.com
relateiq.com
salesforce-setup.com
salesforce-sites.com
salesforce.com
salesforce.org
salesforceiq.com
+2 -1
View File
@@ -19,13 +19,14 @@ th.weibo.com @!cn
tw.weibo.com @!cn
us.weibo.com @!cn
videoself.cn
wbimg.com
wbimg.cn
wbimg.com
wcdn.cn
weibo.cn
weibo.com
weibo.com.cn
weibocdn.com
weibopay.com
xhaiwai.com
# Ads/tracking
+1
View File
@@ -15,5 +15,6 @@ telegram.org
telegram.space
telesco.pe
tg.dev
ton.org
tx.me
usercontent.dev
+1
View File
@@ -20,6 +20,7 @@ tiktokv.eu @!cn
tiktokv.us @!cn
tiktokw.eu @!cn
tiktokw.us @!cn
ttcdn-us.com @!cn
ttlivecdn.com @!cn
ttoverseaus.net @!cn
ttwstatic.com @!cn
+1 -6
View File
@@ -18,6 +18,7 @@
# xn--j6w193g # 香港 Hong Kong SAR, People's Republic of China
include:google-registry-tld
include:tld-ru
# Used by U.S. federal government
gov
@@ -209,7 +210,6 @@ qa # Qatar
re # Réunion Island
ro # Romania
rs # Serbia
ru # Russia
rw # Rwanda
sa # Saudi Arabia
sb # Solomon Islands
@@ -229,7 +229,6 @@ so # Somaliland
sr # Suriname
ss # South Sudan
st # São Tomé and Príncipe
su # The Union of Soviet Socialist Republic
sv # El Salvador
sx # Sint Maarten
sy # Syria
@@ -329,7 +328,6 @@ okinawa # Okinawa, Japan
osaka # Osaka, Japan
ryukyu # Ryukyu Islands, Japan
taipei # Taipei, Republic of China (Taiwan)
tatar # Tatar peoples and places
tokyo # Tokyo, Japan
yokohama # Yokohama, Japan
@@ -358,7 +356,6 @@ istanbul # İstanbul, Turkey
koeln # Cologne, Germany
london # London, United Kingdom
madrid # Madrid, Spain
moscow # Moscow, Russia
nrw # North Rhine-Westphalia, Germany
paris # Paris, France
ruhr # Ruhr, Germany
@@ -467,7 +464,6 @@ shell # Shell Information Technology International Inc
shia # Shia Muslim community
style # though the comment actually seems to be about .tattoo
sucks # Vox Populi Registry
tatar # Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
tattoo # Tattoo
vana # Scripps Networks Interactive, Inc.
virgin # Virgin Enterprises Limited
@@ -557,7 +553,6 @@ xn--mgbai9azgqp6j # پاکستان Pakistan
xn--mgbai9a5eva00b # پاكستان Pakistan
xn--ygbi2ammx # فلسطين Palestine
xn--wgbl6a # قطر Qatar
xn--p1ai # рф Russian Federation
xn--mgberp4a5d4ar # السعودية Saudi Arabia
xn--mgberp4a5d4a87g # السعودیة Saudi Arabia
xn--mgbqly7c0a67fbc # السعودیۃ Saudi Arabia
+12
View File
@@ -0,0 +1,12 @@
# Russian TLDs
moscow
ru
su
tatar
xn--80adxhks
xn--80asehdb
xn--80aswg
xn--c1avg
xn--d1acj3b
xn--p1acf
xn--p1ai
+24
View File
@@ -6,5 +6,29 @@ ubisoftconnect.com
uplay.com
full:ubisoft-uplay-savegames.s3.amazonaws.com
full:ubisoft-orbit-savegames.s3.amazonaws.com
full:ubistatic1-a.akamaihd.net
full:ubistatic2-a.akamaihd.net
full:ubistatic3-a.akamaihd.net
full:ubistatic4-a.akamaihd.net
full:ubistatic5-a.akamaihd.net
full:ubistatic6-a.akamaihd.net
full:ubistatic7-a.akamaihd.net
full:ubistatic8-a.akamaihd.net
full:ubistatic9-a.akamaihd.net
full:ubistatic10-a.akamaihd.net
full:ubistatic11-a.akamaihd.net
full:ubistatic12-a.akamaihd.net
full:ubistatic13-a.akamaihd.net
full:ubistatic14-a.akamaihd.net
full:ubistatic15-a.akamaihd.net
full:ubistatic16-a.akamaihd.net
full:ubistatic17-a.akamaihd.net
full:ubistatic18-a.akamaihd.net
full:ubistatic19-a.akamaihd.net
full:ubistatic20-a.akamaihd.net
full:ubistatic21-a.akamaihd.net
full:ubistatic22-a.akamaihd.net
full:ubistatic23-a.akamaihd.net
full:ubistatic24-a.akamaihd.net
full:ubisoft.siteintercept.qualtrics.com
full:uplaypc-s-ubisoft.cdn.ubi.com @cn
-1
View File
@@ -1,3 +1,2 @@
ngenix.net
restream-media.net
wink.ru
+2
View File
@@ -3,6 +3,8 @@ xhamster.desi
xhamster.xxx
xhamster18.com
xhamster18.desi
xhamster19.com
xhamster3.com
xhamsterlive.com
xhcdn.com
+3 -2
View File
@@ -53,13 +53,14 @@ yandexadexchange.net
yandexcloud.net
yandexcom.net
yandexmetrica.com
yandexwebcache.net
yandexwebcache.org
yastat.net
yastatic-net.ru
yastatic.net
# Watching movies, included in the Yandex subscription
kinopoisk.ru
kinopoisk-ru.clstorage.net
include:kinopoisk
# Weather service
full:yandex-pogoda.static-storage.net
+12
View File
@@ -0,0 +1,12 @@
# Yostar
yo-star.com
yostar.cn @cn
yostar.co.jp
yostar.net
yostarplat.com
# Yostar Pictures
yostar-pictures.co.jp
# Stella Sora
stargazer-games.com
stellasora.global
stellasora.jp
+18
View File
@@ -0,0 +1,18 @@
# https://crt.sh/?id=23639384976
securecloudtransformation.com
securitypreview.com
threatlabz.com
zdxbeta.net
zdxcloud.net
zpagov.net
zpath.com
zscaler.com
zscaler.jp
zscaler.net
zscalerbeta.net
zscalergov.net
zscalerone.net
zscalershift.com
zscalerthree.net
zscalertwo.net
zscloud.net
+90 -111
View File
@@ -22,18 +22,11 @@ var (
exportLists = flag.String("exportlists", "", "Lists to be flattened and exported in plaintext format, separated by ',' comma")
)
var (
plMap = make(map[string]*ParsedList)
finalMap = make(map[string][]*Entry)
cirIncMap = make(map[string]bool) // Used for circular inclusion detection
)
type Entry struct {
Type string
Value string
Attrs []string
Plain string
Affs []string
}
type Inclusion struct {
@@ -48,6 +41,12 @@ type ParsedList struct {
Entries []*Entry
}
type Processor struct {
plMap map[string]*ParsedList
finalMap map[string][]*Entry
cirIncMap map[string]bool
}
func makeProtoList(listName string, entries []*Entry) (*router.GeoSite, error) {
site := &router.GeoSite{
CountryCode: listName,
@@ -90,29 +89,27 @@ func writePlainList(listname string, entries []*Entry) error {
return w.Flush()
}
func parseEntry(line string) (Entry, error) {
var entry Entry
func parseEntry(line string) (*Entry, []string, error) {
entry := new(Entry)
parts := strings.Fields(line)
if len(parts) == 0 {
return entry, fmt.Errorf("empty line")
return entry, nil, fmt.Errorf("empty line")
}
// Parse type and value
v := parts[0]
colonIndex := strings.Index(v, ":")
if colonIndex == -1 {
entry.Type = dlc.RuleTypeDomain // Default type
entry.Value = strings.ToLower(v)
if !validateDomainChars(entry.Value) {
return entry, fmt.Errorf("invalid domain: %q", entry.Value)
typ, val, isTypeSpecified := strings.Cut(parts[0], ":")
typ = strings.ToLower(typ)
if !isTypeSpecified { // Default RuleType
if !validateDomainChars(typ) {
return entry, nil, fmt.Errorf("invalid domain: %q", typ)
}
entry.Type = dlc.RuleTypeDomain
entry.Value = typ
} else {
typ := strings.ToLower(v[:colonIndex])
val := v[colonIndex+1:]
switch typ {
case dlc.RuleTypeRegexp:
if _, err := regexp.Compile(val); err != nil {
return entry, fmt.Errorf("invalid regexp %q: %w", val, err)
return entry, nil, fmt.Errorf("invalid regexp %q: %w", val, err)
}
entry.Type = dlc.RuleTypeRegexp
entry.Value = val
@@ -120,39 +117,42 @@ func parseEntry(line string) (Entry, error) {
entry.Type = dlc.RuleTypeInclude
entry.Value = strings.ToUpper(val)
if !validateSiteName(entry.Value) {
return entry, fmt.Errorf("invalid include list name: %q", entry.Value)
return entry, nil, fmt.Errorf("invalid included list name: %q", entry.Value)
}
case dlc.RuleTypeDomain, dlc.RuleTypeFullDomain, dlc.RuleTypeKeyword:
entry.Type = typ
entry.Value = strings.ToLower(val)
if !validateDomainChars(entry.Value) {
return entry, fmt.Errorf("invalid domain: %q", entry.Value)
return entry, nil, fmt.Errorf("invalid domain: %q", entry.Value)
}
default:
return entry, fmt.Errorf("invalid type: %q", typ)
return entry, nil, fmt.Errorf("invalid type: %q", typ)
}
}
// Parse attributes and affiliations
var affs []string
for _, part := range parts[1:] {
if strings.HasPrefix(part, "@") {
attr := strings.ToLower(part[1:]) // Trim attribute prefix `@` character
switch part[0] {
case '@':
attr := strings.ToLower(part[1:])
if !validateAttrChars(attr) {
return entry, fmt.Errorf("invalid attribute: %q", attr)
return entry, affs, fmt.Errorf("invalid attribute: %q", attr)
}
entry.Attrs = append(entry.Attrs, attr)
} else if strings.HasPrefix(part, "&") {
aff := strings.ToUpper(part[1:]) // Trim affiliation prefix `&` character
case '&':
aff := strings.ToUpper(part[1:])
if !validateSiteName(aff) {
return entry, fmt.Errorf("invalid affiliation: %q", aff)
return entry, affs, fmt.Errorf("invalid affiliation: %q", aff)
}
entry.Affs = append(entry.Affs, aff)
} else {
return entry, fmt.Errorf("invalid attribute/affiliation: %q", part)
affs = append(affs, aff)
default:
return entry, affs, fmt.Errorf("invalid attribute/affiliation: %q", part)
}
}
// Sort attributes
slices.Sort(entry.Attrs)
if entry.Type != dlc.RuleTypeInclude {
slices.Sort(entry.Attrs) // Sort attributes
// Formated plain entry: type:domain.tld:@attr1,@attr2
var plain strings.Builder
plain.Grow(len(entry.Type) + len(entry.Value) + 10)
@@ -169,8 +169,8 @@ func parseEntry(line string) (Entry, error) {
plain.WriteString(attr)
}
entry.Plain = plain.String()
return entry, nil
}
return entry, affs, nil
}
func validateDomainChars(domain string) bool {
@@ -206,62 +206,54 @@ func validateSiteName(name string) bool {
return true
}
func loadData(path string) ([]*Entry, error) {
func (p *Processor) getOrCreateParsedList(name string) *ParsedList {
pl, exist := p.plMap[name]
if !exist {
pl = &ParsedList{Name: name}
p.plMap[name] = pl
}
return pl
}
func (p *Processor) loadData(listName string, path string) error {
file, err := os.Open(path)
if err != nil {
return nil, err
return err
}
defer file.Close()
var entries []*Entry
pl := p.getOrCreateParsedList(listName)
scanner := bufio.NewScanner(file)
lineIdx := 0
for scanner.Scan() {
line := scanner.Text()
lineIdx++
if idx := strings.Index(line, "#"); idx != -1 {
line = line[:idx] // Remove comments
}
line, _, _ := strings.Cut(scanner.Text(), "#") // Remove comments
line = strings.TrimSpace(line)
if line == "" {
continue
}
entry, err := parseEntry(line)
entry, affs, err := parseEntry(line)
if err != nil {
return entries, fmt.Errorf("error in %q at line %d: %w", path, lineIdx, err)
}
entries = append(entries, &entry)
}
return entries, nil
return fmt.Errorf("error in %q at line %d: %w", path, lineIdx, err)
}
func parseList(refName string, refList []*Entry) error {
pl, _ := plMap[refName]
if pl == nil {
pl = &ParsedList{Name: refName}
plMap[refName] = pl
}
for _, entry := range refList {
if entry.Type == dlc.RuleTypeInclude {
if len(entry.Affs) != 0 {
return fmt.Errorf("affiliation is not allowed for include:%q", entry.Value)
}
inc := &Inclusion{Source: entry.Value}
for _, attr := range entry.Attrs {
if strings.HasPrefix(attr, "-") {
inc.BanAttrs = append(inc.BanAttrs, attr[1:]) // Trim attribute prefix `-` character
if attr[0] == '-' {
inc.BanAttrs = append(inc.BanAttrs, attr[1:])
} else {
inc.MustAttrs = append(inc.MustAttrs, attr)
}
}
for _, aff := range affs {
apl := p.getOrCreateParsedList(aff)
apl.Inclusions = append(apl.Inclusions, inc)
}
pl.Inclusions = append(pl.Inclusions, inc)
} else {
for _, aff := range entry.Affs {
apl, _ := plMap[aff]
if apl == nil {
apl = &ParsedList{Name: aff}
plMap[aff] = apl
}
for _, aff := range affs {
apl := p.getOrCreateParsedList(aff)
apl.Entries = append(apl.Entries, entry)
}
pl.Entries = append(pl.Entries, entry)
@@ -271,9 +263,6 @@ func parseList(refName string, refList []*Entry) 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
}
@@ -296,9 +285,7 @@ func polishList(roughMap map[string]*Entry) []*Entry {
domainsMap := make(map[string]bool)
for _, entry := range roughMap {
switch entry.Type { // Bypass regexp, keyword and "full/domain with attr"
case dlc.RuleTypeRegexp:
finalList = append(finalList, entry)
case dlc.RuleTypeKeyword:
case dlc.RuleTypeRegexp, dlc.RuleTypeKeyword:
finalList = append(finalList, entry)
case dlc.RuleTypeDomain:
domainsMap[entry.Value] = true
@@ -323,11 +310,11 @@ func polishList(roughMap map[string]*Entry) []*Entry {
pd = "." + pd // So that `domain:example.org` overrides `full:example.org`
}
for {
idx := strings.Index(pd, ".")
if idx == -1 {
var hasParent bool
_, pd, hasParent = strings.Cut(pd, ".") // Go for next parent
if !hasParent {
break
}
pd = pd[idx+1:] // Go for next parent
if domainsMap[pd] {
isRedundant = true
break
@@ -344,36 +331,36 @@ func polishList(roughMap map[string]*Entry) []*Entry {
return finalList
}
func resolveList(pl *ParsedList) error {
if _, pldone := finalMap[pl.Name]; pldone {
func (p *Processor) resolveList(plname string) error {
if _, pldone := p.finalMap[plname]; pldone {
return nil
}
if cirIncMap[pl.Name] {
return fmt.Errorf("circular inclusion in: %q", pl.Name)
pl, plexist := p.plMap[plname]
if !plexist {
return fmt.Errorf("list %q not found", plname)
}
cirIncMap[pl.Name] = true
defer delete(cirIncMap, pl.Name)
if p.cirIncMap[plname] {
return fmt.Errorf("circular inclusion in: %q", plname)
}
p.cirIncMap[plname] = true
defer delete(p.cirIncMap, plname)
roughMap := make(map[string]*Entry) // Avoid basic duplicates
for _, dentry := range pl.Entries { // Add direct entries
roughMap[dentry.Plain] = dentry
}
for _, inc := range pl.Inclusions {
incPl, exist := plMap[inc.Source]
if !exist {
return fmt.Errorf("list %q includes a non-existent list: %q", pl.Name, inc.Source)
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)
}
if err := resolveList(incPl); err != nil {
return err
}
for _, ientry := range finalMap[inc.Source] {
if isMatchAttrFilters(ientry, inc) { // Add included entries
isFullInc := len(inc.MustAttrs) == 0 && len(inc.BanAttrs) == 0
for _, ientry := range p.finalMap[inc.Source] {
if isFullInc || isMatchAttrFilters(ientry, inc) {
roughMap[ientry.Plain] = ientry
}
}
}
finalMap[pl.Name] = polishList(roughMap)
p.finalMap[plname] = polishList(roughMap)
return nil
}
@@ -381,8 +368,8 @@ func run() error {
dir := *dataPath
fmt.Printf("using domain lists data in %q\n", dir)
// Generate refMap
refMap := make(map[string][]*Entry)
// Generate plMap
processor := &Processor{plMap: make(map[string]*ParsedList)}
err := filepath.WalkDir(dir, func(path string, d os.DirEntry, err error) error {
if err != nil {
return err
@@ -394,23 +381,16 @@ func run() error {
if !validateSiteName(listName) {
return fmt.Errorf("invalid list name: %q", listName)
}
refMap[listName], err = loadData(path)
return err
return processor.loadData(listName, path)
})
if err != nil {
return fmt.Errorf("failed to loadData: %w", err)
}
// Generate plMap
for refName, refList := range refMap {
if err := parseList(refName, refList); err != nil {
return fmt.Errorf("failed to parseList %q: %w", refName, err)
}
}
// Generate finalMap
for plname, pl := range plMap {
if err := resolveList(pl); err != nil {
processor.finalMap = make(map[string][]*Entry, len(processor.plMap))
processor.cirIncMap = make(map[string]bool)
for plname := range processor.plMap {
if err := processor.resolveList(plname); err != nil {
return fmt.Errorf("failed to resolveList %q: %w", plname, err)
}
}
@@ -419,11 +399,10 @@ func run() error {
if err := os.MkdirAll(*outputDir, 0755); err != nil {
return fmt.Errorf("failed to create output directory: %w", err)
}
// Export plaintext list
// Export plaintext lists
for rawEpList := range strings.SplitSeq(*exportLists, ",") {
if epList := strings.TrimSpace(rawEpList); epList != "" {
entries, exist := finalMap[strings.ToUpper(epList)]
entries, exist := processor.finalMap[strings.ToUpper(epList)]
if !exist || len(entries) == 0 {
fmt.Printf("list %q does not exist or is empty\n", epList)
continue
@@ -438,7 +417,7 @@ func run() error {
// Generate dat file
protoList := new(router.GeoSiteList)
for siteName, siteEntries := range finalMap {
for siteName, siteEntries := range processor.finalMap {
site, err := makeProtoList(siteName, siteEntries)
if err != nil {
return fmt.Errorf("failed to makeProtoList %q: %w", siteName, err)