mirror of
https://github.com/itdoginfo/allow-domains.git
synced 2026-03-26 12:50:58 +03:00
Compare commits
24 Commits
c20ed82d97
...
refactor
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
315d118c17 | ||
|
|
fee4746b57 | ||
|
|
689a9ea755 | ||
|
|
1a6e1cf718 | ||
|
|
98fb1ca2df | ||
|
|
2868f4576e | ||
|
|
76f8f79434 | ||
|
|
623b97ff1b | ||
|
|
6d441b4cbf | ||
|
|
8ca8769a77 | ||
|
|
a06c1739a4 | ||
|
|
b8fe629d16 | ||
|
|
ccedd6cfac | ||
|
|
96e00053c4 | ||
|
|
e0d48d4e1e | ||
|
|
660a70f731 | ||
|
|
4c578d1533 | ||
|
|
42c889e64e | ||
|
|
9d8fe984b6 | ||
|
|
19368bbecd | ||
|
|
14164ffa0f | ||
|
|
64f9eb0283 | ||
|
|
b7ff4adda5 | ||
|
|
daefb679ea |
9
.github/ISSUE_TEMPLATE/config.yml
vendored
9
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1 +1,8 @@
|
|||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: Предложить домен или сервис
|
||||||
|
url: https://github.com/itdoginfo/allow-domains/discussions/categories/general
|
||||||
|
about: Добавление доменов и сервисов производится через Discussions, а не Issues.
|
||||||
|
- name: Вопрос по использованию
|
||||||
|
url: https://t.me/itdogchat
|
||||||
|
about: С вопросами в Telegram-чат.
|
||||||
|
|||||||
31
.github/workflows/create-lists.yml
vendored
31
.github/workflows/create-lists.yml
vendored
@@ -19,19 +19,26 @@ jobs:
|
|||||||
generate-lists:
|
generate-lists:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.3.0
|
- uses: actions/checkout@v6.0.2
|
||||||
- name: Compile ruleset srs
|
|
||||||
|
- name: Cache sing-box
|
||||||
|
uses: actions/cache@v5.0.3
|
||||||
|
id: cache-singbox
|
||||||
|
with:
|
||||||
|
path: /usr/local/bin/sing-box
|
||||||
|
key: sing-box-1.12.25
|
||||||
|
|
||||||
|
- name: Install sing-box
|
||||||
|
if: steps.cache-singbox.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
docker run --rm \
|
wget -qO- https://github.com/SagerNet/sing-box/releases/download/v1.12.25/sing-box-1.12.25-linux-amd64.tar.gz | tar xz
|
||||||
-v ${{ github.workspace }}/src:/app/src \
|
sudo mv sing-box-*/sing-box /usr/local/bin/
|
||||||
-v ${{ github.workspace }}/Subnets:/app/Subnets \
|
|
||||||
-v ${{ github.workspace }}/Russia:/app/Russia \
|
- name: Install Python dependencies
|
||||||
-v ${{ github.workspace }}/Ukraine:/app/Ukraine \
|
run: pip install -r requirements.txt
|
||||||
-v ${{ github.workspace }}/Categories:/app/Categories \
|
|
||||||
-v ${{ github.workspace }}/Services:/app/Services \
|
- name: Generate lists
|
||||||
-v ${{ github.workspace }}/SRS:/app/SRS \
|
run: python3 convert.py
|
||||||
-v ${{ github.workspace }}/DAT:/app/DAT \
|
|
||||||
itdoginfo/compilesrs:0.1.22
|
|
||||||
|
|
||||||
- name: Check Russia/inside-dnsmasq-ipset
|
- name: Check Russia/inside-dnsmasq-ipset
|
||||||
uses: itdoginfo/dnsmasq-action@0.1
|
uses: itdoginfo/dnsmasq-action@0.1
|
||||||
|
|||||||
8
.github/workflows/create-subnets.yml
vendored
8
.github/workflows/create-subnets.yml
vendored
@@ -14,13 +14,13 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
generate-subnet:
|
generate-subnet:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.7
|
- uses: actions/checkout@v6.0.2
|
||||||
- name: Generate subnets
|
- name: Generate subnets
|
||||||
uses: actions/setup-python@v5.1.0
|
uses: actions/setup-python@v6.2.0
|
||||||
with:
|
with:
|
||||||
python-version: '3.10'
|
python-version: '3.13'
|
||||||
- run: |
|
- run: |
|
||||||
python get-subnets.py
|
python get-subnets.py
|
||||||
- name: Push subnets
|
- name: Push subnets
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -4,4 +4,5 @@ zaboronahelp-domains.lst
|
|||||||
SRS
|
SRS
|
||||||
JSON
|
JSON
|
||||||
DAT
|
DAT
|
||||||
geosite_data
|
geosite_data
|
||||||
|
proto/__pycache__
|
||||||
22
Dockerfile
22
Dockerfile
@@ -1,22 +0,0 @@
|
|||||||
FROM ghcr.io/sagernet/sing-box:v1.11.15 AS sing-box
|
|
||||||
|
|
||||||
FROM golang:1.25.5-alpine3.23 AS go-builder
|
|
||||||
|
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go install -ldflags="-s -w" \
|
|
||||||
github.com/v2fly/domain-list-community@20251222003838
|
|
||||||
|
|
||||||
FROM python:3.12.12-alpine3.23
|
|
||||||
|
|
||||||
COPY --from=sing-box /usr/local/bin/sing-box /bin/sing-box
|
|
||||||
|
|
||||||
COPY --from=go-builder /go/bin/domain-list-community /bin/domain-list-community
|
|
||||||
|
|
||||||
COPY requirements.txt /app/requirements.txt
|
|
||||||
|
|
||||||
RUN pip install --no-cache-dir -r /app/requirements.txt
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY convert.py /app/convert.py
|
|
||||||
|
|
||||||
CMD ["python3", "convert.py"]
|
|
||||||
11
README.md
11
README.md
@@ -34,6 +34,7 @@
|
|||||||
- Tik-Tok
|
- Tik-Tok
|
||||||
- Twitter
|
- Twitter
|
||||||
- YouTube
|
- YouTube
|
||||||
|
- Google Meet
|
||||||
|
|
||||||
## Страны
|
## Страны
|
||||||
### Россия
|
### Россия
|
||||||
@@ -232,6 +233,16 @@
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Google Meet</summary>
|
||||||
|
|
||||||
|
- [Subnets](https://raw.githubusercontent.com/itdoginfo/allow-domains/refs/heads/main/Subnets/IPv4/google_meet.lst)
|
||||||
|
- [SRS](https://github.com/itdoginfo/allow-domains/releases/latest/download/google_meet.srs)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
# Как найти все-все домены ресурса?
|
# Как найти все-все домены ресурса?
|
||||||
https://itdog.info/analiziruem-trafik-i-opredelyaem-domeny-kotorye-ispolzuyut-sajty-i-prilozheniya/
|
https://itdog.info/analiziruem-trafik-i-opredelyaem-domeny-kotorye-ispolzuyut-sajty-i-prilozheniya/
|
||||||
|
|
||||||
|
|||||||
@@ -380,6 +380,7 @@ DOMAIN-SUFFIX,habr.com
|
|||||||
DOMAIN-SUFFIX,hackernoon.com
|
DOMAIN-SUFFIX,hackernoon.com
|
||||||
DOMAIN-SUFFIX,hackmd.io
|
DOMAIN-SUFFIX,hackmd.io
|
||||||
DOMAIN-SUFFIX,halooglasi.com
|
DOMAIN-SUFFIX,halooglasi.com
|
||||||
|
DOMAIN-SUFFIX,hangouts.googleapis.com
|
||||||
DOMAIN-SUFFIX,hashicorp.com
|
DOMAIN-SUFFIX,hashicorp.com
|
||||||
DOMAIN-SUFFIX,haydaygame.com
|
DOMAIN-SUFFIX,haydaygame.com
|
||||||
DOMAIN-SUFFIX,hbomax.com
|
DOMAIN-SUFFIX,hbomax.com
|
||||||
@@ -549,6 +550,9 @@ DOMAIN-SUFFIX,mediazona.ca
|
|||||||
DOMAIN-SUFFIX,medicalnewstoday.com
|
DOMAIN-SUFFIX,medicalnewstoday.com
|
||||||
DOMAIN-SUFFIX,medium.com
|
DOMAIN-SUFFIX,medium.com
|
||||||
DOMAIN-SUFFIX,meduza.io
|
DOMAIN-SUFFIX,meduza.io
|
||||||
|
DOMAIN-SUFFIX,meet.google.com
|
||||||
|
DOMAIN-SUFFIX,meetings.clients6.google.com
|
||||||
|
DOMAIN-SUFFIX,meetings.googleapis.com
|
||||||
DOMAIN-SUFFIX,mega.nz
|
DOMAIN-SUFFIX,mega.nz
|
||||||
DOMAIN-SUFFIX,megapeer.ru
|
DOMAIN-SUFFIX,megapeer.ru
|
||||||
DOMAIN-SUFFIX,megapeer.vip
|
DOMAIN-SUFFIX,megapeer.vip
|
||||||
@@ -905,6 +909,7 @@ DOMAIN-SUFFIX,steamstat.info
|
|||||||
DOMAIN-SUFFIX,strana.news
|
DOMAIN-SUFFIX,strana.news
|
||||||
DOMAIN-SUFFIX,strana.today
|
DOMAIN-SUFFIX,strana.today
|
||||||
DOMAIN-SUFFIX,strava.com
|
DOMAIN-SUFFIX,strava.com
|
||||||
|
DOMAIN-SUFFIX,stream.meet.google.com
|
||||||
DOMAIN-SUFFIX,suggestqueries.google.com
|
DOMAIN-SUFFIX,suggestqueries.google.com
|
||||||
DOMAIN-SUFFIX,supercell.com
|
DOMAIN-SUFFIX,supercell.com
|
||||||
DOMAIN-SUFFIX,supersliv.biz
|
DOMAIN-SUFFIX,supersliv.biz
|
||||||
|
|||||||
@@ -380,6 +380,7 @@ ipset=/habr.com/vpn_domains
|
|||||||
ipset=/hackernoon.com/vpn_domains
|
ipset=/hackernoon.com/vpn_domains
|
||||||
ipset=/hackmd.io/vpn_domains
|
ipset=/hackmd.io/vpn_domains
|
||||||
ipset=/halooglasi.com/vpn_domains
|
ipset=/halooglasi.com/vpn_domains
|
||||||
|
ipset=/hangouts.googleapis.com/vpn_domains
|
||||||
ipset=/hashicorp.com/vpn_domains
|
ipset=/hashicorp.com/vpn_domains
|
||||||
ipset=/haydaygame.com/vpn_domains
|
ipset=/haydaygame.com/vpn_domains
|
||||||
ipset=/hbomax.com/vpn_domains
|
ipset=/hbomax.com/vpn_domains
|
||||||
@@ -549,6 +550,9 @@ ipset=/mediazona.ca/vpn_domains
|
|||||||
ipset=/medicalnewstoday.com/vpn_domains
|
ipset=/medicalnewstoday.com/vpn_domains
|
||||||
ipset=/medium.com/vpn_domains
|
ipset=/medium.com/vpn_domains
|
||||||
ipset=/meduza.io/vpn_domains
|
ipset=/meduza.io/vpn_domains
|
||||||
|
ipset=/meet.google.com/vpn_domains
|
||||||
|
ipset=/meetings.clients6.google.com/vpn_domains
|
||||||
|
ipset=/meetings.googleapis.com/vpn_domains
|
||||||
ipset=/mega.nz/vpn_domains
|
ipset=/mega.nz/vpn_domains
|
||||||
ipset=/megapeer.ru/vpn_domains
|
ipset=/megapeer.ru/vpn_domains
|
||||||
ipset=/megapeer.vip/vpn_domains
|
ipset=/megapeer.vip/vpn_domains
|
||||||
@@ -905,6 +909,7 @@ ipset=/steamstat.info/vpn_domains
|
|||||||
ipset=/strana.news/vpn_domains
|
ipset=/strana.news/vpn_domains
|
||||||
ipset=/strana.today/vpn_domains
|
ipset=/strana.today/vpn_domains
|
||||||
ipset=/strava.com/vpn_domains
|
ipset=/strava.com/vpn_domains
|
||||||
|
ipset=/stream.meet.google.com/vpn_domains
|
||||||
ipset=/suggestqueries.google.com/vpn_domains
|
ipset=/suggestqueries.google.com/vpn_domains
|
||||||
ipset=/supercell.com/vpn_domains
|
ipset=/supercell.com/vpn_domains
|
||||||
ipset=/supersliv.biz/vpn_domains
|
ipset=/supersliv.biz/vpn_domains
|
||||||
|
|||||||
@@ -380,6 +380,7 @@ nftset=/habr.com/4#inet#fw4#vpn_domains
|
|||||||
nftset=/hackernoon.com/4#inet#fw4#vpn_domains
|
nftset=/hackernoon.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/hackmd.io/4#inet#fw4#vpn_domains
|
nftset=/hackmd.io/4#inet#fw4#vpn_domains
|
||||||
nftset=/halooglasi.com/4#inet#fw4#vpn_domains
|
nftset=/halooglasi.com/4#inet#fw4#vpn_domains
|
||||||
|
nftset=/hangouts.googleapis.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/hashicorp.com/4#inet#fw4#vpn_domains
|
nftset=/hashicorp.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/haydaygame.com/4#inet#fw4#vpn_domains
|
nftset=/haydaygame.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/hbomax.com/4#inet#fw4#vpn_domains
|
nftset=/hbomax.com/4#inet#fw4#vpn_domains
|
||||||
@@ -549,6 +550,9 @@ nftset=/mediazona.ca/4#inet#fw4#vpn_domains
|
|||||||
nftset=/medicalnewstoday.com/4#inet#fw4#vpn_domains
|
nftset=/medicalnewstoday.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/medium.com/4#inet#fw4#vpn_domains
|
nftset=/medium.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/meduza.io/4#inet#fw4#vpn_domains
|
nftset=/meduza.io/4#inet#fw4#vpn_domains
|
||||||
|
nftset=/meet.google.com/4#inet#fw4#vpn_domains
|
||||||
|
nftset=/meetings.clients6.google.com/4#inet#fw4#vpn_domains
|
||||||
|
nftset=/meetings.googleapis.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/mega.nz/4#inet#fw4#vpn_domains
|
nftset=/mega.nz/4#inet#fw4#vpn_domains
|
||||||
nftset=/megapeer.ru/4#inet#fw4#vpn_domains
|
nftset=/megapeer.ru/4#inet#fw4#vpn_domains
|
||||||
nftset=/megapeer.vip/4#inet#fw4#vpn_domains
|
nftset=/megapeer.vip/4#inet#fw4#vpn_domains
|
||||||
@@ -905,6 +909,7 @@ nftset=/steamstat.info/4#inet#fw4#vpn_domains
|
|||||||
nftset=/strana.news/4#inet#fw4#vpn_domains
|
nftset=/strana.news/4#inet#fw4#vpn_domains
|
||||||
nftset=/strana.today/4#inet#fw4#vpn_domains
|
nftset=/strana.today/4#inet#fw4#vpn_domains
|
||||||
nftset=/strava.com/4#inet#fw4#vpn_domains
|
nftset=/strava.com/4#inet#fw4#vpn_domains
|
||||||
|
nftset=/stream.meet.google.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/suggestqueries.google.com/4#inet#fw4#vpn_domains
|
nftset=/suggestqueries.google.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/supercell.com/4#inet#fw4#vpn_domains
|
nftset=/supercell.com/4#inet#fw4#vpn_domains
|
||||||
nftset=/supersliv.biz/4#inet#fw4#vpn_domains
|
nftset=/supersliv.biz/4#inet#fw4#vpn_domains
|
||||||
|
|||||||
@@ -379,6 +379,7 @@ habr.com
|
|||||||
hackernoon.com
|
hackernoon.com
|
||||||
hackmd.io
|
hackmd.io
|
||||||
halooglasi.com
|
halooglasi.com
|
||||||
|
hangouts.googleapis.com
|
||||||
hashicorp.com
|
hashicorp.com
|
||||||
haydaygame.com
|
haydaygame.com
|
||||||
hbomax.com
|
hbomax.com
|
||||||
@@ -548,6 +549,9 @@ mediazona.ca
|
|||||||
medicalnewstoday.com
|
medicalnewstoday.com
|
||||||
medium.com
|
medium.com
|
||||||
meduza.io
|
meduza.io
|
||||||
|
meet.google.com
|
||||||
|
meetings.clients6.google.com
|
||||||
|
meetings.googleapis.com
|
||||||
mega.nz
|
mega.nz
|
||||||
megapeer.ru
|
megapeer.ru
|
||||||
megapeer.vip
|
megapeer.vip
|
||||||
@@ -904,6 +908,7 @@ steamstat.info
|
|||||||
strana.news
|
strana.news
|
||||||
strana.today
|
strana.today
|
||||||
strava.com
|
strava.com
|
||||||
|
stream.meet.google.com
|
||||||
suggestqueries.google.com
|
suggestqueries.google.com
|
||||||
supercell.com
|
supercell.com
|
||||||
supersliv.biz
|
supersliv.biz
|
||||||
|
|||||||
@@ -380,6 +380,7 @@
|
|||||||
/ip dns static add name=hackernoon.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=hackernoon.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=hackmd.io type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=hackmd.io type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=halooglasi.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=halooglasi.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
/ip dns static add name=hangouts.googleapis.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=hashicorp.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=hashicorp.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=haydaygame.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=haydaygame.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=hbomax.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=hbomax.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
@@ -549,6 +550,9 @@
|
|||||||
/ip dns static add name=medicalnewstoday.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=medicalnewstoday.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=medium.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=medium.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=meduza.io type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=meduza.io type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
/ip dns static add name=meet.google.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
/ip dns static add name=meetings.clients6.google.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
/ip dns static add name=meetings.googleapis.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=mega.nz type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=mega.nz type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=megapeer.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=megapeer.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=megapeer.vip type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=megapeer.vip type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
@@ -904,6 +908,7 @@
|
|||||||
/ip dns static add name=strana.news type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=strana.news type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=strana.today type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=strana.today type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=strava.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=strava.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
/ip dns static add name=stream.meet.google.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=suggestqueries.google.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=suggestqueries.google.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=supercell.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=supercell.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=supersliv.biz type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=supersliv.biz type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
|||||||
@@ -380,6 +380,7 @@ habr.com
|
|||||||
hackernoon.com
|
hackernoon.com
|
||||||
hackmd.io
|
hackmd.io
|
||||||
halooglasi.com
|
halooglasi.com
|
||||||
|
hangouts.googleapis.com
|
||||||
hashicorp.com
|
hashicorp.com
|
||||||
haydaygame.com
|
haydaygame.com
|
||||||
hbomax.com
|
hbomax.com
|
||||||
@@ -549,6 +550,9 @@ mediazona.ca
|
|||||||
medicalnewstoday.com
|
medicalnewstoday.com
|
||||||
medium.com
|
medium.com
|
||||||
meduza.io
|
meduza.io
|
||||||
|
meet.google.com
|
||||||
|
meetings.clients6.google.com
|
||||||
|
meetings.googleapis.com
|
||||||
mega.nz
|
mega.nz
|
||||||
megapeer.ru
|
megapeer.ru
|
||||||
megapeer.vip
|
megapeer.vip
|
||||||
@@ -905,6 +909,7 @@ steamstat.info
|
|||||||
strana.news
|
strana.news
|
||||||
strana.today
|
strana.today
|
||||||
strava.com
|
strava.com
|
||||||
|
stream.meet.google.com
|
||||||
suggestqueries.google.com
|
suggestqueries.google.com
|
||||||
supercell.com
|
supercell.com
|
||||||
supersliv.biz
|
supersliv.biz
|
||||||
|
|||||||
5
Services/google_meet.lst
Normal file
5
Services/google_meet.lst
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
meetings.clients6.google.com
|
||||||
|
meetings.googleapis.com
|
||||||
|
hangouts.googleapis.com
|
||||||
|
meet.google.com
|
||||||
|
stream.meet.google.com
|
||||||
@@ -17,11 +17,12 @@
|
|||||||
102.132.120.0/23
|
102.132.120.0/23
|
||||||
102.132.123.0/24
|
102.132.123.0/24
|
||||||
102.132.125.0/24
|
102.132.125.0/24
|
||||||
102.132.126.0/23
|
102.132.126.0/24
|
||||||
102.221.188.0/22
|
102.221.188.0/22
|
||||||
103.4.96.0/22
|
103.4.96.0/22
|
||||||
129.134.0.0/17
|
129.134.0.0/17
|
||||||
129.134.130.0/24
|
129.134.130.0/24
|
||||||
|
129.134.132.0/24
|
||||||
129.134.135.0/24
|
129.134.135.0/24
|
||||||
129.134.136.0/22
|
129.134.136.0/22
|
||||||
129.134.140.0/24
|
129.134.140.0/24
|
||||||
@@ -36,6 +37,7 @@
|
|||||||
129.134.168.0/21
|
129.134.168.0/21
|
||||||
129.134.176.0/20
|
129.134.176.0/20
|
||||||
129.134.194.0/24
|
129.134.194.0/24
|
||||||
|
129.134.196.0/24
|
||||||
157.240.0.0/17
|
157.240.0.0/17
|
||||||
157.240.128.0/23
|
157.240.128.0/23
|
||||||
157.240.131.0/24
|
157.240.131.0/24
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
205.251.252.0/23
|
205.251.252.0/23
|
||||||
54.192.0.0/16
|
54.192.0.0/16
|
||||||
204.246.173.0/24
|
204.246.173.0/24
|
||||||
|
23.228.244.0/24
|
||||||
54.230.200.0/21
|
54.230.200.0/21
|
||||||
120.253.240.192/26
|
120.253.240.192/26
|
||||||
23.234.192.0/18
|
23.234.192.0/18
|
||||||
@@ -17,6 +18,8 @@
|
|||||||
3.173.192.0/18
|
3.173.192.0/18
|
||||||
108.156.0.0/14
|
108.156.0.0/14
|
||||||
99.86.0.0/16
|
99.86.0.0/16
|
||||||
|
23.228.214.0/24
|
||||||
|
23.228.213.0/24
|
||||||
13.32.0.0/15
|
13.32.0.0/15
|
||||||
120.253.245.128/26
|
120.253.245.128/26
|
||||||
13.224.0.0/14
|
13.224.0.0/14
|
||||||
@@ -87,6 +90,7 @@
|
|||||||
205.251.204.0/23
|
205.251.204.0/23
|
||||||
130.176.192.0/19
|
130.176.192.0/19
|
||||||
23.228.223.0/24
|
23.228.223.0/24
|
||||||
|
23.228.212.0/24
|
||||||
52.124.128.0/17
|
52.124.128.0/17
|
||||||
204.246.164.0/22
|
204.246.164.0/22
|
||||||
13.35.0.0/16
|
13.35.0.0/16
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
104.248.0.0/16
|
104.248.0.0/16
|
||||||
107.170.0.0/16
|
107.170.0.0/16
|
||||||
128.199.0.0/16
|
128.199.0.0/16
|
||||||
|
129.212.129.0/24
|
||||||
129.212.130.0/24
|
129.212.130.0/24
|
||||||
129.212.132.0/22
|
129.212.132.0/22
|
||||||
129.212.136.0/21
|
129.212.136.0/21
|
||||||
@@ -99,6 +100,7 @@
|
|||||||
159.89.0.0/19
|
159.89.0.0/19
|
||||||
159.89.32.0/20
|
159.89.32.0/20
|
||||||
159.89.48.0/21
|
159.89.48.0/21
|
||||||
|
159.89.56.0/24
|
||||||
159.89.58.0/23
|
159.89.58.0/23
|
||||||
159.89.60.0/22
|
159.89.60.0/22
|
||||||
159.89.64.0/18
|
159.89.64.0/18
|
||||||
@@ -133,10 +135,16 @@
|
|||||||
165.232.128.0/18
|
165.232.128.0/18
|
||||||
165.245.128.0/20
|
165.245.128.0/20
|
||||||
165.245.144.0/21
|
165.245.144.0/21
|
||||||
165.245.160.0/20
|
165.245.152.0/22
|
||||||
|
165.245.160.0/19
|
||||||
167.71.0.0/16
|
167.71.0.0/16
|
||||||
167.99.0.0/16
|
167.99.0.0/16
|
||||||
167.172.0.0/16
|
167.172.0.0/16
|
||||||
|
168.144.0.0/21
|
||||||
|
168.144.12.0/22
|
||||||
|
168.144.16.0/20
|
||||||
|
168.144.32.0/20
|
||||||
|
168.144.48.0/22
|
||||||
170.64.128.0/17
|
170.64.128.0/17
|
||||||
174.138.0.0/17
|
174.138.0.0/17
|
||||||
178.62.0.0/16
|
178.62.0.0/16
|
||||||
|
|||||||
3
Subnets/IPv4/google_meet.lst
Normal file
3
Subnets/IPv4/google_meet.lst
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
74.125.247.128/32
|
||||||
|
74.125.250.0/24
|
||||||
|
142.250.82.0/24
|
||||||
@@ -28,7 +28,6 @@
|
|||||||
136.243.0.0/16
|
136.243.0.0/16
|
||||||
138.199.128.0/17
|
138.199.128.0/17
|
||||||
138.201.0.0/16
|
138.201.0.0/16
|
||||||
139.28.242.0/23
|
|
||||||
142.132.128.0/17
|
142.132.128.0/17
|
||||||
144.76.0.0/16
|
144.76.0.0/16
|
||||||
148.251.0.0/16
|
148.251.0.0/16
|
||||||
@@ -42,7 +41,11 @@
|
|||||||
171.25.225.0/24
|
171.25.225.0/24
|
||||||
176.9.0.0/16
|
176.9.0.0/16
|
||||||
178.63.0.0/16
|
178.63.0.0/16
|
||||||
|
178.104.0.0/15
|
||||||
178.212.75.0/24
|
178.212.75.0/24
|
||||||
|
185.0.42.0/23
|
||||||
|
185.1.160.0/23
|
||||||
|
185.1.166.0/23
|
||||||
185.12.65.0/24
|
185.12.65.0/24
|
||||||
185.50.120.0/23
|
185.50.120.0/23
|
||||||
185.107.52.0/22
|
185.107.52.0/22
|
||||||
@@ -64,11 +67,13 @@
|
|||||||
194.42.184.0/22
|
194.42.184.0/22
|
||||||
194.62.106.0/24
|
194.62.106.0/24
|
||||||
195.60.226.0/24
|
195.60.226.0/24
|
||||||
|
195.66.224.0/21
|
||||||
195.201.0.0/16
|
195.201.0.0/16
|
||||||
195.248.224.0/24
|
195.248.224.0/24
|
||||||
197.242.84.0/22
|
197.242.84.0/22
|
||||||
201.131.3.0/24
|
201.131.3.0/24
|
||||||
204.29.146.0/24
|
204.29.146.0/24
|
||||||
|
204.168.128.0/17
|
||||||
213.133.96.0/19
|
213.133.96.0/19
|
||||||
213.239.192.0/18
|
213.239.192.0/18
|
||||||
216.55.108.0/22
|
216.55.108.0/22
|
||||||
|
|||||||
@@ -17,11 +17,12 @@
|
|||||||
102.132.120.0/23
|
102.132.120.0/23
|
||||||
102.132.123.0/24
|
102.132.123.0/24
|
||||||
102.132.125.0/24
|
102.132.125.0/24
|
||||||
102.132.126.0/23
|
102.132.126.0/24
|
||||||
102.221.188.0/22
|
102.221.188.0/22
|
||||||
103.4.96.0/22
|
103.4.96.0/22
|
||||||
129.134.0.0/17
|
129.134.0.0/17
|
||||||
129.134.130.0/24
|
129.134.130.0/24
|
||||||
|
129.134.132.0/24
|
||||||
129.134.135.0/24
|
129.134.135.0/24
|
||||||
129.134.136.0/22
|
129.134.136.0/22
|
||||||
129.134.140.0/24
|
129.134.140.0/24
|
||||||
@@ -36,6 +37,7 @@
|
|||||||
129.134.168.0/21
|
129.134.168.0/21
|
||||||
129.134.176.0/20
|
129.134.176.0/20
|
||||||
129.134.194.0/24
|
129.134.194.0/24
|
||||||
|
129.134.196.0/24
|
||||||
157.240.0.0/17
|
157.240.0.0/17
|
||||||
157.240.128.0/23
|
157.240.128.0/23
|
||||||
157.240.131.0/24
|
157.240.131.0/24
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
|
2.58.172.0/24
|
||||||
5.39.0.0/17
|
5.39.0.0/17
|
||||||
5.83.153.0/24
|
5.83.153.0/24
|
||||||
|
5.102.39.0/24
|
||||||
5.135.0.0/16
|
5.135.0.0/16
|
||||||
5.144.182.0/24
|
|
||||||
5.175.168.0/24
|
5.175.168.0/24
|
||||||
5.175.195.0/24
|
5.175.195.0/24
|
||||||
5.178.106.0/24
|
5.178.106.0/24
|
||||||
5.178.110.0/24
|
5.178.110.0/24
|
||||||
5.182.19.0/24
|
5.182.19.0/24
|
||||||
5.196.0.0/16
|
5.196.0.0/16
|
||||||
|
5.231.207.0/24
|
||||||
8.7.244.0/24
|
8.7.244.0/24
|
||||||
8.18.128.0/24
|
8.18.128.0/24
|
||||||
8.18.172.0/24
|
8.18.172.0/24
|
||||||
@@ -23,6 +25,7 @@
|
|||||||
15.204.0.0/16
|
15.204.0.0/16
|
||||||
15.235.0.0/16
|
15.235.0.0/16
|
||||||
23.92.224.0/19
|
23.92.224.0/19
|
||||||
|
23.95.179.0/24
|
||||||
23.137.200.0/24
|
23.137.200.0/24
|
||||||
23.151.184.0/24
|
23.151.184.0/24
|
||||||
23.156.24.0/23
|
23.156.24.0/23
|
||||||
@@ -35,14 +38,11 @@
|
|||||||
31.56.219.0/24
|
31.56.219.0/24
|
||||||
31.57.161.0/24
|
31.57.161.0/24
|
||||||
31.57.199.0/24
|
31.57.199.0/24
|
||||||
31.58.88.0/24
|
|
||||||
31.59.68.0/24
|
31.59.68.0/24
|
||||||
37.59.0.0/16
|
37.59.0.0/16
|
||||||
37.60.48.0/20
|
37.60.48.0/20
|
||||||
37.139.130.0/24
|
37.139.130.0/24
|
||||||
37.187.0.0/16
|
37.187.0.0/16
|
||||||
37.230.48.0/24
|
|
||||||
37.252.26.0/24
|
|
||||||
40.160.0.0/17
|
40.160.0.0/17
|
||||||
40.160.128.0/19
|
40.160.128.0/19
|
||||||
40.160.224.0/22
|
40.160.224.0/22
|
||||||
@@ -57,6 +57,7 @@
|
|||||||
40.160.250.0/24
|
40.160.250.0/24
|
||||||
40.160.252.0/24
|
40.160.252.0/24
|
||||||
40.160.254.0/24
|
40.160.254.0/24
|
||||||
|
40.183.94.0/24
|
||||||
43.226.0.0/23
|
43.226.0.0/23
|
||||||
45.39.79.0/24
|
45.39.79.0/24
|
||||||
45.43.142.0/24
|
45.43.142.0/24
|
||||||
@@ -65,8 +66,7 @@
|
|||||||
45.92.60.0/22
|
45.92.60.0/22
|
||||||
45.94.49.0/24
|
45.94.49.0/24
|
||||||
45.112.195.0/24
|
45.112.195.0/24
|
||||||
45.138.190.0/24
|
45.140.187.0/24
|
||||||
45.140.36.0/24
|
|
||||||
45.149.63.0/24
|
45.149.63.0/24
|
||||||
45.149.185.0/24
|
45.149.185.0/24
|
||||||
45.149.243.0/24
|
45.149.243.0/24
|
||||||
@@ -78,6 +78,7 @@
|
|||||||
46.105.0.0/16
|
46.105.0.0/16
|
||||||
46.202.232.0/22
|
46.202.232.0/22
|
||||||
46.202.240.0/22
|
46.202.240.0/22
|
||||||
|
46.203.87.0/24
|
||||||
46.203.108.0/22
|
46.203.108.0/22
|
||||||
46.203.116.0/22
|
46.203.116.0/22
|
||||||
46.203.128.0/22
|
46.203.128.0/22
|
||||||
@@ -85,7 +86,6 @@
|
|||||||
46.236.211.0/24
|
46.236.211.0/24
|
||||||
46.244.32.0/20
|
46.244.32.0/20
|
||||||
50.114.91.0/24
|
50.114.91.0/24
|
||||||
50.118.128.0/22
|
|
||||||
51.38.0.0/16
|
51.38.0.0/16
|
||||||
51.68.0.0/16
|
51.68.0.0/16
|
||||||
51.75.0.0/16
|
51.75.0.0/16
|
||||||
@@ -108,56 +108,85 @@
|
|||||||
62.122.126.0/24
|
62.122.126.0/24
|
||||||
62.141.62.0/24
|
62.141.62.0/24
|
||||||
63.251.117.0/24
|
63.251.117.0/24
|
||||||
|
64.83.69.0/24
|
||||||
64.94.92.0/23
|
64.94.92.0/23
|
||||||
64.95.150.0/23
|
64.95.150.0/23
|
||||||
64.225.244.0/23
|
64.225.244.0/23
|
||||||
66.70.128.0/17
|
66.70.128.0/17
|
||||||
66.92.11.0/24
|
66.92.11.0/24
|
||||||
66.92.25.0/24
|
66.92.25.0/24
|
||||||
|
66.92.161.0/24
|
||||||
66.92.168.0/24
|
66.92.168.0/24
|
||||||
66.93.50.0/24
|
|
||||||
66.179.22.0/24
|
66.179.22.0/24
|
||||||
66.179.218.0/23
|
66.179.218.0/23
|
||||||
67.63.54.0/24
|
67.63.54.0/24
|
||||||
68.232.108.0/24
|
68.232.108.0/24
|
||||||
|
69.17.37.0/24
|
||||||
69.72.31.0/24
|
69.72.31.0/24
|
||||||
|
72.244.39.0/24
|
||||||
72.251.0.0/17
|
72.251.0.0/17
|
||||||
77.73.34.0/24
|
77.73.34.0/24
|
||||||
77.74.120.0/23
|
77.74.120.0/23
|
||||||
77.74.122.0/24
|
77.74.122.0/24
|
||||||
77.74.230.0/24
|
77.74.230.0/24
|
||||||
77.75.195.0/24
|
|
||||||
77.81.138.0/24
|
77.81.138.0/24
|
||||||
77.83.244.0/24
|
77.83.244.0/24
|
||||||
77.87.123.0/24
|
77.87.123.0/24
|
||||||
|
77.107.88.0/24
|
||||||
77.246.211.0/24
|
77.246.211.0/24
|
||||||
79.99.76.0/24
|
78.108.59.0/24
|
||||||
79.110.61.0/24
|
79.110.61.0/24
|
||||||
79.137.0.0/17
|
79.137.0.0/17
|
||||||
79.172.192.0/24
|
|
||||||
80.71.226.0/24
|
80.71.226.0/24
|
||||||
80.87.206.0/24
|
80.87.206.0/24
|
||||||
80.240.85.0/24
|
|
||||||
82.21.139.0/24
|
82.21.139.0/24
|
||||||
82.22.15.0/24
|
82.22.15.0/24
|
||||||
82.22.25.0/24
|
82.22.25.0/24
|
||||||
82.22.118.0/24
|
82.22.118.0/24
|
||||||
82.24.96.0/22
|
82.24.96.0/22
|
||||||
82.25.146.0/23
|
82.25.146.0/23
|
||||||
|
82.26.81.0/24
|
||||||
82.26.176.0/20
|
82.26.176.0/20
|
||||||
|
82.29.126.0/24
|
||||||
|
82.38.2.0/24
|
||||||
82.38.32.0/24
|
82.38.32.0/24
|
||||||
82.38.82.0/24
|
82.38.82.0/24
|
||||||
|
82.38.124.0/22
|
||||||
|
82.38.140.0/22
|
||||||
|
82.38.152.0/21
|
||||||
|
82.38.160.0/21
|
||||||
|
82.38.224.0/19
|
||||||
82.39.108.0/24
|
82.39.108.0/24
|
||||||
82.39.138.0/24
|
82.39.138.0/24
|
||||||
82.41.58.0/24
|
82.39.156.0/22
|
||||||
82.41.99.0/24
|
82.39.176.0/21
|
||||||
|
82.39.216.0/22
|
||||||
|
82.39.224.0/22
|
||||||
|
82.40.0.0/20
|
||||||
|
82.40.16.0/22
|
||||||
|
82.41.44.0/22
|
||||||
|
82.41.52.0/22
|
||||||
|
82.41.68.0/22
|
||||||
|
82.41.80.0/22
|
||||||
|
82.41.88.0/22
|
||||||
|
82.41.100.0/22
|
||||||
|
82.41.104.0/22
|
||||||
|
82.41.124.0/22
|
||||||
|
82.41.148.0/22
|
||||||
|
82.41.152.0/22
|
||||||
|
82.41.160.0/21
|
||||||
|
82.41.172.0/22
|
||||||
|
82.41.176.0/22
|
||||||
|
82.41.184.0/21
|
||||||
|
82.41.204.0/22
|
||||||
|
82.41.212.0/22
|
||||||
|
82.41.224.0/21
|
||||||
82.117.230.0/23
|
82.117.230.0/23
|
||||||
82.117.245.0/24
|
82.117.245.0/24
|
||||||
82.129.0.0/22
|
82.129.0.0/22
|
||||||
82.152.8.0/24
|
82.152.8.0/24
|
||||||
82.152.57.0/24
|
82.152.57.0/24
|
||||||
82.152.58.0/24
|
82.152.58.0/24
|
||||||
82.152.68.0/24
|
|
||||||
82.152.73.0/24
|
82.152.73.0/24
|
||||||
82.152.75.0/24
|
82.152.75.0/24
|
||||||
82.152.98.0/24
|
82.152.98.0/24
|
||||||
@@ -165,23 +194,22 @@
|
|||||||
82.152.226.0/24
|
82.152.226.0/24
|
||||||
82.152.240.0/24
|
82.152.240.0/24
|
||||||
82.152.243.0/24
|
82.152.243.0/24
|
||||||
|
82.153.66.0/24
|
||||||
82.153.205.0/24
|
82.153.205.0/24
|
||||||
82.153.217.0/24
|
|
||||||
82.153.220.0/24
|
|
||||||
83.136.214.0/23
|
83.136.214.0/23
|
||||||
83.143.16.0/21
|
83.143.16.0/21
|
||||||
|
83.175.167.0/24
|
||||||
|
83.175.173.0/24
|
||||||
85.217.144.0/23
|
85.217.144.0/23
|
||||||
|
86.38.187.0/24
|
||||||
86.54.26.0/24
|
86.54.26.0/24
|
||||||
87.98.128.0/17
|
87.98.128.0/17
|
||||||
87.229.8.0/24
|
|
||||||
87.229.51.0/24
|
87.229.51.0/24
|
||||||
87.229.64.0/24
|
|
||||||
88.216.221.0/24
|
88.216.221.0/24
|
||||||
88.218.34.0/24
|
88.218.34.0/24
|
||||||
89.19.44.0/24
|
89.19.44.0/24
|
||||||
|
89.21.84.0/24
|
||||||
89.125.172.0/24
|
89.125.172.0/24
|
||||||
89.213.105.0/24
|
|
||||||
89.251.28.0/24
|
|
||||||
91.90.88.0/21
|
91.90.88.0/21
|
||||||
91.121.0.0/16
|
91.121.0.0/16
|
||||||
91.124.192.0/24
|
91.124.192.0/24
|
||||||
@@ -191,30 +219,30 @@
|
|||||||
91.199.32.0/24
|
91.199.32.0/24
|
||||||
91.213.192.0/24
|
91.213.192.0/24
|
||||||
91.224.117.0/24
|
91.224.117.0/24
|
||||||
91.235.205.0/24
|
91.233.11.0/24
|
||||||
91.246.38.0/24
|
91.246.38.0/24
|
||||||
92.62.117.0/24
|
92.62.117.0/24
|
||||||
|
92.62.241.0/24
|
||||||
92.113.13.0/24
|
92.113.13.0/24
|
||||||
92.113.67.0/24
|
92.113.67.0/24
|
||||||
92.113.74.0/24
|
|
||||||
92.113.77.0/24
|
|
||||||
92.113.80.0/24
|
|
||||||
92.118.168.0/24
|
92.118.168.0/24
|
||||||
92.222.0.0/16
|
92.222.0.0/16
|
||||||
92.246.224.0/19
|
92.246.224.0/19
|
||||||
|
92.249.62.0/24
|
||||||
93.88.206.0/24
|
93.88.206.0/24
|
||||||
93.95.113.0/24
|
|
||||||
93.114.69.0/24
|
93.114.69.0/24
|
||||||
93.174.111.0/24
|
93.174.111.0/24
|
||||||
94.23.0.0/16
|
94.23.0.0/16
|
||||||
95.81.72.0/22
|
95.81.72.0/22
|
||||||
95.169.162.0/24
|
96.43.99.0/24
|
||||||
96.62.105.0/24
|
96.62.105.0/24
|
||||||
103.5.12.0/22
|
103.5.12.0/22
|
||||||
103.82.16.0/22
|
103.82.16.0/22
|
||||||
103.167.178.0/23
|
103.167.178.0/23
|
||||||
|
103.189.191.0/24
|
||||||
103.199.80.0/24
|
103.199.80.0/24
|
||||||
103.206.156.0/23
|
103.206.156.0/23
|
||||||
|
103.239.50.0/24
|
||||||
104.164.137.0/24
|
104.164.137.0/24
|
||||||
104.167.16.0/24
|
104.167.16.0/24
|
||||||
104.222.182.0/24
|
104.222.182.0/24
|
||||||
@@ -237,14 +265,16 @@
|
|||||||
117.18.104.0/24
|
117.18.104.0/24
|
||||||
123.100.227.0/24
|
123.100.227.0/24
|
||||||
128.0.118.0/24
|
128.0.118.0/24
|
||||||
130.49.217.0/24
|
|
||||||
135.125.0.0/16
|
135.125.0.0/16
|
||||||
135.148.0.0/16
|
135.148.0.0/16
|
||||||
|
136.0.95.0/24
|
||||||
136.0.248.0/24
|
136.0.248.0/24
|
||||||
137.74.0.0/16
|
137.74.0.0/16
|
||||||
137.83.50.0/24
|
137.83.50.0/24
|
||||||
138.249.2.0/24
|
138.249.2.0/24
|
||||||
|
138.249.135.0/24
|
||||||
139.99.0.0/16
|
139.99.0.0/16
|
||||||
|
141.11.18.0/24
|
||||||
141.11.31.0/24
|
141.11.31.0/24
|
||||||
141.11.39.0/24
|
141.11.39.0/24
|
||||||
141.11.74.0/23
|
141.11.74.0/23
|
||||||
@@ -254,6 +284,7 @@
|
|||||||
141.227.136.0/22
|
141.227.136.0/22
|
||||||
141.227.140.0/24
|
141.227.140.0/24
|
||||||
141.227.142.0/24
|
141.227.142.0/24
|
||||||
|
141.227.148.0/22
|
||||||
141.227.152.0/24
|
141.227.152.0/24
|
||||||
141.227.154.0/24
|
141.227.154.0/24
|
||||||
141.227.156.0/24
|
141.227.156.0/24
|
||||||
@@ -274,6 +305,7 @@
|
|||||||
141.227.190.0/24
|
141.227.190.0/24
|
||||||
142.4.192.0/19
|
142.4.192.0/19
|
||||||
142.44.128.0/17
|
142.44.128.0/17
|
||||||
|
142.111.85.0/24
|
||||||
142.252.51.0/24
|
142.252.51.0/24
|
||||||
142.252.115.0/24
|
142.252.115.0/24
|
||||||
142.252.127.0/24
|
142.252.127.0/24
|
||||||
@@ -281,18 +313,22 @@
|
|||||||
143.20.66.0/24
|
143.20.66.0/24
|
||||||
143.20.195.0/24
|
143.20.195.0/24
|
||||||
144.2.32.0/19
|
144.2.32.0/19
|
||||||
|
144.31.149.0/24
|
||||||
144.172.73.0/24
|
144.172.73.0/24
|
||||||
144.217.0.0/16
|
144.217.0.0/16
|
||||||
|
144.225.112.0/24
|
||||||
|
144.225.123.0/24
|
||||||
|
144.225.162.0/24
|
||||||
145.79.151.0/24
|
145.79.151.0/24
|
||||||
145.239.0.0/16
|
145.239.0.0/16
|
||||||
146.19.9.0/24
|
|
||||||
146.19.38.0/24
|
146.19.38.0/24
|
||||||
146.19.48.0/24
|
146.19.48.0/24
|
||||||
146.59.0.0/16
|
146.59.0.0/16
|
||||||
146.103.10.0/24
|
146.103.10.0/24
|
||||||
147.79.31.0/24
|
147.79.31.0/24
|
||||||
147.125.212.0/24
|
147.90.234.0/24
|
||||||
147.135.0.0/16
|
147.135.0.0/16
|
||||||
|
147.185.197.0/24
|
||||||
148.113.0.0/18
|
148.113.0.0/18
|
||||||
148.113.72.0/24
|
148.113.72.0/24
|
||||||
148.113.128.0/17
|
148.113.128.0/17
|
||||||
@@ -301,65 +337,68 @@
|
|||||||
148.222.120.0/22
|
148.222.120.0/22
|
||||||
149.56.0.0/16
|
149.56.0.0/16
|
||||||
149.202.0.0/16
|
149.202.0.0/16
|
||||||
150.241.209.0/24
|
|
||||||
151.80.0.0/16
|
151.80.0.0/16
|
||||||
151.240.1.0/24
|
151.240.1.0/24
|
||||||
151.240.9.0/24
|
|
||||||
151.240.17.0/24
|
|
||||||
151.240.24.0/24
|
151.240.24.0/24
|
||||||
151.241.8.0/24
|
151.241.8.0/24
|
||||||
151.241.68.0/24
|
151.241.68.0/24
|
||||||
151.242.67.0/24
|
|
||||||
151.242.103.0/24
|
151.242.103.0/24
|
||||||
151.242.117.0/24
|
|
||||||
151.243.6.0/24
|
151.243.6.0/24
|
||||||
151.243.120.0/24
|
151.243.120.0/24
|
||||||
151.243.160.0/22
|
151.243.160.0/22
|
||||||
151.243.236.0/24
|
151.243.236.0/24
|
||||||
151.244.78.0/24
|
151.244.78.0/24
|
||||||
151.245.54.0/24
|
151.245.54.0/24
|
||||||
151.245.120.0/24
|
151.245.111.0/24
|
||||||
151.245.127.0/24
|
|
||||||
151.245.238.0/24
|
151.245.238.0/24
|
||||||
151.246.177.0/24
|
151.246.177.0/24
|
||||||
151.246.190.0/24
|
151.246.190.0/24
|
||||||
|
151.247.37.0/24
|
||||||
151.247.192.0/24
|
151.247.192.0/24
|
||||||
151.247.217.0/24
|
151.247.217.0/24
|
||||||
152.228.128.0/17
|
152.228.128.0/17
|
||||||
|
155.117.5.0/24
|
||||||
155.117.212.0/23
|
155.117.212.0/23
|
||||||
|
155.117.233.0/24
|
||||||
|
155.117.234.0/24
|
||||||
157.254.30.0/24
|
157.254.30.0/24
|
||||||
158.69.0.0/16
|
158.69.0.0/16
|
||||||
158.94.170.0/24
|
158.94.170.0/24
|
||||||
160.20.108.0/24
|
|
||||||
160.20.158.0/23
|
160.20.158.0/23
|
||||||
162.19.0.0/16
|
162.19.0.0/16
|
||||||
162.141.71.0/24
|
162.141.71.0/24
|
||||||
162.212.35.0/24
|
162.212.35.0/24
|
||||||
163.5.62.0/24
|
163.5.62.0/24
|
||||||
163.5.149.0/24
|
|
||||||
163.5.187.0/24
|
163.5.187.0/24
|
||||||
163.223.88.0/24
|
163.223.88.0/24
|
||||||
164.132.0.0/16
|
164.132.0.0/16
|
||||||
|
166.0.112.0/24
|
||||||
|
166.1.88.0/24
|
||||||
166.1.90.0/24
|
166.1.90.0/24
|
||||||
166.1.231.0/24
|
166.1.231.0/24
|
||||||
|
167.94.252.0/24
|
||||||
167.114.0.0/16
|
167.114.0.0/16
|
||||||
167.148.125.0/24
|
167.148.125.0/24
|
||||||
167.148.193.0/24
|
167.148.193.0/24
|
||||||
167.234.38.0/24
|
167.234.38.0/24
|
||||||
167.253.62.0/24
|
167.253.62.0/24
|
||||||
|
168.222.49.0/24
|
||||||
168.222.183.0/24
|
168.222.183.0/24
|
||||||
168.222.243.0/24
|
168.222.243.0/24
|
||||||
168.245.185.0/24
|
168.245.185.0/24
|
||||||
|
169.40.32.0/24
|
||||||
|
169.40.57.0/24
|
||||||
172.83.201.0/24
|
172.83.201.0/24
|
||||||
|
173.211.127.0/24
|
||||||
176.31.0.0/16
|
176.31.0.0/16
|
||||||
178.32.0.0/15
|
178.32.0.0/15
|
||||||
178.93.124.0/24
|
|
||||||
180.131.145.0/24
|
180.131.145.0/24
|
||||||
180.149.33.0/24
|
|
||||||
184.174.96.0/23
|
184.174.96.0/23
|
||||||
|
184.174.99.0/24
|
||||||
185.5.39.0/24
|
185.5.39.0/24
|
||||||
185.10.200.0/22
|
185.10.200.0/22
|
||||||
185.12.32.0/23
|
185.12.32.0/23
|
||||||
|
185.15.68.0/22
|
||||||
185.19.33.0/24
|
185.19.33.0/24
|
||||||
185.30.212.0/23
|
185.30.212.0/23
|
||||||
185.45.160.0/22
|
185.45.160.0/22
|
||||||
@@ -372,11 +411,11 @@
|
|||||||
185.127.28.0/24
|
185.127.28.0/24
|
||||||
185.129.220.0/24
|
185.129.220.0/24
|
||||||
185.129.222.0/24
|
185.129.222.0/24
|
||||||
|
185.133.74.0/24
|
||||||
185.135.188.0/24
|
185.135.188.0/24
|
||||||
185.137.181.0/24
|
185.137.181.0/24
|
||||||
185.146.195.0/24
|
185.146.195.0/24
|
||||||
185.155.218.0/24
|
185.155.218.0/24
|
||||||
185.163.112.0/23
|
|
||||||
185.170.155.0/24
|
185.170.155.0/24
|
||||||
185.196.221.0/24
|
185.196.221.0/24
|
||||||
185.207.134.0/24
|
185.207.134.0/24
|
||||||
@@ -385,7 +424,10 @@
|
|||||||
185.225.74.0/23
|
185.225.74.0/23
|
||||||
185.226.181.0/24
|
185.226.181.0/24
|
||||||
185.228.207.0/24
|
185.228.207.0/24
|
||||||
|
185.240.238.0/24
|
||||||
185.241.50.0/23
|
185.241.50.0/23
|
||||||
|
185.244.29.0/24
|
||||||
|
185.244.30.0/23
|
||||||
185.250.41.0/24
|
185.250.41.0/24
|
||||||
185.251.234.0/24
|
185.251.234.0/24
|
||||||
185.255.28.0/24
|
185.255.28.0/24
|
||||||
@@ -405,17 +447,15 @@
|
|||||||
192.207.105.0/24
|
192.207.105.0/24
|
||||||
192.240.152.0/21
|
192.240.152.0/21
|
||||||
193.17.223.0/24
|
193.17.223.0/24
|
||||||
193.32.204.0/24
|
|
||||||
193.32.207.0/24
|
|
||||||
193.33.176.0/23
|
193.33.176.0/23
|
||||||
193.43.104.0/24
|
193.43.104.0/24
|
||||||
193.70.0.0/17
|
193.70.0.0/17
|
||||||
|
193.93.254.0/24
|
||||||
|
193.138.77.0/24
|
||||||
193.149.28.0/22
|
193.149.28.0/22
|
||||||
193.219.99.0/24
|
193.219.99.0/24
|
||||||
193.221.202.0/24
|
193.221.202.0/24
|
||||||
193.243.147.0/24
|
193.243.147.0/24
|
||||||
194.31.164.0/24
|
|
||||||
194.31.166.0/24
|
|
||||||
194.59.183.0/24
|
194.59.183.0/24
|
||||||
194.61.44.0/23
|
194.61.44.0/23
|
||||||
194.76.36.0/23
|
194.76.36.0/23
|
||||||
@@ -428,8 +468,7 @@
|
|||||||
195.20.146.0/24
|
195.20.146.0/24
|
||||||
195.62.72.0/23
|
195.62.72.0/23
|
||||||
195.66.30.0/23
|
195.66.30.0/23
|
||||||
195.88.71.0/24
|
195.226.93.0/24
|
||||||
195.206.242.0/24
|
|
||||||
198.27.64.0/18
|
198.27.64.0/18
|
||||||
198.49.103.0/24
|
198.49.103.0/24
|
||||||
198.50.128.0/17
|
198.50.128.0/17
|
||||||
@@ -438,7 +477,7 @@
|
|||||||
198.244.128.0/17
|
198.244.128.0/17
|
||||||
198.245.48.0/20
|
198.245.48.0/20
|
||||||
199.48.178.0/24
|
199.48.178.0/24
|
||||||
199.168.192.0/23
|
199.168.192.0/22
|
||||||
199.193.138.0/24
|
199.193.138.0/24
|
||||||
199.195.140.0/23
|
199.195.140.0/23
|
||||||
202.2.60.0/22
|
202.2.60.0/22
|
||||||
@@ -452,14 +491,21 @@
|
|||||||
206.206.126.0/24
|
206.206.126.0/24
|
||||||
207.166.205.0/24
|
207.166.205.0/24
|
||||||
207.166.206.0/24
|
207.166.206.0/24
|
||||||
|
207.180.25.0/24
|
||||||
|
207.180.58.0/24
|
||||||
207.244.209.0/24
|
207.244.209.0/24
|
||||||
209.71.36.0/24
|
209.71.36.0/24
|
||||||
|
209.101.164.0/24
|
||||||
209.112.80.0/22
|
209.112.80.0/22
|
||||||
209.126.71.0/24
|
209.126.71.0/24
|
||||||
209.151.124.0/24
|
209.151.124.0/24
|
||||||
209.251.24.0/24
|
209.251.24.0/24
|
||||||
212.24.127.0/24
|
212.24.127.0/24
|
||||||
|
212.74.39.0/24
|
||||||
|
212.100.171.0/24
|
||||||
212.134.90.0/24
|
212.134.90.0/24
|
||||||
|
212.134.97.0/24
|
||||||
|
212.135.160.0/24
|
||||||
212.192.253.0/24
|
212.192.253.0/24
|
||||||
213.32.0.0/17
|
213.32.0.0/17
|
||||||
213.130.130.0/24
|
213.130.130.0/24
|
||||||
@@ -475,6 +521,8 @@
|
|||||||
216.211.218.0/24
|
216.211.218.0/24
|
||||||
216.247.96.0/24
|
216.247.96.0/24
|
||||||
217.11.174.0/24
|
217.11.174.0/24
|
||||||
217.60.199.0/24
|
217.60.196.0/24
|
||||||
|
217.65.73.0/24
|
||||||
217.182.0.0/16
|
217.182.0.0/16
|
||||||
|
217.216.199.0/24
|
||||||
217.217.26.0/24
|
217.217.26.0/24
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
91.108.56.0/22
|
|
||||||
91.108.4.0/22
|
|
||||||
91.108.8.0/22
|
|
||||||
91.108.16.0/22
|
|
||||||
91.108.12.0/22
|
|
||||||
149.154.160.0/20
|
|
||||||
91.105.192.0/23
|
91.105.192.0/23
|
||||||
91.108.20.0/22
|
91.108.4.0/22
|
||||||
|
91.108.8.0/21
|
||||||
|
91.108.16.0/21
|
||||||
|
91.108.56.0/22
|
||||||
|
95.161.64.0/20
|
||||||
|
149.154.160.0/20
|
||||||
185.76.151.0/24
|
185.76.151.0/24
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
2620:10d:c090::/44
|
2620:10d:c090::/44
|
||||||
2a03:2880::/32
|
2a03:2880::/32
|
||||||
2a03:2887:ff00::/48
|
2a03:2887:ff00::/48
|
||||||
2a03:2887:ff02::/48
|
2a03:2887:ff02::/47
|
||||||
2a03:2887:ff04::/46
|
2a03:2887:ff04::/46
|
||||||
2a03:2887:ff09::/48
|
2a03:2887:ff09::/48
|
||||||
2a03:2887:ff0a::/48
|
2a03:2887:ff0a::/48
|
||||||
@@ -34,6 +34,7 @@
|
|||||||
2a03:2887:ff68::/47
|
2a03:2887:ff68::/47
|
||||||
2a03:2887:ff6a::/48
|
2a03:2887:ff6a::/48
|
||||||
2a03:2887:ff70::/47
|
2a03:2887:ff70::/47
|
||||||
|
2a03:2887:ff73::/48
|
||||||
2c0f:ef78:3::/48
|
2c0f:ef78:3::/48
|
||||||
2c0f:ef78:5::/48
|
2c0f:ef78:5::/48
|
||||||
2c0f:ef78:9::/48
|
2c0f:ef78:9::/48
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
2600:9000:f400::/40
|
2600:9000:f400::/40
|
||||||
2600:9000:f538::/45
|
2600:9000:f538::/45
|
||||||
2600:9000:5380::/41
|
2600:9000:5380::/41
|
||||||
|
2600:f0f0:5504::/46
|
||||||
2600:9000:1000::/36
|
2600:9000:1000::/36
|
||||||
2600:9000:2000::/36
|
2600:9000:2000::/36
|
||||||
2400:7fc0:500::/40
|
2400:7fc0:500::/40
|
||||||
@@ -18,10 +19,12 @@
|
|||||||
2404:c2c0:500::/40
|
2404:c2c0:500::/40
|
||||||
2600:9000:5308::/45
|
2600:9000:5308::/45
|
||||||
2600:9000:f534::/46
|
2600:9000:f534::/46
|
||||||
|
2600:f0f0:601::/48
|
||||||
2600:9000:f520::/44
|
2600:9000:f520::/44
|
||||||
2600:9000:5320::/43
|
2600:9000:5320::/43
|
||||||
2600:9000:5310::/44
|
2600:9000:5310::/44
|
||||||
2600:9000:f580::/41
|
2600:9000:f580::/41
|
||||||
|
2600:f0f0:602::/47
|
||||||
2600:9000:5340::/42
|
2600:9000:5340::/42
|
||||||
2600:9000:eee::/48
|
2600:9000:eee::/48
|
||||||
2600:9000:5200::/40
|
2600:9000:5200::/40
|
||||||
|
|||||||
3
Subnets/IPv6/google_meet.lst
Normal file
3
Subnets/IPv6/google_meet.lst
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
2001:4860:4864:4:8000::/128
|
||||||
|
2001:4860:4864:5::/64
|
||||||
|
2001:4860:4864:6::/64
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
2620:10d:c090::/44
|
2620:10d:c090::/44
|
||||||
2a03:2880::/32
|
2a03:2880::/32
|
||||||
2a03:2887:ff00::/48
|
2a03:2887:ff00::/48
|
||||||
2a03:2887:ff02::/48
|
2a03:2887:ff02::/47
|
||||||
2a03:2887:ff04::/46
|
2a03:2887:ff04::/46
|
||||||
2a03:2887:ff09::/48
|
2a03:2887:ff09::/48
|
||||||
2a03:2887:ff0a::/48
|
2a03:2887:ff0a::/48
|
||||||
@@ -34,6 +34,7 @@
|
|||||||
2a03:2887:ff68::/47
|
2a03:2887:ff68::/47
|
||||||
2a03:2887:ff6a::/48
|
2a03:2887:ff6a::/48
|
||||||
2a03:2887:ff70::/47
|
2a03:2887:ff70::/47
|
||||||
|
2a03:2887:ff73::/48
|
||||||
2c0f:ef78:3::/48
|
2c0f:ef78:3::/48
|
||||||
2c0f:ef78:5::/48
|
2c0f:ef78:5::/48
|
||||||
2c0f:ef78:9::/48
|
2c0f:ef78:9::/48
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
2001:b28:f23d::/48
|
|
||||||
2001:b28:f23f::/48
|
|
||||||
2001:67c:4e8::/48
|
2001:67c:4e8::/48
|
||||||
2001:b28:f23c::/48
|
2001:b28:f23c::/47
|
||||||
|
2001:b28:f23f::/48
|
||||||
2a0a:f280::/32
|
2a0a:f280::/32
|
||||||
|
|||||||
@@ -943,6 +943,7 @@ DOMAIN-SUFFIX,pervomaysklnr.su
|
|||||||
DOMAIN-SUFFIX,pflnr.su
|
DOMAIN-SUFFIX,pflnr.su
|
||||||
DOMAIN-SUFFIX,phoenix-dnr.ru
|
DOMAIN-SUFFIX,phoenix-dnr.ru
|
||||||
DOMAIN-SUFFIX,php.ru
|
DOMAIN-SUFFIX,php.ru
|
||||||
|
DOMAIN-SUFFIX,phpbbguru.net
|
||||||
DOMAIN-SUFFIX,pikabu.ru
|
DOMAIN-SUFFIX,pikabu.ru
|
||||||
DOMAIN-SUFFIX,pikinform.ru
|
DOMAIN-SUFFIX,pikinform.ru
|
||||||
DOMAIN-SUFFIX,pikuco.ru
|
DOMAIN-SUFFIX,pikuco.ru
|
||||||
@@ -1373,7 +1374,6 @@ DOMAIN-SUFFIX,voloshyna.org.ua
|
|||||||
DOMAIN-SUFFIX,voltbet.ru
|
DOMAIN-SUFFIX,voltbet.ru
|
||||||
DOMAIN-SUFFIX,voskhodinfo.su
|
DOMAIN-SUFFIX,voskhodinfo.su
|
||||||
DOMAIN-SUFFIX,vperedlnr.su
|
DOMAIN-SUFFIX,vperedlnr.su
|
||||||
DOMAIN-SUFFIX,vpn.zaborona.help
|
|
||||||
DOMAIN-SUFFIX,vremya.tv
|
DOMAIN-SUFFIX,vremya.tv
|
||||||
DOMAIN-SUFFIX,vs.krm.sudrf.ru
|
DOMAIN-SUFFIX,vs.krm.sudrf.ru
|
||||||
DOMAIN-SUFFIX,vsednr.ru
|
DOMAIN-SUFFIX,vsednr.ru
|
||||||
|
|||||||
@@ -943,6 +943,7 @@ ipset=/pervomaysklnr.su/vpn_domains
|
|||||||
ipset=/pflnr.su/vpn_domains
|
ipset=/pflnr.su/vpn_domains
|
||||||
ipset=/phoenix-dnr.ru/vpn_domains
|
ipset=/phoenix-dnr.ru/vpn_domains
|
||||||
ipset=/php.ru/vpn_domains
|
ipset=/php.ru/vpn_domains
|
||||||
|
ipset=/phpbbguru.net/vpn_domains
|
||||||
ipset=/pikabu.ru/vpn_domains
|
ipset=/pikabu.ru/vpn_domains
|
||||||
ipset=/pikinform.ru/vpn_domains
|
ipset=/pikinform.ru/vpn_domains
|
||||||
ipset=/pikuco.ru/vpn_domains
|
ipset=/pikuco.ru/vpn_domains
|
||||||
@@ -1373,7 +1374,6 @@ ipset=/voloshyna.org.ua/vpn_domains
|
|||||||
ipset=/voltbet.ru/vpn_domains
|
ipset=/voltbet.ru/vpn_domains
|
||||||
ipset=/voskhodinfo.su/vpn_domains
|
ipset=/voskhodinfo.su/vpn_domains
|
||||||
ipset=/vperedlnr.su/vpn_domains
|
ipset=/vperedlnr.su/vpn_domains
|
||||||
ipset=/vpn.zaborona.help/vpn_domains
|
|
||||||
ipset=/vremya.tv/vpn_domains
|
ipset=/vremya.tv/vpn_domains
|
||||||
ipset=/vs.krm.sudrf.ru/vpn_domains
|
ipset=/vs.krm.sudrf.ru/vpn_domains
|
||||||
ipset=/vsednr.ru/vpn_domains
|
ipset=/vsednr.ru/vpn_domains
|
||||||
|
|||||||
@@ -943,6 +943,7 @@ nftset=/pervomaysklnr.su/4#inet#fw4#vpn_domains
|
|||||||
nftset=/pflnr.su/4#inet#fw4#vpn_domains
|
nftset=/pflnr.su/4#inet#fw4#vpn_domains
|
||||||
nftset=/phoenix-dnr.ru/4#inet#fw4#vpn_domains
|
nftset=/phoenix-dnr.ru/4#inet#fw4#vpn_domains
|
||||||
nftset=/php.ru/4#inet#fw4#vpn_domains
|
nftset=/php.ru/4#inet#fw4#vpn_domains
|
||||||
|
nftset=/phpbbguru.net/4#inet#fw4#vpn_domains
|
||||||
nftset=/pikabu.ru/4#inet#fw4#vpn_domains
|
nftset=/pikabu.ru/4#inet#fw4#vpn_domains
|
||||||
nftset=/pikinform.ru/4#inet#fw4#vpn_domains
|
nftset=/pikinform.ru/4#inet#fw4#vpn_domains
|
||||||
nftset=/pikuco.ru/4#inet#fw4#vpn_domains
|
nftset=/pikuco.ru/4#inet#fw4#vpn_domains
|
||||||
@@ -1373,7 +1374,6 @@ nftset=/voloshyna.org.ua/4#inet#fw4#vpn_domains
|
|||||||
nftset=/voltbet.ru/4#inet#fw4#vpn_domains
|
nftset=/voltbet.ru/4#inet#fw4#vpn_domains
|
||||||
nftset=/voskhodinfo.su/4#inet#fw4#vpn_domains
|
nftset=/voskhodinfo.su/4#inet#fw4#vpn_domains
|
||||||
nftset=/vperedlnr.su/4#inet#fw4#vpn_domains
|
nftset=/vperedlnr.su/4#inet#fw4#vpn_domains
|
||||||
nftset=/vpn.zaborona.help/4#inet#fw4#vpn_domains
|
|
||||||
nftset=/vremya.tv/4#inet#fw4#vpn_domains
|
nftset=/vremya.tv/4#inet#fw4#vpn_domains
|
||||||
nftset=/vs.krm.sudrf.ru/4#inet#fw4#vpn_domains
|
nftset=/vs.krm.sudrf.ru/4#inet#fw4#vpn_domains
|
||||||
nftset=/vsednr.ru/4#inet#fw4#vpn_domains
|
nftset=/vsednr.ru/4#inet#fw4#vpn_domains
|
||||||
|
|||||||
@@ -943,6 +943,7 @@ pervomaysklnr.su
|
|||||||
pflnr.su
|
pflnr.su
|
||||||
phoenix-dnr.ru
|
phoenix-dnr.ru
|
||||||
php.ru
|
php.ru
|
||||||
|
phpbbguru.net
|
||||||
pikabu.ru
|
pikabu.ru
|
||||||
pikinform.ru
|
pikinform.ru
|
||||||
pikuco.ru
|
pikuco.ru
|
||||||
@@ -1373,7 +1374,6 @@ voloshyna.org.ua
|
|||||||
voltbet.ru
|
voltbet.ru
|
||||||
voskhodinfo.su
|
voskhodinfo.su
|
||||||
vperedlnr.su
|
vperedlnr.su
|
||||||
vpn.zaborona.help
|
|
||||||
vremya.tv
|
vremya.tv
|
||||||
vs.krm.sudrf.ru
|
vs.krm.sudrf.ru
|
||||||
vsednr.ru
|
vsednr.ru
|
||||||
|
|||||||
@@ -943,6 +943,7 @@
|
|||||||
/ip dns static add name=pflnr.su type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=pflnr.su type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=phoenix-dnr.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=phoenix-dnr.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=php.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=php.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
/ip dns static add name=phpbbguru.net type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=pikabu.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=pikabu.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=pikinform.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=pikinform.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=pikuco.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=pikuco.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
@@ -1373,7 +1374,6 @@
|
|||||||
/ip dns static add name=voltbet.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=voltbet.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=voskhodinfo.su type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=voskhodinfo.su type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=vperedlnr.su type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=vperedlnr.su type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=vpn.zaborona.help type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
|
||||||
/ip dns static add name=vremya.tv type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=vremya.tv type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=vs.krm.sudrf.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=vs.krm.sudrf.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
/ip dns static add name=vsednr.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
/ip dns static add name=vsednr.ru type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
|
||||||
|
|||||||
@@ -943,6 +943,7 @@ pervomaysklnr.su
|
|||||||
pflnr.su
|
pflnr.su
|
||||||
phoenix-dnr.ru
|
phoenix-dnr.ru
|
||||||
php.ru
|
php.ru
|
||||||
|
phpbbguru.net
|
||||||
pikabu.ru
|
pikabu.ru
|
||||||
pikinform.ru
|
pikinform.ru
|
||||||
pikuco.ru
|
pikuco.ru
|
||||||
@@ -1373,7 +1374,6 @@ voloshyna.org.ua
|
|||||||
voltbet.ru
|
voltbet.ru
|
||||||
voskhodinfo.su
|
voskhodinfo.su
|
||||||
vperedlnr.su
|
vperedlnr.su
|
||||||
vpn.zaborona.help
|
|
||||||
vremya.tv
|
vremya.tv
|
||||||
vs.krm.sudrf.ru
|
vs.krm.sudrf.ru
|
||||||
vsednr.ru
|
vsednr.ru
|
||||||
|
|||||||
475
convert.py
475
convert.py
@@ -6,7 +6,9 @@ import re
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
rusDomainsInsideOut='Russia/inside'
|
rusDomainsInsideOut='Russia/inside'
|
||||||
rusDomainsInsideSrcSingle='src/Russia-domains-inside-single.lst'
|
rusDomainsInsideSrcSingle='src/Russia-domains-inside-single.lst'
|
||||||
@@ -16,70 +18,49 @@ rusDomainsOutsideSrc='src/Russia-domains-outside.lst'
|
|||||||
rusDomainsOutsideOut='Russia/outside'
|
rusDomainsOutsideOut='Russia/outside'
|
||||||
uaDomainsSrc='src/Ukraine-domains-inside.lst'
|
uaDomainsSrc='src/Ukraine-domains-inside.lst'
|
||||||
uaDomainsOut='Ukraine/inside'
|
uaDomainsOut='Ukraine/inside'
|
||||||
DiscordSubnets = 'Subnets/IPv4/discord.lst'
|
SUBNET_SERVICES = [
|
||||||
MetaSubnets = 'Subnets/IPv4/meta.lst'
|
'discord', 'meta', 'twitter', 'telegram',
|
||||||
TwitterSubnets = 'Subnets/IPv4/twitter.lst'
|
'cloudflare', 'hetzner', 'ovh', 'digitalocean',
|
||||||
TelegramSubnets = 'Subnets/IPv4/telegram.lst'
|
'cloudfront', 'roblox', 'google_meet',
|
||||||
CloudflareSubnets = 'Subnets/IPv4/cloudflare.lst'
|
]
|
||||||
HetznerSubnets = 'Subnets/IPv4/hetzner.lst'
|
ExcludeServices = {"telegram.lst", "cloudflare.lst", "google_ai.lst", "google_play.lst", 'hetzner.lst', 'ovh.lst', 'digitalocean.lst', 'cloudfront.lst', 'hodca.lst', 'roblox.lst', 'google_meet.lst'}
|
||||||
OVHSubnets = 'Subnets/IPv4/ovh.lst'
|
|
||||||
DigitalOceanSubnets = 'Subnets/IPv4/digitalocean.lst'
|
def collect_files(src):
|
||||||
CloudfrontSubnets = 'Subnets/IPv4/cloudfront.lst'
|
files = []
|
||||||
RobloxSubnets = 'Subnets/IPv4/roblox.lst'
|
for dir_path in src:
|
||||||
ExcludeServices = {"telegram.lst", "cloudflare.lst", "google_ai.lst", "google_play.lst", 'hetzner.lst', 'ovh.lst', 'digitalocean.lst', 'cloudfront.lst', 'hodca.lst', 'roblox.lst'}
|
path = Path(dir_path)
|
||||||
|
if path.is_dir():
|
||||||
|
files.extend(f for f in path.glob('*') if f.name not in ExcludeServices)
|
||||||
|
elif path.is_file() and path.name not in ExcludeServices:
|
||||||
|
files.append(path)
|
||||||
|
return files
|
||||||
|
|
||||||
|
def collect_domains(src, dot_prefix=True):
|
||||||
|
domains = set()
|
||||||
|
for f in collect_files(src):
|
||||||
|
if not f.is_file():
|
||||||
|
continue
|
||||||
|
with open(f) as infile:
|
||||||
|
for line in infile:
|
||||||
|
ext = tldextract.extract(line.rstrip())
|
||||||
|
if not ext.suffix:
|
||||||
|
continue
|
||||||
|
if re.search(r'[^а-я\-]', ext.domain):
|
||||||
|
domains.add(ext.fqdn)
|
||||||
|
elif not ext.domain:
|
||||||
|
prefix = '.' if dot_prefix else ''
|
||||||
|
domains.add(prefix + ext.suffix)
|
||||||
|
return domains
|
||||||
|
|
||||||
def raw(src, out):
|
def raw(src, out):
|
||||||
domains = set()
|
domains = sorted(collect_domains(src))
|
||||||
files = []
|
|
||||||
|
|
||||||
if isinstance(src, list):
|
|
||||||
for dir_path in src:
|
|
||||||
path = Path(dir_path)
|
|
||||||
if path.is_dir():
|
|
||||||
files.extend(f for f in path.glob('*') if f.name not in ExcludeServices)
|
|
||||||
elif path.is_file() and path.name not in ExcludeServices:
|
|
||||||
files.append(path)
|
|
||||||
|
|
||||||
for f in files:
|
|
||||||
if f.is_file():
|
|
||||||
with open(f) as infile:
|
|
||||||
for line in infile:
|
|
||||||
if tldextract.extract(line).suffix:
|
|
||||||
if re.search(r'[^а-я\-]', tldextract.extract(line).domain):
|
|
||||||
domains.add(tldextract.extract(line.rstrip()).fqdn)
|
|
||||||
if not tldextract.extract(line).domain and tldextract.extract(line).suffix:
|
|
||||||
domains.add("." + tldextract.extract(line.rstrip()).suffix)
|
|
||||||
|
|
||||||
domains = sorted(domains)
|
|
||||||
|
|
||||||
with open(f'{out}-raw.lst', 'w') as file:
|
with open(f'{out}-raw.lst', 'w') as file:
|
||||||
for name in domains:
|
for name in domains:
|
||||||
file.write(f'{name}\n')
|
file.write(f'{name}\n')
|
||||||
|
|
||||||
def dnsmasq(src, out, remove={'google.com'}):
|
def dnsmasq(src, out, remove={'google.com'}):
|
||||||
domains = set()
|
domains = sorted(collect_domains(src) - remove)
|
||||||
files = []
|
|
||||||
|
|
||||||
if isinstance(src, list):
|
|
||||||
for dir_path in src:
|
|
||||||
path = Path(dir_path)
|
|
||||||
if path.is_dir():
|
|
||||||
files.extend(f for f in path.glob('*') if f.name not in ExcludeServices)
|
|
||||||
elif path.is_file() and path.name not in ExcludeServices:
|
|
||||||
files.append(path)
|
|
||||||
|
|
||||||
for f in files:
|
|
||||||
if f.is_file():
|
|
||||||
with open(f) as infile:
|
|
||||||
for line in infile:
|
|
||||||
if tldextract.extract(line).suffix:
|
|
||||||
if re.search(r'[^а-я\-]', tldextract.extract(line).domain):
|
|
||||||
domains.add(tldextract.extract(line.rstrip()).fqdn)
|
|
||||||
if not tldextract.extract(line).domain and tldextract.extract(line).suffix:
|
|
||||||
domains.add("." + tldextract.extract(line.rstrip()).suffix)
|
|
||||||
|
|
||||||
domains = domains - remove
|
|
||||||
domains = sorted(domains)
|
|
||||||
|
|
||||||
with open(f'{out}-dnsmasq-nfset.lst', 'w') as file:
|
with open(f'{out}-dnsmasq-nfset.lst', 'w') as file:
|
||||||
for name in domains:
|
for name in domains:
|
||||||
@@ -90,84 +71,21 @@ def dnsmasq(src, out, remove={'google.com'}):
|
|||||||
file.write(f'ipset=/{name}/vpn_domains\n')
|
file.write(f'ipset=/{name}/vpn_domains\n')
|
||||||
|
|
||||||
def clashx(src, out, remove={'google.com'}):
|
def clashx(src, out, remove={'google.com'}):
|
||||||
domains = set()
|
domains = sorted(collect_domains(src) - remove)
|
||||||
files = []
|
|
||||||
|
|
||||||
if isinstance(src, list):
|
|
||||||
for dir_path in src:
|
|
||||||
path = Path(dir_path)
|
|
||||||
if path.is_dir():
|
|
||||||
files.extend(f for f in path.glob('*') if f.name not in ExcludeServices)
|
|
||||||
elif path.is_file() and path.name not in ExcludeServices:
|
|
||||||
files.append(path)
|
|
||||||
|
|
||||||
for f in files:
|
|
||||||
with open(f) as infile:
|
|
||||||
for line in infile:
|
|
||||||
if tldextract.extract(line).suffix:
|
|
||||||
if re.search(r'[^а-я\-]', tldextract.extract(line).domain):
|
|
||||||
domains.add(tldextract.extract(line.rstrip()).fqdn)
|
|
||||||
if not tldextract.extract(line).domain and tldextract.extract(line).suffix:
|
|
||||||
domains.add("." + tldextract.extract(line.rstrip()).suffix)
|
|
||||||
|
|
||||||
domains = domains - remove
|
|
||||||
domains = sorted(domains)
|
|
||||||
|
|
||||||
with open(f'{out}-clashx.lst', 'w') as file:
|
with open(f'{out}-clashx.lst', 'w') as file:
|
||||||
for name in domains:
|
for name in domains:
|
||||||
file.write(f'DOMAIN-SUFFIX,{name}\n')
|
file.write(f'DOMAIN-SUFFIX,{name}\n')
|
||||||
|
|
||||||
def kvas(src, out, remove={'google.com'}):
|
def kvas(src, out, remove={'google.com'}):
|
||||||
domains = set()
|
domains = sorted(collect_domains(src, dot_prefix=False) - remove)
|
||||||
files = []
|
|
||||||
|
|
||||||
if isinstance(src, list):
|
|
||||||
for dir_path in src:
|
|
||||||
path = Path(dir_path)
|
|
||||||
if path.is_dir():
|
|
||||||
files.extend(f for f in path.glob('*') if f.name not in ExcludeServices)
|
|
||||||
elif path.is_file() and path.name not in ExcludeServices:
|
|
||||||
files.append(path)
|
|
||||||
|
|
||||||
for f in files:
|
|
||||||
with open(f) as infile:
|
|
||||||
for line in infile:
|
|
||||||
if tldextract.extract(line).suffix:
|
|
||||||
if re.search(r'[^а-я\-]', tldextract.extract(line).domain):
|
|
||||||
domains.add(tldextract.extract(line.rstrip()).fqdn)
|
|
||||||
if not tldextract.extract(line).domain and tldextract.extract(line).suffix:
|
|
||||||
domains.add(tldextract.extract(line.rstrip()).suffix)
|
|
||||||
|
|
||||||
domains = domains - remove
|
|
||||||
domains = sorted(domains)
|
|
||||||
|
|
||||||
with open(f'{out}-kvas.lst', 'w') as file:
|
with open(f'{out}-kvas.lst', 'w') as file:
|
||||||
for name in domains:
|
for name in domains:
|
||||||
file.write(f'{name}\n')
|
file.write(f'{name}\n')
|
||||||
|
|
||||||
def mikrotik_fwd(src, out, remove={'google.com'}):
|
def mikrotik_fwd(src, out, remove={'google.com'}):
|
||||||
domains = set()
|
domains = sorted(collect_domains(src) - remove)
|
||||||
files = []
|
|
||||||
|
|
||||||
if isinstance(src, list):
|
|
||||||
for dir_path in src:
|
|
||||||
path = Path(dir_path)
|
|
||||||
if path.is_dir():
|
|
||||||
files.extend(f for f in path.glob('*') if f.name not in ExcludeServices)
|
|
||||||
elif path.is_file() and path.name not in ExcludeServices:
|
|
||||||
files.append(path)
|
|
||||||
|
|
||||||
for f in files:
|
|
||||||
with open(f) as infile:
|
|
||||||
for line in infile:
|
|
||||||
if tldextract.extract(line).suffix:
|
|
||||||
if re.search(r'[^а-я\-]', tldextract.extract(line).domain):
|
|
||||||
domains.add(tldextract.extract(line.rstrip()).fqdn)
|
|
||||||
if not tldextract.extract(line).domain and tldextract.extract(line).suffix:
|
|
||||||
domains.add("." + tldextract.extract(line.rstrip()).suffix)
|
|
||||||
|
|
||||||
domains = domains - remove
|
|
||||||
domains = sorted(domains)
|
|
||||||
|
|
||||||
with open(f'{out}-mikrotik-fwd.lst', 'w') as file:
|
with open(f'{out}-mikrotik-fwd.lst', 'w') as file:
|
||||||
for name in domains:
|
for name in domains:
|
||||||
@@ -176,213 +94,56 @@ def mikrotik_fwd(src, out, remove={'google.com'}):
|
|||||||
else:
|
else:
|
||||||
file.write(f'/ip dns static add name={name} type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost\n')
|
file.write(f'/ip dns static add name={name} type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost\n')
|
||||||
|
|
||||||
def domains_from_file(filepath):
|
def lines_from_file(filepath):
|
||||||
domains = []
|
if not os.path.exists(filepath):
|
||||||
try:
|
print(f"Warning: input file not found: {filepath}", file=sys.stderr)
|
||||||
with open(filepath, 'r', encoding='utf-8') as file:
|
return []
|
||||||
for line in file:
|
with open(filepath, 'r', encoding='utf-8') as f:
|
||||||
domain = line.strip()
|
return [line.strip() for line in f if line.strip()]
|
||||||
if domain:
|
|
||||||
domains.append(domain)
|
|
||||||
except FileNotFoundError:
|
|
||||||
print(f"File not found: {filepath}")
|
|
||||||
return domains
|
|
||||||
|
|
||||||
def generate_srs_domains(domains, output_name):
|
def compile_srs(data, name, json_dir='JSON', srs_dir='SRS'):
|
||||||
output_directory = 'JSON'
|
os.makedirs(json_dir, exist_ok=True)
|
||||||
compiled_output_directory = 'SRS'
|
os.makedirs(srs_dir, exist_ok=True)
|
||||||
|
|
||||||
os.makedirs(output_directory, exist_ok=True)
|
json_path = os.path.join(json_dir, f"{name}.json")
|
||||||
os.makedirs(compiled_output_directory, exist_ok=True)
|
srs_path = os.path.join(srs_dir, f"{name}.srs")
|
||||||
|
|
||||||
data = {
|
with open(json_path, 'w', encoding='utf-8') as f:
|
||||||
"version": 3,
|
json.dump(data, f, indent=4)
|
||||||
"rules": [
|
|
||||||
{"domain_suffix": domains}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
json_file_path = os.path.join(output_directory, f"{output_name}.json")
|
|
||||||
srs_file_path = os.path.join(compiled_output_directory, f"{output_name}.srs")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(json_file_path, 'w', encoding='utf-8') as json_file:
|
|
||||||
json.dump(data, json_file, indent=4)
|
|
||||||
print(f"JSON file generated: {json_file_path}")
|
|
||||||
|
|
||||||
subprocess.run(
|
subprocess.run(
|
||||||
["sing-box", "rule-set", "compile", json_file_path, "-o", srs_file_path], check=True
|
["sing-box", "rule-set", "compile", json_path, "-o", srs_path], check=True
|
||||||
)
|
)
|
||||||
print(f"Compiled .srs file: {srs_file_path}")
|
print(f"Compiled: {srs_path}")
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
print(f"Compile error {json_file_path}: {e}")
|
print(f"Compile error {json_path}: {e}")
|
||||||
except Exception as e:
|
sys.exit(1)
|
||||||
print(f"Error while processing {output_name}: {e}")
|
|
||||||
|
|
||||||
def generate_srs_for_categories(directories, output_json_directory='JSON', compiled_output_directory='SRS'):
|
def srs_rule(name, rules):
|
||||||
os.makedirs(output_json_directory, exist_ok=True)
|
compile_srs({"version": 3, "rules": rules}, name)
|
||||||
os.makedirs(compiled_output_directory, exist_ok=True)
|
|
||||||
|
|
||||||
exclude = {"meta", "twitter", "discord", "telegram", "hetzner", "ovh", "digitalocean", "cloudfront", "roblox"}
|
def generate_srs_for_categories(directories):
|
||||||
|
exclude = {"meta", "twitter", "discord", "telegram", "hetzner", "ovh", "digitalocean", "cloudfront", "roblox", "google_meet"}
|
||||||
|
|
||||||
for directory in directories:
|
for directory in directories:
|
||||||
for filename in os.listdir(directory):
|
for filename in os.listdir(directory):
|
||||||
if any(keyword in filename for keyword in exclude):
|
if any(keyword in filename for keyword in exclude):
|
||||||
continue
|
continue
|
||||||
file_path = os.path.join(directory, filename)
|
file_path = os.path.join(directory, filename)
|
||||||
|
|
||||||
if os.path.isfile(file_path):
|
if os.path.isfile(file_path):
|
||||||
domains = []
|
domains = lines_from_file(file_path)
|
||||||
with open(file_path, 'r', encoding='utf-8') as file:
|
name = os.path.splitext(filename)[0]
|
||||||
for line in file:
|
srs_rule(name, [{"domain_suffix": domains}])
|
||||||
domain = line.strip()
|
|
||||||
if domain:
|
|
||||||
domains.append(domain)
|
|
||||||
|
|
||||||
data = {
|
|
||||||
"version": 3,
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"domain_suffix": domains
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
output_file_path = os.path.join(output_json_directory, f"{os.path.splitext(filename)[0]}.json")
|
|
||||||
|
|
||||||
with open(output_file_path, 'w', encoding='utf-8') as output_file:
|
|
||||||
json.dump(data, output_file, indent=4)
|
|
||||||
|
|
||||||
print(f"JSON file generated: {output_file_path}")
|
|
||||||
|
|
||||||
print("\nCompile JSON files to .srs files...")
|
|
||||||
for filename in os.listdir(output_json_directory):
|
|
||||||
if filename.endswith('.json'):
|
|
||||||
json_file_path = os.path.join(output_json_directory, filename)
|
|
||||||
srs_file_path = os.path.join(compiled_output_directory, f"{os.path.splitext(filename)[0]}.srs")
|
|
||||||
try:
|
|
||||||
subprocess.run(
|
|
||||||
["sing-box", "rule-set", "compile", json_file_path, "-o", srs_file_path], check=True
|
|
||||||
)
|
|
||||||
print(f"Compiled .srs file: {srs_file_path}")
|
|
||||||
except subprocess.CalledProcessError as e:
|
|
||||||
print(f"Compile error {json_file_path}: {e}")
|
|
||||||
|
|
||||||
def generate_srs_subnets(input_file, output_json_directory='JSON', compiled_output_directory='SRS'):
|
|
||||||
os.makedirs(output_json_directory, exist_ok=True)
|
|
||||||
os.makedirs(compiled_output_directory, exist_ok=True)
|
|
||||||
|
|
||||||
subnets = []
|
|
||||||
with open(input_file, 'r', encoding='utf-8') as file:
|
|
||||||
for line in file:
|
|
||||||
subnet = line.strip()
|
|
||||||
if subnet:
|
|
||||||
subnets.append(subnet)
|
|
||||||
data = {
|
|
||||||
"version": 3,
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"ip_cidr": subnets
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
filename = os.path.splitext(os.path.basename(input_file))[0]
|
|
||||||
output_file_path = os.path.join(output_json_directory, f"{filename}.json")
|
|
||||||
|
|
||||||
with open(output_file_path, 'w', encoding='utf-8') as output_file:
|
|
||||||
json.dump(data, output_file, indent=4)
|
|
||||||
|
|
||||||
print(f"JSON file generated: {output_file_path}")
|
|
||||||
|
|
||||||
srs_file_path = os.path.join(compiled_output_directory, f"{filename}.srs")
|
|
||||||
try:
|
|
||||||
subprocess.run(
|
|
||||||
["sing-box", "rule-set", "compile", output_file_path, "-o", srs_file_path], check=True
|
|
||||||
)
|
|
||||||
print(f"Compiled .srs file: {srs_file_path}")
|
|
||||||
except subprocess.CalledProcessError as e:
|
|
||||||
print(f"Compile error {output_file_path}: {e}")
|
|
||||||
|
|
||||||
def generate_srs_combined(input_subnets_file, input_domains_file, output_json_directory='JSON', compiled_output_directory='SRS'):
|
|
||||||
os.makedirs(output_json_directory, exist_ok=True)
|
|
||||||
os.makedirs(compiled_output_directory, exist_ok=True)
|
|
||||||
|
|
||||||
domains = []
|
|
||||||
if os.path.exists(input_domains_file):
|
|
||||||
with open(input_domains_file, 'r', encoding='utf-8') as file:
|
|
||||||
domains = [line.strip() for line in file if line.strip()]
|
|
||||||
|
|
||||||
subnets = []
|
|
||||||
if os.path.exists(input_subnets_file):
|
|
||||||
with open(input_subnets_file, 'r', encoding='utf-8') as file:
|
|
||||||
subnets = [line.strip() for line in file if line.strip()]
|
|
||||||
|
|
||||||
if input_subnets_file == "Subnets/IPv4/discord.lst":
|
|
||||||
data = {
|
|
||||||
"version": 3,
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"domain_suffix": domains
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"network": ["udp"],
|
|
||||||
"ip_cidr": subnets,
|
|
||||||
"port_range": ["50000:65535"]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
elif input_subnets_file == "Subnets/IPv4/telegram.lst" and input_domains_file == "voice_messengers":
|
|
||||||
data = {
|
|
||||||
"version": 3,
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"network": ["udp"],
|
|
||||||
"ip_cidr": subnets,
|
|
||||||
"port": [1400],
|
|
||||||
"port_range": ["596:599"]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
else:
|
|
||||||
data = {
|
|
||||||
"version": 3,
|
|
||||||
"rules": [
|
|
||||||
{
|
|
||||||
"domain_suffix": domains,
|
|
||||||
"ip_cidr": subnets
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
if input_domains_file == "voice_messengers":
|
|
||||||
filename = "voice_messengers"
|
|
||||||
else:
|
|
||||||
filename = os.path.splitext(os.path.basename(input_subnets_file))[0]
|
|
||||||
output_file_path = os.path.join(output_json_directory, f"{filename}.json")
|
|
||||||
|
|
||||||
with open(output_file_path, 'w', encoding='utf-8') as output_file:
|
|
||||||
json.dump(data, output_file, indent=4)
|
|
||||||
|
|
||||||
print(f"JSON file generated: {output_file_path}")
|
|
||||||
|
|
||||||
srs_file_path = os.path.join(compiled_output_directory, f"{filename}.srs")
|
|
||||||
try:
|
|
||||||
subprocess.run(
|
|
||||||
["sing-box", "rule-set", "compile", output_file_path, "-o", srs_file_path], check=True
|
|
||||||
)
|
|
||||||
print(f"Compiled .srs file: {srs_file_path}")
|
|
||||||
except subprocess.CalledProcessError as e:
|
|
||||||
print(f"Compile error {output_file_path}: {e}")
|
|
||||||
|
|
||||||
|
|
||||||
def prepare_dat_domains(domains, output_name, dirs=[]):
|
def prepare_dat_domains(domains, output_name, dirs=None):
|
||||||
output_lists_directory = 'geosite_data'
|
output_lists_directory = 'geosite_data'
|
||||||
os.makedirs(output_lists_directory, exist_ok=True)
|
os.makedirs(output_lists_directory, exist_ok=True)
|
||||||
|
|
||||||
domain_attrs = {domain: [] for domain in domains}
|
domain_attrs = {domain: [] for domain in domains}
|
||||||
|
|
||||||
for directory in dirs:
|
for directory in (dirs or []):
|
||||||
if not os.path.isdir(directory):
|
if not os.path.isdir(directory):
|
||||||
continue
|
continue
|
||||||
for filename in os.listdir(directory):
|
for filename in os.listdir(directory):
|
||||||
@@ -407,8 +168,6 @@ def prepare_dat_domains(domains, output_name, dirs=[]):
|
|||||||
out_f.write(f"{line}\n")
|
out_f.write(f"{line}\n")
|
||||||
|
|
||||||
def prepare_dat_combined(dirs):
|
def prepare_dat_combined(dirs):
|
||||||
import shutil
|
|
||||||
|
|
||||||
output_lists_directory = 'geosite_data'
|
output_lists_directory = 'geosite_data'
|
||||||
os.makedirs(output_lists_directory, exist_ok=True)
|
os.makedirs(output_lists_directory, exist_ok=True)
|
||||||
|
|
||||||
@@ -426,18 +185,65 @@ def prepare_dat_combined(dirs):
|
|||||||
|
|
||||||
shutil.copyfile(source_path, destination_path)
|
shutil.copyfile(source_path, destination_path)
|
||||||
|
|
||||||
|
def parse_geosite_line(line):
|
||||||
|
from proto import geosite_pb2
|
||||||
|
|
||||||
|
parts = line.split()
|
||||||
|
raw_domain = parts[0]
|
||||||
|
attrs = [p.lstrip('@') for p in parts[1:] if p.startswith('@')]
|
||||||
|
|
||||||
|
if raw_domain.startswith('full:'):
|
||||||
|
domain_type = geosite_pb2.Domain.Full
|
||||||
|
value = raw_domain[5:]
|
||||||
|
elif raw_domain.startswith('regexp:'):
|
||||||
|
domain_type = geosite_pb2.Domain.Regex
|
||||||
|
value = raw_domain[7:]
|
||||||
|
elif raw_domain.startswith('keyword:'):
|
||||||
|
domain_type = geosite_pb2.Domain.Plain
|
||||||
|
value = raw_domain[8:]
|
||||||
|
else:
|
||||||
|
domain_type = geosite_pb2.Domain.RootDomain
|
||||||
|
value = raw_domain.lstrip('.')
|
||||||
|
|
||||||
|
return domain_type, value, attrs
|
||||||
|
|
||||||
def generate_dat_domains(data_path='geosite_data', output_name='geosite.dat', output_directory='DAT'):
|
def generate_dat_domains(data_path='geosite_data', output_name='geosite.dat', output_directory='DAT'):
|
||||||
|
from proto import geosite_pb2
|
||||||
|
|
||||||
os.makedirs(output_directory, exist_ok=True)
|
os.makedirs(output_directory, exist_ok=True)
|
||||||
|
|
||||||
try:
|
geo_site_list = geosite_pb2.GeoSiteList()
|
||||||
subprocess.run(
|
|
||||||
["domain-list-community", f"-datapath={data_path}", f"-outputname={output_name}", f"-outputdir={output_directory}"],
|
for filename in sorted(os.listdir(data_path)):
|
||||||
check=True,
|
file_path = os.path.join(data_path, filename)
|
||||||
stdout=subprocess.DEVNULL
|
if not os.path.isfile(file_path):
|
||||||
)
|
continue
|
||||||
print(f"Compiled .dat file: {output_directory}/{output_name}")
|
|
||||||
except subprocess.CalledProcessError as e:
|
geo_site = geo_site_list.entry.add()
|
||||||
print(f"Compile error {data_path}: {e}")
|
geo_site.country_code = filename.upper()
|
||||||
|
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.strip()
|
||||||
|
if not line or line.startswith('#'):
|
||||||
|
continue
|
||||||
|
|
||||||
|
domain_type, value, attrs = parse_geosite_line(line)
|
||||||
|
|
||||||
|
domain = geo_site.domain.add()
|
||||||
|
domain.type = domain_type
|
||||||
|
domain.value = value
|
||||||
|
|
||||||
|
for attr in attrs:
|
||||||
|
attribute = domain.attribute.add()
|
||||||
|
attribute.key = attr
|
||||||
|
attribute.bool_value = True
|
||||||
|
|
||||||
|
output_path = os.path.join(output_directory, output_name)
|
||||||
|
with open(output_path, 'wb') as f:
|
||||||
|
f.write(geo_site_list.SerializeToString())
|
||||||
|
|
||||||
|
print(f"Compiled .dat file: {output_path}")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# Russia inside
|
# Russia inside
|
||||||
@@ -482,31 +288,32 @@ if __name__ == '__main__':
|
|||||||
Path(temp_file).unlink()
|
Path(temp_file).unlink()
|
||||||
|
|
||||||
# Sing-box ruleset main
|
# Sing-box ruleset main
|
||||||
russia_inside = domains_from_file('Russia/inside-raw.lst')
|
russia_inside = lines_from_file('Russia/inside-raw.lst')
|
||||||
russia_outside = domains_from_file('Russia/outside-raw.lst')
|
russia_outside = lines_from_file('Russia/outside-raw.lst')
|
||||||
ukraine_inside = domains_from_file('Ukraine/inside-raw.lst')
|
ukraine_inside = lines_from_file('Ukraine/inside-raw.lst')
|
||||||
generate_srs_domains(russia_inside, 'russia_inside')
|
srs_rule('russia_inside', [{"domain_suffix": russia_inside}])
|
||||||
generate_srs_domains(russia_outside, 'russia_outside')
|
srs_rule('russia_outside', [{"domain_suffix": russia_outside}])
|
||||||
generate_srs_domains(ukraine_inside, 'ukraine_inside')
|
srs_rule('ukraine_inside', [{"domain_suffix": ukraine_inside}])
|
||||||
|
|
||||||
# Sing-box categories
|
# Sing-box categories
|
||||||
directories = ['Categories', 'Services']
|
directories = ['Categories', 'Services']
|
||||||
generate_srs_for_categories(directories)
|
generate_srs_for_categories(directories)
|
||||||
|
|
||||||
# Sing-box subnets + domains
|
# Sing-box subnets + domains
|
||||||
generate_srs_combined(DiscordSubnets, "Services/discord.lst")
|
for service in SUBNET_SERVICES:
|
||||||
generate_srs_combined(TwitterSubnets, "Services/twitter.lst")
|
if service == 'discord':
|
||||||
generate_srs_combined(MetaSubnets, "Services/meta.lst")
|
continue
|
||||||
generate_srs_combined(TelegramSubnets, "Services/telegram.lst")
|
subnets = lines_from_file(f'Subnets/IPv4/{service}.lst')
|
||||||
generate_srs_combined(CloudflareSubnets, "Services/cloudflare.lst")
|
domains = lines_from_file(f'Services/{service}.lst')
|
||||||
generate_srs_combined(HetznerSubnets, "Services/hetzner.lst")
|
srs_rule(service, [{"domain_suffix": domains, "ip_cidr": subnets}])
|
||||||
generate_srs_combined(OVHSubnets, "Services/ovh.lst")
|
|
||||||
generate_srs_combined(DigitalOceanSubnets, "Services/digitalocean.lst")
|
|
||||||
generate_srs_combined(CloudfrontSubnets, "Services/cloudfront.lst")
|
|
||||||
generate_srs_combined(RobloxSubnets, "Services/roblox.lst")
|
|
||||||
|
|
||||||
# Sing-box voice for messengers
|
# Discord (domains + UDP subnets on high ports)
|
||||||
generate_srs_combined(TelegramSubnets, "voice_messengers")
|
discord_subnets = lines_from_file('Subnets/IPv4/discord.lst')
|
||||||
|
discord_domains = lines_from_file('Services/discord.lst')
|
||||||
|
srs_rule('discord', [
|
||||||
|
{"domain_suffix": discord_domains},
|
||||||
|
{"network": ["udp"], "ip_cidr": discord_subnets, "port_range": ["50000:65535"]},
|
||||||
|
])
|
||||||
|
|
||||||
# Xray domains
|
# Xray domains
|
||||||
prepare_dat_domains(russia_inside, 'russia-inside', directories)
|
prepare_dat_domains(russia_inside, 'russia-inside', directories)
|
||||||
|
|||||||
232
get-subnets.py
232
get-subnets.py
@@ -1,30 +1,28 @@
|
|||||||
#!/usr/bin/python3.10
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import ipaddress
|
import ipaddress
|
||||||
import urllib.request
|
import urllib.request
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import json
|
import json
|
||||||
|
import sys
|
||||||
|
|
||||||
BGP_TOOLS_URL = 'https://bgp.tools/table.txt'
|
RIPE_STAT_URL = 'https://stat.ripe.net/data/announced-prefixes/data.json?resource=AS{}'
|
||||||
HEADERS = { 'User-Agent': 'itdog.info - hi@itdog.info' }
|
USER_AGENT = 'allow-domains/1.0'
|
||||||
AS_FILE = 'AS.lst'
|
|
||||||
IPv4_DIR = 'Subnets/IPv4'
|
IPv4_DIR = 'Subnets/IPv4'
|
||||||
IPv6_DIR = 'Subnets/IPv6'
|
IPv6_DIR = 'Subnets/IPv6'
|
||||||
|
|
||||||
AS_META = ['32934','63293','54115','149642']
|
ASN_SERVICES = {
|
||||||
AS_TWITTER = ['13414']
|
'meta.lst': ['32934', '63293', '54115', '149642'],
|
||||||
AS_HETZNER = ['24940']
|
'twitter.lst': ['13414'],
|
||||||
AS_OVH = ['16276']
|
'hetzner.lst': ['24940'],
|
||||||
AS_DIGITALOCEAN = ['14061']
|
'ovh.lst': ['16276'],
|
||||||
|
'digitalocean.lst': ['14061'],
|
||||||
|
}
|
||||||
|
|
||||||
META = 'meta.lst'
|
ASN_TELEGRAM = ['44907', '59930', '62014', '62041', '211157']
|
||||||
TWITTER = 'twitter.lst'
|
|
||||||
TELEGRAM = 'telegram.lst'
|
TELEGRAM = 'telegram.lst'
|
||||||
CLOUDFLARE = 'cloudflare.lst'
|
CLOUDFLARE = 'cloudflare.lst'
|
||||||
HETZNER = 'hetzner.lst'
|
|
||||||
OVH = 'ovh.lst'
|
|
||||||
DIGITALOCEAN = 'digitalocean.lst'
|
|
||||||
CLOUDFRONT = 'cloudfront.lst'
|
CLOUDFRONT = 'cloudfront.lst'
|
||||||
|
|
||||||
# From https://iplist.opencck.org/
|
# From https://iplist.opencck.org/
|
||||||
@@ -38,93 +36,103 @@ TELEGRAM_CIDR_URL = 'https://core.telegram.org/resources/cidr.txt'
|
|||||||
CLOUDFLARE_V4='https://www.cloudflare.com/ips-v4'
|
CLOUDFLARE_V4='https://www.cloudflare.com/ips-v4'
|
||||||
CLOUDFLARE_V6='https://www.cloudflare.com/ips-v6'
|
CLOUDFLARE_V6='https://www.cloudflare.com/ips-v6'
|
||||||
|
|
||||||
AWS_IP_RANGES_URL='https://ip-ranges.amazonaws.com/ip-ranges.json'
|
# https://support.google.com/a/answer/1279090
|
||||||
|
GOOGLE_MEET = 'google_meet.lst'
|
||||||
|
GOOGLE_MEET_V4 = [
|
||||||
|
'74.125.247.128/32',
|
||||||
|
'74.125.250.0/24',
|
||||||
|
'142.250.82.0/24',
|
||||||
|
]
|
||||||
|
GOOGLE_MEET_V6 = [
|
||||||
|
'2001:4860:4864:4:8000::/128',
|
||||||
|
'2001:4860:4864:5::/64',
|
||||||
|
'2001:4860:4864:6::/64',
|
||||||
|
]
|
||||||
|
|
||||||
subnet_list = []
|
AWS_CIDR_URL='https://ip-ranges.amazonaws.com/ip-ranges.json'
|
||||||
|
|
||||||
|
def make_request(url):
|
||||||
|
req = urllib.request.Request(url)
|
||||||
|
req.add_header('User-Agent', USER_AGENT)
|
||||||
|
return req
|
||||||
|
|
||||||
def subnet_summarization(subnet_list):
|
def subnet_summarization(subnet_list):
|
||||||
subnets = [ipaddress.ip_network(subnet) for subnet in subnet_list]
|
subnets = [ipaddress.ip_network(subnet, strict=False) for subnet in subnet_list]
|
||||||
return list(ipaddress.collapse_addresses(subnets))
|
return list(ipaddress.collapse_addresses(subnets))
|
||||||
|
|
||||||
def process_subnets(subnet_list, target_as):
|
def fetch_asn_prefixes(asn_list):
|
||||||
ipv4_subnets = []
|
ipv4_subnets = []
|
||||||
ipv6_subnets = []
|
ipv6_subnets = []
|
||||||
|
|
||||||
for subnet_str, as_number in subnet_list:
|
for asn in asn_list:
|
||||||
|
url = RIPE_STAT_URL.format(asn)
|
||||||
|
req = make_request(url)
|
||||||
try:
|
try:
|
||||||
subnet = ipaddress.ip_network(subnet_str)
|
with urllib.request.urlopen(req, timeout=30) as response:
|
||||||
if as_number in target_as:
|
data = json.loads(response.read().decode('utf-8'))
|
||||||
if subnet.version == 4:
|
for entry in data['data']['prefixes']:
|
||||||
ipv4_subnets.append(subnet_str)
|
prefix = entry['prefix']
|
||||||
elif subnet.version == 6:
|
try:
|
||||||
ipv6_subnets.append(subnet_str)
|
network = ipaddress.ip_network(prefix)
|
||||||
except ValueError:
|
if network.version == 4:
|
||||||
print(f"Invalid subnet: {subnet_str}")
|
ipv4_subnets.append(prefix)
|
||||||
sys.exit(1)
|
else:
|
||||||
|
ipv6_subnets.append(prefix)
|
||||||
ipv4_merged = subnet_summarization(ipv4_subnets)
|
except ValueError:
|
||||||
ipv6_merged = subnet_summarization(ipv6_subnets)
|
print(f"Invalid subnet: {prefix}")
|
||||||
|
sys.exit(1)
|
||||||
return ipv4_merged, ipv6_merged
|
|
||||||
|
|
||||||
def download_ready_subnets(url_v4, url_v6):
|
|
||||||
ipv4_subnets = []
|
|
||||||
ipv6_subnets = []
|
|
||||||
|
|
||||||
urls = [(url_v4, 4), (url_v6, 6)]
|
|
||||||
|
|
||||||
for url, version in urls:
|
|
||||||
req = urllib.request.Request(url, headers=HEADERS)
|
|
||||||
try:
|
|
||||||
with urllib.request.urlopen(req) as response:
|
|
||||||
if response.status == 200:
|
|
||||||
subnets = response.read().decode('utf-8').splitlines()
|
|
||||||
for subnet_str in subnets:
|
|
||||||
try:
|
|
||||||
subnet = ipaddress.ip_network(subnet_str)
|
|
||||||
if subnet.version == 4:
|
|
||||||
ipv4_subnets.append(subnet_str)
|
|
||||||
elif subnet.version == 6:
|
|
||||||
ipv6_subnets.append(subnet_str)
|
|
||||||
except ValueError:
|
|
||||||
print(f"Invalid subnet: {subnet_str}")
|
|
||||||
sys.exit(1)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Query error: {e}")
|
print(f"Error fetching AS{asn}: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
return ipv4_subnets, ipv6_subnets
|
return ipv4_subnets, ipv6_subnets
|
||||||
|
|
||||||
def download_ready_split_subnets(url):
|
def download_subnets(*urls):
|
||||||
req = urllib.request.Request(url)
|
ipv4_subnets = []
|
||||||
with urllib.request.urlopen(req) as response:
|
ipv6_subnets = []
|
||||||
subnets = response.read().decode('utf-8').splitlines()
|
|
||||||
|
for url in urls:
|
||||||
|
req = make_request(url)
|
||||||
|
try:
|
||||||
|
with urllib.request.urlopen(req, timeout=30) as response:
|
||||||
|
subnets = response.read().decode('utf-8').splitlines()
|
||||||
|
for subnet_str in subnets:
|
||||||
|
try:
|
||||||
|
network = ipaddress.ip_network(subnet_str, strict=False)
|
||||||
|
if network.version == 4:
|
||||||
|
ipv4_subnets.append(subnet_str)
|
||||||
|
else:
|
||||||
|
ipv6_subnets.append(subnet_str)
|
||||||
|
except ValueError:
|
||||||
|
print(f"Invalid subnet: {subnet_str}")
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Query error {url}: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
ipv4_subnets = [cidr for cidr in subnets if isinstance(ipaddress.ip_network(cidr, strict=False), ipaddress.IPv4Network)]
|
|
||||||
ipv6_subnets = [cidr for cidr in subnets if isinstance(ipaddress.ip_network(cidr, strict=False), ipaddress.IPv6Network)]
|
|
||||||
|
|
||||||
return ipv4_subnets, ipv6_subnets
|
return ipv4_subnets, ipv6_subnets
|
||||||
|
|
||||||
def download_aws_cloudfront_subnets():
|
def download_aws_cloudfront_subnets():
|
||||||
ipv4_subnets = []
|
ipv4_subnets = []
|
||||||
ipv6_subnets = []
|
ipv6_subnets = []
|
||||||
|
|
||||||
req = urllib.request.Request(AWS_IP_RANGES_URL, headers=HEADERS)
|
req = make_request(AWS_CIDR_URL)
|
||||||
try:
|
try:
|
||||||
with urllib.request.urlopen(req) as response:
|
with urllib.request.urlopen(req, timeout=30) as response:
|
||||||
if response.status == 200:
|
data = json.loads(response.read().decode('utf-8'))
|
||||||
data = json.loads(response.read().decode('utf-8'))
|
|
||||||
|
for prefix in data.get('prefixes', []):
|
||||||
for prefix in data.get('prefixes', []):
|
if prefix.get('service') == 'CLOUDFRONT':
|
||||||
if prefix.get('service') == 'CLOUDFRONT':
|
ipv4_subnets.append(prefix['ip_prefix'])
|
||||||
ipv4_subnets.append(prefix['ip_prefix'])
|
|
||||||
|
for prefix in data.get('ipv6_prefixes', []):
|
||||||
for prefix in data.get('ipv6_prefixes', []):
|
if prefix.get('service') == 'CLOUDFRONT':
|
||||||
if prefix.get('service') == 'CLOUDFRONT':
|
ipv6_subnets.append(prefix['ipv6_prefix'])
|
||||||
ipv6_subnets.append(prefix['ipv6_prefix'])
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error downloading AWS CloudFront ranges: {e}")
|
print(f"Error downloading AWS CloudFront ranges: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
return ipv4_subnets, ipv6_subnets
|
return ipv4_subnets, ipv6_subnets
|
||||||
|
|
||||||
def write_subnets_to_file(subnets, filename):
|
def write_subnets_to_file(subnets, filename):
|
||||||
@@ -138,63 +146,47 @@ def copy_file_legacy(src_filename):
|
|||||||
shutil.copy(src_filename, os.path.join(os.path.dirname(src_filename), new_filename))
|
shutil.copy(src_filename, os.path.join(os.path.dirname(src_filename), new_filename))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
request = urllib.request.Request(BGP_TOOLS_URL, headers=HEADERS)
|
# Services from ASN (meta, twitter, hetzner, ovh, digitalocean)
|
||||||
|
for filename, asn_list in ASN_SERVICES.items():
|
||||||
with urllib.request.urlopen(request) as response:
|
print(f'Fetching {filename}...')
|
||||||
for line in response:
|
ipv4, ipv6 = fetch_asn_prefixes(asn_list)
|
||||||
decoded_line = line.decode('utf-8').strip()
|
write_subnets_to_file(subnet_summarization(ipv4), f'{IPv4_DIR}/{filename}')
|
||||||
subnet, as_number = decoded_line.split()
|
write_subnets_to_file(subnet_summarization(ipv6), f'{IPv6_DIR}/{filename}')
|
||||||
subnet_list.append((subnet, as_number))
|
|
||||||
|
|
||||||
# Meta
|
|
||||||
ipv4_merged_meta, ipv6_merged_meta = process_subnets(subnet_list, AS_META)
|
|
||||||
write_subnets_to_file(ipv4_merged_meta, f'{IPv4_DIR}/{META}')
|
|
||||||
write_subnets_to_file(ipv6_merged_meta, f'{IPv6_DIR}/{META}')
|
|
||||||
|
|
||||||
# Twitter
|
|
||||||
ipv4_merged_twitter, ipv6_merged_twitter = process_subnets(subnet_list, AS_TWITTER)
|
|
||||||
write_subnets_to_file(ipv4_merged_twitter, f'{IPv4_DIR}/{TWITTER}')
|
|
||||||
write_subnets_to_file(ipv6_merged_twitter, f'{IPv6_DIR}/{TWITTER}')
|
|
||||||
|
|
||||||
# Hetzner
|
|
||||||
ipv4_merged_hetzner, ipv6_merged_hetzner = process_subnets(subnet_list, AS_HETZNER)
|
|
||||||
write_subnets_to_file(ipv4_merged_hetzner, f'{IPv4_DIR}/{HETZNER}')
|
|
||||||
write_subnets_to_file(ipv6_merged_hetzner, f'{IPv6_DIR}/{HETZNER}')
|
|
||||||
|
|
||||||
# OVH
|
|
||||||
ipv4_merged_ovh, ipv6_merged_ovh = process_subnets(subnet_list, AS_OVH)
|
|
||||||
write_subnets_to_file(ipv4_merged_ovh, f'{IPv4_DIR}/{OVH}')
|
|
||||||
write_subnets_to_file(ipv6_merged_ovh, f'{IPv6_DIR}/{OVH}')
|
|
||||||
|
|
||||||
# Digital Ocean
|
|
||||||
ipv4_merged_digitalocean, ipv6_merged_digitalocean = process_subnets(subnet_list, AS_DIGITALOCEAN)
|
|
||||||
write_subnets_to_file(ipv4_merged_digitalocean, f'{IPv4_DIR}/{DIGITALOCEAN}')
|
|
||||||
write_subnets_to_file(ipv6_merged_digitalocean, f'{IPv6_DIR}/{DIGITALOCEAN}')
|
|
||||||
|
|
||||||
# Discord voice
|
# Discord voice
|
||||||
ipv4_discord, ipv6_discord = download_ready_subnets(DISCORD_VOICE_V4, DISCORD_VOICE_V6)
|
print(f'Fetching {DISCORD}...')
|
||||||
|
ipv4_discord, ipv6_discord = download_subnets(DISCORD_VOICE_V4, DISCORD_VOICE_V6)
|
||||||
write_subnets_to_file(ipv4_discord, f'{IPv4_DIR}/{DISCORD}')
|
write_subnets_to_file(ipv4_discord, f'{IPv4_DIR}/{DISCORD}')
|
||||||
write_subnets_to_file(ipv6_discord, f'{IPv6_DIR}/{DISCORD}')
|
write_subnets_to_file(ipv6_discord, f'{IPv6_DIR}/{DISCORD}')
|
||||||
|
|
||||||
# Telegram
|
# Telegram
|
||||||
ipv4_telegram, ipv6_telegram = download_ready_split_subnets(TELEGRAM_CIDR_URL)
|
print(f'Fetching {TELEGRAM}...')
|
||||||
|
ipv4_telegram_file, ipv6_telegram_file = download_subnets(TELEGRAM_CIDR_URL)
|
||||||
|
ipv4_telegram_asn, ipv6_telegram_asn = fetch_asn_prefixes(ASN_TELEGRAM)
|
||||||
|
ipv4_telegram = subnet_summarization(ipv4_telegram_file + ipv4_telegram_asn)
|
||||||
|
ipv6_telegram = subnet_summarization(ipv6_telegram_file + ipv6_telegram_asn)
|
||||||
write_subnets_to_file(ipv4_telegram, f'{IPv4_DIR}/{TELEGRAM}')
|
write_subnets_to_file(ipv4_telegram, f'{IPv4_DIR}/{TELEGRAM}')
|
||||||
write_subnets_to_file(ipv6_telegram, f'{IPv6_DIR}/{TELEGRAM}')
|
write_subnets_to_file(ipv6_telegram, f'{IPv6_DIR}/{TELEGRAM}')
|
||||||
|
|
||||||
# Cloudflare
|
# Cloudflare
|
||||||
ipv4_cloudflare, ipv6_cloudflare = download_ready_subnets(CLOUDFLARE_V4, CLOUDFLARE_V6)
|
print(f'Fetching {CLOUDFLARE}...')
|
||||||
|
ipv4_cloudflare, ipv6_cloudflare = download_subnets(CLOUDFLARE_V4, CLOUDFLARE_V6)
|
||||||
write_subnets_to_file(ipv4_cloudflare, f'{IPv4_DIR}/{CLOUDFLARE}')
|
write_subnets_to_file(ipv4_cloudflare, f'{IPv4_DIR}/{CLOUDFLARE}')
|
||||||
write_subnets_to_file(ipv6_cloudflare, f'{IPv6_DIR}/{CLOUDFLARE}')
|
write_subnets_to_file(ipv6_cloudflare, f'{IPv6_DIR}/{CLOUDFLARE}')
|
||||||
|
|
||||||
|
# Google Meet
|
||||||
|
print(f'Writing {GOOGLE_MEET}...')
|
||||||
|
write_subnets_to_file(GOOGLE_MEET_V4, f'{IPv4_DIR}/{GOOGLE_MEET}')
|
||||||
|
write_subnets_to_file(GOOGLE_MEET_V6, f'{IPv6_DIR}/{GOOGLE_MEET}')
|
||||||
|
|
||||||
# AWS CloudFront
|
# AWS CloudFront
|
||||||
|
print(f'Fetching {CLOUDFRONT}...')
|
||||||
ipv4_cloudfront, ipv6_cloudfront = download_aws_cloudfront_subnets()
|
ipv4_cloudfront, ipv6_cloudfront = download_aws_cloudfront_subnets()
|
||||||
write_subnets_to_file(ipv4_cloudfront, f'{IPv4_DIR}/{CLOUDFRONT}')
|
write_subnets_to_file(ipv4_cloudfront, f'{IPv4_DIR}/{CLOUDFRONT}')
|
||||||
write_subnets_to_file(ipv6_cloudfront, f'{IPv6_DIR}/{CLOUDFRONT}')
|
write_subnets_to_file(ipv6_cloudfront, f'{IPv6_DIR}/{CLOUDFRONT}')
|
||||||
|
|
||||||
# Legacy name
|
# Legacy copies with capitalized names (e.g. meta.lst -> Meta.lst)
|
||||||
copy_file_legacy(f'{IPv4_DIR}/{META}')
|
LEGACY_FILES = ['meta.lst', 'twitter.lst', 'discord.lst']
|
||||||
copy_file_legacy(f'{IPv6_DIR}/{META}')
|
for legacy_file in LEGACY_FILES:
|
||||||
copy_file_legacy(f'{IPv4_DIR}/{TWITTER}')
|
copy_file_legacy(f'{IPv4_DIR}/{legacy_file}')
|
||||||
copy_file_legacy(f'{IPv6_DIR}/{TWITTER}')
|
copy_file_legacy(f'{IPv6_DIR}/{legacy_file}')
|
||||||
copy_file_legacy(f'{IPv4_DIR}/{DISCORD}')
|
|
||||||
copy_file_legacy(f'{IPv6_DIR}/{DISCORD}')
|
|
||||||
0
proto/__init__.py
Normal file
0
proto/__init__.py
Normal file
37
proto/geosite.proto
Normal file
37
proto/geosite.proto
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
// Source: github.com/v2fly/v2ray-core/app/router/routercommon/common.proto
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package geosite;
|
||||||
|
|
||||||
|
option go_package = "geosite";
|
||||||
|
|
||||||
|
message Domain {
|
||||||
|
enum Type {
|
||||||
|
Plain = 0;
|
||||||
|
Regex = 1;
|
||||||
|
RootDomain = 2;
|
||||||
|
Full = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
Type type = 1;
|
||||||
|
string value = 2;
|
||||||
|
|
||||||
|
message Attribute {
|
||||||
|
string key = 1;
|
||||||
|
oneof typed_value {
|
||||||
|
bool bool_value = 2;
|
||||||
|
int64 int_value = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
repeated Attribute attribute = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GeoSite {
|
||||||
|
string country_code = 1;
|
||||||
|
repeated Domain domain = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GeoSiteList {
|
||||||
|
repeated GeoSite entry = 1;
|
||||||
|
}
|
||||||
45
proto/geosite_pb2.py
Normal file
45
proto/geosite_pb2.py
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||||
|
# NO CHECKED-IN PROTOBUF GENCODE
|
||||||
|
# source: proto/geosite.proto
|
||||||
|
# Protobuf Python Version: 6.32.1
|
||||||
|
"""Generated protocol buffer code."""
|
||||||
|
from google.protobuf import descriptor as _descriptor
|
||||||
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||||
|
from google.protobuf import runtime_version as _runtime_version
|
||||||
|
from google.protobuf import symbol_database as _symbol_database
|
||||||
|
from google.protobuf.internal import builder as _builder
|
||||||
|
_runtime_version.ValidateProtobufRuntimeVersion(
|
||||||
|
_runtime_version.Domain.PUBLIC,
|
||||||
|
6,
|
||||||
|
32,
|
||||||
|
1,
|
||||||
|
'',
|
||||||
|
'proto/geosite.proto'
|
||||||
|
)
|
||||||
|
# @@protoc_insertion_point(imports)
|
||||||
|
|
||||||
|
_sym_db = _symbol_database.Default()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13proto/geosite.proto\x12\x07geosite\"\xf5\x01\n\x06\x44omain\x12\"\n\x04type\x18\x01 \x01(\x0e\x32\x14.geosite.Domain.Type\x12\r\n\x05value\x18\x02 \x01(\t\x12,\n\tattribute\x18\x03 \x03(\x0b\x32\x19.geosite.Domain.Attribute\x1aR\n\tAttribute\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x14\n\nbool_value\x18\x02 \x01(\x08H\x00\x12\x13\n\tint_value\x18\x03 \x01(\x03H\x00\x42\r\n\x0btyped_value\"6\n\x04Type\x12\t\n\x05Plain\x10\x00\x12\t\n\x05Regex\x10\x01\x12\x0e\n\nRootDomain\x10\x02\x12\x08\n\x04\x46ull\x10\x03\"@\n\x07GeoSite\x12\x14\n\x0c\x63ountry_code\x18\x01 \x01(\t\x12\x1f\n\x06\x64omain\x18\x02 \x03(\x0b\x32\x0f.geosite.Domain\".\n\x0bGeoSiteList\x12\x1f\n\x05\x65ntry\x18\x01 \x03(\x0b\x32\x10.geosite.GeoSiteB\tZ\x07geositeb\x06proto3')
|
||||||
|
|
||||||
|
_globals = globals()
|
||||||
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'proto.geosite_pb2', _globals)
|
||||||
|
if not _descriptor._USE_C_DESCRIPTORS:
|
||||||
|
_globals['DESCRIPTOR']._loaded_options = None
|
||||||
|
_globals['DESCRIPTOR']._serialized_options = b'Z\007geosite'
|
||||||
|
_globals['_DOMAIN']._serialized_start=33
|
||||||
|
_globals['_DOMAIN']._serialized_end=278
|
||||||
|
_globals['_DOMAIN_ATTRIBUTE']._serialized_start=140
|
||||||
|
_globals['_DOMAIN_ATTRIBUTE']._serialized_end=222
|
||||||
|
_globals['_DOMAIN_TYPE']._serialized_start=224
|
||||||
|
_globals['_DOMAIN_TYPE']._serialized_end=278
|
||||||
|
_globals['_GEOSITE']._serialized_start=280
|
||||||
|
_globals['_GEOSITE']._serialized_end=344
|
||||||
|
_globals['_GEOSITELIST']._serialized_start=346
|
||||||
|
_globals['_GEOSITELIST']._serialized_end=392
|
||||||
|
# @@protoc_insertion_point(module_scope)
|
||||||
@@ -1 +1,2 @@
|
|||||||
tldextract
|
tldextract
|
||||||
|
protobuf>=6.32.1
|
||||||
|
|||||||
Reference in New Issue
Block a user