diff --git a/README.md b/README.md index df31c37b..3b001885 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -# Domain list +# Domain list community -List of domains, driven by Project V community. This list will be used by Project V, mainly for routing purpose. +This project manages a list of domains, to be used as geosites for routing purpose in Project V. + +## Purpose of this project + +This project contains only lists of domains. It is not opinionated, such as a domain should be blocked, or a domain should be proxied. This list can be used to generate routing rules on demand. ## Structure of data @@ -9,7 +13,7 @@ All data are under `data/` directory. Each file in the directory represents a su ``` # comments include:another-file -domain:google.com +domain:google.com @attr1 @att2 keyword:google regex:www\.google\.com full:www.google.com @@ -17,12 +21,13 @@ full:www.google.com Syntax: -* Comments begins with `#`. It can start anywhere in the file. The content in the line after `#` is treated as comment and ignored in production. +* Comments begins with `#`. It may begin anywhere in the file. The content in the line after `#` is treated as comment and ignored in production. * Inclusion begins with `include:`, followed by the file name of an existing file in the same directory. * Subdomain begins with `domain:`, followed by a valid domain name. The prefix `domain:` may be omitted. * Keyword begins with `keyword:`, followed by string. * Regular expression begins with `regex:`, followed by a valid regular expression (per Golang's standard). * Full domain begins with `full:`, followed by a domain. +* Domains (including `domain`, `keyword`, `regext` and `full`) may have one or more attributes. Each attributes begin with `@` and followed by the name of the attribute. ## How it works @@ -38,13 +43,15 @@ To generate a section: 1. Generate each `regex:` line into a [regex domain routing rule](https://github.com/v2ray/v2ray-core/blob/master/app/router/config.proto#L19) 1. Generate each `full:` line into a [full domain routing rule](https://github.com/v2ray/v2ray-core/blob/master/app/router/config.proto#L23) -## File name guideline +## How to orgnize domains -* A name represents a deterministic group of domains, by common understanding. - * Good example: google, youtube, facebook - * Bad example: blocked, evil, domestic -* A name may be divided into sub categories. - * Example: ads-cn, ads-us +### File name + +Theoretically any string can be used as the name, as long as it is a valid file name. In practice, we prefer names for determinic group of domains, such as the owner (usually a company name) of the domains, e.g., "google", "netflex". Names with unclear scope are generally unrecommended, such as "evil", or "local". + +### Attributes + +Attribute is useful for sub-group of domains, especially for filtering purpose. For example, the list of "google" domains may contains its main domains, as well as domains that serve ads. The ads domains may be marked by attribute "@ads", and can be used as "geosite:google@ads" in V2Ray routing. ## Contribution guideline diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..12129b67 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,30 @@ +jobs: +- job: build_geosite + timeoutInMinutes: 30 + + pool: + vmImage: 'ubuntu-16.04' + + variables: + GOPATH: '$(system.defaultWorkingDirectory)' + + steps: + - checkout: none + - task: GoTool@0 + inputs: + version: '1.11.2' + - script: | + go version + go get -v -t -d github.com/v2ray/domain-list-community/... + go run ./src/github.com/v2ray/domain-list-community/main.go + workingDirectory: '$(system.defaultWorkingDirectory)' + displayName: 'Generate' + - task: CopyFiles@2 + inputs: + sourceFolder: '$(system.defaultworkingdirectory)' + contents: 'dlc.dat' + targetFolder: '$(build.artifactStagingDirectory)' + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact' + inputs: + PathtoPublish: '$(build.artifactstagingdirectory)' diff --git a/data/alibaba b/data/alibaba index 7a562bc1..165eb8f3 100644 --- a/data/alibaba +++ b/data/alibaba @@ -1,10 +1,12 @@ alibaba.com +alibabagroup.com alibabaplanet.com alicdn.com aliimg.com.com alipay.com alipayobjects.com aliyun.com +aliyun-inc.com aliyuncdn.com aliyuncs.com @@ -13,3 +15,18 @@ taobao.com taobaocdn.com tbcache.com tmall.com + +# Fliggy +alitrip.com + +# amap +amap.com +amapauto.com +autonavi.com +gaode.com + +# Xiami music +xiami.com +xiami.net + +include:alibaba-ads diff --git a/data/alibaba-ads b/data/alibaba-ads index 231f2e27..90174fb9 100644 --- a/data/alibaba-ads +++ b/data/alibaba-ads @@ -1,84 +1,84 @@ -a.alimama.cn -acjs.aliyun.com -adash.m.taobao.com -adashbc.m.taobao.com -adash-c.ut.taobao.com -adashx.m.taobao.com -adashx4yt.m.taobao.com -adashxgc.ut.taobao.com -adsh.m.taobao.com -afp.adchina.com -afp.alicdn.com -agoodm.m.taobao.com -agoodm.wapa.taobao.com -alipaylog.com -amdc.alipay.com -api.wapa.taobao.com -api.waptest.taobao.com -apoll.m.taobao.com -appdownload.alicdn.com -atanx.alicdn.com -atanx2.alicdn.com -cdn0.mobmore.com -click.aliyun.com -click.mz.simba.taobao.com -cm.ipinyou.com -cm.mlt01.com -dsp.simba.taobao.com -err.taobao.com -ex.mobmore.com -ex.puata.info -fav.simba.taobao.com -feedback.whalecloud.com -ff.win.taobao.com -fm.p0y.cn -g.click.taobao.com -g.tbcdn.cn -gma.alicdn.com -gtms01.alicdn.com -gtms02.alicdn.com -gtms03.alicdn.com -gtms04.alicdn.com -hydra.alibaba.com -hz.pre.tbusergw.taobao.net -hz.tbusergw.taobao.net -i.ipinyou.com -init.phpwind.com -intl.wapa.taobao.com -intl.waptest.taobao.com -jxlog.istreamsche.com -log.umtrack.com -m.intl.taobao.com -m.simba.taobao.com -match.p4p.1688.com -material.istreamsche.com -mlt01.com -nbsdk-baichuan.alicdn.com -nbsdk-baichuan.taobao.com -osfota.cdn.aliyun.com -osupdate.aliyun.com -osupdateservice.yunos.com -pindao.huoban.taobao.com -push.wandoujia.com -re.m.taobao.com -re.taobao.com -redirect.simba.taobao.com -rj.m.taobao.co -rj.m.taobao.com -sdkinit.taobao.com -show.re.taobao.com -simaba.taobao.com -simba.m.taobao.com -srd.simba.taobao.com -stats.ipinyou.com -strip.taobaocdn.com -tanxlog.istreamsche.com -tejia.taobao.com -temai.taobao.com -tns.simba.taobao.com -tongji.linezing.com -tvupgrade.yunos.com -tyh.taobao.com -userimg.qunar.com -w.m.taobao.com -yiliao.hupan.com +a.alimama.cn @ads +acjs.aliyun.com @ads +adash.m.taobao.com @ads +adashbc.m.taobao.com @ads +adash-c.ut.taobao.com @ads +adashx.m.taobao.com @ads +adashx4yt.m.taobao.com @ads +adashxgc.ut.taobao.com @ads +adsh.m.taobao.com @ads +afp.adchina.com @ads +afp.alicdn.com @ads +agoodm.m.taobao.com @ads +agoodm.wapa.taobao.com @ads +alipaylog.com @ads +amdc.alipay.com @ads +api.wapa.taobao.com @ads +api.waptest.taobao.com @ads +apoll.m.taobao.com @ads +appdownload.alicdn.com @ads +atanx.alicdn.com @ads +atanx2.alicdn.com @ads +cdn0.mobmore.com @ads +click.aliyun.com @ads +click.mz.simba.taobao.com @ads +cm.ipinyou.com @ads +cm.mlt01.com @ads +dsp.simba.taobao.com @ads +err.taobao.com @ads +ex.mobmore.com @ads +ex.puata.info @ads +fav.simba.taobao.com @ads +feedback.whalecloud.com @ads +ff.win.taobao.com @ads +fm.p0y.cn @ads +g.click.taobao.com @ads +g.tbcdn.cn @ads +gma.alicdn.com @ads +gtms01.alicdn.com @ads +gtms02.alicdn.com @ads +gtms03.alicdn.com @ads +gtms04.alicdn.com @ads +hydra.alibaba.com @ads +hz.pre.tbusergw.taobao.net @ads +hz.tbusergw.taobao.net @ads +i.ipinyou.com @ads +init.phpwind.com @ads +intl.wapa.taobao.com @ads +intl.waptest.taobao.com @ads +jxlog.istreamsche.com @ads +log.umtrack.com @ads +m.intl.taobao.com @ads +m.simba.taobao.com @ads +match.p4p.1688.com @ads +material.istreamsche.com @ads +mlt01.com @ads +nbsdk-baichuan.alicdn.com @ads +nbsdk-baichuan.taobao.com @ads +osfota.cdn.aliyun.com @ads +osupdate.aliyun.com @ads +osupdateservice.yunos.com @ads +pindao.huoban.taobao.com @ads +push.wandoujia.com @ads +re.m.taobao.com @ads +re.taobao.com @ads +redirect.simba.taobao.com @ads +rj.m.taobao.co @ads +rj.m.taobao.com @ads +sdkinit.taobao.com @ads +show.re.taobao.com @ads +simaba.taobao.com @ads +simba.m.taobao.com @ads +srd.simba.taobao.com @ads +stats.ipinyou.com @ads +strip.taobaocdn.com @ads +tanxlog.istreamsche.com @ads +tejia.taobao.com @ads +temai.taobao.com @ads +tns.simba.taobao.com @ads +tongji.linezing.com @ads +tvupgrade.yunos.com @ads +tyh.taobao.com @ads +userimg.qunar.com @ads +w.m.taobao.com @ads +yiliao.hupan.com @ads diff --git a/data/amazon b/data/amazon index c43edb01..aa36e772 100644 --- a/data/amazon +++ b/data/amazon @@ -7,6 +7,7 @@ amazon.co.jp amazon.jp # AWS +amazonaws.com awsstatic.com cloudfront.net diff --git a/data/apkpure b/data/apkpure new file mode 100644 index 00000000..2abd57e9 --- /dev/null +++ b/data/apkpure @@ -0,0 +1,3 @@ +apkpure.com +pureapk.com +winudf.com diff --git a/data/archive b/data/archive new file mode 100644 index 00000000..6b56dd7d --- /dev/null +++ b/data/archive @@ -0,0 +1 @@ +archive.org diff --git a/data/baidu b/data/baidu index 6a8876c5..e367c7fd 100644 --- a/data/baidu +++ b/data/baidu @@ -10,3 +10,5 @@ duapps.com quyaoya.com tiebaimg.com xiaodutv.com + +include:baidu-ads diff --git a/data/baidu-ads b/data/baidu-ads index 9e15bb68..7d4918bc 100644 --- a/data/baidu-ads +++ b/data/baidu-ads @@ -1,161 +1,161 @@ -a.baidu.com -ad.duapps.com -ad.player.baidu.com -adm.baidu.com -adscdn.baidu.com -adx.xiaodutv.com -ae.bdstatic.com -afd.baidu.com -als.baidu.com -anquan.baidu.com -antivirus.baidu.com -api.cpu.baidu.com -api.mobula.sdk.duapps.com -api.tuisong.baidu.com -appc.baidu.com -b.bdstatic.com -baichuan.baidu.com -baidustatic.com -baidutv.baidu.com -banlv.baidu.com -bar.baidu.com -bce.baidu.com -bdimg.share.baidu.com -bdplus.baidu.com -bj.bcebos.com -btlaunch.baidu.com -c.baidu.com -cb.baidu.com -cbjs.baidu.com -cjhq.baidu.com -cleaner.baidu.com -click.bes.baidu.com -click.hm.baidu.com -click.qianqian.com -cm.baichuan.baidu.com -cm.baidu.com -cm.pos.baidu.com -cpro.baidu.cn -cpro.baidu.com -cpro.baidustatic.com -cpro.tieba.baidu.com -cpro.zhidao.baidu.com -cpro2.baidu.com -cpro2.baidustatic.com -cpu.baidu.com -cpu-admin.baidu.com -crs.baidu.com -datax.baidu.com -dd713.bj.bcebos.com -dl.client.baidu.com -dl.ops.baidu.com -dl1sw.baidu.com -dl2.bav.baidu.com -dlsw.baidu.com -dlsw.br.baidu.com -dl-vip.bav.baidu.com -dl-vip.pcfaster.baidu.co.th -download.bav.baidu.com -download.sd.baidu.com -drmcmm.baidu.com -dup.baidustatic.com -dxp.baidu.com -dzl.baidu.com -e.baidu.com -eclick.baidu.com -ecma.bdimg.com -ecmb.bdimg.com -ecmc.bdimg.com -eiv.baidu.com -em.baidu.com -entry.baidu.com -ers.baidu.com -f10.baidu.com -fc-feed.cdn.bcebos.com -fclick.baidu.com -feed.baidu.com -fexclick.baidu.com -g.baidu.com -gimg.baidu.com -guanjia.baidu.com -hc.baidu.com -hm.baidu.com -hmma.baidu.com -hpd.baidu.com -idm.bce.baidu.com -idm-su.baidu.com -iebar.baidu.com -ikcode.baidu.com -img.taotaosou.cn -img01.taotaosou.cn -j.br.baidu.com -kstj.baidu.com -log.music.baidu.com -m1.baidu.com -ma.baidu.com -mipcache.bdstatic.com -mobads.baidu.com -mobads-logs.baidu.com -mpro.baidu.com -msite.baidu.com -neirong.baidu.com -nsclick.baidu.com -nsclickvideo.baidu.com -openrcv.baidu.com -pc.videoclick.baidu.com -pos.baidu.com -pups.bdimg.com -push.zhanzhang.baidu.com -qianclick.baidu.com -release.baidu.com -res.mi.baidu.com -rigel.baidustatic.com -river.zhidao.baidu.com -rj.baidu.com -rplog.baidu.com -s.baidu.com -s.cpro.baidu.com -sa.tuisong.baidu.com -sclick.baidu.com -sestat.baidu.com -shadu.baidu.com -share.baidu.com -snippet.pos.baidu.com -sobar.baidu.com -sobartop.baidu.com -spcode.baidu.com -stat.v.baidu.com -su.bdimg.com -su.bdstatic.com -t10.baidu.com -t11.baidu.com -t12.baidu.com -tk.baidu.com -tkweb.baidu.com -tob-cms.bj.bcebos.com -tongji.baidu.com -toolbar.baidu.com -tracker.baidu.com -tuijian.baidu.com -uat1.bfsspadserver.8le8le.com -ubmcmm.baidustatic.com -ucstat.baidu.com -ulic.baidu.com -ulog.imap.baidu.com -union.baidu.com -unionimage.baidu.com -utility.baidu.com -utk.baidu.com -videopush.baidu.com -vv84.bj.bcebos.com -w.gdown.baidu.com -w.x.baidu.com -wangmeng.baidu.com -weishi.baidu.com -wenku-cms.bj.bcebos.com -wisepush.video.baidu.com -wm.baidu.com -wn.pos.baidu.com -znsv.baidu.com -zz.bdstatic.com -zzy1.quyaoya.com +a.baidu.com @ads +ad.duapps.com @ads +ad.player.baidu.com @ads +adm.baidu.com @ads +adscdn.baidu.com @ads +adx.xiaodutv.com @ads +ae.bdstatic.com @ads +afd.baidu.com @ads +als.baidu.com @ads +anquan.baidu.com @ads +antivirus.baidu.com @ads +api.cpu.baidu.com @ads +api.mobula.sdk.duapps.com @ads +api.tuisong.baidu.com @ads +appc.baidu.com @ads +b.bdstatic.com @ads +baichuan.baidu.com @ads +baidustatic.com @ads +baidutv.baidu.com @ads +banlv.baidu.com @ads +bar.baidu.com @ads +bce.baidu.com @ads +bdimg.share.baidu.com @ads +bdplus.baidu.com @ads +bj.bcebos.com @ads +btlaunch.baidu.com @ads +c.baidu.com @ads +cb.baidu.com @ads +cbjs.baidu.com @ads +cjhq.baidu.com @ads +cleaner.baidu.com @ads +click.bes.baidu.com @ads +click.hm.baidu.com @ads +click.qianqian.com @ads +cm.baichuan.baidu.com @ads +cm.baidu.com @ads +cm.pos.baidu.com @ads +cpro.baidu.cn @ads +cpro.baidu.com @ads +cpro.baidustatic.com @ads +cpro.tieba.baidu.com @ads +cpro.zhidao.baidu.com @ads +cpro2.baidu.com @ads +cpro2.baidustatic.com @ads +cpu.baidu.com @ads +cpu-admin.baidu.com @ads +crs.baidu.com @ads +datax.baidu.com @ads +dd713.bj.bcebos.com @ads +dl.client.baidu.com @ads +dl.ops.baidu.com @ads +dl1sw.baidu.com @ads +dl2.bav.baidu.com @ads +dlsw.baidu.com @ads +dlsw.br.baidu.com @ads +dl-vip.bav.baidu.com @ads +dl-vip.pcfaster.baidu.co.th @ads +download.bav.baidu.com @ads +download.sd.baidu.com @ads +drmcmm.baidu.com @ads +dup.baidustatic.com @ads +dxp.baidu.com @ads +dzl.baidu.com @ads +e.baidu.com @ads +eclick.baidu.com @ads +ecma.bdimg.com @ads +ecmb.bdimg.com @ads +ecmc.bdimg.com @ads +eiv.baidu.com @ads +em.baidu.com @ads +entry.baidu.com @ads +ers.baidu.com @ads +f10.baidu.com @ads +fc-feed.cdn.bcebos.com @ads +fclick.baidu.com @ads +feed.baidu.com @ads +fexclick.baidu.com @ads +g.baidu.com @ads +gimg.baidu.com @ads +guanjia.baidu.com @ads +hc.baidu.com @ads +hm.baidu.com @ads +hmma.baidu.com @ads +hpd.baidu.com @ads +idm.bce.baidu.com @ads +idm-su.baidu.com @ads +iebar.baidu.com @ads +ikcode.baidu.com @ads +img.taotaosou.cn @ads +img01.taotaosou.cn @ads +j.br.baidu.com @ads +kstj.baidu.com @ads +log.music.baidu.com @ads +m1.baidu.com @ads +ma.baidu.com @ads +mipcache.bdstatic.com @ads +mobads.baidu.com @ads +mobads-logs.baidu.com @ads +mpro.baidu.com @ads +msite.baidu.com @ads +neirong.baidu.com @ads +nsclick.baidu.com @ads +nsclickvideo.baidu.com @ads +openrcv.baidu.com @ads +pc.videoclick.baidu.com @ads +pos.baidu.com @ads +pups.bdimg.com @ads +push.zhanzhang.baidu.com @ads +qianclick.baidu.com @ads +release.baidu.com @ads +res.mi.baidu.com @ads +rigel.baidustatic.com @ads +river.zhidao.baidu.com @ads +rj.baidu.com @ads +rplog.baidu.com @ads +s.baidu.com @ads +s.cpro.baidu.com @ads +sa.tuisong.baidu.com @ads +sclick.baidu.com @ads +sestat.baidu.com @ads +shadu.baidu.com @ads +share.baidu.com @ads +snippet.pos.baidu.com @ads +sobar.baidu.com @ads +sobartop.baidu.com @ads +spcode.baidu.com @ads +stat.v.baidu.com @ads +su.bdimg.com @ads +su.bdstatic.com @ads +t10.baidu.com @ads +t11.baidu.com @ads +t12.baidu.com @ads +tk.baidu.com @ads +tkweb.baidu.com @ads +tob-cms.bj.bcebos.com @ads +tongji.baidu.com @ads +toolbar.baidu.com @ads +tracker.baidu.com @ads +tuijian.baidu.com @ads +uat1.bfsspadserver.8le8le.com @ads +ubmcmm.baidustatic.com @ads +ucstat.baidu.com @ads +ulic.baidu.com @ads +ulog.imap.baidu.com @ads +union.baidu.com @ads +unionimage.baidu.com @ads +utility.baidu.com @ads +utk.baidu.com @ads +videopush.baidu.com @ads +vv84.bj.bcebos.com @ads +w.gdown.baidu.com @ads +w.x.baidu.com @ads +wangmeng.baidu.com @ads +weishi.baidu.com @ads +wenku-cms.bj.bcebos.com @ads +wisepush.video.baidu.com @ads +wm.baidu.com @ads +wn.pos.baidu.com @ads +znsv.baidu.com @ads +zz.bdstatic.com @ads +zzy1.quyaoya.com @ads diff --git a/data/bbc b/data/bbc new file mode 100644 index 00000000..6e96041c --- /dev/null +++ b/data/bbc @@ -0,0 +1,5 @@ +bbc.com +bbc.co.uk +bbci.co.uk +crwdcntrl.net +ib-ibi.com diff --git a/data/bilibili b/data/bilibili new file mode 100644 index 00000000..68e41804 --- /dev/null +++ b/data/bilibili @@ -0,0 +1,10 @@ +bilibili.com +im9.com +acg.tv +hdslb.com +biliapi.com +biligame.net +biligame.com +biliapi.net +mincdn.com +b23.tv diff --git a/data/bytedance b/data/bytedance new file mode 100644 index 00000000..c979d167 --- /dev/null +++ b/data/bytedance @@ -0,0 +1,19 @@ +bytecdn.cn +bytedance.com +bytedns.net +douyin.com +huaxiong.com +jokecommunity.com +neihanshequ.com +pstatp.com +snssdk.com +toutiao.com +toutiaocdn.com +toutiaocloud.com +toutiaopage.com +wukong.com + +#西瓜视频 +ixigua.com +ixgvideo.com +365yg.com diff --git a/data/category-ads b/data/category-ads new file mode 100644 index 00000000..feb0e79f --- /dev/null +++ b/data/category-ads @@ -0,0 +1,15 @@ +# This file contains domains that clearly serving ads + +include:alibaba-ads +include:baidu-ads +include:google-ads +include:hunantv-ads +include:iqiyi-ads +include:jd-ads +include:letv-ads +include:sina-ads +include:youku-ads + + +# Other domains for ads serving +ad.wang502.com diff --git a/data/cn b/data/cn new file mode 100644 index 00000000..652373b7 --- /dev/null +++ b/data/cn @@ -0,0 +1,4 @@ +# This tag 'cn' is for backward compatibility of 'geosite:cn' in V2Ray. + +include:tld-cn +include:geolocation-cn diff --git a/data/discord b/data/discord new file mode 100644 index 00000000..fbc17ccc --- /dev/null +++ b/data/discord @@ -0,0 +1,3 @@ +discordapp.com +discord.gg +discordapp.net diff --git a/data/douyu b/data/douyu new file mode 100644 index 00000000..bb9ce9d8 --- /dev/null +++ b/data/douyu @@ -0,0 +1,3 @@ +douyu.tv +douyu.com +douyucdn.cn diff --git a/data/dropbox b/data/dropbox new file mode 100644 index 00000000..f24c8aba --- /dev/null +++ b/data/dropbox @@ -0,0 +1,18 @@ +# List of all domains being operated by Dorpbox Inc. + +# Source: https://www.dropbox.com/en/help/security/official-domains +db.tt +dropbox.com +dropboxapi.com +dropboxusercontent.com +dropboxbusiness.com +dropboxforums.com +dropboxforum.com +dropboxinsiders.com +dropboxmail.com +dropboxpartners.com +dropboxstatic.com +dropbox.zendesk.com +getdropbox.com +paper.dropbox.com +dropbox-dns.com diff --git a/data/duckduckgo b/data/duckduckgo new file mode 100644 index 00000000..e2cfe4ed --- /dev/null +++ b/data/duckduckgo @@ -0,0 +1,2 @@ +duckduckgo.com +duck.com diff --git a/data/facebook b/data/facebook index cab31bbd..f6b031b6 100644 --- a/data/facebook +++ b/data/facebook @@ -12,7 +12,6 @@ fb.me fbcdn.net fbsbx.com instagram.com -instagram.com m.me messenger.com oculus.com diff --git a/data/geolocation-!cn b/data/geolocation-!cn new file mode 100644 index 00000000..cdf444cf --- /dev/null +++ b/data/geolocation-!cn @@ -0,0 +1,26 @@ +# This list contains domains that don't have access point in China. This is opposite to geolocation-cn. + +include:adobe +include:amazon +include:dropbox +include:duckduckgo +include:ebay +include:facebook +include:github +include:google +include:jsdelivr +include:line +include:linkedin +include:microsoft +include:oracle +include:pixiv +include:reddit +include:steam +include:taboola +include:telegram +include:twitter +include:ubi +include:wikimedia +include:xda +include:xposed +include:yandex diff --git a/data/geolocation-cn b/data/geolocation-cn index daffe42b..cef41778 100644 --- a/data/geolocation-cn +++ b/data/geolocation-cn @@ -2,11 +2,27 @@ include:alibaba include:baidu +include:bilibili +include:bytedance +include:douyu +include:iqiyi +include:jd +include:jiemian include:netease include:qihoo360 +include:sina include:tencent +include:tmtpost +include:umeng +include:unionpay +include:xiaomi +include:ynet include:zhihu -imclude:xiaomi + +# CDNs + +ourdvsss.com # 网宿科技 +cdn.jsdelivr.net # The following domains are carried over from geosite:cn. # TODO: Decide how to deal with these domains @@ -28,8 +44,6 @@ imclude:xiaomi 3322.org 35.com 360doc.com -360buy.com -360buyimg.com 360safe.com 36kr.com 39.net @@ -76,7 +90,6 @@ baixing.net bankcomm.com bankofchina.com bcy.net -bilibili.com cn.bing.com bitauto.com bitautoimg.com @@ -146,6 +159,7 @@ duowan.com dxpmedia.com eastday.com ecitic.com +edu.cn emarbox.com eoeandroid.com etao.com @@ -158,6 +172,7 @@ geekpark.net geetest.com geilicdn.com getui.com +gitee.com google-analytics.com growingio.com gtags.net @@ -165,7 +180,6 @@ gwdang.com hao123.com hao123img.com haosou.com -hdslb.com henha.com henkuai.com hexun.com @@ -195,7 +209,6 @@ ip138.com ipinyou.com ipip.net ip-cdn.com -iqiyi.com irs01.com it165.net it168.com @@ -204,7 +217,6 @@ iteye.com ithome.com itjuzi.com jandan.net -jd.com jb51.com jia.com jianshu.com @@ -312,8 +324,6 @@ qiniu.com qiniucdn.com qiniudn.com qiniudns.com -qiyi.com -qiyipic.com qtmojo.com qunar.com qunarzz.com @@ -362,8 +372,6 @@ tuniu.com tutuapp.com u17.com useso.com -unionpay.com -unionpaysecure.com upyun.com upaiyun.com v2ex.com diff --git a/data/github b/data/github index 4a1a5595..0c85a308 100644 --- a/data/github +++ b/data/github @@ -1,5 +1,6 @@ github.com -gist.github.com +githubapp.com +githubassets.com github.io githubusercontent.com git.io diff --git a/data/google b/data/google index 4fac9221..08454345 100644 --- a/data/google +++ b/data/google @@ -204,6 +204,7 @@ adsense.com adwords.com abc.xyz android.com +appspot.com blogger.com blogspot.com chromium.org @@ -244,7 +245,6 @@ ggoogle.com gogole.com goolge.com googel.com -duck.com googlee.com googil.com googlr.com @@ -253,6 +253,7 @@ gmodules.com googleadservices.com googleapps.com googleapis.com +googleapis.cn goo.gl googlebot.com googlecommerce.com @@ -263,9 +264,10 @@ withgoogle.com 1e100.net ggpht.com googleusercontent.com -googlecapital.com +googlecapital.com gv.com golang.org gstatic.com include:youtube +include:google-ads diff --git a/data/google-ads b/data/google-ads new file mode 100644 index 00000000..25c4c4d3 --- /dev/null +++ b/data/google-ads @@ -0,0 +1,2 @@ +doubleclick.net @ads +googlesyndication.com @ads diff --git a/data/hunantv-ads b/data/hunantv-ads index 98f546d3..5add6bc5 100644 --- a/data/hunantv-ads +++ b/data/hunantv-ads @@ -1,7 +1,7 @@ -click.hunantv.com -da.hunantv.com -da.mgtv.com -log.hunantv.com -log.v2.hunantv.com -res.hunantv.com -v2.log.hunantv.com +click.hunantv.com @ads +da.hunantv.com @ads +da.mgtv.com @ads +log.hunantv.com @ads +log.v2.hunantv.com @ads +res.hunantv.com @ads +v2.log.hunantv.com @ads diff --git a/data/iqiyi b/data/iqiyi new file mode 100644 index 00000000..9c75d473 --- /dev/null +++ b/data/iqiyi @@ -0,0 +1,3 @@ +qiyi.com +qiyipic.com +iqiyi.com \ No newline at end of file diff --git a/data/iqiyi-ads b/data/iqiyi-ads index 2a3ece6d..1ed2333a 100644 --- a/data/iqiyi-ads +++ b/data/iqiyi-ads @@ -1,17 +1,17 @@ -a.ckm.iqiyi.com -ad.m.iqiyi.com -afp.iqiyi.com -c.uaa.iqiyi.com -cloudpush.iqiyi.com -cm.passport.iqiyi.com -cupid.iqiyi.com -emoticon.sns.iqiyi.com -gamecenter.iqiyi.com -hotchat-im.iqiyi.com -ifacelog.iqiyi.com -mbdlog.iqiyi.com -msg.71.am -msg.video.qiyi.com -msg2.video.qiyi.com -policy.video.iqiyi.com -yuedu.iqiyi.com +a.ckm.iqiyi.com @ads +ad.m.iqiyi.com @ads +afp.iqiyi.com @ads +c.uaa.iqiyi.com @ads +cloudpush.iqiyi.com @ads +cm.passport.iqiyi.com @ads +cupid.iqiyi.com @ads +emoticon.sns.iqiyi.com @ads +gamecenter.iqiyi.com @ads +hotchat-im.iqiyi.com @ads +ifacelog.iqiyi.com @ads +mbdlog.iqiyi.com @ads +msg.71.am @ads +msg.video.qiyi.com @ads +msg2.video.qiyi.com @ads +policy.video.iqiyi.com @ads +yuedu.iqiyi.com @ads diff --git a/data/jd b/data/jd new file mode 100644 index 00000000..e0725af5 --- /dev/null +++ b/data/jd @@ -0,0 +1,37 @@ +360buy.com +360buyimg.com +360top.com +blackdragon.com +dao123.com +jcloud-cdn.com +jcloud-live.com +jcloud-oss.com +jcloud.com +jclouddn.com +jcloudec.com +jcloudlb.com +jcloudlive.com +jcloudlv.com +jcloudoss.com +jcloudss.com +jcloudstatic.com +jcloudvideo.com +jclps.com +jd-app.com +jd-ex.com +jd.cn +jd.com +jdcache.com +jdcloud.com +jddapeigou.com +joybuy.com +mayshijia.com +minitiao.com +paidaojia.cn +prestodb-china.com +qianxun.com +toplife.com +vg.com +wdfok.com + +include:jd-ads \ No newline at end of file diff --git a/data/jd-ads b/data/jd-ads index 715ffc8d..4af18429 100644 --- a/data/jd-ads +++ b/data/jd-ads @@ -1,6 +1,6 @@ -ads.union.jd.com -c-nfa.jd.com -cps.360buy.com -jzt.jd.com -stat.m.jd.com -img-x.jd.com +ads.union.jd.com @ads +c-nfa.jd.com @ads +cps.360buy.com @ads +jzt.jd.com @ads +stat.m.jd.com @ads +img-x.jd.com @ads diff --git a/data/jiemian b/data/jiemian new file mode 100644 index 00000000..9bf3fb8e --- /dev/null +++ b/data/jiemian @@ -0,0 +1,4 @@ +# 界面(上海)网络科技有限公司 (沪ICP备14040942号) + +jiemian.com +jiemian.com.cn diff --git a/data/jsdelivr b/data/jsdelivr new file mode 100644 index 00000000..2d638224 --- /dev/null +++ b/data/jsdelivr @@ -0,0 +1,2 @@ +jsdelivr.net +jsdelivr.com diff --git a/data/letv-ads b/data/letv-ads index 6ba8654c..5b76d4c5 100644 --- a/data/letv-ads +++ b/data/letv-ads @@ -1,15 +1,15 @@ -api.game.letvstore.com -ark.letv.com -dc.letv.com -dev.dc.letv.com -fz.letv.com -g3.letv.com -letv.allyes.com -minisite.letv.com -msg.m.letv.com -n.mark.letv.com -plog.dc.letv.com -pro.hoye.letv.com -pro.letv.com -stat.letv.com -static.app.m.letv.com +api.game.letvstore.com @ads +ark.letv.com @ads +dc.letv.com @ads +dev.dc.letv.com @ads +fz.letv.com @ads +g3.letv.com @ads +letv.allyes.com @ads +minisite.letv.com @ads +msg.m.letv.com @ads +n.mark.letv.com @ads +plog.dc.letv.com @ads +pro.hoye.letv.com @ads +pro.letv.com @ads +stat.letv.com @ads +static.app.m.letv.com @ads diff --git a/data/microsoft b/data/microsoft index 010e618a..8b8a8964 100644 --- a/data/microsoft +++ b/data/microsoft @@ -17,3 +17,5 @@ azure.com office.com xbox.com visualstudio.com + +domain:microsofttranslator.com diff --git a/data/nytimes b/data/nytimes new file mode 100644 index 00000000..391cffe2 --- /dev/null +++ b/data/nytimes @@ -0,0 +1,6 @@ +nytimes.com +nytcn.me +sxzhchina.com +tynt.com +nytstyle.com +nyt.com diff --git a/data/pixiv b/data/pixiv new file mode 100644 index 00000000..c615129e --- /dev/null +++ b/data/pixiv @@ -0,0 +1,4 @@ +pixiv.net +pixiv.org +pixiv.co.jp +pximg.net diff --git a/data/rfa b/data/rfa new file mode 100644 index 00000000..fe4a4543 --- /dev/null +++ b/data/rfa @@ -0,0 +1 @@ +rfa.org diff --git a/data/sina b/data/sina index 5946405b..efe6da91 100644 --- a/data/sina +++ b/data/sina @@ -1,10 +1,13 @@ sina.com sinaimg.cn sina.com.cn -weibo.com sinajs.cn sina.cn sinaapp.com sinaedge.com sinaimg.com -sinajs.com \ No newline at end of file +sinajs.com +weibo.com +weibo.com.cn + +include:sina-ads diff --git a/data/sina-ads b/data/sina-ads index f513f97a..19bc6dc2 100644 --- a/data/sina-ads +++ b/data/sina-ads @@ -1,84 +1,84 @@ -2016.sina.cn -ad.sina.com.cn -adbox.sina.com.cn -adimages.sina.com.hk -adimg.mobile.sina.cn -adimg.uve.weibo.com -adm.leju.sina.com.cn -ads.sina.com -alitui.weibo.com -api.apps.sina.cn -appgift.sinaapp.com -appsupdate.sinaapp.com -atm.sina.com -beacon.sina.com.cn -biz.weibo.com -c.biz.weibo.com -c.wcpt.biz.weibo.com -click.uve.mobile.sina.cn -click.uve.weibo.com -cm.dmp.sina.cn -contentrecommend-out.mobile.sina.cn -count.video.sina.com.cn -counter.sina.com.cn -cre.dp.sina.cn -cre.mix.sina.com.cn -cre-dp.sina.cn -d00.sina.com.cn -dcads.sina.com.cn -dl.kjava.sina.cn -dmp.sina.cn -dp.im.weibo.cn -game.weibo.cn -game.weibo.com -gw5.push.mcp.weibo.cn -gw6.push.mcp.weibo.cn -img.adbox.sina.com.cn -img.amp.ad.sina.com.cn -int.dpool.sina.com.cn -interest.mix.sina.com.cn -log.interest.mix.sina.com.cn -log.mix.sina.com.cn -log.sina.cn -m.beacon.sina.com.cn -m.game.weibo.cn -mg.games.sina.com.cn -motu.p4p.sina.com.cn -newspush.sinajs.cn -oascentral.sina.com -oascentral.sina.com.hk -p4p.sina.com.cn -palmnews.sina.cn -pay.mobile.sina.cn -pfp.sina.com.cn -pfpip.sina.com -promote.biz.weibo.cn -r.dmp.sina.cn -rm.sina.com.cn -rs.sinajs.cn -s.alitui.weibo.com -s.img.mix.sina.com.cn -sapi.sina.cn -sax.sina.cn -sax.sina.com.cn -saxn.sina.com.cn -saxs.sina.com.cn -sbeacon.sina.com.cn -sdkapp.mobile.sina.cn -sdkapp.uve.weibo.com -sdkclick.mobile.sina.cn -slog.sina.cn -slog.sina.com.cn -staticadm.leju.sina.com.cn -tjs.sjs.sinajs.cn -trends.mobile.sina.cn -u1.img.mobile.sina.cn -wapwbclick.mobile.sina.cn -wbapp.mobile.sina.cn -wbapp.uve.weibo.com -wbclick.mobile.sina.cn -wbpctips.mobile.sina.cn -widget.weibo.com -woocall.sina.com.cn -zc.biz.weibo.com -zymo.mps.weibo.com +2016.sina.cn @ads +ad.sina.com.cn @ads +adbox.sina.com.cn @ads +adimages.sina.com.hk @ads +adimg.mobile.sina.cn @ads +adimg.uve.weibo.com @ads +adm.leju.sina.com.cn @ads +ads.sina.com @ads +alitui.weibo.com @ads +api.apps.sina.cn @ads +appgift.sinaapp.com @ads +appsupdate.sinaapp.com @ads +atm.sina.com @ads +beacon.sina.com.cn @ads +biz.weibo.com @ads +c.biz.weibo.com @ads +c.wcpt.biz.weibo.com @ads +click.uve.mobile.sina.cn @ads +click.uve.weibo.com @ads +cm.dmp.sina.cn @ads +contentrecommend-out.mobile.sina.cn @ads +count.video.sina.com.cn @ads +counter.sina.com.cn @ads +cre.dp.sina.cn @ads +cre.mix.sina.com.cn @ads +cre-dp.sina.cn @ads +d00.sina.com.cn @ads +dcads.sina.com.cn @ads +dl.kjava.sina.cn @ads +dmp.sina.cn @ads +dp.im.weibo.cn @ads +game.weibo.cn @ads +game.weibo.com @ads +gw5.push.mcp.weibo.cn @ads +gw6.push.mcp.weibo.cn @ads +img.adbox.sina.com.cn @ads +img.amp.ad.sina.com.cn @ads +int.dpool.sina.com.cn @ads +interest.mix.sina.com.cn @ads +log.interest.mix.sina.com.cn @ads +log.mix.sina.com.cn @ads +log.sina.cn @ads +m.beacon.sina.com.cn @ads +m.game.weibo.cn @ads +mg.games.sina.com.cn @ads +motu.p4p.sina.com.cn @ads +newspush.sinajs.cn @ads +oascentral.sina.com @ads +oascentral.sina.com.hk @ads +p4p.sina.com.cn @ads +palmnews.sina.cn @ads +pay.mobile.sina.cn @ads +pfp.sina.com.cn @ads +pfpip.sina.com @ads +promote.biz.weibo.cn @ads +r.dmp.sina.cn @ads +rm.sina.com.cn @ads +rs.sinajs.cn @ads +s.alitui.weibo.com @ads +s.img.mix.sina.com.cn @ads +sapi.sina.cn @ads +sax.sina.cn @ads +sax.sina.com.cn @ads +saxn.sina.com.cn @ads +saxs.sina.com.cn @ads +sbeacon.sina.com.cn @ads +sdkapp.mobile.sina.cn @ads +sdkapp.uve.weibo.com @ads +sdkclick.mobile.sina.cn @ads +slog.sina.cn @ads +slog.sina.com.cn @ads +staticadm.leju.sina.com.cn @ads +tjs.sjs.sinajs.cn @ads +trends.mobile.sina.cn @ads +u1.img.mobile.sina.cn @ads +wapwbclick.mobile.sina.cn @ads +wbapp.mobile.sina.cn @ads +wbapp.uve.weibo.com @ads +wbclick.mobile.sina.cn @ads +wbpctips.mobile.sina.cn @ads +widget.weibo.com @ads +woocall.sina.com.cn @ads +zc.biz.weibo.com @ads +zymo.mps.weibo.com @ads diff --git a/data/sohu-ads b/data/sohu-ads index 7e23a0ce..4b0ee1d0 100644 --- a/data/sohu-ads +++ b/data/sohu-ads @@ -1,14 +1,14 @@ -adnet.sohu.com -ads.sohu.com -aty.sohu.com -data.vod.itc.cn -epro.sogou.com -go.sohu.com -golden1.sogou.com -imp.optaim.com -inte.sogou.com -inte.sogoucdn.com -lu.sogoucdn.com -theta.sogoucdn.com -uranus.sogou.com -v2.reachmax.cn +adnet.sohu.com @ads +ads.sohu.com @ads +aty.sohu.com @ads +data.vod.itc.cn @ads +epro.sogou.com @ads +go.sohu.com @ads +golden1.sogou.com @ads +imp.optaim.com @ads +inte.sogou.com @ads +inte.sogoucdn.com @ads +lu.sogoucdn.com @ads +theta.sogoucdn.com @ads +uranus.sogou.com @ads +v2.reachmax.cn @ads diff --git a/data/soundcloud b/data/soundcloud new file mode 100644 index 00000000..cb5ef02c --- /dev/null +++ b/data/soundcloud @@ -0,0 +1,2 @@ +soundcloud.com +sndcdn.com diff --git a/data/speedtest b/data/speedtest new file mode 100644 index 00000000..af3aa87a --- /dev/null +++ b/data/speedtest @@ -0,0 +1,3 @@ +# This tag 'speedtest' is for backward compatibility of 'geosite:speedtest' in V2Ray. + +include:ookla-speedtest diff --git a/data/startpage b/data/startpage new file mode 100644 index 00000000..99bfa121 --- /dev/null +++ b/data/startpage @@ -0,0 +1,2 @@ +startpage.com +ixquick.com diff --git a/data/taboola b/data/taboola new file mode 100644 index 00000000..f00ef5ea --- /dev/null +++ b/data/taboola @@ -0,0 +1,4 @@ +# Taboola uses this single domain for both official website and ads serving. +# Blocking the following domain will prevent taboola ads from displaying, +# but also cut the connection to Taboola website. +taboola.com diff --git a/data/telegram b/data/telegram index 285fa17c..d169b07d 100644 --- a/data/telegram +++ b/data/telegram @@ -1,2 +1,6 @@ -telegram.org +stel.com t.me +tdesktop.com +telegra.ph +telegram.me +telegram.org diff --git a/data/tmtpost b/data/tmtpost new file mode 100644 index 00000000..a4a3fc8c --- /dev/null +++ b/data/tmtpost @@ -0,0 +1,10 @@ +# Domains belong to 北京灵动新程信息科技有限公司 (京ICP备13040123号) + +tmtpost.com +chaindd.com +72whys.com +checkzeit.com +tivitv.com +tigeek.net.cn +tmtsmartlife.com +tmtsmartrun.com diff --git a/data/tumblr b/data/tumblr new file mode 100644 index 00000000..0dff8929 --- /dev/null +++ b/data/tumblr @@ -0,0 +1 @@ +tumblr.com diff --git a/data/twitter b/data/twitter index ecb4ba53..91709f77 100644 --- a/data/twitter +++ b/data/twitter @@ -1,10 +1,14 @@ +ads-twitter.com periscope.tv pscp.tv t.co +tellapart.com tweetdeck.com twimg.com twitpic.com twitter.com +twitteroauth.com +twitterstat.us twitter.jp vine.co twtrdns.net diff --git a/data/ubi b/data/ubi new file mode 100644 index 00000000..9df9caf1 --- /dev/null +++ b/data/ubi @@ -0,0 +1,3 @@ +ubi.com +ubisoft.com +uplay.com diff --git a/data/umeng b/data/umeng new file mode 100644 index 00000000..e7d1403b --- /dev/null +++ b/data/umeng @@ -0,0 +1,7 @@ +umeng.com +whalecloud.com +umtrack.com +umsns.com +uyunad.com +umengcloud.com +mobmore.com diff --git a/data/unionpay b/data/unionpay new file mode 100644 index 00000000..8150b426 --- /dev/null +++ b/data/unionpay @@ -0,0 +1,4 @@ +95516.com +unionpay.com +unionpayintl.com +unionpaysecure.com diff --git a/data/v2ray b/data/v2ray new file mode 100644 index 00000000..4fac3797 --- /dev/null +++ b/data/v2ray @@ -0,0 +1 @@ +v2ray.com diff --git a/data/vimeo b/data/vimeo new file mode 100644 index 00000000..1946b6df --- /dev/null +++ b/data/vimeo @@ -0,0 +1,2 @@ +vimeo.com +vimeocdn.com diff --git a/data/voanews b/data/voanews new file mode 100644 index 00000000..ba9166da --- /dev/null +++ b/data/voanews @@ -0,0 +1,3 @@ +tiqcdn.com +voachinese.com +voanews.com diff --git a/data/xda b/data/xda new file mode 100644 index 00000000..49f37312 --- /dev/null +++ b/data/xda @@ -0,0 +1,2 @@ +xda-developers.com +xda-cdn.com diff --git a/data/xposed b/data/xposed new file mode 100644 index 00000000..208e66a7 --- /dev/null +++ b/data/xposed @@ -0,0 +1 @@ +xposed.info diff --git a/data/ynet b/data/ynet new file mode 100644 index 00000000..7f254269 --- /dev/null +++ b/data/ynet @@ -0,0 +1,6 @@ +# This file includes domains for 北京青年报网际传播技术有限公司 (京ICP证010639号-4) + +ynet.com.cn +ynet.com +0880.com +ynet.cn diff --git a/data/youku-ads b/data/youku-ads index bde53bba..013dd99c 100644 --- a/data/youku-ads +++ b/data/youku-ads @@ -1,47 +1,47 @@ -actives.youku.com -ad.api.3g.youku.com -ad.api.mobile.youku.com -ad.mobile.youku.com -a-dxk.play.api.3g.youku.com -atm.youku.com -b.smartvideo.youku.com -c.yes.youku.com -das.api.youku.com -das.mobile.youku.com -dev-push.m.youku.com -dl.g.youku.com -dmapp.youku.com -e.stat.ykimg.com -gamex.mobile.youku.com -guanggaoad.youku.com -hudong.pl.youku.com -huodong.pl.youku.com -huodong.vip.youku.com -hz.youku.com -iyes.youku.com -l.ykimg.com -lstat.youku.com -mobilemsg.youku.com -msg.youku.com -myes.youku.com -p.l.youku.com -pl.youku.com -passport-log.youku.com -p-log.ykimg.com -push.m.youku.com -r.l.youku.com -s.p.youku.com -sdk.m.youku.com -stat.youku.com -statis.api.3g.youku.com -store.tv.api.3g.youku.com -store.xl.api.3g.youku.com -tdrec.youku.com -test.ott.youku.com -test.sdk.m.youku.com -v.l.youku.com -val.api.youku.com -vali.cp31.ott.cibntv.net -wan.youku.com -ykatr.youku.com -ykrec.youku.com +actives.youku.com @ads +ad.api.3g.youku.com @ads +ad.api.mobile.youku.com @ads +ad.mobile.youku.com @ads +a-dxk.play.api.3g.youku.com @ads +atm.youku.com @ads +b.smartvideo.youku.com @ads +c.yes.youku.com @ads +das.api.youku.com @ads +das.mobile.youku.com @ads +dev-push.m.youku.com @ads +dl.g.youku.com @ads +dmapp.youku.com @ads +e.stat.ykimg.com @ads +gamex.mobile.youku.com @ads +guanggaoad.youku.com @ads +hudong.pl.youku.com @ads +huodong.pl.youku.com @ads +huodong.vip.youku.com @ads +hz.youku.com @ads +iyes.youku.com @ads +l.ykimg.com @ads +lstat.youku.com @ads +mobilemsg.youku.com @ads +msg.youku.com @ads +myes.youku.com @ads +p.l.youku.com @ads +pl.youku.com @ads +passport-log.youku.com @ads +p-log.ykimg.com @ads +push.m.youku.com @ads +r.l.youku.com @ads +s.p.youku.com @ads +sdk.m.youku.com @ads +stat.youku.com @ads +statis.api.3g.youku.com @ads +store.tv.api.3g.youku.com @ads +store.xl.api.3g.youku.com @ads +tdrec.youku.com @ads +test.ott.youku.com @ads +test.sdk.m.youku.com @ads +v.l.youku.com @ads +val.api.youku.com @ads +vali.cp31.ott.cibntv.net @ads +wan.youku.com @ads +ykatr.youku.com @ads +ykrec.youku.com @ads diff --git a/main.go b/main.go index ad709033..acc3ca4b 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "io/ioutil" "os" "path/filepath" + "strconv" "strings" "github.com/gogo/protobuf/proto" @@ -16,6 +17,7 @@ import ( type Entry struct { Type string Value string + Attrs []*router.Domain_Attribute } type List struct { @@ -37,23 +39,27 @@ func (l *ParsedList) toProto() (*router.GeoSite, error) { switch entry.Type { case "domain": site.Domain = append(site.Domain, &router.Domain{ - Type: router.Domain_Domain, - Value: entry.Value, + Type: router.Domain_Domain, + Value: entry.Value, + Attribute: entry.Attrs, }) case "regex": site.Domain = append(site.Domain, &router.Domain{ - Type: router.Domain_Regex, - Value: entry.Value, + Type: router.Domain_Regex, + Value: entry.Value, + Attribute: entry.Attrs, }) case "keyword": site.Domain = append(site.Domain, &router.Domain{ - Type: router.Domain_Plain, - Value: entry.Value, + Type: router.Domain_Plain, + Value: entry.Value, + Attribute: entry.Attrs, }) case "full": site.Domain = append(site.Domain, &router.Domain{ - Type: router.Domain_Full, - Value: entry.Value, + Type: router.Domain_Full, + Value: entry.Value, + Attribute: entry.Attrs, }) default: return nil, errors.New("unknown domain type: " + entry.Type) @@ -70,21 +76,67 @@ func removeComment(line string) string { return strings.TrimSpace(line[:idx]) } -func parseEntry(line string) (Entry, error) { - kv := strings.Split(line, ":") +func parseDomain(domain string, entry *Entry) error { + kv := strings.Split(domain, ":") if len(kv) == 1 { - return Entry{ - Type: "domain", - Value: kv[0], - }, nil + entry.Type = "domain" + entry.Value = strings.ToLower(kv[0]) + return nil } + if len(kv) == 2 { - return Entry{ - Type: strings.ToLower(kv[0]), - Value: strings.ToLower(kv[1]), - }, nil + entry.Type = strings.ToLower(kv[0]) + entry.Value = strings.ToLower(kv[1]) + return nil } - return Entry{}, errors.New("Invalid format: " + line) + + return errors.New("Invalid format: " + domain) +} + +func parseAttribute(attr string) (router.Domain_Attribute, error) { + var attribute router.Domain_Attribute + if len(attr) == 0 || attr[0] != '@' { + return attribute, errors.New("invalid attribute: " + attr) + } + + attr = attr[0:] + parts := strings.Split(attr, "=") + if len(parts) == 1 { + attribute.Key = strings.ToLower(parts[0]) + attribute.TypedValue = &router.Domain_Attribute_BoolValue{BoolValue: true} + } else { + attribute.Key = strings.ToLower(parts[0]) + intv, err := strconv.Atoi(parts[1]) + if err != nil { + return attribute, errors.New("invalid attribute: " + attr + ": " + err.Error()) + } + attribute.TypedValue = &router.Domain_Attribute_IntValue{IntValue: int64(intv)} + } + return attribute, nil +} + +func parseEntry(line string) (Entry, error) { + line = strings.TrimSpace(line) + parts := strings.Split(line, " ") + + var entry Entry + if len(parts) == 0 { + return entry, errors.New("empty entry") + } + + if err := parseDomain(parts[0], &entry); err != nil { + return entry, err + } + + for i := 1; i < len(parts); i++ { + attr, err := parseAttribute(parts[i]) + if err != nil { + return entry, err + } + entry.Attrs = append(entry.Attrs, &attr) + } + + return entry, nil } func DetectPath(path string) (string, error) {