Compare commits

...

5 Commits

Author SHA1 Message Date
itdoginfo
dd4b4d9abd Fix 2025-01-28 00:22:35 +03:00
itdoginfo
b6cd8cc2b9 Update version 2025-01-28 00:19:25 +03:00
itdoginfo
c4df3ca047 Added discrod subnets srs 2025-01-28 00:18:12 +03:00
GitHub Action
5b9c1eabf3 Update lists 2025-01-27 19:24:39 +00:00
itdoginfo
df80200bef Update 2025-01-27 22:24:14 +03:00
9 changed files with 57 additions and 6 deletions

View File

@@ -24,12 +24,13 @@ jobs:
run: |
docker run --rm \
-v ${{ github.workspace }}/src:/app/src \
-v ${{ github.workspace }}/Subnets:/app/Subnets \
-v ${{ github.workspace }}/Russia:/app/Russia \
-v ${{ github.workspace }}/Ukraine:/app/Ukraine \
-v ${{ github.workspace }}/Categories:/app/Categories \
-v ${{ github.workspace }}/Services:/app/Services \
-v ${{ github.workspace }}/SRS:/app/SRS \
itdoginfo/compilesrs:0.1.1
itdoginfo/compilesrs:0.1.2
- name: Check Russia/inside-dnsmasq-ipset
uses: itdoginfo/dnsmasq-action@0.1

View File

@@ -239,4 +239,5 @@ w.atwiki.jp
www3.corsair.com
groupon.com
qt.io
strava.com
strava.com
watermarkremover.io

View File

@@ -674,6 +674,7 @@ DOMAIN-SUFFIX,vpnlove.me
DOMAIN-SUFFIX,vpnpay.io
DOMAIN-SUFFIX,w.atwiki.jp
DOMAIN-SUFFIX,walmart.com
DOMAIN-SUFFIX,watermarkremover.io
DOMAIN-SUFFIX,webnames.ca
DOMAIN-SUFFIX,webtoons.com
DOMAIN-SUFFIX,weebly.com

View File

@@ -674,6 +674,7 @@ ipset=/vpnlove.me/vpn_domains
ipset=/vpnpay.io/vpn_domains
ipset=/w.atwiki.jp/vpn_domains
ipset=/walmart.com/vpn_domains
ipset=/watermarkremover.io/vpn_domains
ipset=/webnames.ca/vpn_domains
ipset=/webtoons.com/vpn_domains
ipset=/weebly.com/vpn_domains

View File

@@ -674,6 +674,7 @@ nftset=/vpnlove.me/4#inet#fw4#vpn_domains
nftset=/vpnpay.io/4#inet#fw4#vpn_domains
nftset=/w.atwiki.jp/4#inet#fw4#vpn_domains
nftset=/walmart.com/4#inet#fw4#vpn_domains
nftset=/watermarkremover.io/4#inet#fw4#vpn_domains
nftset=/webnames.ca/4#inet#fw4#vpn_domains
nftset=/webtoons.com/4#inet#fw4#vpn_domains
nftset=/weebly.com/4#inet#fw4#vpn_domains

View File

@@ -674,6 +674,7 @@ vpnlove.me
vpnpay.io
w.atwiki.jp
walmart.com
watermarkremover.io
webnames.ca
webtoons.com
weebly.com

View File

@@ -674,6 +674,7 @@
/ip dns static add name=vpnpay.io type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
/ip dns static add name=w.atwiki.jp type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
/ip dns static add name=walmart.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
/ip dns static add name=watermarkremover.io type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
/ip dns static add name=webnames.ca type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
/ip dns static add name=webtoons.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost
/ip dns static add name=weebly.com type=FWD address-list=allow-domains match-subdomain=yes forward-to=localhost

View File

@@ -674,6 +674,7 @@ vpnlove.me
vpnpay.io
w.atwiki.jp
walmart.com
watermarkremover.io
webnames.ca
webtoons.com
weebly.com

View File

@@ -16,6 +16,7 @@ rusDomainsOutsideSrc='src/Russia-domains-outside.lst'
rusDomainsOutsideOut='Russia/outside'
uaDomainsSrc='src/Ukraine-domains-inside.lst'
uaDomainsOut='Ukraine/inside'
DiscordSubnets = 'Subnets/IPv4/Discord.lst'
def raw(src, out):
domains = set()
@@ -177,7 +178,7 @@ def domains_from_file(filepath):
print(f"File not found: {filepath}")
return domains
def generate_srs(domains, output_name):
def generate_srs_domains(domains, output_name):
output_directory = 'JSON'
compiled_output_directory = 'SRS'
@@ -253,6 +254,45 @@ def generate_srs_for_categories(directories, output_json_directory='JSON', compi
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": 2,
"rules": [
{
"network": ["udp"],
"ip_cidr": subnets,
"port_range": ["50000:65535"]
}
]
}
filename = os.path.splitext(os.path.basename(input_file))[0]
output_file_path = os.path.join(output_json_directory, f"{filename}-subnets.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}-subnets.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}")
if __name__ == '__main__':
# Russia inside
Path("Russia").mkdir(parents=True, exist_ok=True)
@@ -298,10 +338,13 @@ if __name__ == '__main__':
russia_inside = domains_from_file('Russia/inside-raw.lst')
russia_outside = domains_from_file('Russia/outside-raw.lst')
ukraine_inside = domains_from_file('Ukraine/inside-raw.lst')
generate_srs(russia_inside, 'russia-inside')
generate_srs(russia_outside, 'russia-outside')
generate_srs(ukraine_inside, 'ukraine-inside')
generate_srs_domains(russia_inside, 'russia-inside')
generate_srs_domains(russia_outside, 'russia-outside')
generate_srs_domains(ukraine_inside, 'ukraine-inside')
# Sing-box categories
directories = ['Categories', 'Services']
generate_srs_for_categories(directories)
# Sing-box subnets
generate_srs_subnets(DiscordSubnets)