Compare commits
105 Commits
32ec9efb5d
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8e5691f7bb | |||
| c30ad90e34 | |||
| 100044e79c | |||
| bd4af66d63 | |||
| f62b3ff776 | |||
| 373685ca59 | |||
| 3933195746 | |||
| 50bce03cf8 | |||
| 49caf5dc65 | |||
| 8826675dd8 | |||
| 9dc7c8dda9 | |||
| 7836eceda2 | |||
| ef4cf861ff | |||
| 34c3e242e5 | |||
| 41127d10d1 | |||
| ae1b71f741 | |||
| eeb60ab5ad | |||
| 67704659e6 | |||
| 4f73cd0071 | |||
| df7d2d555f | |||
| 3dafd087cd | |||
| 2fce3a192a | |||
| c140b08e12 | |||
| 0847e23918 | |||
| 4b607f8d6f | |||
| e0b79a217f | |||
| ba21e17168 | |||
| 26867d4175 | |||
| e8477c3322 | |||
| 5cef2d7bca | |||
| 6b76e578b5 | |||
| e2f855bb39 | |||
| 6525bbab11 | |||
| 0ae3f1100c | |||
| faaf393325 | |||
| 76d11a6621 | |||
| 38ba2fd576 | |||
| b81b395282 | |||
| 143f41dcde | |||
| 8f535becc2 | |||
| 82e97b2f57 | |||
| 75439cf6df | |||
| b7f2adba40 | |||
| 5c8851a292 | |||
| 46e8ef128f | |||
| 3933f84a75 | |||
| a67b0879e7 | |||
| 20b063a10e | |||
| 13a18703cd | |||
| dd4c6432ba | |||
| 4126234efc | |||
| 54296bf161 | |||
| fed8153553 | |||
| ce1cf4407c | |||
| a6cb527bb3 | |||
| 16ca0a11b6 | |||
| f6524bfbad | |||
| fab3feba72 | |||
| cd071d5516 | |||
| c592e59d58 | |||
| da0e95ccca | |||
| b378abd4e0 | |||
| db9effa817 | |||
| 1c2a8f9ca9 | |||
| 186e51169d | |||
| 37851b2bd5 | |||
| 56260ba9b4 | |||
| 306b26d1e7 | |||
| 4ae5866049 | |||
| 0a33ca6d1b | |||
| 0bdd4da11e | |||
| 82a9ec8265 | |||
| 8a78b75967 | |||
| 3576031a96 | |||
| a830eff8b6 | |||
| 272c42338c | |||
| d2c8f9ce3d | |||
| 03bab847a7 | |||
| 8bb617f816 | |||
| c610b44f48 | |||
| 0b4ef05240 | |||
| 967118dacc | |||
| 23da6f7458 | |||
| 8afe9529c1 | |||
| d7c3d2bca9 | |||
| d637c71caf | |||
| ef28c00020 | |||
| 5828b93f97 | |||
| 2e9aa509d2 | |||
| 9059b8dfe7 | |||
| d37236d717 | |||
| e41469602a | |||
| 13c10696ef | |||
| afc3eff8d4 | |||
| 16dc46475b | |||
| ddac51323c | |||
| 13b2526bd4 | |||
| 4c669e35b5 | |||
| 4158ba4577 | |||
| b228495d90 | |||
| 8e0019380d | |||
| 1fbf3ab66f | |||
| dd51f885e5 | |||
| 24e4c5288b | |||
| 9e06a1410e |
24
config-amnezia/cadian.DE.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
# Generated on: 2025-12-21 18:28:33
|
||||
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
|
||||
# Keenetic: interface Wireguard0 wireguard asc 2 10 50 81 33 2023084421 1113200792 1624558687 767247996
|
||||
|
||||
[Interface]
|
||||
Address = 100.72.173.249/32
|
||||
DNS = 8.8.8.8, 8.8.4.4
|
||||
PrivateKey = no/Mo/8PWzF+PRajlwc81TSlYWB4e+BfWHJInzj7dVo=
|
||||
Jc = 2
|
||||
Jmin = 10
|
||||
Jmax = 50
|
||||
S1 = 81
|
||||
S2 = 33
|
||||
H1 = 2023084421
|
||||
H2 = 1113200792
|
||||
H3 = 1624558687
|
||||
H4 = 767247996
|
||||
|
||||
[Peer]
|
||||
PublicKey = PpitEK737+DsqSMlCIFjEG8uI/0QAj1EQIpQJzozv2Q=
|
||||
PresharedKey = WFjxvJuR2Fx5XEUTO584yndz8cwUEDuy9E5As1BTUGE=
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
Endpoint = 162.249.127.178:37515
|
||||
PersistentKeepalive = 25
|
||||
24
config-amnezia/cadian.EE.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
# Generated on: 2025-12-21 18:29:07
|
||||
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
|
||||
# Keenetic: interface Wireguard0 wireguard asc 2 10 50 136 48 947927481 424962932 1068800855 1088281476
|
||||
|
||||
[Interface]
|
||||
Address = 100.72.174.0/32
|
||||
DNS = 8.8.8.8, 8.8.4.4
|
||||
PrivateKey = plDZ4Fcdq7W/veRHhHeIq2CSGDU1jkBo+2VrdegRJa0=
|
||||
Jc = 2
|
||||
Jmin = 10
|
||||
Jmax = 50
|
||||
S1 = 136
|
||||
S2 = 48
|
||||
H1 = 947927481
|
||||
H2 = 424962932
|
||||
H3 = 1068800855
|
||||
H4 = 1088281476
|
||||
|
||||
[Peer]
|
||||
PublicKey = 8ZGUH6Sy5JJqkYACL7pILD00LPqvPU2k6C8Y5lj47y8=
|
||||
PresharedKey = kJy5wAVa+bKtbUYeQmXJsmOlgoZQKJ271MLlKpL9c08=
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
Endpoint = 185.155.97.175:33132
|
||||
PersistentKeepalive = 25
|
||||
24
config-amnezia/scarus.PT.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
# Generated on: 2025-12-21 18:30:09
|
||||
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
|
||||
# Keenetic: interface Wireguard0 wireguard asc 3 10 50 81 73 1835075253 1381691586 1646178542 710963756
|
||||
|
||||
[Interface]
|
||||
Address = 100.72.174.7/32
|
||||
DNS = 8.8.8.8, 8.8.4.4
|
||||
PrivateKey = H8D1ltUWLDuF+eTTKRH8iG7k8HFsX3esjMbZb9OIoIY=
|
||||
Jc = 3
|
||||
Jmin = 10
|
||||
Jmax = 50
|
||||
S1 = 81
|
||||
S2 = 73
|
||||
H1 = 1835075253
|
||||
H2 = 1381691586
|
||||
H3 = 1646178542
|
||||
H4 = 710963756
|
||||
|
||||
[Peer]
|
||||
PublicKey = mYJ0OByhDsO+Okhd+AXTcBJoFbVXAOeJ7Pa7ihw441U=
|
||||
PresharedKey = YLfe5ketC/TFqcCGV/Y8eGOyyIdQgVxueDS/kSY7uG4=
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
Endpoint = 79.127.168.139:41782
|
||||
PersistentKeepalive = 25
|
||||
24
config-amnezia/scarus.SE.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
# Generated on: 2025-12-21 18:29:34
|
||||
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
|
||||
# Keenetic: interface Wireguard0 wireguard asc 3 10 50 105 48 1162346210 1656368792 1067936661 1258665380
|
||||
|
||||
[Interface]
|
||||
Address = 100.72.174.6/32
|
||||
DNS = 8.8.8.8, 8.8.4.4
|
||||
PrivateKey = WB9k3kCd3j9+BRfGtbGdpx6deph6eHAtaBbXsaQX+bY=
|
||||
Jc = 3
|
||||
Jmin = 10
|
||||
Jmax = 50
|
||||
S1 = 105
|
||||
S2 = 48
|
||||
H1 = 1162346210
|
||||
H2 = 1656368792
|
||||
H3 = 1067936661
|
||||
H4 = 1258665380
|
||||
|
||||
[Peer]
|
||||
PublicKey = 6BOPYPQEFAtTCSgLLqNUqbUU5A/euMb9D48NBr7mryU=
|
||||
PresharedKey = kDU/LPmsZHqeEToIxjdM+K3pYRWoRxM6p0oQtUd+gFA=
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
Endpoint = 130.195.218.194:42495
|
||||
PersistentKeepalive = 25
|
||||
24
config-amnezia/solar.US.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
# Generated on: 2025-12-21 18:26:43
|
||||
# VPN Key: vpn://vpn://AAAA_3icdY1PC4IwGIe_iuxcHYwKu4VQIB4Uieo0xlw2dH-cm6Hid2-bRKdOL7zPw--ZAEeMgGMAToyTkaIgU4RRw8AqACXpsKJSU8H_GFjwJ61gT1S3SKF9IknhAuxjAh1RPcUE6kH6EFpm1vI381WkElpg0XjtXTlkLLNrhms12Fv6CWXA7EJGv2CJNPIdl63J4HgbX8Yy2qebq8riXCZJURcoqW67_pynbSPDcHtoHtEdgXn-AEBTVs8=
|
||||
# Keenetic: interface Wireguard0 wireguard asc 3 10 50 115 85 527190701 561860632 441868062 1860350990
|
||||
|
||||
[Interface]
|
||||
Address = 100.71.64.155/32
|
||||
DNS = 8.8.8.8, 8.8.4.4
|
||||
PrivateKey = JsYjJxv2/VCELbRt2y0fiWL8XMfHRU4Hf9ez17s/AKE=
|
||||
Jc = 3
|
||||
Jmin = 10
|
||||
Jmax = 50
|
||||
S1 = 115
|
||||
S2 = 85
|
||||
H1 = 527190701
|
||||
H2 = 561860632
|
||||
H3 = 441868062
|
||||
H4 = 1860350990
|
||||
|
||||
[Peer]
|
||||
PublicKey = XJWGtcthVWP4ZPDEbto8iSCDLt7aVamPNnW2/oXMYXk=
|
||||
PresharedKey = 0DkpvP65ftUesTd3/whsNuZ82t6U7CE2St2WgA7Xsmc=
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
Endpoint = 216.106.180.5:44500
|
||||
PersistentKeepalive = 25
|
||||
1467
config-clash/cadian/cadian.current.yaml
Normal file
1236
config-clash/examples/example_mihomo.yaml
Normal file
437
config-clash/examples/example_rockblade.yaml
Normal file
@@ -0,0 +1,437 @@
|
||||
# https://rockblack.pro/mihomo_generator
|
||||
|
||||
redir-port: 1182
|
||||
tproxy-port: 1181
|
||||
mixed-port: 1080
|
||||
tcp-concurrent: true
|
||||
allow-lan: true
|
||||
mode: rule
|
||||
geo-auto-update: true
|
||||
geo-update-interval: 168
|
||||
log-level: silent
|
||||
ipv6: false
|
||||
external-controller: 0.0.0.0:9090
|
||||
external-ui: ./zash
|
||||
external-ui-url: "https://github.com/Zephyruso/zashboard/releases/latest/download/dist-cdn-fonts.zip"
|
||||
geodata-mode: true
|
||||
profile:
|
||||
store-selected: true
|
||||
find-process-mode: "off"
|
||||
|
||||
# --- НАСТРОЙКИ СНИФФЕРА ---
|
||||
sniffer:
|
||||
enable: true
|
||||
force-dns-mapping: true
|
||||
sniff:
|
||||
HTTP:
|
||||
ports: [80]
|
||||
override-destination: true
|
||||
TLS:
|
||||
ports: [443]
|
||||
QUIC:
|
||||
ports: [443]
|
||||
|
||||
# --- СПИСОК ПРОКСИ-СЕРВЕРОВ (КЛЮЧИ) ---
|
||||
proxies:
|
||||
- name: '🇷🇺 Россия'
|
||||
type: wireguard
|
||||
private-key: Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg=
|
||||
server: 5.8.93.236
|
||||
port: 42854
|
||||
ip: 100.71.64.155
|
||||
dns: ['8.8.8.8', '8.8.4.4']
|
||||
public-key: ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs=
|
||||
pre-shared-key: oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk=
|
||||
allowed-ips: ['0.0.0.0/0', '::/0']
|
||||
udp: true
|
||||
persistent-keepalive: 25
|
||||
amnezia-wg-option:
|
||||
jc: 3
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 145
|
||||
s2: 34
|
||||
h1: 203715079
|
||||
h2: 914012290
|
||||
h3: 174842657
|
||||
h4: 1514769902
|
||||
|
||||
# --- СЕКЦИЯ DNS ---
|
||||
dns:
|
||||
enable: true
|
||||
listen: 0.0.0.0:7874
|
||||
ipv6: false
|
||||
cache-algorithm: arc
|
||||
enhanced-mode: fake-ip
|
||||
fake-ip-range: 198.18.0.1/16
|
||||
default-nameserver:
|
||||
- 1.1.1.1
|
||||
- 8.8.8.8
|
||||
- 208.67.222.222
|
||||
- 208.67.220.220
|
||||
nameserver:
|
||||
- https://dns10.quad9.net/dns-query
|
||||
- https://dns.aa.net.uk/dns-query
|
||||
- https://doh.opendns.com/dns-query
|
||||
- tls://dns.quad9.net
|
||||
- tls://1.1.1.1
|
||||
- tls://dns.opendns.com
|
||||
nameserver-policy:
|
||||
'+.supercell.net': 'https://dns.google/dns-query'
|
||||
'+.brawlstarsgame.com': 'https://dns.google/dns-query'
|
||||
fake-ip-filter-mode: blacklist
|
||||
fake-ip-filter:
|
||||
- '*.lan'
|
||||
- '*.local'
|
||||
- +.pool.ntp.org
|
||||
- +.msftconnecttest.com
|
||||
- +.3gppnetwork.org
|
||||
|
||||
# --- ГРУППЫ ПРОКСИ (ПОЛИТИКИ) ---
|
||||
proxy-groups:
|
||||
|
||||
- name: 'Gemini'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/331406/gemini.svg"
|
||||
|
||||
- name: 'Speedtest'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/355484/speed.svg"
|
||||
|
||||
- name: '18+'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/530357/peach.svg"
|
||||
|
||||
- name: 'Apple'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/506958/clo-bowler.svg"
|
||||
|
||||
- name: 'Fastly'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/353730/fastly.svg"
|
||||
|
||||
- name: 'boosty'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/506958/clo-bowler.svg"
|
||||
|
||||
- name: 'Discord'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/331368/discord-v2.svg"
|
||||
|
||||
- name: 'Spotify'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/349511/spotify.svg"
|
||||
|
||||
- name: 'Viber'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/125448/viber.svg"
|
||||
|
||||
- name: 'Roblox'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/443377/brand-roblox.svg"
|
||||
|
||||
- name: 'Linkedin'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/448234/linkedin.svg"
|
||||
|
||||
- name: 'Akamai'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/353385/akamai.svg"
|
||||
|
||||
- name: 'Netflix'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/303341/netflix-1-logo.svg"
|
||||
|
||||
- name: '2IP.IO'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/415672/address-location-map.svg"
|
||||
|
||||
- name: 'Twitter'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/452121/twitter-1.svg"
|
||||
|
||||
- name: 'Instagram'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/452229/instagram-1.svg"
|
||||
|
||||
- name: 'Google'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/475656/google-color.svg"
|
||||
|
||||
- name: 'Google Play'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/353828/google-play-icon.svg"
|
||||
|
||||
- name: 'Whatsapp'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/349563/whatsapp.svg"
|
||||
|
||||
- name: 'Microsoft'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/452062/microsoft.svg"
|
||||
|
||||
- name: 'GitHub'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/475654/github-color.svg"
|
||||
|
||||
- name: 'Amazon'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/475634/amazon-color.svg"
|
||||
|
||||
- name: 'Notion'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/361558/notion-logo.svg"
|
||||
|
||||
- name: 'Tidal'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/504993/tidal.svg"
|
||||
|
||||
- name: 'Telegram'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/354443/telegram.svg"
|
||||
|
||||
- name: 'TikTok'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/349530/tiktok.svg"
|
||||
|
||||
- name: 'Twitch'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/448251/twitch.svg"
|
||||
|
||||
- name: 'RU трафик'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/508628/flag-ru.svg"
|
||||
|
||||
- name: 'Остальной трафик'
|
||||
type: select
|
||||
exclude-filter: "(?i)Russia|RU"
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/293111/maps-and-flags-global.svg"
|
||||
|
||||
- name: 'Блокировка рекламы'
|
||||
type: select
|
||||
proxies: [ REJECT, DIRECT, '🇷🇺 Россия' ]
|
||||
icon: "https://www.svgrepo.com/show/300290/sign-roadblock.svg"
|
||||
|
||||
- name: 'YouTube'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/13671/youtube.svg"
|
||||
|
||||
- name: 'Facebook'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/475647/facebook-color.svg"
|
||||
|
||||
- name: 'OpenAI'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/306500/openai.svg"
|
||||
|
||||
- name: 'Steam'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/452107/steam.svg"
|
||||
|
||||
- name: 'other'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/462111/netflix.svg"
|
||||
|
||||
- name: 'intel'
|
||||
type: select
|
||||
proxies: [ '🇷🇺 Россия', DIRECT ]
|
||||
icon: "https://www.svgrepo.com/show/349412/intel.svg"
|
||||
|
||||
- name: GLOBAL
|
||||
type: select
|
||||
hidden: true
|
||||
proxies:
|
||||
- 'YouTube'
|
||||
- 'Google'
|
||||
- 'Google Play'
|
||||
- 'Steam'
|
||||
- 'Microsoft'
|
||||
- 'GitHub'
|
||||
- 'Gemini'
|
||||
- 'Roblox'
|
||||
- 'Instagram'
|
||||
- 'Linkedin'
|
||||
- 'Amazon'
|
||||
- 'Akamai'
|
||||
- 'Facebook'
|
||||
- '18+'
|
||||
- 'Discord'
|
||||
- 'Fastly'
|
||||
- 'Viber'
|
||||
- 'Telegram'
|
||||
- 'Twitch'
|
||||
- 'Apple'
|
||||
- 'TikTok'
|
||||
- 'Notion'
|
||||
- 'Whatsapp'
|
||||
- 'Speedtest'
|
||||
- 'Netflix'
|
||||
- 'Spotify'
|
||||
- 'other'
|
||||
- 'intel'
|
||||
- 'boosty'
|
||||
- 'OpenAI'
|
||||
- 'Tidal'
|
||||
- 'RU трафик'
|
||||
- 'Блокировка рекламы'
|
||||
- 'Остальной трафик'
|
||||
- DIRECT
|
||||
|
||||
# --- НАСТРОЙКИ GEO-ДАННЫХ ---
|
||||
geox-url:
|
||||
geosite: "https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat"
|
||||
geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/latest/download/geoip.dat"
|
||||
|
||||
rule-providers:
|
||||
hagezi_pro:
|
||||
type: http
|
||||
behavior: domain
|
||||
format: mrs
|
||||
url: "https://github.com/zxc-rv/ad-filter/releases/latest/download/adlist.mrs"
|
||||
path: ./adblock/adlist.mrs
|
||||
interval: 86400
|
||||
|
||||
discord:
|
||||
type: inline
|
||||
behavior: classical
|
||||
format: text
|
||||
payload:
|
||||
- "AND,((DOMAIN-KEYWORD,discord),(NOT,((DOMAIN-SUFFIX,ru))))"
|
||||
- "AND,((IP-CIDR,34.0.192.0/18,no-resolve),(NETWORK,UDP),(DST-PORT,50000-50100))"
|
||||
- "AND,((IP-CIDR,35.192.0.0/11,no-resolve),(NETWORK,UDP),(DST-PORT,50000-50100))"
|
||||
- "AND,((IP-CIDR,66.22.192.0/18,no-resolve),(NETWORK,UDP),(DST-PORT,50000-50100))"
|
||||
|
||||
# --- ПРАВИЛА МАРШРУТИЗАЦИИ ---
|
||||
rules:
|
||||
# ПРАВИЛО №0: Блокировка рекламы и трекеров
|
||||
- GEOSITE,category-ads-all,Блокировка рекламы
|
||||
- RULE-SET,hagezi_pro,Блокировка рекламы
|
||||
|
||||
# ПРАВИЛО №1: Системные правила
|
||||
- GEOIP,private,DIRECT,no-resolve
|
||||
|
||||
|
||||
# ПРАВИЛО №2: Российский трафик
|
||||
- DOMAIN-SUFFIX,avito.ru,DIRECT
|
||||
- DOMAIN-SUFFIX,avito.st,DIRECT
|
||||
- GEOSITE,category-ru,RU трафик
|
||||
- DOMAIN-SUFFIX,ru,RU трафик
|
||||
- DOMAIN-SUFFIX,by,RU трафик
|
||||
- DOMAIN-SUFFIX,xn--p1ai,RU трафик
|
||||
- DOMAIN-SUFFIX,yandex-pogoda.static-storage.net,RU трафик
|
||||
- GEOSITE,category-gov-ru,RU трафик
|
||||
- GEOIP,RU,RU трафик,no-resolve
|
||||
|
||||
|
||||
# ПРАВИЛО №3: Правила для конкретных сервисов
|
||||
- OR,((DOMAIN-SUFFIX,gql.twitch.tv),(DOMAIN-SUFFIX,usher.ttvnw.net)),Twitch
|
||||
- GEOSITE,openai,OpenAI
|
||||
- RULE-SET,discord,Discord
|
||||
- GEOSITE,tidal,Tidal
|
||||
- GEOSITE,linkedin,Linkedin
|
||||
- GEOSITE,facebook,Facebook
|
||||
- GEOSITE,netflix,Netflix
|
||||
- GEOIP,netflix,Netflix
|
||||
- GEOSITE,spotify,Spotify
|
||||
- GEOSITE,speedtest,Speedtest
|
||||
- GEOSITE,ookla-speedtest,Speedtest
|
||||
- GEOSITE,category-speedtest,Speedtest
|
||||
- GEOSITE,instagram,Instagram
|
||||
- GEOSITE,steam,Steam
|
||||
- GEOSITE,apple,Apple
|
||||
- GEOSITE,youtube,YouTube
|
||||
- GEOSITE,twitter,Twitter
|
||||
- GEOSITE,tiktok,TikTok
|
||||
- GEOSITE,intel,intel
|
||||
- GEOSITE,notion,Notion
|
||||
- GEOSITE,google,Google
|
||||
- GEOSITE,google-play,Google Play
|
||||
- GEOSITE,google-gemini,Gemini
|
||||
- GEOSITE,github,GitHub
|
||||
- GEOSITE,microsoft,Microsoft
|
||||
- GEOSITE,telegram,Telegram
|
||||
- GEOIP,telegram,Telegram
|
||||
|
||||
# CDN Akamai, Fastly, Amazon
|
||||
- IP-ASN,16509,Amazon
|
||||
- IP-ASN,16625,Akamai
|
||||
- GEOIP,fastly,Fastly
|
||||
|
||||
|
||||
# Roblox открыть порты xkeen -ap 80,443,49152:65535
|
||||
- AND,((IP-ASN,22697),(DST-PORT,49152-65535)),Roblox
|
||||
- DOMAIN-SUFFIX,roblox.com,Roblox
|
||||
- DOMAIN-SUFFIX,rbxcdn.com,Roblox
|
||||
- DOMAIN-SUFFIX,rbxinfra.net,Roblox
|
||||
|
||||
# Viber
|
||||
- GEOSITE,viber,Viber
|
||||
- IP-ASN,16509,Viber
|
||||
|
||||
# Whatsapp // открывам порты xkeen -ap 443,3478,46420
|
||||
- GEOSITE,whatsapp,Whatsapp
|
||||
- IP-ASN,32934,Whatsapp
|
||||
- IP-ASN,11917,Whatsapp
|
||||
- IP-ASN,9002,Whatsapp
|
||||
|
||||
# SupperCell Открыть порт 9339 xkeen -ap 9339
|
||||
- GEOSITE,supercell,other
|
||||
- DOMAIN-KEYWORD,supercell,other
|
||||
- AND,((IP-ASN,14618),(DST-PORT,9339)),other
|
||||
- AND,((IP-ASN,16509),(DST-PORT,9339)),other
|
||||
|
||||
# ПРАВИЛО №5: Проверка Ip адреса
|
||||
- DOMAIN-SUFFIX,2ip.io,2IP.IO
|
||||
|
||||
# ПРАВИЛО №6: Необходимые сервисы с выбором
|
||||
- DOMAIN-SUFFIX,onlyfans.com,other
|
||||
- DOMAIN-SUFFIX,fansly.com,other
|
||||
- DOMAIN-SUFFIX,patreon.com,other
|
||||
|
||||
# ПРАВИЛО №7: Необходимые сервисы с выбором 18+
|
||||
- GEOSITE,category-porn,18+
|
||||
|
||||
# kino.pub
|
||||
- DOMAIN-SUFFIX,firebase-settings.crashlytics.com,other
|
||||
- DOMAIN-SUFFIX,firebaseinstallations.googleapis.com,other
|
||||
- DOMAIN-SUFFIX,kp-pro.cloud,other
|
||||
- DOMAIN-SUFFIX,firebaseremoteconfigrealtime.googleapis.com,other
|
||||
- DOMAIN-SUFFIX,firebaseremoteconfig.googleapis.com,other
|
||||
- DOMAIN-SUFFIX,cdn32.lol,other
|
||||
- DOMAIN-SUFFIX,kino.pub,other
|
||||
|
||||
- "MATCH,Остальной трафик"
|
||||
1476
config-clash/secondary nodes/endymion.yaml
Normal file
1552
config-clash/solar/warpgate-05.yaml
Normal file
233
config-sub-converter/scripts/assemble-mihomo-config-dev.js
Normal file
@@ -0,0 +1,233 @@
|
||||
/**
|
||||
* SUB STORE YAML ASSEMBLER (v4: Fix Duplicate Headers)
|
||||
* * Arguments:
|
||||
* - clear-comments=true
|
||||
* - clear-manifest=true
|
||||
* - clear-replacements=true
|
||||
* * Requires: Header "# @file: filename.yaml" in input files.
|
||||
*/
|
||||
|
||||
// --- OPTIONS PARSING ---
|
||||
function normalizeOptions() {
|
||||
const args = (typeof $arguments !== "undefined" && $arguments) ? $arguments : {};
|
||||
const asBool = (v, def = false) => {
|
||||
if (v === undefined || v === null || v === "") return def;
|
||||
if (typeof v === "boolean") return v;
|
||||
const s = String(v).toLowerCase().trim();
|
||||
if (["1", "true", "yes", "y", "on"].includes(s)) return true;
|
||||
if (["0", "false", "no", "n", "off"].includes(s)) return false;
|
||||
return def;
|
||||
};
|
||||
return {
|
||||
clearComments: asBool(args['clear-comments'], false),
|
||||
clearManifest: asBool(args['clear-manifest'], false),
|
||||
clearReplacements: asBool(args['clear-replacements'], false),
|
||||
};
|
||||
}
|
||||
|
||||
// --- UTILS ---
|
||||
function normalizeFiles(rawFiles) {
|
||||
const map = new Map();
|
||||
if (!rawFiles || !Array.isArray(rawFiles)) return map;
|
||||
rawFiles.forEach((content) => {
|
||||
if (typeof content !== 'string') return;
|
||||
const match = content.match(/^#\s*@file:\s*(.+?)(\s|$)/m);
|
||||
if (match) map.set(match[1].trim(), content);
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
function cleanText(text) {
|
||||
return String(text || "").replace(/\r\n/g, "\n");
|
||||
}
|
||||
|
||||
function extractName(block) {
|
||||
const match = block.match(/^ {4}name:\s*(?:["']?)(.*?)(?:["']?)\s*(?:#.*)?$/m);
|
||||
return match ? match[1].trim() : null;
|
||||
}
|
||||
|
||||
function extractKey(block, indentLevel) {
|
||||
const spaceStr = " ".repeat(indentLevel);
|
||||
const re = new RegExp(`^${spaceStr}([^#\\s][^:]+):`);
|
||||
const match = block.match(re);
|
||||
return match ? match[1].trim().replace(/['"]/g, "") : null;
|
||||
}
|
||||
|
||||
function stripFullLineComments(text) {
|
||||
return text.split('\n')
|
||||
.filter(line => !line.trim().startsWith('#'))
|
||||
.join('\n');
|
||||
}
|
||||
|
||||
function splitBlocks(text, type) {
|
||||
const lines = cleanText(text).split("\n");
|
||||
const blocks = [];
|
||||
let currentBuf = [];
|
||||
|
||||
const isListStart = (l) => l.match(/^ {2}-\s/);
|
||||
const isMapStart2 = (l) => l.match(/^ {2}[^ \-#][^:]*:/);
|
||||
const isMapStart0 = (l) => l.match(/^[^ \-#][^:]*:/);
|
||||
|
||||
const isStart = (l) => {
|
||||
if (type === 'list') return isListStart(l);
|
||||
if (type === 'map2') return isMapStart2(l);
|
||||
if (type === 'map0') return isMapStart0(l);
|
||||
return false;
|
||||
};
|
||||
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
const line = lines[i];
|
||||
if (line.match(/^#\s*@file:/)) continue;
|
||||
|
||||
if (isStart(line)) {
|
||||
if (currentBuf.length > 0) {
|
||||
blocks.push(currentBuf.join("\n"));
|
||||
currentBuf = [];
|
||||
}
|
||||
}
|
||||
if (currentBuf.length === 0 && !line.trim()) continue;
|
||||
currentBuf.push(line);
|
||||
}
|
||||
if (currentBuf.length > 0) blocks.push(currentBuf.join("\n"));
|
||||
return blocks;
|
||||
}
|
||||
|
||||
// --- MERGE LOGIC ---
|
||||
function processSection(sectionName, manifestEntries, fileMap, opts) {
|
||||
let sectionOutput = [];
|
||||
const seenKeys = new Set();
|
||||
|
||||
// Добавляем заголовок секции
|
||||
if (!['root', 'x-substore', 'rules'].includes(sectionName)) {
|
||||
sectionOutput.push(`${sectionName}:`);
|
||||
}
|
||||
if (sectionName === 'x-substore') {
|
||||
sectionOutput.push(`x-substore:`);
|
||||
}
|
||||
|
||||
for (const entry of manifestEntries) {
|
||||
let content = fileMap.get(entry.file);
|
||||
if (!content) throw new Error(`CRITICAL: File "${entry.file}" not found.`);
|
||||
|
||||
if (!opts.clearComments) {
|
||||
sectionOutput.push(`\n# --- source: ${entry.file} | mode: ${entry.mode || "concat"} ---`);
|
||||
}
|
||||
|
||||
if (opts.clearComments) {
|
||||
content = stripFullLineComments(content);
|
||||
}
|
||||
|
||||
// [FIX] Удаляем дублирующий заголовок x-substore из контента файла,
|
||||
// но оставляем содержимое (оно уже имеет правильный отступ 2 пробела)
|
||||
if (sectionName === 'x-substore') {
|
||||
content = content.replace(/^x-substore:\s*(?:#.*)?$/m, '');
|
||||
}
|
||||
|
||||
const mode = entry.mode || "concat";
|
||||
|
||||
if (mode === 'concat') {
|
||||
const lines = cleanText(content).split('\n').filter(l => !l.match(/^#\s*@file:/));
|
||||
sectionOutput.push(lines.join('\n'));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mode === 'first_wins') {
|
||||
let blockType = 'map2';
|
||||
if (sectionName === 'root') blockType = 'map0';
|
||||
if (['proxies', 'proxy-groups'].includes(sectionName)) blockType = 'list';
|
||||
|
||||
const blocks = splitBlocks(content, blockType);
|
||||
|
||||
if (blocks.length === 0 && !opts.clearComments) {
|
||||
sectionOutput.push(`# WARNING: No valid blocks found in ${entry.file}`);
|
||||
}
|
||||
|
||||
for (const block of blocks) {
|
||||
let id = null;
|
||||
if (blockType === 'list') {
|
||||
id = extractName(block);
|
||||
} else if (blockType === 'map0') {
|
||||
id = extractKey(block, 0);
|
||||
} else {
|
||||
id = extractKey(block, 2);
|
||||
}
|
||||
|
||||
// Apply cleaning options for x-substore content
|
||||
if (sectionName === 'x-substore' && id) {
|
||||
if (opts.clearManifest && id === 'manifest') continue;
|
||||
if (opts.clearReplacements && id === 'replacements') continue;
|
||||
}
|
||||
|
||||
if (id) {
|
||||
if (seenKeys.has(id)) {
|
||||
if (!opts.clearComments) sectionOutput.push(`# [SKIP] Duplicate "${id}" ignored`);
|
||||
continue;
|
||||
}
|
||||
seenKeys.add(id);
|
||||
}
|
||||
sectionOutput.push(block);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sectionOutput.join("\n");
|
||||
}
|
||||
|
||||
// --- MAIN EXECUTION ---
|
||||
try {
|
||||
const opts = normalizeOptions();
|
||||
const fileMap = normalizeFiles($files);
|
||||
|
||||
let manifestKey = null;
|
||||
for (const k of fileMap.keys()) {
|
||||
if (k.startsWith("00-manifest")) {
|
||||
manifestKey = k;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!manifestKey) throw new Error("Manifest file (00-manifest-...) not found.");
|
||||
|
||||
const manifestRaw = fileMap.get(manifestKey);
|
||||
const manifestObj = ProxyUtils.yaml.safeLoad(manifestRaw);
|
||||
|
||||
if (!manifestObj?.['x-substore']?.manifest) {
|
||||
throw new Error("Invalid Manifest structure.");
|
||||
}
|
||||
|
||||
const manifestList = manifestObj['x-substore'].manifest;
|
||||
const replacements = manifestObj['x-substore'].replacements || [];
|
||||
|
||||
const sectionOrder = [
|
||||
"x-substore", "root", "hosts", "sniffer", "tun", "dns",
|
||||
"proxies", "proxy-providers", "proxy-groups", "rule-providers", "rules"
|
||||
];
|
||||
|
||||
const plan = {};
|
||||
sectionOrder.forEach(s => plan[s] = []);
|
||||
manifestList.forEach(entry => {
|
||||
if (!plan[entry.section]) plan[entry.section] = [];
|
||||
plan[entry.section].push(entry);
|
||||
});
|
||||
|
||||
const finalChunks = [];
|
||||
for (const sec of sectionOrder) {
|
||||
if (!plan[sec] || plan[sec].length === 0) continue;
|
||||
const secStr = processSection(sec, plan[sec], fileMap, opts);
|
||||
finalChunks.push(secStr);
|
||||
}
|
||||
|
||||
let result = finalChunks.join("\n\n");
|
||||
|
||||
if (Array.isArray(replacements)) {
|
||||
replacements.forEach(rep => {
|
||||
if (rep.from && rep.to) {
|
||||
result = result.split(rep.from).join(rep.to);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$content = result;
|
||||
|
||||
} catch (err) {
|
||||
$content = `# CRITICAL ERROR:\n# ${err.message}\n# Stack: ${err.stack}`;
|
||||
}
|
||||
239
config-sub-converter/scripts/assemble-mihomo-config.js
Normal file
@@ -0,0 +1,239 @@
|
||||
/**
|
||||
* SUB STORE YAML ASSEMBLER (Content-Tag Aware)
|
||||
* * Требование: Каждый файл должен начинаться с комментария:
|
||||
* # @file: filename.yaml
|
||||
*/
|
||||
|
||||
// --- UTILS ---
|
||||
|
||||
// Функция нормализации теперь парсит содержимое, чтобы найти имя файла
|
||||
function normalizeFiles(rawFiles) {
|
||||
const map = new Map();
|
||||
if (!rawFiles || !Array.isArray(rawFiles)) return map;
|
||||
|
||||
rawFiles.forEach((content, index) => {
|
||||
if (typeof content !== 'string') return;
|
||||
|
||||
// Ищем магический тег: # @file: filename.yaml
|
||||
const match = content.match(/^#\s*@file:\s*(.+?)(\s|$)/m);
|
||||
|
||||
if (match) {
|
||||
const filename = match[1].trim();
|
||||
map.set(filename, content);
|
||||
} else {
|
||||
// Если тега нет, файл остается "анонимным" и недоступным через манифест,
|
||||
// но мы можем логировать это.
|
||||
// console.log(`File at index ${index} has no @file tag`);
|
||||
}
|
||||
});
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
function cleanText(text) {
|
||||
return String(text || "").replace(/\r\n/g, "\n");
|
||||
}
|
||||
|
||||
// Извлечение name из элемента списка
|
||||
function extractName(block) {
|
||||
// Ищем name: value с учетом отступов (4 пробела)
|
||||
const match = block.match(/^ {4}name:\s*(?:["']?)(.*?)(?:["']?)\s*(?:#.*)?$/m);
|
||||
return match ? match[1].trim() : null;
|
||||
}
|
||||
|
||||
// Извлечение ключа из map (0 или 2 пробела)
|
||||
function extractKey(block, indentLevel) {
|
||||
const spaceStr = " ".repeat(indentLevel);
|
||||
const re = new RegExp(`^${spaceStr}([^#\\s][^:]+):`);
|
||||
const match = block.match(re);
|
||||
return match ? match[1].trim().replace(/['"]/g, "") : null;
|
||||
}
|
||||
|
||||
// Разбивка текста на логические блоки
|
||||
function splitBlocks(text, type) {
|
||||
const lines = cleanText(text).split("\n");
|
||||
const blocks = [];
|
||||
let currentBuf = [];
|
||||
|
||||
// Детекторы начала блока
|
||||
const isListStart = (l) => l.match(/^ {2}-\s/); // " - "
|
||||
const isMapStart2 = (l) => l.match(/^ {2}[^ \-#][^:]*:/); // " key:"
|
||||
const isMapStart0 = (l) => l.match(/^[^ \-#][^:]*:/); // "key:" (root)
|
||||
|
||||
const isStart = (l) => {
|
||||
if (type === 'list') return isListStart(l);
|
||||
if (type === 'map2') return isMapStart2(l);
|
||||
if (type === 'map0') return isMapStart0(l);
|
||||
return false;
|
||||
};
|
||||
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
const line = lines[i];
|
||||
|
||||
// Если строка начинается с # @file:, пропускаем ее, чтобы не мусорить в конфиге
|
||||
if (line.match(/^#\s*@file:/)) continue;
|
||||
|
||||
if (isStart(line)) {
|
||||
if (currentBuf.length > 0) {
|
||||
blocks.push(currentBuf.join("\n"));
|
||||
currentBuf = [];
|
||||
}
|
||||
}
|
||||
|
||||
// Пропуск пустых строк в начале, если буфер пуст
|
||||
if (currentBuf.length === 0 && !line.trim()) continue;
|
||||
|
||||
currentBuf.push(line);
|
||||
}
|
||||
|
||||
if (currentBuf.length > 0) {
|
||||
blocks.push(currentBuf.join("\n"));
|
||||
}
|
||||
|
||||
return blocks;
|
||||
}
|
||||
|
||||
// --- MERGE LOGIC ---
|
||||
|
||||
function processSection(sectionName, manifestEntries, fileMap) {
|
||||
let sectionOutput = [];
|
||||
const seenKeys = new Set();
|
||||
|
||||
// Добавляем заголовок секции (кроме root, x-substore и rules)
|
||||
if (!['root', 'x-substore', 'rules'].includes(sectionName)) {
|
||||
sectionOutput.push(`${sectionName}:`);
|
||||
}
|
||||
if (sectionName === 'x-substore') {
|
||||
sectionOutput.push(`x-substore:`);
|
||||
}
|
||||
|
||||
for (const entry of manifestEntries) {
|
||||
const content = fileMap.get(entry.file);
|
||||
|
||||
if (!content) {
|
||||
// FAIL-FAST: Если файл из манифеста не найден (нет тега или не загружен)
|
||||
throw new Error(`CRITICAL: File "${entry.file}" not found inside input bundle. Did you add '# @file: ${entry.file}' header?`);
|
||||
}
|
||||
|
||||
const mode = entry.mode || "concat";
|
||||
sectionOutput.push(`\n# --- source: ${entry.file} | mode: ${mode} ---`);
|
||||
|
||||
if (mode === 'concat') {
|
||||
// Просто чистим от тега @file при вставке
|
||||
const lines = cleanText(content).split('\n').filter(l => !l.match(/^#\s*@file:/));
|
||||
sectionOutput.push(lines.join('\n'));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mode === 'first_wins') {
|
||||
let blockType = 'map2';
|
||||
if (sectionName === 'root') blockType = 'map0';
|
||||
if (['proxies', 'proxy-groups'].includes(sectionName)) blockType = 'list';
|
||||
|
||||
const blocks = splitBlocks(content, blockType);
|
||||
|
||||
if (blocks.length === 0) {
|
||||
sectionOutput.push(`# WARNING: No valid blocks found in ${entry.file}`);
|
||||
}
|
||||
|
||||
for (const block of blocks) {
|
||||
let id = null;
|
||||
|
||||
if (blockType === 'list') {
|
||||
id = extractName(block);
|
||||
} else if (blockType === 'map0') {
|
||||
id = extractKey(block, 0);
|
||||
} else {
|
||||
id = extractKey(block, 2);
|
||||
}
|
||||
|
||||
if (id) {
|
||||
if (seenKeys.has(id)) {
|
||||
sectionOutput.push(`# [SKIP] Duplicate "${id}" ignored`);
|
||||
continue;
|
||||
}
|
||||
seenKeys.add(id);
|
||||
}
|
||||
|
||||
sectionOutput.push(block);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sectionOutput.join("\n");
|
||||
}
|
||||
|
||||
// --- MAIN EXECUTION ---
|
||||
|
||||
try {
|
||||
// 1. Создаем карту файлов на основе тегов # @file:
|
||||
const fileMap = normalizeFiles($files);
|
||||
|
||||
// 2. Ищем Манифест
|
||||
let manifestKey = null;
|
||||
// Ищем файл, чье имя (из тега) начинается с 00-manifest
|
||||
for (const k of fileMap.keys()) {
|
||||
if (k.startsWith("00-manifest")) {
|
||||
manifestKey = k;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!manifestKey) {
|
||||
const foundFiles = Array.from(fileMap.keys()).join(", ");
|
||||
throw new Error(`Manifest file (00-manifest-...) not found in headers. Found files: [${foundFiles}]`);
|
||||
}
|
||||
|
||||
// 3. Парсим Манифест
|
||||
const manifestRaw = fileMap.get(manifestKey);
|
||||
const manifestObj = ProxyUtils.yaml.safeLoad(manifestRaw);
|
||||
|
||||
if (!manifestObj?.['x-substore']?.manifest) {
|
||||
throw new Error("Invalid Manifest: missing x-substore.manifest structure.");
|
||||
}
|
||||
|
||||
const manifestList = manifestObj['x-substore'].manifest;
|
||||
const replacements = manifestObj['x-substore'].replacements || [];
|
||||
|
||||
// 4. Планирование порядка секций
|
||||
const sectionOrder = [
|
||||
"x-substore", "root", "hosts", "sniffer", "tun", "dns",
|
||||
"proxies", "proxy-providers", "proxy-groups", "rule-providers", "rules"
|
||||
];
|
||||
|
||||
const plan = {};
|
||||
sectionOrder.forEach(s => plan[s] = []);
|
||||
|
||||
manifestList.forEach(entry => {
|
||||
// Если секция в манифесте есть, а в нашем плане нет - добавляем динамически (на всякий случай)
|
||||
if (!plan[entry.section]) plan[entry.section] = [];
|
||||
plan[entry.section].push(entry);
|
||||
});
|
||||
|
||||
// 5. Сборка
|
||||
const finalChunks = [];
|
||||
|
||||
for (const sec of sectionOrder) {
|
||||
if (!plan[sec] || plan[sec].length === 0) continue;
|
||||
|
||||
// Обработка секции
|
||||
const secStr = processSection(sec, plan[sec], fileMap);
|
||||
finalChunks.push(secStr);
|
||||
}
|
||||
|
||||
let result = finalChunks.join("\n\n");
|
||||
|
||||
// 6. Replacements (Literal)
|
||||
if (Array.isArray(replacements)) {
|
||||
replacements.forEach(rep => {
|
||||
if (rep.from && rep.to) {
|
||||
result = result.split(rep.from).join(rep.to);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$content = result;
|
||||
|
||||
} catch (err) {
|
||||
$content = `# CRITICAL ERROR in Assembler:\n# ${err.message}\n\n# Stack:\n${err.stack}`;
|
||||
}
|
||||
235
config-sub-converter/scripts/convert-awg-to-clash.js
Normal file
@@ -0,0 +1,235 @@
|
||||
/**********************
|
||||
* Defaults (AmneziaWG)
|
||||
* Если в исходнике нет параметра, берём отсюда.
|
||||
* Если итоговое значение == 0, параметр пропускаем в amnezia-wg-option.
|
||||
**********************/
|
||||
const AMZ_DEFAULTS = {
|
||||
Jc: 4,
|
||||
Jmin: 10,
|
||||
Jmax: 50,
|
||||
S1: 110,
|
||||
S2: 120,
|
||||
H1: 0,
|
||||
H2: 0,
|
||||
H3: 0,
|
||||
H4: 0,
|
||||
};
|
||||
|
||||
/**********************
|
||||
* Options from Sub Store
|
||||
* Example URL:
|
||||
* .../convert-awg-to-clash.js#dns=false&ipv6=false#noCache
|
||||
*
|
||||
* Требования:
|
||||
* - dns=false => remote-dns-resolve: false (вне зависимости от входа)
|
||||
* - ipv6=false => удалить IPv6 из allowed-ips (и вообще не добавлять ipv6-части)
|
||||
**********************/
|
||||
function normalizeOptions() {
|
||||
const args = (typeof $arguments !== "undefined" && $arguments) ? $arguments : {};
|
||||
|
||||
const asBool = (v, def = true) => {
|
||||
if (v === undefined || v === null || v === "") return def;
|
||||
if (typeof v === "boolean") return v;
|
||||
const s = String(v).toLowerCase().trim();
|
||||
if (["1", "true", "yes", "y", "on"].includes(s)) return true;
|
||||
if (["0", "false", "no", "n", "off"].includes(s)) return false;
|
||||
return def;
|
||||
};
|
||||
|
||||
return {
|
||||
dns: asBool(args.dns, true),
|
||||
ipv6: asBool(args.ipv6, true),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**********************
|
||||
* Parsing WG INI blocks
|
||||
**********************/
|
||||
function cleanLines(text) {
|
||||
return String(text ?? "")
|
||||
.replace(/\r\n/g, "\n")
|
||||
.split("\n");
|
||||
}
|
||||
|
||||
// Парсим один INI-фрагмент с [Interface] и [Peer] (один peer)
|
||||
function parseIniOne(text) {
|
||||
const lines = cleanLines(text)
|
||||
.map((l) => l.trim())
|
||||
.filter((l) => l.length > 0 && !l.startsWith("#") && !l.startsWith(";"));
|
||||
|
||||
let section = null;
|
||||
const data = { Interface: {}, Peer: {} };
|
||||
|
||||
for (const line of lines) {
|
||||
const mSec = line.match(/^\[(.+?)\]$/);
|
||||
if (mSec) {
|
||||
section = mSec[1];
|
||||
continue;
|
||||
}
|
||||
|
||||
const mKV = line.match(/^([^=]+?)\s*=\s*(.+)$/);
|
||||
if (!mKV || !section) continue;
|
||||
|
||||
const key = mKV[1].trim();
|
||||
const value = mKV[2].trim();
|
||||
|
||||
if (section === "Interface") data.Interface[key] = value;
|
||||
else if (section === "Peer") data.Peer[key] = value;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
// Разбиваем весь файл на блоки по заголовкам "##### ..."
|
||||
function splitByHeaders(fullText) {
|
||||
const lines = cleanLines(fullText);
|
||||
|
||||
const blocks = [];
|
||||
let current = { name: "amz-wg", buf: [] };
|
||||
|
||||
const headerRe = /^#{5}\s*(.+)\s*$/;
|
||||
|
||||
for (const line of lines) {
|
||||
const mh = line.match(headerRe);
|
||||
if (mh) {
|
||||
// закрываем предыдущий блок, если там что-то есть
|
||||
if (current.buf.join("\n").trim().length > 0) blocks.push(current);
|
||||
current = { name: mh[1].trim(), buf: [] };
|
||||
continue;
|
||||
}
|
||||
current.buf.push(line);
|
||||
}
|
||||
|
||||
if (current.buf.join("\n").trim().length > 0) blocks.push(current);
|
||||
|
||||
return blocks;
|
||||
}
|
||||
|
||||
function splitList(val) {
|
||||
return String(val || "")
|
||||
.split(",")
|
||||
.map((s) => s.trim())
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
function parseEndpoint(endpoint) {
|
||||
// Поддержка:
|
||||
// - host:port
|
||||
// - [ipv6]:port
|
||||
const s = String(endpoint || "").trim();
|
||||
const v6 = s.match(/^\[(.+?)\]:(\d+)$/);
|
||||
if (v6) return { host: v6[1], port: Number(v6[2]) };
|
||||
|
||||
const v4 = s.match(/^(.+?):(\d+)$/);
|
||||
if (v4) return { host: v4[1], port: Number(v4[2]) };
|
||||
|
||||
return { host: "", port: 0 };
|
||||
}
|
||||
|
||||
function toNumberOrNull(v) {
|
||||
const s = String(v ?? "").trim();
|
||||
if (s === "") return null;
|
||||
if (/^-?\d+$/.test(s)) return Number(s);
|
||||
return null;
|
||||
}
|
||||
|
||||
function buildAmzOptions(interfaceObj) {
|
||||
// Правило:
|
||||
// - если в файле есть параметр => используем его
|
||||
// - иначе берём из AMZ_DEFAULTS
|
||||
// - если итог == 0 => пропускаем
|
||||
const out = {};
|
||||
const keys = Object.keys(AMZ_DEFAULTS);
|
||||
|
||||
for (const K of keys) {
|
||||
const fromFile = interfaceObj[K];
|
||||
const fileNum = toNumberOrNull(fromFile);
|
||||
const fallback = AMZ_DEFAULTS[K];
|
||||
|
||||
const finalVal =
|
||||
fileNum !== null ? fileNum : (fallback ?? 0);
|
||||
|
||||
if (Number(finalVal) !== 0) {
|
||||
out[K.toLowerCase()] = Number(finalVal);
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
function filterAllowedIPs(allowed, enableIPv6) {
|
||||
if (enableIPv6) return allowed;
|
||||
// выкидываем всё, что похоже на IPv6
|
||||
return allowed.filter((cidr) => !cidr.includes(":"));
|
||||
}
|
||||
|
||||
function buildProxy(blockName, wg, options) {
|
||||
const i = wg.Interface || {};
|
||||
const p = wg.Peer || {};
|
||||
|
||||
const address = i.Address || "";
|
||||
const dnsList = splitList(i.DNS);
|
||||
|
||||
const ep = parseEndpoint(p.Endpoint);
|
||||
let allowed = splitList(p.AllowedIPs);
|
||||
allowed = filterAllowedIPs(allowed, options.ipv6);
|
||||
|
||||
const proxy = {
|
||||
name: blockName || "amz-wg",
|
||||
type: "wireguard",
|
||||
ip: address,
|
||||
// ipv6 поле в твоём примере закомментировано, так что не добавляем вообще
|
||||
"private-key": i.PrivateKey || "",
|
||||
peers: [
|
||||
{
|
||||
server: ep.host,
|
||||
port: ep.port,
|
||||
"public-key": p.PublicKey || "",
|
||||
...(p.PresharedKey ? { "pre-shared-key": p.PresharedKey } : {}),
|
||||
"allowed-ips": allowed,
|
||||
},
|
||||
],
|
||||
udp: true,
|
||||
// dns=false => принудительно false
|
||||
"remote-dns-resolve": options.dns ? true : false,
|
||||
...(dnsList.length ? { dns: dnsList } : {}),
|
||||
};
|
||||
|
||||
const amz = buildAmzOptions(i);
|
||||
if (Object.keys(amz).length) {
|
||||
proxy["amnezia-wg-option"] = amz;
|
||||
}
|
||||
|
||||
return proxy;
|
||||
}
|
||||
|
||||
/**********************
|
||||
* ENTRYPOINT
|
||||
**********************/
|
||||
const opts = normalizeOptions();
|
||||
|
||||
// Вход: чаще всего $content, но на всякий пожарный берём $files[0]
|
||||
const input = String($content ?? ($files && $files[0]) ?? "");
|
||||
|
||||
// Разбиваем по заголовкам ##### ...
|
||||
const blocks = splitByHeaders(input);
|
||||
|
||||
// Для каждого блока парсим INI и строим proxy
|
||||
const proxies = [];
|
||||
for (const b of blocks) {
|
||||
const iniText = b.buf.join("\n").trim();
|
||||
if (!iniText) continue;
|
||||
|
||||
const wg = parseIniOne(iniText);
|
||||
|
||||
// минимальная валидация: нужны ключи
|
||||
if (!wg.Interface?.PrivateKey || !wg.Peer?.PublicKey || !wg.Peer?.Endpoint) {
|
||||
// пропускаем мусорные блоки, чтобы не ронять весь конвертер
|
||||
continue;
|
||||
}
|
||||
|
||||
proxies.push(buildProxy(b.name, wg, opts));
|
||||
}
|
||||
|
||||
// Финальный YAML
|
||||
$content = ProxyUtils.yaml.safeDump({ proxies });
|
||||
28
config-sub-converter/scripts/demo/embedded.js
Normal file
@@ -0,0 +1,28 @@
|
||||
// Example:
|
||||
// Script Operator
|
||||
// 1. backend version(>2.14.88):
|
||||
$server.name = 'prefix-' + $server.name
|
||||
$server.ecn = true
|
||||
$server['test-url'] = 'http://1.0.0.1/generate_204'
|
||||
// 2. operator function
|
||||
function operator(proxies, targetPlatform, context) {
|
||||
return proxies.map( proxy => {
|
||||
// Change proxy information here
|
||||
|
||||
return proxy;
|
||||
});
|
||||
}
|
||||
|
||||
// Script Filter
|
||||
// 1. backend version(>2.14.119):
|
||||
const port = Number($server.port)
|
||||
return [80].includes(port)
|
||||
|
||||
// 2. filter function
|
||||
function filter(proxies, targetPlatform) {
|
||||
return proxies.map( proxy => {
|
||||
// Return true if the current proxy is selected
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
59
config-sub-converter/scripts/demo/fancy-chars.js
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* 节点名改为花里胡哨字体,仅支持英文字符和数字
|
||||
*
|
||||
* 【字体】
|
||||
* 可参考:https://www.dute.org/weird-fonts
|
||||
* serif-bold, serif-italic, serif-bold-italic, sans-serif-regular, sans-serif-bold-italic, script-regular, script-bold, fraktur-regular, fraktur-bold, monospace-regular, double-struck-bold, circle-regular, square-regular, modifier-letter(小写没有 q, 用 ᵠ 替代. 大写缺的太多, 用小写替代)
|
||||
*
|
||||
* 【示例】
|
||||
* 1️⃣ 设置所有格式为 "serif-bold"
|
||||
* #type=serif-bold
|
||||
*
|
||||
* 2️⃣ 设置字母格式为 "serif-bold",数字格式为 "circle-regular"
|
||||
* #type=serif-bold&num=circle-regular
|
||||
*/
|
||||
|
||||
global.$arguments = { type: "serif-bold" };
|
||||
|
||||
function operator(proxies) {
|
||||
const { type, num } = $arguments;
|
||||
const TABLE = {
|
||||
"serif-bold": ["𝟎","𝟏","𝟐","𝟑","𝟒","𝟓","𝟔","𝟕","𝟖","𝟗","𝐚","𝐛","𝐜","𝐝","𝐞","𝐟","𝐠","𝐡","𝐢","𝐣","𝐤","𝐥","𝐦","𝐧","𝐨","𝐩","𝐪","𝐫","𝐬","𝐭","𝐮","𝐯","𝐰","𝐱","𝐲","𝐳","𝐀","𝐁","𝐂","𝐃","𝐄","𝐅","𝐆","𝐇","𝐈","𝐉","𝐊","𝐋","𝐌","𝐍","𝐎","𝐏","𝐐","𝐑","𝐒","𝐓","𝐔","𝐕","𝐖","𝐗","𝐘","𝐙"] ,
|
||||
"serif-italic": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "𝑎", "𝑏", "𝑐", "𝑑", "𝑒", "𝑓", "𝑔", "ℎ", "𝑖", "𝑗", "𝑘", "𝑙", "𝑚", "𝑛", "𝑜", "𝑝", "𝑞", "𝑟", "𝑠", "𝑡", "𝑢", "𝑣", "𝑤", "𝑥", "𝑦", "𝑧", "𝐴", "𝐵", "𝐶", "𝐷", "𝐸", "𝐹", "𝐺", "𝐻", "𝐼", "𝐽", "𝐾", "𝐿", "𝑀", "𝑁", "𝑂", "𝑃", "𝑄", "𝑅", "𝑆", "𝑇", "𝑈", "𝑉", "𝑊", "𝑋", "𝑌", "𝑍"],
|
||||
"serif-bold-italic": ["0","1","2","3","4","5","6","7","8","9","𝒂","𝒃","𝒄","𝒅","𝒆","𝒇","𝒈","𝒉","𝒊","𝒋","𝒌","𝒍","𝒎","𝒏","𝒐","𝒑","𝒒","𝒓","𝒔","𝒕","𝒖","𝒗","𝒘","𝒙","𝒚","𝒛","𝑨","𝑩","𝑪","𝑫","𝑬","𝑭","𝑮","𝑯","𝑰","𝑱","𝑲","𝑳","𝑴","𝑵","𝑶","𝑷","𝑸","𝑹","𝑺","𝑻","𝑼","𝑽","𝑾","𝑿","𝒀","𝒁"],
|
||||
"sans-serif-regular": ["𝟢", "𝟣", "𝟤", "𝟥", "𝟦", "𝟧", "𝟨", "𝟩", "𝟪", "𝟫", "𝖺", "𝖻", "𝖼", "𝖽", "𝖾", "𝖿", "𝗀", "𝗁", "𝗂", "𝗃", "𝗄", "𝗅", "𝗆", "𝗇", "𝗈", "𝗉", "𝗊", "𝗋", "𝗌", "𝗍", "𝗎", "𝗏", "𝗐", "𝗑", "𝗒", "𝗓", "𝖠", "𝖡", "𝖢", "𝖣", "𝖤", "𝖥", "𝖦", "𝖧", "𝖨", "𝖩", "𝖪", "𝖫", "𝖬", "𝖭", "𝖮", "𝖯", "𝖰", "𝖱", "𝖲", "𝖳", "𝖴", "𝖵", "𝖶", "𝖷", "𝖸", "𝖹"],
|
||||
"sans-serif-bold": ["𝟬","𝟭","𝟮","𝟯","𝟰","𝟱","𝟲","𝟳","𝟴","𝟵","𝗮","𝗯","𝗰","𝗱","𝗲","𝗳","𝗴","𝗵","𝗶","𝗷","𝗸","𝗹","𝗺","𝗻","𝗼","𝗽","𝗾","𝗿","𝘀","𝘁","𝘂","𝘃","𝘄","𝘅","𝘆","𝘇","𝗔","𝗕","𝗖","𝗗","𝗘","𝗙","𝗚","𝗛","𝗜","𝗝","𝗞","𝗟","𝗠","𝗡","𝗢","𝗣","𝗤","𝗥","𝗦","𝗧","𝗨","𝗩","𝗪","𝗫","𝗬","𝗭"],
|
||||
"sans-serif-italic": ["0","1","2","3","4","5","6","7","8","9","𝘢","𝘣","𝘤","𝘥","𝘦","𝘧","𝘨","𝘩","𝘪","𝘫","𝘬","𝘭","𝘮","𝘯","𝘰","𝘱","𝘲","𝘳","𝘴","𝘵","𝘶","𝘷","𝘸","𝘹","𝘺","𝘻","𝘈","𝘉","𝘊","𝘋","𝘌","𝘍","𝘎","𝘏","𝘐","𝘑","𝘒","𝘓","𝘔","𝘕","𝘖","𝘗","𝘘","𝘙","𝘚","𝘛","𝘜","𝘝","𝘞","𝘟","𝘠","𝘡"],
|
||||
"sans-serif-bold-italic": ["0","1","2","3","4","5","6","7","8","9","𝙖","𝙗","𝙘","𝙙","𝙚","𝙛","𝙜","𝙝","𝙞","𝙟","𝙠","𝙡","𝙢","𝙣","𝙤","𝙥","𝙦","𝙧","𝙨","𝙩","𝙪","𝙫","𝙬","𝙭","𝙮","𝙯","𝘼","𝘽","𝘾","𝘿","𝙀","𝙁","𝙂","𝙃","𝙄","𝙅","𝙆","𝙇","𝙈","𝙉","𝙊","𝙋","𝙌","𝙍","𝙎","𝙏","𝙐","𝙑","𝙒","𝙓","𝙔","𝙕"],
|
||||
"script-regular": ["0","1","2","3","4","5","6","7","8","9","𝒶","𝒷","𝒸","𝒹","ℯ","𝒻","ℊ","𝒽","𝒾","𝒿","𝓀","𝓁","𝓂","𝓃","ℴ","𝓅","𝓆","𝓇","𝓈","𝓉","𝓊","𝓋","𝓌","𝓍","𝓎","𝓏","𝒜","ℬ","𝒞","𝒟","ℰ","ℱ","𝒢","ℋ","ℐ","𝒥","𝒦","ℒ","ℳ","𝒩","𝒪","𝒫","𝒬","ℛ","𝒮","𝒯","𝒰","𝒱","𝒲","𝒳","𝒴","𝒵"],
|
||||
"script-bold": ["0","1","2","3","4","5","6","7","8","9","𝓪","𝓫","𝓬","𝓭","𝓮","𝓯","𝓰","𝓱","𝓲","𝓳","𝓴","𝓵","𝓶","𝓷","𝓸","𝓹","𝓺","𝓻","𝓼","𝓽","𝓾","𝓿","𝔀","𝔁","𝔂","𝔃","𝓐","𝓑","𝓒","𝓓","𝓔","𝓕","𝓖","𝓗","𝓘","𝓙","𝓚","𝓛","𝓜","𝓝","𝓞","𝓟","𝓠","𝓡","𝓢","𝓣","𝓤","𝓥","𝓦","𝓧","𝓨","𝓩"],
|
||||
"fraktur-regular": ["0","1","2","3","4","5","6","7","8","9","𝔞","𝔟","𝔠","𝔡","𝔢","𝔣","𝔤","𝔥","𝔦","𝔧","𝔨","𝔩","𝔪","𝔫","𝔬","𝔭","𝔮","𝔯","𝔰","𝔱","𝔲","𝔳","𝔴","𝔵","𝔶","𝔷","𝔄","𝔅","ℭ","𝔇","𝔈","𝔉","𝔊","ℌ","ℑ","𝔍","𝔎","𝔏","𝔐","𝔑","𝔒","𝔓","𝔔","ℜ","𝔖","𝔗","𝔘","𝔙","𝔚","𝔛","𝔜","ℨ"],
|
||||
"fraktur-bold": ["0","1","2","3","4","5","6","7","8","9","𝖆","𝖇","𝖈","𝖉","𝖊","𝖋","𝖌","𝖍","𝖎","𝖏","𝖐","𝖑","𝖒","𝖓","𝖔","𝖕","𝖖","𝖗","𝖘","𝖙","𝖚","𝖛","𝖜","𝖝","𝖞","𝖟","𝕬","𝕭","𝕮","𝕯","𝕰","𝕱","𝕲","𝕳","𝕴","𝕵","𝕶","𝕷","𝕸","𝕹","𝕺","𝕻","𝕼","𝕽","𝕾","𝕿","𝖀","𝖁","𝖂","𝖃","𝖄","𝖅"],
|
||||
"monospace-regular": ["𝟶","𝟷","𝟸","𝟹","𝟺","𝟻","𝟼","𝟽","𝟾","𝟿","𝚊","𝚋","𝚌","𝚍","𝚎","𝚏","𝚐","𝚑","𝚒","𝚓","𝚔","𝚕","𝚖","𝚗","𝚘","𝚙","𝚚","𝚛","𝚜","𝚝","𝚞","𝚟","𝚠","𝚡","𝚢","𝚣","𝙰","𝙱","𝙲","𝙳","𝙴","𝙵","𝙶","𝙷","𝙸","𝙹","𝙺","𝙻","𝙼","𝙽","𝙾","𝙿","𝚀","𝚁","𝚂","𝚃","𝚄","𝚅","𝚆","𝚇","𝚈","𝚉"],
|
||||
"double-struck-bold": ["𝟘","𝟙","𝟚","𝟛","𝟜","𝟝","𝟞","𝟟","𝟠","𝟡","𝕒","𝕓","𝕔","𝕕","𝕖","𝕗","𝕘","𝕙","𝕚","𝕛","𝕜","𝕝","𝕞","𝕟","𝕠","𝕡","𝕢","𝕣","𝕤","𝕥","𝕦","𝕧","𝕨","𝕩","𝕪","𝕫","𝔸","𝔹","ℂ","𝔻","𝔼","𝔽","𝔾","ℍ","𝕀","𝕁","𝕂","𝕃","𝕄","ℕ","𝕆","ℙ","ℚ","ℝ","𝕊","𝕋","𝕌","𝕍","𝕎","𝕏","𝕐","ℤ"],
|
||||
"circle-regular": ["⓪","①","②","③","④","⑤","⑥","⑦","⑧","⑨","ⓐ","ⓑ","ⓒ","ⓓ","ⓔ","ⓕ","ⓖ","ⓗ","ⓘ","ⓙ","ⓚ","ⓛ","ⓜ","ⓝ","ⓞ","ⓟ","ⓠ","ⓡ","ⓢ","ⓣ","ⓤ","ⓥ","ⓦ","ⓧ","ⓨ","ⓩ","Ⓐ","Ⓑ","Ⓒ","Ⓓ","Ⓔ","Ⓕ","Ⓖ","Ⓗ","Ⓘ","Ⓙ","Ⓚ","Ⓛ","Ⓜ","Ⓝ","Ⓞ","Ⓟ","Ⓠ","Ⓡ","Ⓢ","Ⓣ","Ⓤ","Ⓥ","Ⓦ","Ⓧ","Ⓨ","Ⓩ"],
|
||||
"square-regular": ["0","1","2","3","4","5","6","7","8","9","🄰","🄱","🄲","🄳","🄴","🄵","🄶","🄷","🄸","🄹","🄺","🄻","🄼","🄽","🄾","🄿","🅀","🅁","🅂","🅃","🅄","🅅","🅆","🅇","🅈","🅉","🄰","🄱","🄲","🄳","🄴","🄵","🄶","🄷","🄸","🄹","🄺","🄻","🄼","🄽","🄾","🄿","🅀","🅁","🅂","🅃","🅄","🅅","🅆","🅇","🅈","🅉"],
|
||||
"modifier-letter": ["⁰", "¹", "²", "³", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹", "ᵃ", "ᵇ", "ᶜ", "ᵈ", "ᵉ", "ᶠ", "ᵍ", "ʰ", "ⁱ", "ʲ", "ᵏ", "ˡ", "ᵐ", "ⁿ", "ᵒ", "ᵖ", "ᵠ", "ʳ", "ˢ", "ᵗ", "ᵘ", "ᵛ", "ʷ", "ˣ", "ʸ", "ᶻ", "ᴬ", "ᴮ", "ᶜ", "ᴰ", "ᴱ", "ᶠ", "ᴳ", "ʰ", "ᴵ", "ᴶ", "ᴷ", "ᴸ", "ᴹ", "ᴺ", "ᴼ", "ᴾ", "ᵠ", "ᴿ", "ˢ", "ᵀ", "ᵁ", "ᵛ", "ᵂ", "ˣ", "ʸ", "ᶻ"],
|
||||
};
|
||||
|
||||
// charCode => index in `TABLE`
|
||||
const INDEX = { "48": 0, "49": 1, "50": 2, "51": 3, "52": 4, "53": 5, "54": 6, "55": 7, "56": 8, "57": 9, "65": 36, "66": 37, "67": 38, "68": 39, "69": 40, "70": 41, "71": 42, "72": 43, "73": 44, "74": 45, "75": 46, "76": 47, "77": 48, "78": 49, "79": 50, "80": 51, "81": 52, "82": 53, "83": 54, "84": 55, "85": 56, "86": 57, "87": 58, "88": 59, "89": 60, "90": 61, "97": 10, "98": 11, "99": 12, "100": 13, "101": 14, "102": 15, "103": 16, "104": 17, "105": 18, "106": 19, "107": 20, "108": 21, "109": 22, "110": 23, "111": 24, "112": 25, "113": 26, "114": 27, "115": 28, "116": 29, "117": 30, "118": 31, "119": 32, "120": 33, "121": 34, "122": 35 };
|
||||
|
||||
return proxies.map(p => {
|
||||
p.name = [...p.name].map(c => {
|
||||
if (/[a-zA-Z0-9]/.test(c)) {
|
||||
const code = c.charCodeAt(0);
|
||||
const index = INDEX[code];
|
||||
if (isNumber(code) && num) {
|
||||
return TABLE[num][index];
|
||||
} else {
|
||||
return TABLE[type][index];
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}).join("");
|
||||
return p;
|
||||
})
|
||||
}
|
||||
|
||||
function isNumber(code) { return code >= 48 && code <= 57; }
|
||||
328
config-sub-converter/scripts/demo/gemeni-tried-orginal.js
Normal file
@@ -0,0 +1,328 @@
|
||||
/**
|
||||
* Sub-Store operator: Normalize + tag + country detect + per-country numbering
|
||||
*
|
||||
* Output format (default):
|
||||
* 🇺🇸 USA-01 🔒 📺 ❻ ▫️ws/vless/443
|
||||
*
|
||||
* Notes:
|
||||
* - Numbering is computed per-country AFTER grouping the full list.
|
||||
* - Tags (icons) do NOT affect numbering order.
|
||||
* - GeoIP is optional and only used when server is an IP and utils.geoip.lookup exists.
|
||||
*/
|
||||
|
||||
///////////////////////
|
||||
// CONFIG (EDIT ME)
|
||||
///////////////////////
|
||||
|
||||
// 1) Remove these patterns (marketing noise, brackets, separators, etc.)
|
||||
const NOISE_PATTERNS = [
|
||||
/\[[^\]]*]/g, // [ ... ]
|
||||
/\([^)]*\)/g, // ( ... )
|
||||
/\{[^}]*}/g, // { ... }
|
||||
/\btraffic\b/gi,
|
||||
/\bfree\b/gi,
|
||||
/\bwebsite\b/gi,
|
||||
/\bexpire\b/gi,
|
||||
/\blow\s*ping\b/gi,
|
||||
/\bai\s*studio\b/gi,
|
||||
/\bno\s*p2p\b/gi,
|
||||
/\b10\s*gbit\b/gi,
|
||||
/\bvless\b/gi, // you said you don't want it in the visible name
|
||||
/\bvmess\b/gi,
|
||||
/\bssr?\b/gi,
|
||||
/\btrojan\b/gi,
|
||||
/\bhysteria2?\b/gi,
|
||||
/\btuic\b/gi,
|
||||
/[|]/g,
|
||||
/[_]+/g,
|
||||
/[-]{2,}/g
|
||||
];
|
||||
|
||||
// 2) Keyword -> icon tags (if found in original name, icon is added; the keyword is removed from base name)
|
||||
const ICON_RULES = [
|
||||
{ regex: /\bYT\b/gi, icon: "📺" },
|
||||
{ regex: /\bIPv6\b/gi, icon: "❻" },
|
||||
{ regex: /\bNetflix\b|\bNF\b/gi, icon: "🎬" },
|
||||
{ regex: /\bDisney\+?\b|\bDSNY\b/gi, icon: "🏰" },
|
||||
{ regex: /\bHBO\b/gi, icon: "📼" },
|
||||
{ regex: /\bPrime\b|\bAmazon\b/gi, icon: "📦" },
|
||||
{ regex: /\bChatGPT\b|\bOpenAI\b/gi, icon: "🤖" },
|
||||
{ regex: /\bSteam\b/gi, icon: "🎮" },
|
||||
];
|
||||
|
||||
// 3) Optional “network” tag rules based on NAME text (not $server.network)
|
||||
// (Useful if providers shove "BGP/IPLC" into the node name)
|
||||
const NAME_NETWORK_TAGS = [
|
||||
{ regex: /\bIPLC\b/gi, tag: "🛰️" },
|
||||
{ regex: /\bBGP\b/gi, tag: "🧭" },
|
||||
{ regex: /\bAnycast\b/gi, tag: "🌍" }
|
||||
];
|
||||
|
||||
// 4) Country detection rules by NAME (regex). First match wins (priority = lower is earlier)
|
||||
const COUNTRY_RULES = [
|
||||
// USA
|
||||
{ regex: /\b(USA|US|UNITED\s*STATES|AMERICA|NEW\s*YORK|NYC|LOS\s*ANGELES|LA|DALLAS|CHI(CAGO)?)\b/i, iso3: "USA", flag: "🇺🇸", priority: 10 },
|
||||
|
||||
// Germany
|
||||
{ regex: /\b(DE|DEU|GER(MANY)?|FRANKFURT|BERLIN|MUNICH|MÜNCHEN)\b/i, iso3: "DEU", flag: "🇩🇪", priority: 20 },
|
||||
|
||||
// Netherlands
|
||||
{ regex: /\b(NL|NLD|NETHERLANDS|HOLLAND|AMSTERDAM)\b/i, iso3: "NLD", flag: "🇳🇱", priority: 30 },
|
||||
|
||||
// UK
|
||||
{ regex: /\b(UK|GB|GBR|UNITED\s*KINGDOM|LONDON|MANCHESTER)\b/i, iso3: "GBR", flag: "🇬🇧", priority: 40 },
|
||||
|
||||
// France
|
||||
{ regex: /\b(FR|FRA|FRANCE|PARIS|MARSEILLE)\b/i, iso3: "FRA", flag: "🇫🇷", priority: 50 },
|
||||
|
||||
// Poland
|
||||
{ regex: /\b(PL|POL|POLAND|WARSAW|WARSZAWA)\b/i, iso3: "POL", flag: "🇵🇱", priority: 60 },
|
||||
|
||||
// Finland
|
||||
{ regex: /\b(FI|FIN|FINLAND|HELSINKI)\b/i, iso3: "FIN", flag: "🇫🇮", priority: 70 },
|
||||
|
||||
// Sweden
|
||||
{ regex: /\b(SE|SWE|SWEDEN|STOCKHOLM)\b/i, iso3: "SWE", flag: "🇸🇪", priority: 80 },
|
||||
|
||||
// Norway
|
||||
{ regex: /\b(NO|NOR|NORWAY|OSLO)\b/i, iso3: "NOR", flag: "🇳🇴", priority: 90 },
|
||||
|
||||
// Switzerland
|
||||
{ regex: /\b(CH|CHE|SWITZERLAND|ZURICH|GENEVA)\b/i, iso3: "CHE", flag: "🇨🇭", priority: 100 },
|
||||
|
||||
// Estonia / Latvia / Lithuania
|
||||
{ regex: /\b(EE|EST|ESTONIA|TALLINN)\b/i, iso3: "EST", flag: "🇪🇪", priority: 110 },
|
||||
{ regex: /\b(LV|LVA|LATVIA|RIGA)\b/i, iso3: "LVA", flag: "🇱🇻", priority: 120 },
|
||||
{ regex: /\b(LT|LTU|LITHUANIA|VILNIUS)\b/i, iso3: "LTU", flag: "🇱🇹", priority: 130 },
|
||||
|
||||
// Turkey
|
||||
{ regex: /\b(TR|TUR|TURKEY|ISTANBUL)\b/i, iso3: "TUR", flag: "🇹🇷", priority: 140 },
|
||||
|
||||
// Singapore / Japan / Korea / Hong Kong
|
||||
{ regex: /\b(SG|SGP|SINGAPORE)\b/i, iso3: "SGP", flag: "🇸🇬", priority: 200 },
|
||||
{ regex: /\b(JP|JPN|JAPAN|TOKYO|OSAKA)\b/i, iso3: "JPN", flag: "🇯🇵", priority: 210 },
|
||||
{ regex: /\b(KR|KOR|KOREA|SEOUL)\b/i, iso3: "KOR", flag: "🇰🇷", priority: 220 },
|
||||
{ regex: /\b(HK|HKG|HONG\s*KONG)\b/i, iso3: "HKG", flag: "🇭🇰", priority: 230 },
|
||||
];
|
||||
|
||||
// 5) GeoIP mapping (ISO2 -> ISO3 + flag) used only if utils.geoip.lookup(ip) returns ISO2
|
||||
const ISO2_TO_ISO3 = {
|
||||
US: { iso3: "USA", flag: "🇺🇸" },
|
||||
DE: { iso3: "DEU", flag: "🇩🇪" },
|
||||
NL: { iso3: "NLD", flag: "🇳🇱" },
|
||||
GB: { iso3: "GBR", flag: "🇬🇧" },
|
||||
FR: { iso3: "FRA", flag: "🇫🇷" },
|
||||
PL: { iso3: "POL", flag: "🇵🇱" },
|
||||
FI: { iso3: "FIN", flag: "🇫🇮" },
|
||||
SE: { iso3: "SWE", flag: "🇸🇪" },
|
||||
NO: { iso3: "NOR", flag: "🇳🇴" },
|
||||
CH: { iso3: "CHE", flag: "🇨🇭" },
|
||||
EE: { iso3: "EST", flag: "🇪🇪" },
|
||||
LV: { iso3: "LVA", flag: "🇱🇻" },
|
||||
LT: { iso3: "LTU", flag: "🇱🇹" },
|
||||
TR: { iso3: "TUR", flag: "🇹🇷" },
|
||||
SG: { iso3: "SGP", flag: "🇸🇬" },
|
||||
JP: { iso3: "JPN", flag: "🇯🇵" },
|
||||
KR: { iso3: "KOR", flag: "🇰🇷" },
|
||||
HK: { iso3: "HKG", flag: "🇭🇰" },
|
||||
};
|
||||
|
||||
// 6) Protocol icons (based on proxy.type)
|
||||
const PROTOCOL_ICONS = {
|
||||
ss: "🔒",
|
||||
ssr: "☂️",
|
||||
vmess: "🪁",
|
||||
vless: "🌌",
|
||||
trojan: "🐎",
|
||||
http: "🌐",
|
||||
socks5: "🧦",
|
||||
snell: "🐌",
|
||||
wireguard: "🐲",
|
||||
hysteria: "🤪",
|
||||
hysteria2: "⚡",
|
||||
tuic: "🚅"
|
||||
};
|
||||
|
||||
///////////////////////
|
||||
// HELPERS
|
||||
///////////////////////
|
||||
|
||||
function isIPv4(str) {
|
||||
if (typeof str !== "string") return false;
|
||||
const m = str.match(/^(\d{1,3})(\.\d{1,3}){3}$/);
|
||||
if (!m) return false;
|
||||
return str.split(".").every(oct => {
|
||||
const n = Number(oct);
|
||||
return n >= 0 && n <= 255 && String(n) === oct.replace(/^0+(\d)/, "$1"); // avoids "001" weirdness
|
||||
});
|
||||
}
|
||||
|
||||
function uniq(arr) {
|
||||
return [...new Set(arr.filter(Boolean))];
|
||||
}
|
||||
|
||||
function sanitizeBaseName(name) {
|
||||
let s = String(name || "");
|
||||
|
||||
// Remove noise patterns
|
||||
for (const re of NOISE_PATTERNS) s = s.replace(re, " ");
|
||||
|
||||
// Collapse spaces
|
||||
s = s.replace(/\s+/g, " ").trim();
|
||||
return s;
|
||||
}
|
||||
|
||||
function extractIconTagsAndStrip(name) {
|
||||
let s = String(name || "");
|
||||
const tags = [];
|
||||
|
||||
for (const r of ICON_RULES) {
|
||||
if (r.regex.test(s)) {
|
||||
tags.push(r.icon);
|
||||
s = s.replace(r.regex, " ");
|
||||
}
|
||||
}
|
||||
|
||||
for (const t of NAME_NETWORK_TAGS) {
|
||||
if (t.regex.test(s)) {
|
||||
tags.push(t.tag);
|
||||
s = s.replace(t.regex, " ");
|
||||
}
|
||||
}
|
||||
|
||||
return { stripped: s.replace(/\s+/g, " ").trim(), tags: uniq(tags) };
|
||||
}
|
||||
|
||||
function detectCountryByName(name) {
|
||||
const n = String(name || "");
|
||||
// Order by priority, then first match wins
|
||||
const sorted = COUNTRY_RULES.slice().sort((a, b) => a.priority - b.priority);
|
||||
for (const c of sorted) {
|
||||
if (c.regex.test(n)) return { iso3: c.iso3, flag: c.flag, priority: c.priority, source: "name" };
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function detectCountryByGeoIP(server, utils) {
|
||||
if (!isIPv4(server)) return null;
|
||||
if (!utils || !utils.geoip || typeof utils.geoip.lookup !== "function") return null;
|
||||
|
||||
try {
|
||||
const geo = utils.geoip.lookup(server);
|
||||
const iso2 = geo && (geo.country || geo.country_code || geo.iso_code);
|
||||
if (!iso2 || typeof iso2 !== "string") return null;
|
||||
|
||||
const key = iso2.toUpperCase();
|
||||
const mapped = ISO2_TO_ISO3[key];
|
||||
if (mapped) return { iso3: mapped.iso3, flag: mapped.flag, priority: 900, source: "geoip" };
|
||||
|
||||
// Unknown ISO2: keep something sane
|
||||
return { iso3: key, flag: "🏳️", priority: 950, source: "geoip" };
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function pad2(n) {
|
||||
const x = Number(n);
|
||||
return x < 10 ? `0${x}` : String(x);
|
||||
}
|
||||
|
||||
function safeStr(v) {
|
||||
return (v === undefined || v === null) ? "" : String(v);
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
// OPERATOR
|
||||
///////////////////////
|
||||
|
||||
function operator(proxies, targetPlatform, utils) {
|
||||
// Sub-Store sometimes passes utils as global $utils; sometimes as 3rd arg; sometimes not at all.
|
||||
// We'll accept any of them without whining.
|
||||
const U = utils || (typeof $utils !== "undefined" ? $utils : null);
|
||||
|
||||
const buckets = Object.create(null);
|
||||
|
||||
for (const proxy of proxies) {
|
||||
const originalName = safeStr(proxy && proxy.name);
|
||||
|
||||
// 1) Extract tags (icons) from ORIGINAL name, then strip those keywords out
|
||||
const iconStage = extractIconTagsAndStrip(originalName);
|
||||
|
||||
// 2) Sanitize remaining base name (remove marketing trash, brackets, etc.)
|
||||
const cleanBase = sanitizeBaseName(iconStage.stripped);
|
||||
|
||||
// 3) Detect country (name first, then GeoIP)
|
||||
const byName = detectCountryByName(originalName);
|
||||
const byGeo = detectCountryByGeoIP(proxy && proxy.server, U);
|
||||
const country = byName || byGeo || { iso3: "UNK", flag: "🏴☠️", priority: 9999, source: "fallback" };
|
||||
|
||||
// 4) Protocol icon (based on type)
|
||||
const proto = PROTOCOL_ICONS[(proxy && proxy.type) || ""] || "🔌";
|
||||
|
||||
// 5) Network/type/port tag (from proxy fields)
|
||||
const net = safeStr(proxy && proxy.network) || "net?";
|
||||
const typ = safeStr(proxy && proxy.type) || "type?";
|
||||
const port = safeStr(proxy && proxy.port) || "port?";
|
||||
const metaTag = `▫️${net}/${typ}/${port}`;
|
||||
|
||||
// 6) Prepare bucket key
|
||||
const key = country.iso3;
|
||||
|
||||
if (!buckets[key]) {
|
||||
buckets[key] = {
|
||||
country,
|
||||
list: []
|
||||
};
|
||||
}
|
||||
|
||||
// Keep meta used for sorting and final formatting
|
||||
buckets[key].list.push({
|
||||
proxy,
|
||||
_meta: {
|
||||
cleanBase,
|
||||
iconTags: iconStage.tags,
|
||||
proto,
|
||||
metaTag
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 7) Sort buckets by priority
|
||||
const bucketKeys = Object.keys(buckets).sort((a, b) => {
|
||||
return (buckets[a].country.priority || 9999) - (buckets[b].country.priority || 9999);
|
||||
});
|
||||
|
||||
// 8) Sort inside each country bucket and rename with per-country numbering
|
||||
const result = [];
|
||||
|
||||
for (const key of bucketKeys) {
|
||||
const group = buckets[key];
|
||||
|
||||
group.list.sort((A, B) => {
|
||||
// Tags do not affect numbering: sort only by sanitized base + server:port as tie-breaker
|
||||
const an = A._meta.cleanBase.toLowerCase();
|
||||
const bn = B._meta.cleanBase.toLowerCase();
|
||||
if (an !== bn) return an.localeCompare(bn);
|
||||
|
||||
const as = `${safeStr(A.proxy.server)}:${safeStr(A.proxy.port)}`;
|
||||
const bs = `${safeStr(B.proxy.server)}:${safeStr(B.proxy.port)}`;
|
||||
return as.localeCompare(bs);
|
||||
});
|
||||
|
||||
for (let i = 0; i < group.list.length; i++) {
|
||||
const item = group.list[i];
|
||||
const p = item.proxy;
|
||||
const num = pad2(i + 1);
|
||||
|
||||
const tagStr = item._meta.iconTags.length ? ` ${item._meta.iconTags.join(" ")}` : "";
|
||||
// Final name format:
|
||||
// 🇩🇪 DEU-03 🌌 📺 ❻ ▫️ws/vless/443
|
||||
p.name = `${group.country.flag} ${group.country.iso3}-${num} ${item._meta.proto}${tagStr} ${item._meta.metaTag}`.replace(/\s+/g, " ").trim();
|
||||
|
||||
result.push(p);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
499
config-sub-converter/scripts/external-proxies-sanitizer.js
Normal file
@@ -0,0 +1,499 @@
|
||||
/**
|
||||
* Sub-Store operator: Normalize + tag + country detect + per-country numbering
|
||||
*
|
||||
* Output format (default):
|
||||
* 🇺🇸 USA-01 🔒 📺 ❻ ▫️ws/vless/443
|
||||
*
|
||||
* Notes:
|
||||
* - Numbering is computed per-country AFTER grouping the full list.
|
||||
* - Tags (icons) do NOT affect numbering order.
|
||||
* - GeoIP is optional and only used when server is an IP and utils.geoip.lookup exists.
|
||||
*/
|
||||
|
||||
///////////////////////
|
||||
// CONFIG (EDIT ME)
|
||||
///////////////////////
|
||||
|
||||
const DEBUG_APPEND_ORIGINAL_NAME = false; // set true to enable debug mode (appends original name as comment)
|
||||
|
||||
// 1) Remove these patterns (marketing noise, brackets, separators, etc.)
|
||||
const NOISE_PATTERNS = [
|
||||
/\[[^\]]*]/g, // [ ... ]
|
||||
/\([^)]*\)/g, // ( ... )
|
||||
/\{[^}]*}/g, // { ... }
|
||||
/\btraffic\b/gi,
|
||||
/\bfree\b/gi,
|
||||
/\bwebsite\b/gi,
|
||||
/\bexpire\b/gi,
|
||||
/\blow\s*ping\b/gi,
|
||||
/\bai\s*studio\b/gi,
|
||||
/\bno\s*p2p\b/gi,
|
||||
/\b10\s*gbit\b/gi,
|
||||
/\bvless\b/gi,
|
||||
/\bvmess\b/gi,
|
||||
/\bssr?\b/gi,
|
||||
/\btrojan\b/gi,
|
||||
/\bhysteria2?\b/gi,
|
||||
/\btuic\b/gi,
|
||||
/[|]/g,
|
||||
/[_]+/g,
|
||||
/[-]{2,}/g
|
||||
];
|
||||
|
||||
// 2) Keyword -> icon tags (if found in original name, icon is added; the keyword is removed from base name)
|
||||
// 🇫🇿 🇺🇳 🇩🇻 🇻🇿 🇵🇷 🇦🇿 🇬🇺🇦🇷🇩
|
||||
const ICON_RULES = [
|
||||
{ regex: /TEST/gi, icon: "🧪" },
|
||||
{ regex: uWordBoundaryGroup("Low Ping"), icon: "⚡️" },
|
||||
{ regex: uWordBoundaryGroup("10 Gbit"), icon: "🛤️" },
|
||||
{ regex: uWordBoundaryGroup("YT|Russia|Россия"), icon: "📺" },
|
||||
{ regex: uWordBoundaryGroup("IPv6"), icon: "🎱" },
|
||||
{ regex: uWordBoundaryGroup("Gemini|AI Studio"), icon: "🤖" },
|
||||
{ regex: uWordBoundaryGroup("Torrent|P2P|P2P-Torrents"), icon: "🧲" },
|
||||
|
||||
{ regex: uWordBoundaryGroup("local"), icon: "🚪" },
|
||||
{ regex: uWordBoundaryGroup("neighbourhood"), icon: "🫂" },
|
||||
|
||||
{ regex: uWordBoundaryGroup("xfizz|x-fizz"), icon: "🇫" },
|
||||
{ regex: uWordBoundaryGroup("unicade|uncd"), icon: "🇺" },
|
||||
{ regex: uWordBoundaryGroup("vzdh|vezdehod"), icon: "🇻" },
|
||||
{ regex: uWordBoundaryGroup("dvpn|d-vpn"), icon: "🇩" },
|
||||
{ regex: uWordBoundaryGroup("proton"), icon: "🇵" },
|
||||
{ regex: uWordBoundaryGroup("amnezia"), icon: "🇦" },
|
||||
{ regex: uWordBoundaryGroup("adguard"), icon: "🇬" },
|
||||
];
|
||||
|
||||
// 3) Optional “network” tag rules based on NAME text (not $server.network)
|
||||
// (Useful if providers shove "BGP/IPLC" into the node name)
|
||||
const NAME_NETWORK_TAGS = [
|
||||
{ regex: uWordBoundaryGroup("IPLC"), tag: "🛰️" },
|
||||
{ regex: uWordBoundaryGroup("BGP"), tag: "🧭" },
|
||||
{ regex: uWordBoundaryGroup("Anycast"), tag: "🌍" }
|
||||
];
|
||||
|
||||
// 4) Country detection rules by NAME (regex). First match wins (priority = lower is earlier)
|
||||
const COUNTRY_RULES = [
|
||||
{ regex: uWordBoundaryGroup("(Аргентина|Argentina|AR|ARG|ARGENTINA|BUENOS\s*AIRES)"), iso3: "ARG", flag: "🇦🇷", priority: 100 }, // Argentina
|
||||
{ regex: uWordBoundaryGroup("(Australia|AU|AUS|AUSTRALIA|SYDNEY)"), iso3: "AUS", flag: "🇦🇺", priority: 110 }, // Australia
|
||||
{ regex: uWordBoundaryGroup("(Austria|AT|AUT|AUSTRIA|VIENNA)"), iso3: "AUT", flag: "🇦🇹", priority: 120 }, // Austria
|
||||
{ regex: uWordBoundaryGroup("(Беларусь|Белоруссия|BELARUS)"), iso3: "BLR", flag: "🇧🇾", priority: 130 }, // Belarus
|
||||
{ regex: uWordBoundaryGroup("(Brazil|BR|BRA|BRAZIL|SAO\s*PAULO)"), iso3: "BRA", flag: "🇧🇷", priority: 140 }, // Brazil
|
||||
{ regex: uWordBoundaryGroup("(Bulgaria|BG|BGR|BULGARIA|SOFIA)"), iso3: "BGR", flag: "🇧🇬", priority: 150 }, // Bulgaria
|
||||
{ regex: uWordBoundaryGroup("(Canada|CA|CAN|CANADA|TORONTO)"), iso3: "CAN", flag: "🇨🇦", priority: 160 }, // Canada
|
||||
{ regex: uWordBoundaryGroup("(КИТАЙ|China)"), iso3: "CHN", flag: "🇨🇳", priority: 170 }, // China
|
||||
{ regex: uWordBoundaryGroup("(Czech\s*Republic|CZ|CZE|CZECH|PRAGUE)"), iso3: "CZE", flag: "🇨🇿", priority: 180 }, // Czech Republic
|
||||
{ regex: uWordBoundaryGroup("(Denmark|DK|DNK|DENMARK|COPENHAGEN)"), iso3: "DNK", flag: "🇩🇰", priority: 190 }, // Denmark
|
||||
{ regex: uWordBoundaryGroup("(Egypt|EG|EGY|EGYPT|CAIRO)"), iso3: "EGY", flag: "🇪🇬", priority: 200 }, // Egypt
|
||||
{ regex: uWordBoundaryGroup("(Эстония|EE|EST|ESTONIA|TALLINN)"), iso3: "EST", flag: "🇪🇪", priority: 210 }, // Estonia
|
||||
{ regex: uWordBoundaryGroup("(Финляндия|FI|FIN|FINLAND|HELSINKI)"), iso3: "FIN", flag: "🇫🇮", priority: 220 }, // Finland
|
||||
{ regex: uWordBoundaryGroup("(Франция|FR|FRA|FRANCE|PARIS|MARSEILLE)"), iso3: "FRA", flag: "🇫🇷", priority: 230 }, // France
|
||||
{ regex: uWordBoundaryGroup("(Georgia|GE|GEO|GEORGIA|TBILISI)"), iso3: "GEO", flag: "🇬🇪", priority: 240 }, // Georgia
|
||||
{ regex: uWordBoundaryGroup("(Германия|DE|DEU|GER(MANY)?|FRANKFURT|BERLIN|MUNICH)"), iso3: "DEU", flag: "🇩🇪", priority: 250 }, // Germany
|
||||
{ regex: uWordBoundaryGroup("(Гонконг|HK|HKG|HONG\s*KONG)"), iso3: "HKG", flag: "🇭🇰", priority: 260 }, // Hong Kong
|
||||
{ regex: uWordBoundaryGroup("(India|IN|IND|INDIA|MUMBAI)"), iso3: "IND", flag: "🇮🇳", priority: 270 }, // India
|
||||
{ regex: uWordBoundaryGroup("(Ireland|IE|IRL|IRELAND|DUBLIN)"), iso3: "IRL", flag: "🇮🇪", priority: 280 }, // Ireland
|
||||
{ regex: uWordBoundaryGroup("(Israel|IL|ISR|ISRAEL|TEL\s*AVIV)"), iso3: "ISR", flag: "🇮🇱", priority: 290 }, // Israel
|
||||
{ regex: uWordBoundaryGroup("(Italy|IT|ITA|ITALY|ROME)"), iso3: "ITA", flag: "🇮🇹", priority: 300 }, // Italy
|
||||
{ regex: uWordBoundaryGroup("(Япония|JP|JPN|JAPAN|TOKYO|OSAKA)"), iso3: "JPN", flag: "🇯🇵", priority: 310 }, // Japan
|
||||
{ regex: uWordBoundaryGroup("(Kazakhstan|KZ|KAZ|KAZAKHSTAN|ALMATY)"), iso3: "KAZ", flag: "🇰🇿", priority: 320 }, // Kazakhstan
|
||||
{ regex: uWordBoundaryGroup("(Латвия|LV|LVA|LATVIA|RIGA)"), iso3: "LVA", flag: "🇱🇻", priority: 330 }, // Latvia
|
||||
{ regex: uWordBoundaryGroup("(Литва|LT|LTU|LITHUANIA|VILNIUS)"), iso3: "LTU", flag: "🇱🇹", priority: 340 }, // Lithuania
|
||||
{ regex: uWordBoundaryGroup("(Malaysia|MY|MYS|MALAYSIA|KUALA\s*LUMPUR)"), iso3: "MYS", flag: "🇲🇾", priority: 350 }, // Malaysia
|
||||
{ regex: uWordBoundaryGroup("(Moldova|MD|MDA|MOLDOVA|CHISINAU)"), iso3: "MDA", flag: "🇲🇩", priority: 360 }, // Moldova
|
||||
{ regex: uWordBoundaryGroup("(Нидерланды|NL|NLD|NETHERLANDS|HOLLAND|AMSTERDAM)"), iso3: "NLD", flag: "🇳🇱", priority: 370 }, // Netherlands
|
||||
{ regex: uWordBoundaryGroup("(Nigeria|NG|NGA|NIGERIA|LAGOS)"), iso3: "NGA", flag: "🇳🇬", priority: 380 }, // Nigeria
|
||||
{ regex: uWordBoundaryGroup("(Норвегия|NO|NOR|NORWAY|OSLO)"), iso3: "NOR", flag: "🇳🇴", priority: 390 }, // Norway
|
||||
{ regex: uWordBoundaryGroup("(Philippines|PH|PHL|PHILIPPINES|MANILA)"), iso3: "PHL", flag: "🇵🇭", priority: 400 }, // Philippines
|
||||
{ regex: uWordBoundaryGroup("(Польша|PL|POL|POLAND|WARSAW|WARSZAWA)"), iso3: "POL", flag: "🇵🇱", priority: 410 }, // Poland
|
||||
{ regex: uWordBoundaryGroup("(Portugal|PT|PRT|PORTUGAL|LISBON)"), iso3: "PRT", flag: "🇵🇹", priority: 420 }, // Portugal
|
||||
{ regex: uWordBoundaryGroup("(Romania|RO|ROU|ROMANIA|BUCHAREST)"), iso3: "ROU", flag: "🇷🇴", priority: 430 }, // Romania
|
||||
{ regex: uWordBoundaryGroup("(Russia|RU|RUS|RUSSIA|MOSCOW)"), iso3: "RUS", flag: "🇷🇺", priority: 440 }, // Russia
|
||||
{ regex: uWordBoundaryGroup("(Сингапур|SG|SGP|SINGAPORE)"), iso3: "SGP", flag: "🇸🇬", priority: 200 }, // Singapore
|
||||
{ regex: uWordBoundaryGroup("(South Korea|Корея|KR|KOR|KOREA|SEOUL)"), iso3: "KOR", flag: "🇰🇷", priority: 450 }, // South Korea
|
||||
{ regex: uWordBoundaryGroup("(Spain|ES|ESP|SPAIN|MADRID)"), iso3: "ESP", flag: "🇪🇸", priority: 460 }, // Spain
|
||||
{ regex: uWordBoundaryGroup("(Швеция|SE|SWE|SWEDEN|STOCKHOLM)"), iso3: "SWE", flag: "🇸🇪", priority: 470 }, // Sweden
|
||||
{ regex: uWordBoundaryGroup("(Швейцария|CH|CHE|SWITZERLAND|Switzerl)"), iso3: "CHE", flag: "🇨🇭", priority: 480 }, // Switzerland
|
||||
{ regex: uWordBoundaryGroup("(Taiwan|TW|TWN|TAIWAN|TAIPEI)"), iso3: "TWN", flag: "🇹🇼", priority: 490 }, // Taiwan
|
||||
{ regex: uWordBoundaryGroup("(Thailand|TH|THA|THAILAND|BANGKOK)"), iso3: "THA", flag: "🇹🇭", priority: 500 }, // Thailand
|
||||
{ regex: uWordBoundaryGroup("(Турция|TR|TUR|TURKEY|ISTANBUL)"), iso3: "TUR", flag: "🇹🇷", priority: 510 }, // Turkey
|
||||
{ regex: uWordBoundaryGroup("(UAE|United\s*Arab\s*Emirates|AE|ARE|DUBAI)"), iso3: "ARE", flag: "🇦🇪", priority: 520 }, // UAE
|
||||
{ regex: uWordBoundaryGroup("(Великобритания|Англия|England|UK|GB|GBR|UNITED\s*KINGDOM)"), iso3: "GBR", flag: "🇬🇧", priority: 530 }, // UK
|
||||
{ regex: uWordBoundaryGroup("(США|USA|US|UNITED\s*STATES|AMERICA|NEW\s*YORK|NYC)"), iso3: "USA", flag: "🇺🇸", priority: 540 }, // USA
|
||||
{ regex: uWordBoundaryGroup("(Vietnam|VN|VNM|VIETNAM|HANOI)"), iso3: "VNM", flag: "🇻🇳", priority: 500 } // Vietnam
|
||||
];
|
||||
|
||||
// 5) GeoIP mapping (ISO2 -> ISO3 + flag) used only if utils.geoip.lookup(ip) returns ISO2
|
||||
const ISO2_TO_ISO3 = {
|
||||
US: { iso3: "USA", flag: "🇺🇸" },
|
||||
DE: { iso3: "DEU", flag: "🇩🇪" },
|
||||
NL: { iso3: "NLD", flag: "🇳🇱" },
|
||||
GB: { iso3: "GBR", flag: "🇬🇧" },
|
||||
FR: { iso3: "FRA", flag: "🇫🇷" },
|
||||
PL: { iso3: "POL", flag: "🇵🇱" },
|
||||
FI: { iso3: "FIN", flag: "🇫🇮" },
|
||||
SE: { iso3: "SWE", flag: "🇸🇪" },
|
||||
NO: { iso3: "NOR", flag: "🇳🇴" },
|
||||
CH: { iso3: "CHE", flag: "🇨🇭" },
|
||||
EE: { iso3: "EST", flag: "🇪🇪" },
|
||||
LV: { iso3: "LVA", flag: "🇱🇻" },
|
||||
LT: { iso3: "LTU", flag: "🇱🇹" },
|
||||
TR: { iso3: "TUR", flag: "🇹🇷" },
|
||||
SG: { iso3: "SGP", flag: "🇸🇬" },
|
||||
JP: { iso3: "JPN", flag: "🇯🇵" },
|
||||
KR: { iso3: "KOR", flag: "🇰🇷" },
|
||||
HK: { iso3: "HKG", flag: "🇭🇰" },
|
||||
};
|
||||
|
||||
// 6) Protocol icons (based on proxy.type)
|
||||
const PROTOCOL_ICONS = {
|
||||
ss: "",
|
||||
ssr: "",
|
||||
vmess: "",
|
||||
vless: "",
|
||||
trojan: "",
|
||||
http: "",
|
||||
socks5: "",
|
||||
snell: "",
|
||||
wireguard: "",
|
||||
hysteria: "",
|
||||
hysteria2: "",
|
||||
tuic: ""
|
||||
};
|
||||
|
||||
const STANDARD_PORTS_BY_TYPE = {
|
||||
wireguard: new Set(["51820"]),
|
||||
vless: new Set(["443"]),
|
||||
trojan: new Set(["443"]),
|
||||
ss: new Set(["443"]),
|
||||
};
|
||||
|
||||
const PROTOCOL_ICON_DEFAULT = ""; // fallback icon if type is unknown
|
||||
|
||||
|
||||
const METATAG_RULES = {
|
||||
// Keys are "network/type" OR "/type" (network-agnostic) OR "network/" (type-agnostic)
|
||||
// Matching priority: exact "network/type" -> "/type" -> "network/" -> default
|
||||
// 🅶🆃 🆃🆂 🆃🆅 🆆🆅 🆇🆅 🆆🅶 🅽🅸
|
||||
pairMap: {
|
||||
"grpc/trojan": "🅶🆃",
|
||||
"tcp/ss": "🆃🆂",
|
||||
"tcp/vless": "🆃🆅",
|
||||
"ws/vless": "🆆🆅",
|
||||
"xhttp/vless": "🆇🆅",
|
||||
|
||||
"/wireguard": "🆆🅶",
|
||||
"/naive": "🅽🅸",
|
||||
},
|
||||
|
||||
defaultPair: "▫️", // fallback if nothing matches
|
||||
includeFallbackText: false, // if true, append "(net/type)" when defaultPair is used
|
||||
};
|
||||
|
||||
// Port formatting: superscript digits with left padding to 4 chars
|
||||
// 𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗
|
||||
const PORT_FORMAT = {
|
||||
padLeftTo: 3,
|
||||
padChar: "0",
|
||||
fancy: {
|
||||
"0": "𝟎", "1": "𝟏", "2": "𝟐", "3": "𝟑", "4": "𝟒", "5": "𝟓", "6": "𝟔", "7": "𝟕", "8": "𝟖", "9": "𝟗",
|
||||
},
|
||||
};
|
||||
|
||||
///////////////////////
|
||||
// HELPERS
|
||||
///////////////////////
|
||||
|
||||
function normalizeToken(s) {
|
||||
return String(s || "").trim().toLowerCase();
|
||||
}
|
||||
|
||||
function uWordBoundaryGroup(inner) {
|
||||
// Match if surrounded by non-letter/non-digit (Unicode-aware)
|
||||
// We don't use lookbehind for max compatibility.
|
||||
return new RegExp(`(?:^|[^\\p{L}\\p{N}])(?:${inner})(?=$|[^\\p{L}\\p{N}])`, "iu");
|
||||
}
|
||||
|
||||
function portToFancy(port, type) {
|
||||
let p = String(port ?? "").trim();
|
||||
p = p.replace(/[^\d]/g, "");
|
||||
if (!p) return "";
|
||||
|
||||
if (STANDARD_PORTS_BY_TYPE[type]?.has(p)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// left pad to fixed width
|
||||
if (PORT_FORMAT.padLeftTo && p.length < PORT_FORMAT.padLeftTo) {
|
||||
p = p.padStart(PORT_FORMAT.padLeftTo, PORT_FORMAT.padChar);
|
||||
}
|
||||
|
||||
// map digits
|
||||
let out = "";
|
||||
for (const ch of p) out += PORT_FORMAT.fancy[ch] ?? ch;
|
||||
return out;
|
||||
}
|
||||
|
||||
function buildMetaTag(proxy) {
|
||||
const net = safeStr(proxy && proxy.network) || "";
|
||||
const typ = safeStr(proxy && proxy.type) || "";
|
||||
const port = safeStr(proxy && proxy.port);
|
||||
|
||||
const { icon, matched } = metaPairIcon(net, typ);
|
||||
const portSup = portToFancy(port, typ);
|
||||
|
||||
if (icon === METATAG_RULES.defaultPair && METATAG_RULES.includeFallbackText) {
|
||||
return `${icon}${portSup}(${normalizeToken(net)}/${normalizeToken(typ)})`;
|
||||
}
|
||||
|
||||
return `${icon}${portSup}`;
|
||||
}
|
||||
|
||||
function metaPairIcon(network, type) {
|
||||
const net = normalizeToken(network);
|
||||
const typ = normalizeToken(type);
|
||||
|
||||
const exact = `${net}/${typ}`;
|
||||
const typeOnly = `/${typ}`;
|
||||
const netOnly = `${net}/`;
|
||||
|
||||
const m = METATAG_RULES.pairMap;
|
||||
|
||||
if (m[exact]) return { icon: m[exact], matched: exact };
|
||||
if (m[typeOnly]) return { icon: m[typeOnly], matched: typeOnly };
|
||||
if (m[netOnly]) return { icon: m[netOnly], matched: netOnly };
|
||||
|
||||
return { icon: METATAG_RULES.defaultPair, matched: null };
|
||||
}
|
||||
|
||||
function isIPv4(str) {
|
||||
if (typeof str !== "string") return false;
|
||||
const m = str.match(/^(\d{1,3})(\.\d{1,3}){3}$/);
|
||||
if (!m) return false;
|
||||
return str.split(".").every(oct => {
|
||||
const n = Number(oct);
|
||||
return n >= 0 && n <= 255 && String(n) === oct.replace(/^0+(\d)/, "$1"); // avoids "001" weirdness
|
||||
});
|
||||
}
|
||||
|
||||
function uniq(arr) {
|
||||
return [...new Set(arr.filter(Boolean))];
|
||||
}
|
||||
|
||||
function sanitizeBaseName(name) {
|
||||
let s = String(name || "");
|
||||
|
||||
// Remove noise patterns
|
||||
for (const re of NOISE_PATTERNS) s = s.replace(re, " ");
|
||||
|
||||
// Collapse spaces
|
||||
s = s.replace(/\s+/g, " ").trim();
|
||||
return s;
|
||||
}
|
||||
|
||||
function extractIconTagsAndStrip(name) {
|
||||
let s = String(name || "");
|
||||
const tags = [];
|
||||
|
||||
for (const r of ICON_RULES) {
|
||||
if (r.regex.test(s)) {
|
||||
tags.push(r.icon);
|
||||
s = s.replace(r.regex, " ");
|
||||
}
|
||||
}
|
||||
|
||||
for (const t of NAME_NETWORK_TAGS) {
|
||||
if (t.regex.test(s)) {
|
||||
tags.push(t.tag);
|
||||
s = s.replace(t.regex, " ");
|
||||
}
|
||||
}
|
||||
|
||||
return { stripped: s.replace(/\s+/g, " ").trim(), tags: uniq(tags) };
|
||||
}
|
||||
|
||||
function detectCountryByName(name) {
|
||||
const n = String(name || "");
|
||||
// Order by priority, then first match wins
|
||||
|
||||
// Fast path: flag emoji
|
||||
if (n.includes("🇦🇪")) return { iso3: "ARE", flag: "🇦🇪", priority: 1, source: "flag" };
|
||||
if (n.includes("🇦🇷")) return { iso3: "ARG", flag: "🇦🇷", priority: 2, source: "flag" };
|
||||
if (n.includes("🇦🇹")) return { iso3: "AUT", flag: "🇦🇹", priority: 3, source: "flag" };
|
||||
if (n.includes("🇦🇺")) return { iso3: "AUS", flag: "🇦🇺", priority: 4, source: "flag" };
|
||||
if (n.includes("🇧🇬")) return { iso3: "BGR", flag: "🇧🇬", priority: 5, source: "flag" };
|
||||
if (n.includes("🇧🇾")) return { iso3: "BLR", flag: "🇧🇾", priority: 6, source: "flag" };
|
||||
if (n.includes("🇧🇷")) return { iso3: "BRA", flag: "🇧🇷", priority: 7, source: "flag" };
|
||||
if (n.includes("🇨🇦")) return { iso3: "CAN", flag: "🇨🇦", priority: 8, source: "flag" };
|
||||
if (n.includes("🇨🇭")) return { iso3: "CHE", flag: "🇨🇭", priority: 9, source: "flag" };
|
||||
if (n.includes("🇨🇳")) return { iso3: "CHN", flag: "🇨🇳", priority: 10, source: "flag" };
|
||||
if (n.includes("🇨🇿")) return { iso3: "CZE", flag: "🇨🇿", priority: 11, source: "flag" };
|
||||
if (n.includes("🇩🇪")) return { iso3: "DEU", flag: "🇩🇪", priority: 12, source: "flag" };
|
||||
if (n.includes("🇩🇰")) return { iso3: "DNK", flag: "🇩🇰", priority: 13, source: "flag" };
|
||||
if (n.includes("🇪🇪")) return { iso3: "EST", flag: "🇪🇪", priority: 14, source: "flag" };
|
||||
if (n.includes("🇪🇬")) return { iso3: "EGY", flag: "🇪🇬", priority: 15, source: "flag" };
|
||||
if (n.includes("🇪🇸")) return { iso3: "ESP", flag: "🇪🇸", priority: 16, source: "flag" };
|
||||
if (n.includes("🇫🇮")) return { iso3: "FIN", flag: "🇫🇮", priority: 17, source: "flag" };
|
||||
if (n.includes("🇫🇷")) return { iso3: "FRA", flag: "🇫🇷", priority: 18, source: "flag" };
|
||||
if (n.includes("🇬🇧")) return { iso3: "GBR", flag: "🇬🇧", priority: 19, source: "flag" };
|
||||
if (n.includes("🇬🇪")) return { iso3: "GEO", flag: "🇬🇪", priority: 20, source: "flag" };
|
||||
if (n.includes("🇭🇰")) return { iso3: "HKG", flag: "🇭🇰", priority: 21, source: "flag" };
|
||||
if (n.includes("🇮🇪")) return { iso3: "IRL", flag: "🇮🇪", priority: 22, source: "flag" };
|
||||
if (n.includes("🇮🇱")) return { iso3: "ISR", flag: "🇮🇱", priority: 23, source: "flag" };
|
||||
if (n.includes("🇮🇳")) return { iso3: "IND", flag: "🇮🇳", priority: 24, source: "flag" };
|
||||
if (n.includes("🇮🇹")) return { iso3: "ITA", flag: "🇮🇹", priority: 25, source: "flag" };
|
||||
if (n.includes("🇯🇵")) return { iso3: "JPN", flag: "🇯🇵", priority: 26, source: "flag" };
|
||||
if (n.includes("🇰🇷")) return { iso3: "KOR", flag: "🇰🇷", priority: 27, source: "flag" };
|
||||
if (n.includes("🇰🇿")) return { iso3: "KAZ", flag: "🇰🇿", priority: 28, source: "flag" };
|
||||
if (n.includes("🇱🇹")) return { iso3: "LTU", flag: "🇱🇹", priority: 29, source: "flag" };
|
||||
if (n.includes("🇱🇻")) return { iso3: "LVA", flag: "🇱🇻", priority: 30, source: "flag" };
|
||||
if (n.includes("🇲🇩")) return { iso3: "MDA", flag: "🇲🇩", priority: 31, source: "flag" };
|
||||
if (n.includes("🇲🇾")) return { iso3: "MYS", flag: "🇲🇾", priority: 32, source: "flag" };
|
||||
if (n.includes("🇳🇬")) return { iso3: "NGA", flag: "🇳🇬", priority: 33, source: "flag" };
|
||||
if (n.includes("🇳🇱")) return { iso3: "NLD", flag: "🇳🇱", priority: 34, source: "flag" };
|
||||
if (n.includes("🇳🇴")) return { iso3: "NOR", flag: "🇳🇴", priority: 35, source: "flag" };
|
||||
if (n.includes("🇵🇭")) return { iso3: "PHL", flag: "🇵🇭", priority: 36, source: "flag" };
|
||||
if (n.includes("🇵🇱")) return { iso3: "POL", flag: "🇵🇱", priority: 37, source: "flag" };
|
||||
if (n.includes("🇵🇹")) return { iso3: "PRT", flag: "🇵🇹", priority: 38, source: "flag" };
|
||||
if (n.includes("🇷🇴")) return { iso3: "ROU", flag: "🇷🇴", priority: 39, source: "flag" };
|
||||
if (n.includes("🇷🇺")) return { iso3: "RUS", flag: "🇷🇺", priority: 40, source: "flag" };
|
||||
if (n.includes("🇸🇪")) return { iso3: "SWE", flag: "🇸🇪", priority: 41, source: "flag" };
|
||||
if (n.includes("🇸🇬")) return { iso3: "SGP", flag: "🇸🇬", priority: 42, source: "flag" };
|
||||
if (n.includes("🇹🇭")) return { iso3: "THA", flag: "🇹🇭", priority: 43, source: "flag" };
|
||||
if (n.includes("🇹🇷")) return { iso3: "TUR", flag: "🇹🇷", priority: 44, source: "flag" };
|
||||
if (n.includes("🇹🇼")) return { iso3: "TWN", flag: "🇹🇼", priority: 45, source: "flag" };
|
||||
if (n.includes("🇺🇸")) return { iso3: "USA", flag: "🇺🇸", priority: 46, source: "flag" };
|
||||
if (n.includes("🇻🇳")) return { iso3: "VNM", flag: "🇻🇳", priority: 47, source: "flag" };
|
||||
|
||||
const sorted = COUNTRY_RULES.slice().sort((a, b) => a.priority - b.priority);
|
||||
for (const c of sorted) {
|
||||
if (c.regex.test(n)) return { iso3: c.iso3, flag: c.flag, priority: c.priority, source: "name" };
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function detectCountryByGeoIP(server, utils) {
|
||||
if (!isIPv4(server)) return null;
|
||||
if (!utils || !utils.geoip || typeof utils.geoip.lookup !== "function") return null;
|
||||
|
||||
try {
|
||||
const geo = utils.geoip.lookup(server);
|
||||
const iso2 = geo && (geo.country || geo.country_code || geo.iso_code);
|
||||
if (!iso2 || typeof iso2 !== "string") return null;
|
||||
|
||||
const key = iso2.toUpperCase();
|
||||
const mapped = ISO2_TO_ISO3[key];
|
||||
if (mapped) return { iso3: mapped.iso3, flag: mapped.flag, priority: 900, source: "geoip" };
|
||||
|
||||
// Unknown ISO2: keep something sane
|
||||
return { iso3: key, flag: "🏳️", priority: 950, source: "geoip" };
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function pad2(n) {
|
||||
const x = Number(n);
|
||||
return x < 10 ? `0${x}` : String(x);
|
||||
}
|
||||
|
||||
function safeStr(v) {
|
||||
return (v === undefined || v === null) ? "" : String(v);
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
// OPERATOR
|
||||
///////////////////////
|
||||
|
||||
function operator(proxies, targetPlatform, utils) {
|
||||
// Sub-Store sometimes passes utils as global $utils; sometimes as 3rd arg; sometimes not at all.
|
||||
// We'll accept any of them without whining.
|
||||
const U = utils || (typeof $utils !== "undefined" ? $utils : null);
|
||||
|
||||
const buckets = Object.create(null);
|
||||
|
||||
for (const proxy of proxies) {
|
||||
const originalName = safeStr(proxy && proxy.name);
|
||||
|
||||
// 1) Extract tags (icons) from ORIGINAL name, then strip those keywords out
|
||||
const iconStage = extractIconTagsAndStrip(originalName);
|
||||
|
||||
// 2) Sanitize remaining base name (remove marketing trash, brackets, etc.)
|
||||
const cleanBase = sanitizeBaseName(iconStage.stripped);
|
||||
|
||||
// 3) Detect country (name first, then GeoIP)
|
||||
const byName = detectCountryByName(originalName);
|
||||
const byGeo = detectCountryByGeoIP(proxy && proxy.server, U);
|
||||
const country = byName || byGeo || { iso3: "UNK", flag: "🏴☠️", priority: 9999, source: "fallback" };
|
||||
|
||||
// 4) Protocol icon (based on type)
|
||||
const proto = PROTOCOL_ICONS[(proxy && proxy.type) || ""] || PROTOCOL_ICON_DEFAULT;
|
||||
|
||||
// 5) Network/type/port tag (from proxy fields)
|
||||
const metaTag = buildMetaTag(proxy);
|
||||
|
||||
// 6) Prepare bucket key
|
||||
const key = country.iso3;
|
||||
|
||||
if (!buckets[key]) {
|
||||
buckets[key] = {
|
||||
country,
|
||||
list: []
|
||||
};
|
||||
}
|
||||
|
||||
// Keep meta used for sorting and final formatting
|
||||
buckets[key].list.push({
|
||||
proxy,
|
||||
_meta: {
|
||||
originalName,
|
||||
cleanBase,
|
||||
iconTags: iconStage.tags,
|
||||
proto,
|
||||
metaTag
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 7) Sort buckets by priority
|
||||
const bucketKeys = Object.keys(buckets).sort((a, b) => {
|
||||
return (buckets[a].country.priority || 9999) - (buckets[b].country.priority || 9999);
|
||||
});
|
||||
|
||||
// 8) Sort inside each country bucket and rename with per-country numbering
|
||||
const result = [];
|
||||
|
||||
for (const key of bucketKeys) {
|
||||
const group = buckets[key];
|
||||
|
||||
group.list.sort((A, B) => {
|
||||
// Tags do not affect numbering: sort only by sanitized base + server:port as tie-breaker
|
||||
const an = A._meta.cleanBase.toLowerCase();
|
||||
const bn = B._meta.cleanBase.toLowerCase();
|
||||
if (an !== bn) return an.localeCompare(bn);
|
||||
|
||||
const as = `${safeStr(A.proxy.server)}:${safeStr(A.proxy.port)}`;
|
||||
const bs = `${safeStr(B.proxy.server)}:${safeStr(B.proxy.port)}`;
|
||||
return as.localeCompare(bs);
|
||||
});
|
||||
|
||||
for (let i = 0; i < group.list.length; i++) {
|
||||
const item = group.list[i];
|
||||
const p = item.proxy;
|
||||
const num = pad2(i + 1);
|
||||
|
||||
const debugSuffix = DEBUG_APPEND_ORIGINAL_NAME
|
||||
? ` ⟦${item._meta.originalName}⟧`
|
||||
: "";
|
||||
|
||||
const tagStr = item._meta.iconTags.length ? ` ${item._meta.iconTags.join(" ")}` : "";
|
||||
|
||||
p.name = `${group.country.flag}${item._meta.metaTag} ${group.country.iso3}-${num} ${item._meta.proto}${tagStr} ${debugSuffix}`
|
||||
.replace(/\s+/g, " ")
|
||||
.trim();
|
||||
|
||||
result.push(p);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
110
config-sub-converter/scripts/test-options.js
Normal file
@@ -0,0 +1,110 @@
|
||||
function safeStringify(obj) {
|
||||
const seen = new WeakSet();
|
||||
return JSON.stringify(
|
||||
obj,
|
||||
(k, v) => {
|
||||
if (typeof v === "object" && v !== null) {
|
||||
if (seen.has(v)) return "[Circular]";
|
||||
seen.add(v);
|
||||
}
|
||||
if (typeof v === "function") return `[Function: ${v.name || "anonymous"}]`;
|
||||
if (typeof v === "bigint") return v.toString();
|
||||
return v;
|
||||
},
|
||||
2
|
||||
);
|
||||
}
|
||||
|
||||
function pickEnvSample() {
|
||||
try {
|
||||
const env = (typeof process !== "undefined" && process && process.env) ? process.env : null;
|
||||
if (!env) return null;
|
||||
|
||||
// only show safe-ish keys, no full dump
|
||||
const keys = Object.keys(env).sort();
|
||||
const filtered = keys.filter(k =>
|
||||
k.toLowerCase().includes("sub") ||
|
||||
k.toLowerCase().includes("store") ||
|
||||
k.toLowerCase().includes("script") ||
|
||||
k.toLowerCase().includes("url") ||
|
||||
k.toLowerCase().includes("option") ||
|
||||
k.toLowerCase().includes("param")
|
||||
);
|
||||
|
||||
const sample = {};
|
||||
for (const k of filtered.slice(0, 50)) sample[k] = env[k];
|
||||
return { keysCount: keys.length, filteredKeys: filtered.slice(0, 100), sample };
|
||||
} catch (e) {
|
||||
return { error: String(e) };
|
||||
}
|
||||
}
|
||||
|
||||
function getGlobalDollarKeys() {
|
||||
try {
|
||||
return Object.getOwnPropertyNames(globalThis).filter(k => k.startsWith("$")).sort();
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
// Safe "typeof" probes: never throws even if variable doesn't exist
|
||||
const probes = {
|
||||
$content: typeof $content,
|
||||
$files: typeof $files,
|
||||
$options: typeof $options,
|
||||
|
||||
$params: typeof $params,
|
||||
$args: typeof $args,
|
||||
$arguments: typeof $arguments,
|
||||
$argument: typeof $argument,
|
||||
$argv: typeof $argv,
|
||||
|
||||
$ctx: typeof $ctx,
|
||||
$context: typeof $context,
|
||||
$request: typeof $request,
|
||||
$req: typeof $req,
|
||||
$url: typeof $url,
|
||||
$scriptUrl: typeof $scriptUrl,
|
||||
$script_url: typeof $script_url,
|
||||
|
||||
ProxyUtils: typeof ProxyUtils,
|
||||
produceArtifact: typeof produceArtifact,
|
||||
|
||||
process: typeof process,
|
||||
};
|
||||
|
||||
const values = {};
|
||||
function maybeSet(name, getter) {
|
||||
try {
|
||||
const v = getter();
|
||||
// Avoid huge outputs
|
||||
if (typeof v === "string") values[name] = v.length > 800 ? v.slice(0, 800) + "…(truncated)" : v;
|
||||
else values[name] = v;
|
||||
} catch (e) {
|
||||
values[name] = { error: String(e) };
|
||||
}
|
||||
}
|
||||
|
||||
maybeSet("$options", () => (typeof $options !== "undefined" ? $options : null));
|
||||
maybeSet("$params", () => (typeof $params !== "undefined" ? $params : null));
|
||||
maybeSet("$args", () => (typeof $args !== "undefined" ? $args : null));
|
||||
maybeSet("$arguments", () => (typeof $arguments !== "undefined" ? $arguments : null));
|
||||
maybeSet("$argument", () => (typeof $argument !== "undefined" ? $argument : null));
|
||||
maybeSet("$ctx", () => (typeof $ctx !== "undefined" ? $ctx : null));
|
||||
maybeSet("$request", () => (typeof $request !== "undefined" ? $request : null));
|
||||
maybeSet("$url", () => (typeof $url !== "undefined" ? $url : null));
|
||||
maybeSet("$scriptUrl", () => (typeof $scriptUrl !== "undefined" ? $scriptUrl : null));
|
||||
maybeSet("$script_url", () => (typeof $script_url !== "undefined" ? $script_url : null));
|
||||
|
||||
maybeSet("$contentPreview", () => (typeof $content === "string" ? $content.slice(0, 300) : $content));
|
||||
maybeSet("$contentLength", () => (typeof $content === "string" ? $content.length : null));
|
||||
maybeSet("$files", () => (typeof $files !== "undefined" ? $files : null));
|
||||
|
||||
const report = {
|
||||
probes,
|
||||
values,
|
||||
globalDollarKeys: getGlobalDollarKeys(),
|
||||
envSample: pickEnvSample(),
|
||||
};
|
||||
|
||||
$content = safeStringify(report);
|
||||
10
icons/svg/akamai.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 -151.5 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||
<g>
|
||||
<path d="M156.165577,152.930719 L135.306318,152.930719 L153.376906,116.343355 L153.6,116.343355 L156.165577,152.930719 L156.165577,152.930719 Z M157.057952,169.551198 L158.284967,184.052288 L181.263617,184.052288 L173.566885,99.611329 L139.322004,99.611329 L96.1533769,184.052288 L119.578214,184.052288 L126.828758,169.551198 L157.057952,169.551198 L157.057952,169.551198 Z M213.389107,147.018736 L216.847059,147.018736 L233.355991,124.820915 L254.438344,124.820915 L231.682789,153.153813 L245.737691,183.829194 L223.205229,183.829194 L214.058388,159.95817 L210.823529,159.95817 L205.692375,183.829194 L186.171678,183.829194 L204.019172,99.7228758 L223.428322,99.7228758 L213.389107,147.018736 Z M279.31329,159.511983 C285.67146,159.511983 289.91024,159.95817 288.683224,164.866231 C287.233115,171.224401 284.667538,172.116776 276.524619,172.116776 C273.512854,172.116776 268.047059,172.116776 269.497168,165.758606 C270.612636,160.404357 274.628322,159.511983 279.31329,159.511983 L279.31329,159.511983 Z M284.667538,183.829194 L303.853595,183.829194 L311.550327,147.018736 C316.0122,126.605664 307.980828,124.263181 288.348584,124.263181 C274.516776,124.263181 261.131155,124.040087 257.115468,142.556863 L276.301525,142.556863 C277.52854,137.202614 280.763399,136.198693 285.448366,136.198693 C293.925926,136.198693 293.702832,139.768192 292.252723,145.12244 L290.356427,154.492375 L289.464052,154.492375 C288.794771,147.688017 280.317211,147.911111 274.739869,147.911111 C260.684967,147.911111 252.430501,152.372985 249.418736,166.427887 C246.183878,181.48671 253.434423,184.721569 266.820044,184.721569 C273.624401,184.721569 282.548148,183.27146 285.783007,175.351634 L286.452288,175.351634 L284.667538,183.829194 L284.667538,183.829194 Z M343.118083,124.820915 L341.44488,133.298475 L342.114161,133.298475 C345.906754,126.271024 353.603486,124.374728 360.184749,124.374728 C368.662309,124.374728 376.805229,125.824837 375.68976,135.864052 L376.582135,135.864052 C379.370806,127.386492 388.07146,124.374728 395.545098,124.374728 C409.153813,124.374728 414.954248,129.95207 411.942484,143.560784 L403.24183,183.940741 L384.055773,183.940741 L391.306318,149.695861 C392.198693,143.337691 393.202614,138.875817 385.95207,138.875817 C378.701525,138.875817 375.912854,143.783878 374.685839,150.142048 L367.658388,183.717647 L348.472331,183.717647 L355.945969,148.022658 C356.838344,142.66841 357.396078,138.875817 350.591721,138.875817 C342.671895,138.875817 340.217865,143.114597 338.879303,150.142048 L331.851852,183.717647 L312.665795,183.717647 L325.382135,124.597821 L343.22963,124.597821 L343.22963,124.820915 L343.118083,124.820915 Z M442.283224,159.511983 C448.641394,159.511983 452.880174,159.95817 451.653159,164.866231 C450.426144,171.224401 447.637473,172.116776 439.494553,172.116776 C436.705882,172.116776 431.016993,172.116776 432.467102,165.758606 C433.582571,160.404357 437.375163,159.511983 442.283224,159.511983 L442.283224,159.511983 Z M447.414379,183.829194 L466.600436,183.829194 L474.297168,147.018736 C478.759041,126.605664 470.727669,124.263181 451.095425,124.263181 C437.263617,124.263181 423.877996,124.040087 419.862309,142.556863 L439.048366,142.556863 C440.275381,137.202614 443.51024,136.198693 448.195207,136.198693 C456.672767,136.198693 456.449673,139.768192 454.999564,145.12244 L453.103268,154.492375 L452.210893,154.492375 C451.541612,147.688017 443.064052,147.911111 437.48671,147.911111 C423.431808,147.911111 415.177342,152.372985 412.165577,166.427887 C408.930719,181.48671 416.181264,184.721569 429.566885,184.721569 C436.371242,184.721569 445.294989,183.27146 448.529847,175.351634 L449.199129,175.351634 L447.414379,183.829194 L447.414379,183.829194 Z M494.821786,183.829194 L475.63573,183.829194 L488.017429,124.709368 L507.203486,124.709368 L494.821786,183.829194 L494.821786,183.829194 Z M511.665359,108.646623 C511.665359,114.558606 506.757298,119.466667 500.845316,119.466667 C494.933333,119.466667 490.025272,114.558606 490.025272,108.646623 C490.025272,102.511547 494.933333,97.8265795 500.845316,97.8265795 C506.757298,97.8265795 511.665359,102.511547 511.665359,108.646623 L511.665359,108.646623 Z" fill="#F79838">
|
||||
|
||||
</path>
|
||||
<path d="M106.192593,204.242266 C63.2470588,191.079739 32.1254902,151.48061 32.1254902,104.854031 C32.1254902,57.4466231 64.0278867,17.6244009 107.642702,4.68496732 C112.104575,3.45795207 110.87756,0.446187364 105.523312,0.446187364 C47.6305011,0.446187364 0.446187364,47.0727669 0.446187364,104.51939 C0.446187364,161.966013 47.2958606,208.592593 105.523312,208.592593 C110.87756,208.927233 111.100654,205.915468 106.192593,204.242266 L106.192593,204.242266 Z M52.0923747,128.948148 C51.869281,126.159477 51.6461874,123.370806 51.6461874,120.470588 C51.6461874,74.7363834 88.6797386,37.7028322 134.413943,37.7028322 C177.582571,37.7028322 190.745098,56.8888889 192.08366,55.7734205 C193.756863,54.3233115 176.355556,16.1742919 125.71329,16.1742919 C79.979085,16.1742919 42.9455338,53.2078431 42.9455338,98.9420479 C42.9455338,109.538998 45.0649237,119.578214 48.5228758,128.948148 C49.9729847,132.963834 52.3154684,132.963834 52.0923747,128.948148 Z M86.5603486,69.3821351 C107.865795,60.0122004 135.083224,59.7891068 161.631373,68.9359477 C179.478867,75.2941176 189.741176,83.9947712 190.745098,83.6601307 C192.195207,82.9908497 180.371242,64.4740741 159.065795,56.4427015 C133.298475,46.8496732 105.634858,51.7577342 85.4448802,67.7089325 C83.2139434,69.3821351 83.8832244,70.6091503 86.5603486,69.3821351 L86.5603486,69.3821351 Z" fill="#0098CC">
|
||||
|
||||
</path>
|
||||
|
After Width: | Height: | Size: 5.7 KiB |
8
icons/svg/anime.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<path d="M38.892 14.296C26.973 19.323 15.061 32.693 15.01 41.102c-.009 1.359-2.437 8.367-13.59 39.218L.039 84.141l27.731-.321c31.091-.359 32.628-.667 41.006-8.237 18.829-17.01 3.415-50.678-20.822-45.48-20.01 4.292-21.144 34.431-1.379 36.658 12.603 1.421 18.192-11.422 8.707-20.006-1.841-1.666-2.037-1.62-4.623 1.079-2.699 2.817-2.699 2.82-.68 4.647 4.522 4.092 1.159 8.906-4.439 6.355-6.306-2.873-7.474-12.102-2.199-17.377 13.386-13.386 34.151 8.644 23.31 24.731-16.699 24.779-55.114-1.28-42.293-28.69 8.743-18.692 31.564-23.429 50.15-10.41l5.702 3.995 7.395-5.566c8.152-6.136 8.232-6.278 5.458-9.658-2.098-2.557-1.74-2.656-8.938 2.474l-3.978 2.835-8.663-4.293c-11.285-5.592-23.213-6.537-32.592-2.581M16 62.281c0 .371-1.105 3.609-2.455 7.196L11.09 76h15.259l-2.071-2.25c-1.138-1.237-3.467-4.476-5.174-7.196C17.397 63.834 16 61.911 16 62.281" fill-rule="evenodd"/>
|
||||
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
54
icons/svg/aws-cloudfront.svg
Normal file
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="-26 0 308 308" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||
<g>
|
||||
<g transform="translate(165.000000, 48.000000)">
|
||||
<path d="M1.01,79.465 L60.2123978,73.1509144 L90.888,79.52 L90.999,79.588 L34.441,82.962 L0.957,79.52 L1.01,79.465 L1.01,79.465 Z" fill="#5E1F18">
|
||||
|
||||
</path>
|
||||
<path d="M0.958,79.521 L60.162,74.896 L60.569,74.303 L60.571,1.259 L60.164,0.424 L0.958,15.821 L0.958,79.521" fill="#8C3123">
|
||||
|
||||
</path>
|
||||
<path d="M91,79.59 L60.162,74.896 L60.164,0.424 L90.999,15.852 L91,79.59" fill="#E05243">
|
||||
|
||||
</path>
|
||||
</g>
|
||||
<g transform="translate(165.000000, 176.000000)">
|
||||
<path d="M0.958,4.115 L1.823,4.721 L60.172,8.68 L89.944,4.721 L90.999,4.142 L34.442,0.667 L0.958,4.115" fill="#F2B0A9">
|
||||
|
||||
</path>
|
||||
<path d="M0.958,4.115 L60.172,8.52 L60.355,8.766 L60.31,82.708 L60.164,83.094 L0.958,67.819 L0.958,4.115" fill="#8C3123">
|
||||
|
||||
</path>
|
||||
<path d="M90.999,4.142 L60.172,8.52 L60.164,83.094 L90.999,67.785 L90.999,4.142" fill="#E05243">
|
||||
|
||||
</path>
|
||||
</g>
|
||||
<g transform="translate(0.000000, 48.000000)">
|
||||
<path d="M89.119,79.408 L30.5886718,74.3941406 L0.195,79.439 L0.002,79.59 L56.559,82.964 L89.433,79.588 L89.119,79.408 Z" fill="#5E1F18">
|
||||
|
||||
</path>
|
||||
<path d="M0.002,79.59 L30.559,75.116 L31.458,74.479 L31.458,1.279 L30.559,0.424 L0.002,15.855 L0.002,79.59" fill="#8C3123">
|
||||
|
||||
</path>
|
||||
<path d="M89.433,79.588 L30.559,75.116 L30.559,0.424 L89.436,15.821 L89.433,79.588" fill="#E05243">
|
||||
|
||||
</path>
|
||||
</g>
|
||||
<g transform="translate(0.000000, 176.000000)">
|
||||
<path d="M89.433,4.142 L88.082,5.127 L30.559,9.44 L0.976,5.127 L0,4.142 L56.559,0.667 L89.433,4.142" fill="#F2B0A9">
|
||||
|
||||
</path>
|
||||
<path d="M0,4.142 L30.558,8.482 L31.335,9.434 L31.418,81.767 L30.559,83.094 L0.002,67.785 L0,4.142" fill="#8C3123">
|
||||
|
||||
</path>
|
||||
<path d="M89.433,4.142 L30.558,8.482 L30.559,83.094 L89.433,67.819 L89.433,4.142" fill="#E05243">
|
||||
|
||||
</path>
|
||||
</g>
|
||||
<g transform="translate(66.000000, 183.000000)">
|
||||
<path d="M123.104,6.66 L62.001,0.634 L0.289,6.661 L1.159,7.396 L61.7,17.013 L122.233,7.396 L123.104,6.66" fill="#F2B0A9">
|
||||
|
||||
</path>
|
||||
<path d="M0.289,6.661 L61.7,15.659 L62.323,16.492 L62.402,123.451 L61.7,124.637 L0.289,93.931 L0.289,6.661" fill="#8C3123">
|
||||
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
5
icons/svg/azure.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="512" cy="512" r="512" style="fill:#0078d4"/>
|
||||
<path d="M729.08 730.5a33.88 33.88 0 0 0 32.13-44.76L623.89 279.07A33.88 33.88 0 0 0 591.81 256H432.17a33.88 33.88 0 0 0-32.09 23.07L262.8 685.76a33.88 33.88 0 0 0 32.13 44.74h99.16a33.88 33.88 0 0 0 32.11-23.07l20.44-60.49 103.46 76.87a33.85 33.85 0 0 0 20.21 6.69M505.8 468.4 581.6 693a11.29 11.29 0 0 1-10.67 14.91h-.63a11.29 11.29 0 0 1-6.74-2.22L369.32 561.38h101.51m132 146.54a33.54 33.54 0 0 0 .15-22.13L465.77 279.07l-.15-.42h126.21a11.29 11.29 0 0 1 10.71 7.66L739.79 693a11.29 11.29 0 0 1-7.07 14.31" style="fill:#fff"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 813 B |
10
icons/svg/ebay.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 -18 60 60" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path fill="#E53238" fill-rule="nonzero" d="M7.7732896,5.21819068 C3.5441438,5.21819068 0.019999394,6.99757845 0.019999394,12.3659101 C0.019999394,16.6188107 2.3897314,19.297032 7.8824908,19.297032 C14.3477258,19.297032 14.7621708,15.0733795 14.7621708,15.0733795 L11.6294594,15.0733795 C11.6294594,15.0733795 10.9577798,17.347654 7.6913886,17.347654 C5.0310022,17.347654 3.117548,15.5653377 3.117548,13.067162 L15.0897746,13.067162 L15.0897746,11.4995199 C15.0897746,9.02803874 13.5077606,5.21819068 7.7732896,5.21819068 L7.7732896,5.21819068 Z M7.6640882,7.22171802 C10.1965006,7.22171802 11.9229378,8.76030585 11.9229378,11.0663246 L3.1868362,11.0663246 C3.1868362,8.61820364 5.4402766,7.22171802 7.6640882,7.22171802 L7.6640882,7.22171802 Z"/>
|
||||
<path fill="#0064D2" fill-rule="nonzero" d="M15.0875524,0.0198491484 L15.0875524,16.6010769 C15.0875524,17.5422799 15.019817,18.863837 15.019817,18.863837 L18.0077636,18.863837 C18.0077636,18.863837 18.1150112,17.914676 18.1150112,17.0472353 C18.1150112,17.0472353 19.5912498,19.337644 23.605252,19.337644 C27.832158,19.337644 30.703334,16.4272941 30.703334,12.2576112 C30.703334,8.3786154 28.066066,5.25880264 23.612076,5.25880264 C19.441229,5.25880264 18.145188,7.49246499 18.145188,7.49246499 L18.145188,0.0198491484 L15.0875524,0.0198491484 Z M22.840842,7.30971074 C25.71124,7.30971074 27.536498,9.42243689 27.536498,12.2576112 C27.536498,15.2978212 25.428386,17.2867359 22.861318,17.2867359 C19.7977472,17.2867359 18.145188,14.9144815 18.145188,12.284686 C18.145188,9.83422909 19.6280778,7.30971074 22.840842,7.30971074 Z"/>
|
||||
<path fill="#F5AF02" fill-rule="nonzero" d="M38.12902,5.21819068 C31.76659,5.21819068 31.358542,8.67315451 31.358542,9.22524555 L34.525378,9.22524555 C34.525378,9.22524555 34.691446,7.20818063 37.910618,7.20818063 C40.002488,7.20818063 41.623462,8.15774975 41.623462,9.98333693 L41.623462,10.6331296 L37.910618,10.6331296 C32.981554,10.6331296 30.37573,12.0631587 30.37573,14.9650808 C30.37573,17.820989 32.783428,19.3748717 36.037134,19.3748717 C40.47143,19.3748717 41.899876,16.944918 41.899876,16.944918 C41.899876,17.9114206 41.975012,18.863837 41.975012,18.863837 L44.790298,18.863837 C44.790298,18.863837 44.681096,17.6832871 44.681096,16.9279962 L44.681096,10.3996104 C44.681096,6.11903722 41.199594,5.21819068 38.12902,5.21819068 L38.12902,5.21819068 Z M41.623462,12.5825076 L41.623462,13.4488979 C41.623462,14.5789069 40.920356,17.388266 36.781068,17.388266 C34.514408,17.388266 33.542568,16.2663838 33.542568,14.9650808 C33.542568,12.5977539 36.815324,12.5825076 41.623462,12.5825076 L41.623462,12.5825076 Z"/>
|
||||
<polygon fill="#86B817" fill-rule="nonzero" points="42.976 5.76 46.538 5.76 51.651 15.919 56.753 5.76 59.98 5.76 50.688 23.846 47.303 23.846 49.984 18.804"/>
|
||||
</g>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
16
icons/svg/entertainment.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Icons" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 32 32" xml:space="preserve">
|
||||
<path d="M12,8c-3.3,0-6,2.7-6,6s2.7,6,6,6s6-2.7,6-6S15.3,8,12,8z M12,13c-0.3,0-0.6,0.1-0.7,0.3c-0.2,0.2-0.5,0.3-0.7,0.3
|
||||
c-0.2,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1-0.1-1.4c0.6-0.6,1.4-1,2.2-1c0.6,0,1,0.4,1,1S12.6,13,12,13z"/>
|
||||
<g>
|
||||
<path d="M4,27c-0.6,0-1-0.4-1-1v-3c0-0.6,0.4-1,1-1s1,0.4,1,1v3C5,26.6,4.6,27,4,27z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path d="M28,27c-0.6,0-1-0.4-1-1v-3c0-0.6,0.4-1,1-1s1,0.4,1,1v3C29,26.6,28.6,27,28,27z"/>
|
||||
</g>
|
||||
<path d="M22,17h9v-4c0-0.6-0.4-1-1-1H19.7c0.2,0.6,0.3,1.3,0.3,2c0,4.4-3.6,8-8,8s-8-3.6-8-8c0-0.7,0.1-1.4,0.3-2H2
|
||||
c-0.6,0-1,0.4-1,1v10c0,0.6,0.4,1,1,1h28c0.6,0,1-0.4,1-1v-4h-9c-0.6,0-1-0.4-1-1S21.4,17,22,17z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 953 B |
8
icons/svg/fastly.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 -156.5 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||
<g>
|
||||
<path d="M348.443832,20.3483124 L348.443832,153.935945 L388.570661,153.935945 L388.570661,133.525132 L375.312437,133.525132 L375.312437,0 L348.440659,0.00317258293 L348.443832,20.3483124 Z M0,133.525132 L13.6405203,133.525132 L13.6405203,69.0750619 L0,69.0750619 L0,51.3504756 L13.6405203,49.1071422 L13.6405203,31.1649167 C13.6405203,9.43177181 18.3708415,0.000317258293 46.086526,0.000317258293 C52.0725555,0.000317258293 59.16772,0.884198864 65.3796373,2.00316887 L61.6975376,23.8502095 C57.4903754,23.1836498 55.4040848,23.0653125 52.7445086,23.0653125 C42.9799328,23.0653125 40.511346,24.0396127 40.511346,33.5802041 L40.511346,49.1071422 L60.78542,49.1071422 L60.78542,69.0750619 L40.511346,69.0750619 L40.511346,133.525132 L54.0097346,133.525132 L54.0097346,153.932772 L0,153.938483 L0,133.525132 Z M334.776345,127.074954 C330.572672,127.961691 326.895649,127.855092 324.237024,127.920447 C313.183745,128.192338 314.138693,124.558461 314.138693,114.13494 L314.138693,69.0750619 L335.179263,69.0750619 L335.179263,49.1071422 L314.138693,49.1071422 L314.138693,0 L287.266598,0 L287.266598,119.70663 C287.266598,143.209442 293.067031,153.935945 318.345538,153.935945 C324.332202,153.935945 332.558709,152.395339 338.770627,151.065075 L334.776345,127.074954 Z M253.724148,69.0385772 L253.724148,65.4637108 C245.595038,63.9811628 237.522718,63.9595892 233.143602,63.9595892 C220.638866,63.9595892 219.11444,70.5909221 219.11444,74.1854585 C219.11444,79.2707917 220.849526,82.0204694 234.396455,84.9823928 C254.198449,89.427816 274.085785,94.0661322 274.085785,118.620021 C274.085785,141.905828 262.10167,153.935945 236.875829,153.935945 C219.995467,153.935945 203.61669,150.312221 191.119886,147.140907 L191.119886,127.074954 L211.467881,127.074954 L211.456142,130.639668 C220.212471,132.330972 229.393609,132.161874 234.186747,132.161874 C247.524921,132.161874 249.682911,124.990567 249.682911,121.178074 C249.682911,115.88684 245.858046,113.345601 233.354896,110.81039 C209.799737,106.785652 191.105609,98.7434713 191.105609,74.816168 C191.105609,52.1683675 206.253106,43.2838662 231.479265,43.2838662 C248.569018,43.2838662 261.5636,45.934242 274.067384,49.1071422 L274.067384,69.0385772 L253.724148,69.0385772 Z M117.603208,127.014041 L117.603208,123.855417 L114.383988,123.855417 L114.383988,127.005157 C99.9626949,126.164423 88.4271833,114.577833 87.6746467,100.133063 L90.8745138,100.133063 L90.8745138,96.9138427 L87.6914614,96.9138427 C88.5464725,82.5693262 100.034395,71.0925074 114.383988,70.2558973 L114.383988,73.4221351 L117.603208,73.4221351 L117.603208,70.2470141 C131.748169,71.0030406 143.141549,82.0981976 144.372828,96.1118137 L144.372828,97.0353526 L141.14758,97.0353526 L141.14758,100.254255 L144.37378,100.254255 L144.374414,101.135916 C143.149163,115.156195 131.75261,126.257697 117.603208,127.014041 Z M171.253489,127.074954 L171.23604,43.4583583 L144.365848,43.4583583 L144.365848,51.2997143 C138.831595,47.979289 132.666949,45.6052452 126.096212,44.3882424 L126.248179,44.3882424 L126.248179,35.109389 L129.526726,35.109389 L129.526726,28.2851632 L102.470939,28.2851632 L102.470939,35.109389 L105.748852,35.109389 L105.748852,44.3882424 L105.9354,44.3882424 C80.2355742,49.1195153 60.7597221,71.6239151 60.7597221,98.6917582 C60.7597221,129.196778 85.488737,153.925793 115.993439,153.925793 C126.404587,153.925793 136.14061,151.04128 144.452777,146.033992 L149.293504,153.935945 L177.676066,153.935945 L177.676066,127.074954 L171.253489,127.074954 Z M456.578149,49.1071422 L512,49.1071422 L512,69.0557092 L498.751294,69.0557092 L464.763413,152.67516 C455.023583,176.164647 439.021075,198.273109 414.655638,198.273109 C408.662629,198.273109 400.686755,197.609087 395.156943,196.280092 L397.587142,171.89213 C401.137262,172.555834 405.785096,172.992699 408.224812,172.992699 C419.525553,172.992699 432.269818,165.990808 436.257755,153.800158 L401.819367,69.0557092 L388.570661,69.0557092 L388.570661,49.1071422 L444.021065,49.1071422 L444.021065,69.0557092 L430.775532,69.0557092 L450.286917,117.056572 L469.795129,69.0557092 L456.578149,69.0557092 L456.578149,49.1071422 Z M130.096839,86.6762348 L128.051792,84.6308706 L117.667294,93.6809807 C117.143183,93.4928465 116.582588,93.3856132 115.996612,93.3856132 C113.194269,93.3856132 110.925872,95.7206342 110.925872,98.5984842 C110.925872,101.479507 113.194269,103.814211 115.996612,103.814211 C118.797685,103.814211 121.071475,101.479507 121.071475,98.5984842 C121.071475,98.0521654 120.988671,97.5255167 120.836704,97.0302765 L130.096839,86.6762348" fill="#D52F2F">
|
||||
|
||||
</path>
|
||||
</g>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
2
icons/svg/google-cloud.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="none"><path fill="#EA4335" d="M10.313 5.376l1.887-1.5-.332-.414a5.935 5.935 0 00-5.586-1.217 5.89 5.89 0 00-3.978 4.084c-.03.113.312-.098.463-.056l2.608-.428s.127-.124.201-.205c1.16-1.266 3.126-1.432 4.465-.354l.272.09z"/><path fill="#4285F4" d="M13.637 6.3a5.835 5.835 0 00-1.77-2.838l-1.83 1.82a3.226 3.226 0 011.193 2.564v.323c.9 0 1.63.725 1.63 1.62 0 .893-.73 1.619-1.63 1.619l-3.257-.003-.325.035v2.507l.325.053h3.257a4.234 4.234 0 004.08-2.962A4.199 4.199 0 0013.636 6.3z"/><path fill="#34A853" d="M4.711 13.999H7.97v-2.594H4.71c-.232 0-.461-.066-.672-.161l-.458.14-1.313 1.297-.114.447a4.254 4.254 0 002.557.87z"/><path fill="#FBBC05" d="M4.711 5.572A4.234 4.234 0 00.721 8.44a4.206 4.206 0 001.433 4.688l1.89-1.884a1.617 1.617 0 01.44-3.079 1.63 1.63 0 011.714.936l1.89-1.878A4.24 4.24 0 004.71 5.572z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
17
icons/svg/groups/group-cunning-01.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="800px" height="800px" viewBox="0 0 256 157" enable-background="new 0 0 256 157" xml:space="preserve">
|
||||
<path d="M253.823,41.499l-0.325,0.734c-2.41,5.503-8.319,9.204-14.332,9.204h-16.73v3.936c0,19.682-8.442,43.562-31.479,50.726
|
||||
l-3.909,41.513c2.862,1.12,4.892,3.898,4.892,7.156h-11.96l-4.781-51.275l-39-6.766c-10.755,13.121-27.175,23.474-44.585,26.549
|
||||
l-3.695,24.37c2.811,1.144,4.795,3.899,4.795,7.121H80.756l0.001-44.671c10.414-6.433,18.847-17.179,20.897-29.737
|
||||
c0,0-43.871,42.034-56.708,49.933c-5.012,3.084-10.609,4.676-16.121,4.676c-6.622,0-13.123-2.296-18.348-7.06
|
||||
c-9.654-8.802-11.272-23.402-3.78-34.105l0.722-1.035c5.007,5.223,11.765,7.918,18.623,7.918c4.441,0,8.925-1.131,13.003-3.438
|
||||
c12.878-7.285,33.765-21.585,41.987-26.531c5.561-3.345,13.409-6.095,19.728-7.581c15.761-3.706,67.877-8.57,67.877-8.57
|
||||
l53.797-52.336v16.513c-0.005,0-0.01-0.001-0.013-0.001c-0.027,0,0.013,0.012,0.013,0.012v-0.011
|
||||
c0.079,0.006,0.411,0.059,1.616,0.298c4.89,0.973,9.251,3.723,12.227,7.723l5.686,7.642l10.742,4.341
|
||||
C253.79,39.186,254.295,40.431,253.823,41.499z M151.684,105.406l-13.191-2.288c-4.227,4.708-9.067,8.946-14.301,12.598
|
||||
l13.93,39.052h11.96c0-4.146-3.284-7.517-7.392-7.673l-5.613-27.44C142.607,115.672,147.418,110.796,151.684,105.406z
|
||||
M215.871,147.169l-6.906-44.331c-3.616,3.299-8.228,6.044-12.473,7.63l13.996,44.3h11.96
|
||||
C222.447,150.9,219.589,147.709,215.871,147.169z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
109
icons/svg/groups/group-last-resort-01.svg
Normal file
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg version="1.1" id="designs" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="800px" height="800px" viewBox="0 0 32 32" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.sketchy_een{fill:#111918;}
|
||||
</style>
|
||||
<path class="sketchy_een" d="M25.033,14.779c-0.05-0.342-0.164-0.698-0.348-0.992c-0.22-0.354-0.56-0.662-0.934-0.852
|
||||
c-0.236-0.12-0.494-0.206-0.754-0.258c-0.18-0.036-0.364-0.064-0.546-0.07c-0.011,0-0.021,0-0.032,0
|
||||
c-0.128,0-0.259,0.022-0.389,0.045c-0.097-0.221-0.211-0.432-0.384-0.614c-0.188-0.2-0.424-0.372-0.676-0.484
|
||||
c-0.304-0.136-0.584-0.222-0.92-0.242c-0.027-0.002-0.054-0.003-0.081-0.003c-0.239,0-0.476,0.067-0.711,0.101
|
||||
c-0.047,0.007-0.091,0.038-0.136,0.061c-0.109-0.181-0.205-0.369-0.323-0.543c-0.27-0.402-0.52-0.816-0.774-1.228
|
||||
c-0.032-0.052-0.086-0.078-0.127-0.121c0.032-0.049,0.063-0.099,0.095-0.147c0.21-0.316,0.424-0.63,0.63-0.95
|
||||
c0.198-0.308,0.376-0.63,0.56-0.948c0.386-0.672,0.71-1.384,0.982-2.109c0.126-0.336,0.222-0.68,0.284-1.034
|
||||
c0.034-0.198,0.062-0.396,0.04-0.596c-0.016-0.132-0.034-0.266-0.056-0.398c-0.03-0.17-0.1-0.336-0.174-0.492
|
||||
c-0.16-0.338-0.43-0.594-0.714-0.828c-0.13-0.106-0.258-0.216-0.392-0.316c-0.134-0.102-0.298-0.164-0.456-0.216
|
||||
c-0.135-0.045-0.272-0.062-0.409-0.062c-0.192,0-0.385,0.034-0.574,0.072c-0.202,0.042-0.402,0.092-0.596,0.16
|
||||
c-0.624,0.222-1.138,0.622-1.608,1.074c-0.357,0.343-0.671,0.73-0.978,1.12c-0.16-0.229-0.321-0.458-0.479-0.688
|
||||
c-0.248-0.36-0.512-0.72-0.798-1.05c-0.07-0.078-0.152-0.146-0.228-0.218c-0.118-0.112-0.236-0.224-0.358-0.332
|
||||
c-0.178-0.158-0.368-0.338-0.588-0.434c-0.252-0.112-0.414-0.15-0.69-0.182C11.342,1.002,11.292,1,11.241,1
|
||||
c-0.176,0-0.359,0.03-0.523,0.07c-0.228,0.054-0.448,0.17-0.64,0.304C9.63,1.69,9.27,2.127,9.116,2.661
|
||||
C9.002,3.063,8.962,3.499,8.96,3.915C8.956,4.377,8.984,4.827,9.124,5.269C9.268,5.722,9.46,6.166,9.656,6.6
|
||||
c0.174,0.386,0.372,0.766,0.56,1.146c0.21,0.428,0.42,0.858,0.64,1.284c0.018,0.035,0.051,0.056,0.075,0.086
|
||||
c-0.179,0.285-0.354,0.572-0.509,0.871c-0.386,0.748-0.746,1.513-1.074,2.287c-0.182,0.43-0.352,0.862-0.504,1.306
|
||||
c-0.146,0.426-0.274,0.858-0.414,1.286c-0.036,0.112-0.038,0.226-0.02,0.337c-0.103,0.114-0.199,0.236-0.286,0.358
|
||||
c-0.1,0.142-0.2,0.284-0.294,0.43c-0.172,0.262-0.302,0.544-0.434,0.826c-0.174,0.378-0.31,0.76-0.4,1.166
|
||||
c-0.078,0.348-0.106,0.684-0.084,1.038c0.016,0.3,0.076,0.6,0.14,0.894c0.062,0.294,0.132,0.592,0.234,0.876
|
||||
c0.108,0.304,0.218,0.604,0.306,0.914c0.196,0.704,0.43,1.399,0.672,2.089c-0.266,0.136-0.454,0.407-0.457,0.724
|
||||
c-0.004,0.53,0.006,1.058,0.012,1.588c0.006,0.512,0,1.022,0.002,1.534c0.004,0.466,0.016,0.93,0.018,1.396
|
||||
c0,0.186,0.008,0.372,0.01,0.556c0.004,0.162,0,0.324,0.016,0.484c0.02,0.218,0.072,0.402,0.232,0.562
|
||||
c0.031,0.031,0.073,0.047,0.109,0.073c0.15,0.176,0.365,0.295,0.61,0.294c0.412-0.004,0.822-0.02,1.232-0.03
|
||||
c0.168-0.002,0.336-0.002,0.506-0.002c0.186,0,0.374,0,0.564-0.006c0.762-0.022,1.524-0.054,2.287-0.066
|
||||
c0.676-0.008,1.352-0.004,2.027,0c0.786,0.004,1.572,0.008,2.357-0.008c0.754-0.016,1.512-0.042,2.265-0.012
|
||||
c0.163,0.006,0.307-0.059,0.432-0.15c0.198-0.007,0.388-0.085,0.53-0.225c0.096-0.098,0.164-0.214,0.202-0.348
|
||||
c0.038-0.14,0.038-0.278,0-0.418c-0.008-0.044-0.016-0.087-0.023-0.13c-0.031-0.332-0.032-0.666-0.049-0.997
|
||||
c-0.02-0.41-0.03-0.82-0.054-1.228c-0.026-0.414-0.05-0.828-0.058-1.242c-0.01-0.496-0.002-0.994,0.002-1.49
|
||||
c0.003-0.323-0.202-0.604-0.485-0.725c-0.123-0.163-0.301-0.273-0.507-0.284c0.055-0.158,0.119-0.311,0.172-0.473
|
||||
c0.13-0.402,0.272-0.796,0.384-1.204c0.1-0.358,0.218-0.708,0.308-1.068c0.084-0.339,0.168-0.677,0.251-1.015
|
||||
c0.272,0.058,0.554,0.082,0.821,0.003c0.26-0.074,0.514-0.23,0.736-0.38c0.148-0.1,0.3-0.186,0.454-0.276
|
||||
c0.206-0.122,0.396-0.274,0.562-0.446c0.244-0.25,0.44-0.532,0.614-0.834c0.17-0.294,0.334-0.584,0.464-0.898
|
||||
c0.056-0.136,0.108-0.274,0.152-0.414c0.06-0.188,0.076-0.39,0.102-0.584C25.117,15.629,25.097,15.203,25.033,14.779z
|
||||
M19.869,12.889c0.059-0.003,0.117-0.003,0.176,0c0.081,0.017,0.16,0.038,0.238,0.065c0.058,0.03,0.113,0.063,0.167,0.1
|
||||
c0.049,0.042,0.096,0.087,0.141,0.135c0.03,0.048,0.057,0.097,0.082,0.148c0.059,0.156,0.107,0.315,0.144,0.479
|
||||
c0.01,0.183-0.008,0.369-0.029,0.55c-0.027,0.16-0.065,0.309-0.122,0.461c-0.128,0.278-0.274,0.55-0.426,0.818
|
||||
c-0.132,0.236-0.273,0.469-0.43,0.69c-0.073,0.086-0.147,0.169-0.231,0.245c-0.082,0.058-0.167,0.113-0.256,0.16
|
||||
c-0.073,0.024-0.146,0.044-0.221,0.06c-0.039,0.001-0.079,0-0.118-0.002c-0.069-0.015-0.137-0.034-0.204-0.057
|
||||
c-0.023-0.012-0.045-0.024-0.067-0.038c-0.018-0.017-0.036-0.035-0.053-0.053c-0.004-0.007-0.008-0.014-0.012-0.021
|
||||
c-0.019-0.057-0.034-0.115-0.047-0.175c-0.013-0.18-0.005-0.356,0.016-0.537c-0.002,0.013-0.004,0.027-0.006,0.041
|
||||
c0.022-0.177,0.043-0.354,0.066-0.531c0.039-0.229,0.099-0.455,0.143-0.683c0.04-0.208,0.084-0.416,0.132-0.622
|
||||
c0.06-0.268,0.124-0.538,0.226-0.792c0.052-0.13,0.106-0.26,0.161-0.39c0.108,0.014,0.218,0.006,0.335-0.014
|
||||
C19.74,12.914,19.804,12.901,19.869,12.889z M10.588,4.509c-0.038-0.379-0.041-0.763-0.002-1.143
|
||||
c0.02-0.099,0.043-0.196,0.074-0.292c0.026-0.049,0.053-0.096,0.083-0.143c0.05-0.058,0.102-0.113,0.158-0.165
|
||||
c0.057-0.037,0.115-0.071,0.175-0.103c0.036-0.011,0.073-0.02,0.11-0.028c0.052-0.003,0.104-0.004,0.156-0.003
|
||||
c0.025,0.015,0.049,0.03,0.073,0.047c0.347,0.289,0.653,0.602,0.938,0.953c0.397,0.532,0.754,1.091,1.161,1.614
|
||||
c-0.217,0.29-0.442,0.575-0.65,0.87c-0.334,0.472-0.635,0.965-0.943,1.455c-0.125-0.226-0.25-0.452-0.372-0.678
|
||||
c-0.208-0.382-0.387-0.781-0.563-1.178C10.825,5.323,10.669,4.924,10.588,4.509z M10.763,12.845c0.252-0.585,0.51-1.167,0.806-1.731
|
||||
c0.338-0.648,0.706-1.278,1.104-1.89c0.374-0.574,0.738-1.156,1.116-1.727c0.339-0.513,0.703-1.01,1.077-1.497
|
||||
c0.352-0.451,0.717-0.898,1.103-1.322c0.342-0.374,0.693-0.739,1.086-1.061c0.167-0.121,0.344-0.233,0.529-0.324
|
||||
c0.212-0.078,0.429-0.137,0.651-0.18c0.009,0,0.017,0,0.026-0.001c0.001,0,0.003,0.001,0.004,0.001
|
||||
c0.032,0.019,0.062,0.04,0.091,0.062c0.154,0.124,0.305,0.251,0.437,0.4c0.01,0.017,0.02,0.035,0.029,0.052
|
||||
c0.025,0.076,0.044,0.153,0.059,0.231c0.006,0.081,0.006,0.161,0.001,0.244c-0.053,0.323-0.129,0.634-0.237,0.948
|
||||
c-0.111,0.328-0.243,0.65-0.377,0.969c-0.45,0.992-1.055,1.913-1.631,2.836c-0.28,0.448-0.562,0.888-0.87,1.32
|
||||
c-0.281,0.395-0.572,0.786-0.866,1.171c-0.127,0.161-0.253,0.318-0.41,0.45c-0.31,0.262-0.268,0.782,0,1.05
|
||||
c0.276,0.276,0.776,0.298,1.05,0c0.228-0.248,0.422-0.53,0.628-0.798c0.218-0.286,0.432-0.574,0.642-0.866
|
||||
c0.054-0.075,0.107-0.152,0.161-0.228c0.173,0.246,0.344,0.493,0.493,0.752c0.142,0.25,0.264,0.504,0.428,0.74
|
||||
c0.001,0.001,0.002,0.002,0.003,0.004c-0.079,0.212-0.163,0.421-0.228,0.637c-0.088,0.288-0.152,0.586-0.216,0.88
|
||||
c-0.054,0.244-0.1,0.49-0.158,0.734c-0.084,0.352-0.114,0.714-0.162,1.072c-0.034,0.268-0.056,0.54-0.02,0.81
|
||||
c0.044,0.328,0.1,0.662,0.3,0.938c0.234,0.324,0.53,0.55,0.902,0.696c0.284,0.11,0.622,0.17,0.924,0.134
|
||||
c0.084-0.01,0.16-0.038,0.241-0.055c0.067,0.223,0.156,0.437,0.281,0.63c-0.016,0.038-0.04,0.072-0.049,0.114
|
||||
c-0.096,0.442-0.188,0.886-0.274,1.33c-0.062,0.314-0.154,0.616-0.244,0.922c-0.193,0.664-0.372,1.342-0.629,1.986
|
||||
c-0.033,0.07-0.068,0.139-0.103,0.209c-0.03,0.06-0.041,0.123-0.057,0.186c-0.126,0.004-0.252,0.008-0.378,0.01
|
||||
c-0.706,0.01-1.41,0.018-2.115,0.016c-0.268,0-0.536,0-0.804,0.002c-0.482,0-0.964,0.002-1.446-0.006
|
||||
c-0.774-0.01-1.548-0.052-2.321-0.074c-0.471-0.013-0.941-0.038-1.412-0.059c-0.006-0.028,0.002-0.057-0.009-0.085
|
||||
c-0.17-0.462-0.342-0.922-0.508-1.384c-0.136-0.386-0.248-0.778-0.368-1.166c-0.106-0.338-0.23-0.666-0.32-1.008
|
||||
c-0.069-0.266-0.138-0.533-0.183-0.803c-0.021-0.184-0.03-0.367-0.017-0.55c0.06-0.323,0.137-0.636,0.257-0.942
|
||||
c0.188-0.433,0.416-0.863,0.692-1.246c0.057-0.07,0.117-0.138,0.181-0.201c0.078-0.05,0.158-0.096,0.24-0.139
|
||||
c0.267-0.095,0.545-0.161,0.826-0.206c0.662-0.077,1.317-0.127,1.983-0.125c0.296,0,0.59,0.02,0.884,0.028
|
||||
c0.223,0.007,0.452,0.01,0.674,0.032c0.085,0.013,0.171,0.028,0.253,0.052c0.005,0.003,0.01,0.006,0.016,0.009
|
||||
c0.009,0.009,0.017,0.018,0.025,0.027c0.019,0.031,0.038,0.062,0.055,0.094c0.032,0.094,0.058,0.188,0.078,0.285
|
||||
c0.004,0.077,0.003,0.154-0.004,0.232c-0.024,0.123-0.057,0.244-0.099,0.363c-0.055,0.107-0.121,0.207-0.191,0.304
|
||||
c-0.097,0.111-0.211,0.203-0.328,0.293c-0.197,0.144-0.407,0.268-0.63,0.369c-0.267,0.113-0.539,0.224-0.823,0.273
|
||||
c-0.279,0.034-0.542,0.073-0.797,0.222c-0.226,0.132-0.418,0.352-0.61,0.526c-0.31,0.282-0.286,0.802,0,1.086
|
||||
c0.282,0.282,0.808,0.314,1.084,0c0.1-0.112,0.202-0.226,0.314-0.327c0.006-0.004,0.013-0.007,0.019-0.011
|
||||
c0.041-0.012,0.084-0.021,0.127-0.029c0.213-0.027,0.422-0.057,0.628-0.13c0.2-0.07,0.4-0.15,0.596-0.234
|
||||
c0.38-0.158,0.706-0.348,1.028-0.606c0.124-0.098,0.25-0.196,0.368-0.302c0.122-0.112,0.222-0.262,0.32-0.39
|
||||
c0.324-0.424,0.464-0.954,0.506-1.478c0.022-0.278-0.026-0.57-0.104-0.836c-0.124-0.418-0.372-0.782-0.724-1.038
|
||||
c-0.222-0.16-0.482-0.224-0.746-0.278c-0.286-0.058-0.582-0.072-0.874-0.09c-0.355-0.021-0.71-0.034-1.065-0.034
|
||||
c-0.246,0-0.493,0.006-0.741,0.02c-0.306,0.016-0.606,0.048-0.908,0.086c-0.257,0.033-0.513,0.069-0.767,0.113
|
||||
c0.031-0.114,0.062-0.228,0.095-0.341C10.476,13.605,10.609,13.225,10.763,12.845z M14.631,16.724
|
||||
c-0.007,0.018-0.014,0.036-0.022,0.054c-0.001,0.002-0.002,0.004-0.003,0.005C14.615,16.763,14.623,16.743,14.631,16.724z
|
||||
M14.604,16.789c-0.014,0.034-0.028,0.068-0.043,0.102c0.012-0.028,0.023-0.056,0.035-0.085
|
||||
C14.599,16.801,14.602,16.795,14.604,16.789z M14.561,16.891c-0.001,0.002-0.002,0.005-0.003,0.008
|
||||
c-0.007,0.016-0.014,0.033-0.021,0.049C14.545,16.929,14.553,16.91,14.561,16.891z M12.633,19.549c-0.001,0-0.002,0-0.003,0v0
|
||||
C12.63,19.549,12.632,19.549,12.633,19.549z M12.623,19.55L12.623,19.55c-0.017,0.002-0.033,0.005-0.05,0.006
|
||||
C12.59,19.555,12.607,19.552,12.623,19.55z M18.99,29.354c-0.336,0.004-0.672,0.006-1.008,0.01
|
||||
c-0.722,0.006-1.444-0.004-2.163-0.008c-0.742-0.004-1.482,0.012-2.221,0.014c-0.762,0.004-1.524,0.01-2.287,0.024
|
||||
c-0.625,0.012-1.249-0.005-1.873-0.017c0.001-0.103,0.002-0.205,0.002-0.308c0-0.458-0.012-0.918-0.024-1.376
|
||||
c-0.025-0.871-0.004-1.743,0.02-2.614c0.635,0.009,1.27-0.001,1.906-0.001c0.774,0,1.548,0.044,2.321,0.052
|
||||
c0.75,0.008,1.5,0.012,2.249,0.012c0.31,0,0.62,0.004,0.93,0.006c0.394,0.004,0.79,0.01,1.186,0.004
|
||||
c0.484-0.006,0.968-0.028,1.453-0.026c0.025,0.814,0.078,1.628,0.115,2.443c0.02,0.452,0.026,0.904,0.038,1.356
|
||||
c0.003,0.14,0.005,0.281,0.009,0.421c-0.099,0.001-0.198,0.008-0.297,0.008C19.226,29.354,19.108,29.352,18.99,29.354z
|
||||
M23.515,15.994c-0.035,0.191-0.09,0.375-0.157,0.556c-0.08,0.175-0.173,0.341-0.266,0.511c-0.084,0.151-0.165,0.305-0.262,0.449
|
||||
c-0.098,0.118-0.205,0.23-0.32,0.332c-0.192,0.129-0.403,0.229-0.597,0.357c-0.107,0.071-0.215,0.142-0.329,0.202
|
||||
c-0.005,0.001-0.009,0.003-0.014,0.004c-0.023,0-0.046,0-0.069-0.001c-0.072-0.016-0.143-0.035-0.214-0.059
|
||||
c-0.046-0.023-0.09-0.048-0.134-0.075c-0.035-0.032-0.068-0.065-0.099-0.1c-0.021-0.033-0.04-0.067-0.058-0.101
|
||||
c-0.056-0.165-0.094-0.335-0.133-0.505c-0.004-0.015-0.015-0.025-0.019-0.039c0.134-0.155,0.26-0.317,0.376-0.484
|
||||
c0.368-0.532,0.684-1.114,0.926-1.711c0.145-0.356,0.174-0.733,0.186-1.115c0.049-0.002,0.097-0.01,0.145-0.009
|
||||
c0.139,0.026,0.273,0.061,0.407,0.105c0.093,0.048,0.181,0.106,0.267,0.167c0.058,0.051,0.111,0.105,0.162,0.163
|
||||
c0.031,0.046,0.059,0.093,0.084,0.141c0.056,0.159,0.098,0.321,0.127,0.487C23.543,15.511,23.539,15.752,23.515,15.994z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
49
icons/svg/groups/group-tunnels-01.svg
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 512 512" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M384,209.455c-6.435,0-11.636,5.201-11.636,11.636c0,53.818-40.809,98.234-93.091,104.041v-34.223
|
||||
c0-6.435-5.201-11.636-11.636-11.636c-32.081,0-58.182-26.1-58.182-58.182c0-32.081,26.1-58.182,58.182-58.182
|
||||
c32.081,0,58.182,26.1,58.182,58.182c0,16.524-7.063,32.326-19.398,43.369c-4.783,4.282-5.19,11.636-0.908,16.431
|
||||
s11.66,5.19,16.431,0.908c17.245-15.441,27.148-37.574,27.148-60.707c0-44.905-36.55-81.455-81.455-81.455
|
||||
s-81.455,36.55-81.455,81.455c0,40.972,30.394,74.961,69.818,80.628v59.008c0,6.435,5.201,11.636,11.636,11.636
|
||||
c6.435,0,11.636-5.201,11.636-11.636v-12.23c65.14-5.9,116.364-60.753,116.364-127.406
|
||||
C395.636,214.656,390.435,209.455,384,209.455z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M267.636,174.545c-25.67,0-46.545,20.876-46.545,46.545c0,6.435,5.201,11.636,11.636,11.636
|
||||
c6.435,0,11.636-5.201,11.636-11.636c0-12.835,10.438-23.273,23.273-23.273c6.435,0,11.636-5.201,11.636-11.636
|
||||
S274.071,174.545,267.636,174.545z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M453.818,0c-32.081,0-58.182,26.1-58.182,58.182c0,10.449,2.991,20.119,7.831,28.602l-47.558,41.612
|
||||
c-50.071-47.697-129.617-46.964-178.781,2.188c-4.55,4.55-4.55,11.904,0,16.454s11.904,4.55,16.454,0
|
||||
c40.832-40.832,107.299-40.82,147.991-0.128l5.399,5.562c2.281,2.351,5.318,3.537,8.355,3.537c2.723,0,5.469-0.954,7.657-2.874
|
||||
l55.796-48.815c9.763,7.447,21.818,12.044,35.037,12.044c32.081,0,58.182-26.1,58.182-58.182C512,26.1,485.9,0,453.818,0z
|
||||
M453.818,93.091c-19.247,0-34.909-15.663-34.909-34.909c0-19.247,15.663-34.909,34.909-34.909
|
||||
c19.247,0,34.909,15.663,34.909,34.909S473.065,93.091,453.818,93.091z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M267.636,395.636c-32.081,0-58.182,26.1-58.182,58.182c0,32.081,26.1,58.182,58.182,58.182
|
||||
c32.081,0,58.182-26.1,58.182-58.182C325.818,421.737,299.718,395.636,267.636,395.636z M267.636,488.727
|
||||
c-19.247,0-34.909-15.663-34.909-34.909c0-19.247,15.663-34.909,34.909-34.909c19.247,0,34.909,15.663,34.909,34.909
|
||||
C302.545,473.065,286.883,488.727,267.636,488.727z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M151.273,209.455H91.439c-5.201-20.026-23.261-34.909-44.893-34.909C20.876,174.545,0,195.421,0,221.091
|
||||
c0,25.67,20.876,46.545,46.545,46.545c21.632,0,39.692-14.883,44.893-34.909h59.834c6.435,0,11.636-5.201,11.636-11.636
|
||||
C162.909,214.656,157.708,209.455,151.273,209.455z M46.545,244.364c-12.835,0-23.273-10.438-23.273-23.273
|
||||
c0-12.835,10.438-23.273,23.273-23.273s23.273,10.438,23.273,23.273C69.818,233.926,59.38,244.364,46.545,244.364z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
58
icons/svg/groups/group-tunnels-02.svg
Normal file
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 512 512" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M392.04,171.636c-3.223-5.574-10.356-7.482-15.895-4.259l-39.005,22.516c-16.908-20.713-41.553-34.828-69.504-37.935
|
||||
v-35.596c0-6.435-5.201-11.636-11.636-11.636c-6.435,0-11.636,5.201-11.636,11.636v35.596
|
||||
c-23.575,2.595-45.405,12.975-62.417,29.987c-2.537,2.537-4.911,5.178-7.145,7.913l-38.947-22.481
|
||||
c-5.574-3.212-12.684-1.315-15.895,4.259c-3.212,5.574-1.303,12.684,4.259,15.895l38.016,21.946
|
||||
c-7.098,14.289-10.95,30.092-10.95,46.511c0,6.435,5.213,11.636,11.636,11.636h46.825c1.059,23.017,5.248,45.312,12.439,62.348
|
||||
c-15.593-7.133-28.881-19.014-37.469-34.525c-1.396-2.525-3.665-4.433-6.4-5.364l-4.189-1.443
|
||||
c-3.165-1.117-6.691-0.756-9.6,0.919l-40.308,23.273c-5.574,3.212-7.482,10.333-4.259,15.895
|
||||
c3.212,5.574,10.333,7.471,15.895,4.259l32.919-19.014c17.164,25.798,44.916,42.589,75.59,46.022v35.642
|
||||
c0,6.435,5.201,11.636,11.636,11.636c6.435,0,11.636-5.201,11.636-11.636v-35.596c31.476-3.503,58.775-20.98,75.532-46.092
|
||||
l32.977,19.049c1.827,1.059,3.828,1.559,5.807,1.559c4.026,0,7.936-2.083,10.089-5.818c3.212-5.574,1.303-12.684-4.259-15.895
|
||||
l-34.001-19.631c4.422-11.59,6.947-24.099,6.947-37.213c0-16.71-4.026-32.454-11.02-46.487l38.074-21.981
|
||||
C393.355,184.32,395.263,177.21,392.04,171.636z M255.999,337.455c-6.237,0-20.783-24.413-22.97-69.83h45.94
|
||||
C276.782,313.041,262.236,337.455,255.999,337.455z M233.017,244.352c0.57-11.439,1.955-22.481,4.119-32.442
|
||||
c1.361-6.284-2.641-12.474-8.913-13.836c-6.26-1.373-12.474,2.641-13.836,8.913c-2.49,11.52-4.049,24.262-4.643,37.376h-34.362
|
||||
c5.655-39.424,39.645-69.818,80.617-69.818c6.237,0,20.783,24.401,22.97,69.807H233.017z M289.791,330.019
|
||||
c7.203-17.036,11.404-39.354,12.463-62.394h11.927v-23.273h-11.927c-1.059-23.028-5.26-45.335-12.463-62.371
|
||||
c28.067,12.87,47.662,41.169,47.662,74.019C337.454,288.849,317.858,317.149,289.791,330.019z"/>
|
||||
<path d="M131.897,116.364c1.932,0,3.887-0.477,5.69-1.501l95.569-53.76c6.144,5.353,14.068,8.716,22.842,8.716
|
||||
c19.247,0,34.909-15.663,34.909-34.909C290.908,15.663,275.246,0,255.999,0S221.09,15.663,221.09,34.909
|
||||
c0,2.036,0.268,4.015,0.605,5.958l-95.511,53.725c-5.597,3.154-7.587,10.24-4.433,15.837
|
||||
C123.88,114.223,127.825,116.364,131.897,116.364z M255.999,23.273c6.423,0,11.636,5.213,11.636,11.636
|
||||
c0,6.423-5.213,11.636-11.636,11.636s-11.636-5.213-11.636-11.636C244.363,28.486,249.576,23.273,255.999,23.273z"/>
|
||||
<path d="M313.727,77.068l94.359,55.889c-1.571,7.994-0.512,16.535,3.875,24.122c4.655,8.076,12.183,13.859,21.19,16.268
|
||||
c3.014,0.803,6.063,1.21,9.088,1.21c6.051,0,12.02-1.583,17.396-4.678c16.675-9.635,22.412-31.023,12.788-47.697
|
||||
c-9.635-16.663-31.011-22.423-47.686-12.788c-0.012,0-0.012,0-0.023,0c-1.757,1.024-3.328,2.234-4.841,3.491l-94.289-55.843
|
||||
c-5.551-3.281-12.684-1.443-15.942,4.084C306.373,66.665,308.2,73.798,313.727,77.068z M436.363,129.559
|
||||
c5.574-3.212,12.707-1.28,15.895,4.259c3.212,5.562,1.292,12.695-4.259,15.895c-2.7,1.548-5.841,1.967-8.832,1.164
|
||||
c-3.002-0.791-5.504-2.723-7.052-5.422C428.892,139.892,430.801,132.771,436.363,129.559z"/>
|
||||
<path d="M198.283,434.932l-94.359-55.901c1.571-7.994,0.512-16.535-3.863-24.122c-9.635-16.663-30.999-22.388-47.709-12.788
|
||||
c-16.663,9.635-22.388,31.034-12.765,47.686c4.655,8.076,12.183,13.859,21.19,16.268c3.014,0.803,6.063,1.21,9.088,1.21
|
||||
c6.063,0,12.02-1.583,17.396-4.678c1.769-1.024,3.34-2.234,4.852-3.503l94.289,55.855c1.862,1.105,3.91,1.629,5.923,1.629
|
||||
c3.98,0,7.854-2.036,10.019-5.702C205.637,445.335,203.81,438.202,198.283,434.932z M75.636,382.441
|
||||
c-2.7,1.559-5.853,1.955-8.832,1.164c-3.002-0.791-5.504-2.723-7.052-5.423c-3.212-5.562-1.292-12.695,4.236-15.895
|
||||
c1.827-1.059,3.828-1.559,5.807-1.559c4.026,0,7.959,2.095,10.1,5.818C83.118,372.108,81.198,379.241,75.636,382.441z"/>
|
||||
<path d="M374.422,397.138l-95.581,53.772c-6.144-5.364-14.068-8.727-22.842-8.727c-19.247,0-34.909,15.663-34.909,34.909
|
||||
c0,19.247,15.663,34.909,34.909,34.909s34.909-15.663,34.909-34.909c0-2.036-0.268-4.003-0.605-5.946l95.523-53.737
|
||||
c5.597-3.154,7.587-10.24,4.433-15.837C387.129,395.962,380.031,393.949,374.422,397.138z M255.999,488.727
|
||||
c-6.423,0-11.636-5.213-11.636-11.636c0-6.423,5.213-11.636,11.636-11.636s11.636,5.213,11.636,11.636
|
||||
C267.636,483.514,262.422,488.727,255.999,488.727z"/>
|
||||
<path d="M58.181,172.404v130.141c0,6.435,5.201,11.636,11.636,11.636c6.435,0,11.636-5.201,11.636-11.636V172.404
|
||||
c13.51-4.817,23.273-17.617,23.273-32.768c0-19.247-15.663-34.909-34.909-34.909c-19.247,0-34.909,15.663-34.909,34.909
|
||||
C34.908,154.787,44.671,167.587,58.181,172.404z M69.817,128c6.423,0,11.636,5.213,11.636,11.636s-5.213,11.636-11.636,11.636
|
||||
s-11.636-5.213-11.636-11.636S63.394,128,69.817,128z"/>
|
||||
<path d="M453.817,339.596V209.455c0-6.435-5.201-11.636-11.636-11.636s-11.636,5.201-11.636,11.636v130.141
|
||||
c-13.51,4.817-23.273,17.617-23.273,32.768c0,19.247,15.663,34.909,34.909,34.909s34.909-15.663,34.909-34.909
|
||||
C477.09,357.213,467.327,344.413,453.817,339.596z M442.181,384c-6.423,0-11.636-5.213-11.636-11.636s5.213-11.636,11.636-11.636
|
||||
c6.423,0,11.636,5.213,11.636,11.636S448.604,384,442.181,384z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
28
icons/svg/groups/group-udp-tunnels-01.svg
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 -3.5 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||
<g>
|
||||
<path d="M142.076578,191.086817 C142.076578,159.280656 116.294759,133.494615 84.4885969,133.494615 C52.6782136,133.494615 26.896394,159.280656 26.896394,191.086817 C26.896394,222.892979 52.6782136,248.67902 84.4885969,248.67902 C116.294759,248.67902 142.076578,222.892979 142.076578,191.086817" fill="#FF6600" transform="translate(84.486486, 191.086817) scale(1, -1) translate(-84.486486, -191.086817) ">
|
||||
|
||||
</path>
|
||||
<path d="M255.979703,110.454356 C255.979703,78.652416 230.197884,52.862153 198.391722,52.862153 C166.581339,52.862153 140.799519,78.652416 140.799519,110.454356 C140.799519,142.260518 166.581339,168.050781 198.391722,168.050781 C230.197884,168.050781 255.979703,142.260518 255.979703,110.454356" fill="#FFCC00" transform="translate(198.389611, 110.456467) scale(1, -1) translate(-198.389611, -110.456467) ">
|
||||
|
||||
</path>
|
||||
<path d="M115.200498,109.176452 C115.200498,77.3745125 89.4186786,51.5842495 57.6082953,51.5842495 C25.8063553,51.5842495 0.0203140271,77.3745125 0.0203140271,109.176452 C0.0203140271,140.982614 25.8063553,166.772877 57.6082953,166.772877 C89.4186786,166.772877 115.200498,140.982614 115.200498,109.176452" fill="#0089CC" transform="translate(57.610406, 109.178563) scale(1, -1) translate(-57.610406, -109.178563) ">
|
||||
|
||||
</path>
|
||||
<path d="M230.385749,191.086817 C230.385749,159.280656 204.603929,133.494615 172.789324,133.494615 C140.987384,133.494615 115.201343,159.280656 115.201343,191.086817 C115.201343,222.892979 140.987384,248.67902 172.789324,248.67902 C204.603929,248.67902 230.385749,222.892979 230.385749,191.086817" fill="#009939" transform="translate(172.793546, 191.086817) scale(1, -1) translate(-172.793546, -191.086817) ">
|
||||
|
||||
</path>
|
||||
<path d="M185.592001,57.9843213 C185.592001,26.1781597 159.805959,0.392118349 127.999798,0.392118349 C96.1936359,0.392118349 70.4075946,26.1781597 70.4075946,57.9843213 C70.4075946,89.790483 96.1936359,115.576524 127.999798,115.576524 C159.805959,115.576524 185.592001,89.790483 185.592001,57.9843213" fill="#BF0000" transform="translate(127.999798, 57.984321) scale(1, -1) translate(-127.999798, -57.984321) ">
|
||||
|
||||
</path>
|
||||
<path d="M140.798675,57.9788331 C140.798675,56.76721 140.904217,55.580917 140.980207,54.3861807 C166.525612,60.2796505 185.590734,83.1189569 185.590734,110.454356 C185.590734,111.665979 185.485192,112.856494 185.409202,114.05123 C159.863796,108.153539 140.798675,85.3142322 140.798675,57.9788331" fill="#FC0007" transform="translate(163.194704, 84.218705) scale(1, -1) translate(-163.194704, -84.218705) ">
|
||||
|
||||
</path>
|
||||
<path d="M148.39686,162.570614 C158.322038,145.219495 176.973434,133.495881 198.394255,133.495881 C207.124696,133.495881 215.369643,135.496959 222.787141,138.975626 C212.866185,156.326744 194.214789,168.050358 172.789746,168.050358 C164.059305,168.050358 155.814358,166.049281 148.39686,162.570614" fill="#1CD306" transform="translate(185.592001, 150.773120) scale(1, -1) translate(-185.592001, -150.773120) ">
|
||||
|
||||
</path>
|
||||
<path d="M115.200498,191.086817 C115.200498,177.015947 120.258075,164.139813 128.642338,154.138646 C137.018157,164.139813 142.075734,177.015947 142.075734,191.086817 C142.075734,205.157688 137.018157,218.033822 128.642338,228.034989 C120.258075,218.033822 115.200498,205.157688 115.200498,191.086817" fill="#0F7504" transform="translate(128.638116, 191.086817) scale(1, -1) translate(-128.638116, -191.086817) ">
|
||||
|
||||
</path>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
4
icons/svg/meta.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" ?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 32 32" id="Camada_1" version="1.1" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style><path d="M6,2h20c2.2,0,4,1.8,4,4v20c0,2.2-1.8,4-4,4H6c-2.2,0-4-1.8-4-4V6C2,3.8,3.8,2,6,2z"/><path class="st0" d="M7.4,18.6c0-3.6,1.8-7.2,3.9-7.2c1.1,0,2.1,0.7,3.6,2.8c-1.4,2.1-2.2,3.5-2.2,3.5c-1.9,2.9-2.5,3.6-3.6,3.6 C8,21.2,7.4,20.3,7.4,18.6 M19.7,17.3l-1.3-2.1c-0.3-0.6-0.7-1.1-1-1.6c1.2-1.8,2.1-2.7,3.3-2.7c2.4,0,4.3,3.5,4.3,7.8 c0,1.6-0.5,2.6-1.6,2.6C22.2,21.2,21.7,20.5,19.7,17.3 M16.3,12.1c-1.8-2.2-3.2-3.1-5-3.1C7.7,9,5,13.7,5,18.6c0,3.1,1.5,5,4,5 c1.8,0,3.1-0.8,5.4-4.9c0,0,1-1.7,1.6-2.9c0.2,0.4,0.5,0.8,0.7,1.2l1.1,1.8c2.1,3.5,3.3,4.7,5.4,4.7c2.4,0,3.8-2,3.8-5.1 c0-5.2-2.8-9.5-6.2-9.5C19,9,17.6,10.4,16.3,12.1"/></svg>
|
||||
|
After Width: | Height: | Size: 969 B |
13
icons/svg/numbers/n01.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 496.158 496.158" xml:space="preserve">
|
||||
<path style="fill:#56B48C;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
|
||||
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
|
||||
<path style="fill:#FFFFFF;" d="M278.767,145.419c-3.126-4.003-7.276-6.006-12.451-6.006c-4.591,0-7.716,0.879-9.375,2.637
|
||||
c-1.662,1.758-5.226,6.445-10.693,14.063c-5.47,7.617-11.744,14.502-18.823,20.654c-7.082,6.152-16.53,12.012-28.345,17.578
|
||||
c-7.91,3.712-13.429,6.738-16.553,9.082c-3.126,2.344-4.688,6.006-4.688,10.986c0,4.298,1.586,8.082,4.761,11.353
|
||||
c3.172,3.273,6.812,4.907,10.913,4.907c8.592,0,25.292-9.521,50.098-28.564V335.41c0,7.814,1.806,13.722,5.42,17.725
|
||||
c3.612,4.003,8.397,6.006,14.355,6.006c13.378,0,20.068-9.814,20.068-29.443V161.972
|
||||
C283.455,154.941,281.892,149.425,278.767,145.419z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
19
icons/svg/numbers/n02.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 496.158 496.158" xml:space="preserve">
|
||||
<path style="fill:#56B48C;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
|
||||
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
|
||||
<path style="fill:#FFFFFF;" d="M319.783,325.595c-4.005-3.124-9.814-4.688-17.432-4.688h-76.465c2.44-3.71,4.834-6.885,7.178-9.521
|
||||
c5.468-6.64,15.55-15.967,30.249-27.979c14.696-12.012,25.17-20.824,31.421-26.44c6.249-5.614,12.378-13.378,18.384-23.291
|
||||
c6.006-9.911,9.009-20.922,9.009-33.032c0-7.713-1.442-15.161-4.321-22.339c-2.882-7.178-6.91-13.5-12.085-18.97
|
||||
c-5.177-5.468-11.183-9.764-18.018-12.891c-10.547-4.688-23.291-7.031-38.232-7.031c-12.403,0-23.218,1.831-32.446,5.493
|
||||
s-16.846,8.473-22.852,14.429c-6.006,5.958-10.524,12.598-13.55,19.922c-3.028,7.324-4.541,14.355-4.541,21.094
|
||||
c0,5.566,1.611,9.961,4.834,13.184s7.274,4.834,12.158,4.834c5.566,0,9.789-1.758,12.671-5.273
|
||||
c2.879-3.516,5.468-8.544,7.764-15.088c2.293-6.542,3.93-10.547,4.907-12.012c7.324-11.229,17.381-16.846,30.176-16.846
|
||||
c6.054,0,11.646,1.369,16.772,4.102c5.127,2.735,9.178,6.569,12.158,11.499c2.978,4.933,4.468,10.524,4.468,16.772
|
||||
c0,5.763-1.392,11.646-4.175,17.651s-6.837,11.865-12.158,17.578c-5.324,5.713-11.989,11.403-19.995,17.065
|
||||
c-4.493,3.028-11.964,9.352-22.412,18.97c-10.451,9.62-22.169,21.167-35.156,34.644c-3.126,3.321-6.006,7.887-8.643,13.696
|
||||
c-2.637,5.812-3.955,10.474-3.955,13.989c0,5.47,2.051,10.231,6.152,14.282c4.102,4.054,9.814,6.079,17.139,6.079H306.6
|
||||
c6.445,0,11.254-1.659,14.429-4.98c3.172-3.319,4.761-7.372,4.761-12.158C325.789,332.97,323.786,328.722,319.783,325.595z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
24
icons/svg/numbers/n03.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 496.158 496.158" xml:space="preserve">
|
||||
<path style="fill:#56B48C;" d="M248.082,0.003C111.07,0.003,0,111.061,0,248.085c0,137,111.07,248.07,248.082,248.07
|
||||
c137.006,0,248.076-111.07,248.076-248.07C496.158,111.061,385.088,0.003,248.082,0.003z"/>
|
||||
<path style="fill:#FFFFFF;" d="M319.637,269.711c-2.637-6.395-6.569-12.231-11.792-17.505c-5.226-5.273-11.646-9.961-19.263-14.063
|
||||
c7.91-6.64,13.989-13.451,18.237-20.435c4.248-6.981,6.372-15.355,6.372-25.122c0-7.42-1.465-14.355-4.395-20.801
|
||||
s-7.276-12.108-13.037-16.992c-5.763-4.882-12.55-8.617-20.361-11.206c-7.814-2.586-16.457-3.882-25.928-3.882
|
||||
c-10.84,0-20.654,1.538-29.443,4.614s-16.139,7.155-22.046,12.231c-5.91,5.079-10.4,10.426-13.477,16.04
|
||||
c-3.076,5.617-4.614,10.963-4.614,16.04c0,5.273,1.634,9.499,4.907,12.671c3.271,3.175,6.859,4.761,10.767,4.761
|
||||
c3.319,0,6.249-0.586,8.789-1.758c2.538-1.172,4.296-2.783,5.273-4.834c1.659-3.809,3.49-7.86,5.493-12.158
|
||||
c2-4.296,4.125-7.812,6.372-10.547c2.245-2.733,5.296-4.93,9.155-6.592c3.856-1.659,8.764-2.49,14.722-2.49
|
||||
c8.789,0,15.77,2.71,20.947,8.13c5.175,5.42,7.764,11.891,7.764,19.409c0,9.865-3.248,17.432-9.741,22.705
|
||||
c-6.496,5.273-14.234,7.91-23.218,7.91h-6.006c-6.935,0-12.158,1.442-15.674,4.321c-3.516,2.882-5.273,6.665-5.273,11.353
|
||||
c0,4.786,1.465,8.521,4.395,11.206c2.93,2.687,7.079,4.028,12.451,4.028c1.172,0,3.809-0.194,7.91-0.586
|
||||
c4.102-0.389,7.127-0.586,9.082-0.586c11.133,0,19.823,3.248,26.074,9.741c6.249,6.496,9.375,15.454,9.375,26.88
|
||||
c0,7.716-1.831,14.502-5.493,20.361s-8.302,10.279-13.916,13.257c-5.617,2.98-11.451,4.468-17.505,4.468
|
||||
c-10.547,0-18.727-3.296-24.536-9.888c-5.812-6.592-11.256-16.674-16.333-30.249c-0.783-2.245-2.442-4.175-4.98-5.786
|
||||
c-2.541-1.611-5.177-2.417-7.91-2.417c-5.47,0-10.034,1.735-13.696,5.2c-3.662,3.468-5.493,8.034-5.493,13.696
|
||||
c0,4.395,1.538,9.961,4.614,16.699s7.617,13.257,13.623,19.556s13.646,11.549,22.925,15.747c9.276,4.198,19.775,6.299,31.494,6.299
|
||||
c11.522,0,22.046-1.831,31.567-5.493s17.748-8.739,24.683-15.234c6.933-6.493,12.181-13.891,15.747-22.192
|
||||
c3.563-8.299,5.347-16.894,5.347-25.781C323.592,283.018,322.273,276.109,319.637,269.711z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
7
icons/svg/paypal.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="24" cy="24" r="20" fill="#0070BA"/>
|
||||
<path d="M32.3305 18.0977C32.3082 18.24 32.2828 18.3856 32.2542 18.5351C31.2704 23.5861 27.9046 25.331 23.606 25.331H21.4173C20.8916 25.331 20.4486 25.7127 20.3667 26.2313L19.2461 33.3381L18.9288 35.3527C18.8755 35.693 19.1379 36 19.4815 36H23.3634C23.8231 36 24.2136 35.666 24.286 35.2127L24.3241 35.0154L25.055 30.3772L25.1019 30.1227C25.1735 29.6678 25.5648 29.3338 26.0245 29.3338H26.6051C30.3661 29.3338 33.3103 27.8068 34.1708 23.388C34.5303 21.5421 34.3442 20.0008 33.393 18.9168C33.1051 18.59 32.748 18.3188 32.3305 18.0977Z" fill="white" fill-opacity="0.6"/>
|
||||
<path d="M31.3009 17.6871C31.1506 17.6434 30.9955 17.6036 30.8364 17.5678C30.6766 17.5328 30.5127 17.5018 30.3441 17.4748C29.754 17.3793 29.1074 17.334 28.4147 17.334H22.5676C22.4237 17.334 22.2869 17.3666 22.1644 17.4254C21.8948 17.5551 21.6944 17.8104 21.6459 18.1229L20.402 26.0013L20.3662 26.2311C20.4481 25.7126 20.8911 25.3308 21.4168 25.3308H23.6055C27.9041 25.3308 31.2699 23.5851 32.2537 18.5349C32.2831 18.3854 32.3078 18.2398 32.33 18.0975C32.0811 17.9655 31.8115 17.8525 31.5212 17.7563C31.4496 17.7324 31.3757 17.7094 31.3009 17.6871Z" fill="white" fill-opacity="0.8"/>
|
||||
<path d="M21.6461 18.1231C21.6946 17.8105 21.895 17.5552 22.1646 17.4264C22.2879 17.3675 22.4239 17.3349 22.5678 17.3349H28.4149C29.1077 17.3349 29.7542 17.3803 30.3444 17.4757C30.513 17.5027 30.6768 17.5338 30.8367 17.5687C30.9957 17.6045 31.1508 17.6443 31.3011 17.688C31.3759 17.7103 31.4498 17.7334 31.5222 17.7564C31.8125 17.8527 32.0821 17.9664 32.331 18.0976C32.6237 16.231 32.3287 14.9601 31.3194 13.8093C30.2068 12.5424 28.1986 12 25.629 12H18.169C17.6441 12 17.1963 12.3817 17.1152 12.9011L14.0079 32.5969C13.9467 32.9866 14.2473 33.3381 14.6402 33.3381H19.2458L20.4022 26.0014L21.6461 18.1231Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
4
icons/svg/policies/direct.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M19.2901 9.1698L7.70015 3.0698C4.95015 1.6198 1.96015 4.5498 3.35015 7.3298L4.97015 10.5698C5.42015 11.4698 5.42015 12.5298 4.97015 13.4298L3.35015 16.6698C1.96015 19.4498 4.95015 22.3698 7.70015 20.9298L19.2901 14.8298C21.5701 13.6298 21.5701 10.3698 19.2901 9.1698Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 590 B |
7
icons/svg/policies/fallback-1.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path opacity="0.4" d="M16.19 2H7.81C4.17 2 2 4.17 2 7.81V16.18C2 19.83 4.17 22 7.81 22H16.18C19.82 22 21.99 19.83 21.99 16.19V7.81C22 4.17 19.83 2 16.19 2Z" fill="#292D32"/>
|
||||
<path d="M11.9995 10.6899C11.2795 10.6899 10.6895 11.2799 10.6895 11.9999C10.6895 12.7199 11.2795 13.3099 11.9995 13.3099C12.7195 13.3099 13.3095 12.7199 13.3095 11.9999C13.3095 11.2799 12.7195 10.6899 11.9995 10.6899Z" fill="#292D32"/>
|
||||
<path d="M6.99945 10.6899C6.27945 10.6899 5.68945 11.2799 5.68945 11.9999C5.68945 12.7199 6.27945 13.3099 6.99945 13.3099C7.71945 13.3099 8.30945 12.7199 8.30945 11.9999C8.30945 11.2799 7.71945 10.6899 6.99945 10.6899Z" fill="#292D32"/>
|
||||
<path d="M16.9995 10.6899C16.2795 10.6899 15.6895 11.2799 15.6895 11.9999C15.6895 12.7199 16.2795 13.3099 16.9995 13.3099C17.7195 13.3099 18.3095 12.7199 18.3095 11.9999C18.3095 11.2799 17.7195 10.6899 16.9995 10.6899Z" fill="#292D32"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
5
icons/svg/reddit.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16 2C8.27812 2 2 8.27812 2 16C2 23.7219 8.27812 30 16 30C23.7219 30 30 23.7219 30 16C30 8.27812 23.7219 2 16 2Z" fill="#FC471E"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0193 8.90951C20.0066 8.98984 20 9.07226 20 9.15626C20 10.0043 20.6716 10.6918 21.5 10.6918C22.3284 10.6918 23 10.0043 23 9.15626C23 8.30819 22.3284 7.6207 21.5 7.6207C21.1309 7.6207 20.7929 7.7572 20.5315 7.98359L16.6362 7L15.2283 12.7651C13.3554 12.8913 11.671 13.4719 10.4003 14.3485C10.0395 13.9863 9.54524 13.7629 9 13.7629C7.89543 13.7629 7 14.6796 7 15.8103C7 16.5973 7.43366 17.2805 8.06967 17.6232C8.02372 17.8674 8 18.1166 8 18.3696C8 21.4792 11.5817 24 16 24C20.4183 24 24 21.4792 24 18.3696C24 18.1166 23.9763 17.8674 23.9303 17.6232C24.5663 17.2805 25 16.5973 25 15.8103C25 14.6796 24.1046 13.7629 23 13.7629C22.4548 13.7629 21.9605 13.9863 21.5997 14.3485C20.2153 13.3935 18.3399 12.7897 16.2647 12.7423L17.3638 8.24143L20.0193 8.90951ZM12.5 18.8815C13.3284 18.8815 14 18.194 14 17.3459C14 16.4978 13.3284 15.8103 12.5 15.8103C11.6716 15.8103 11 16.4978 11 17.3459C11 18.194 11.6716 18.8815 12.5 18.8815ZM19.5 18.8815C20.3284 18.8815 21 18.194 21 17.3459C21 16.4978 20.3284 15.8103 19.5 15.8103C18.6716 15.8103 18 16.4978 18 17.3459C18 18.194 18.6716 18.8815 19.5 18.8815ZM12.7773 20.503C12.5476 20.3462 12.2372 20.4097 12.084 20.6449C11.9308 20.8802 11.9929 21.198 12.2226 21.3548C13.3107 22.0973 14.6554 22.4686 16 22.4686C17.3446 22.4686 18.6893 22.0973 19.7773 21.3548C20.0071 21.198 20.0692 20.8802 19.916 20.6449C19.7628 20.4097 19.4524 20.3462 19.2226 20.503C18.3025 21.1309 17.1513 21.4449 16 21.4449C15.3173 21.4449 14.6345 21.3345 14 21.1137C13.5646 20.9621 13.1518 20.7585 12.7773 20.503Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
7
icons/svg/samsung.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
aria-label="Samsung" role="img"
|
||||
viewBox="0 0 512 512" fill="#117cad"><rect
|
||||
width="512" height="512"
|
||||
rx="15%"
|
||||
fill="#034ea2"/><path fill="#ffffff" d="m72,224c-16 0-23 5-22 20 3 12 25 19 27 23l0 4c0 2-1 4-5 4-4 0-6-3-6-5l0-5-16 0c-1 16 11 21 22 21 14 0 21-4 21-17 1-19-24-20-26-28 0 -1 0-1 0-3 0-1 1-4 5-4 4 0 5 3 5 5l0 4 15 0 0-4c0-13-12-15-20-15zm353,15 0,33c1,21 39,17 39,0 l 0-20-17 0 0 8 5 0 0 11c-1 5-13 5-13 0 0-11 0-21 0-31 0-5 11-5 12 0l0 5 13 0 0-6c-1-20-39-17-39 0zm-160-15c-16 0-23 5-22 20 3 12 25 19 27 23l0 4c0 2-1 4-5 4-4 0-6-3-6-5l0-5-16 0c-1 16 11 21 22 21 14 0 21-4 21-17 1-19-24-20-26-28 0 -1 0-1 0-3 0-1 1-4 5-4 4 0 5 3 5 5l0 4 15 0 0-4c0-13-12-15-20-15zm-100 1-1 59 15 0 0-53 11 53 15 0 9-53 0 53 15 0-1-59-24 0-7 45-7-45-24 0zm135 0 0 43c0 1 0 3 0 2 1 11 9 15 21 15 11 0 20-4 20-15 0 0 0-3 0,-4l0-41-15 0 0 43c0 1 0 1 0 3 0 1-1 4-7 4-4 0-5-3-5-4 0 0 0-1 0-3l0-43zm-185 0-11 59 16 0 8-53 8 53 16 0-11-59zm243 0 0 59 15 0 0-48 15 48 21 0 0-59-15 0 0 47-13-47z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
17
icons/svg/substore/amnezia-hat.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="si-glyph si-glyph-hat">
|
||||
|
||||
<title>629</title>
|
||||
|
||||
<defs>
|
||||
|
||||
</defs>
|
||||
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g transform="translate(0.000000, 3.000000)" fill="#434343">
|
||||
<path d="M12.708,5.211 C12.278,6.128 10.548,7.239 8,7.239 C5.468,7.239 3.667,6.142 3.288,5.226 C1.375,5.312 0,6.456 0,7.136 C0,8.264 3.581,9.864 8,9.864 C12.418,9.864 16,8.264 16,7.136 C16,6.447 14.625,5.569 12.708,5.211 L12.708,5.211 Z" class="si-glyph-fill">
|
||||
|
||||
</path>
|
||||
<path d="M10.077,0.197 C9.561,0.197 8.495,0.551 8.012,0.551 C7.529,0.551 6.463,0.197 5.948,0.197 C4.834,0.197 4.138,1.569 4.041,2.094 L4.021,4.521 C4.583,5.027 5.632,5.663 6.782,5.759 C7.182,5.792 7.604,5.812 8.043,5.812 C8.48,5.812 8.901,5.792 9.302,5.759 C10.452,5.662 11.376,5.105 11.97,4.538 L11.965,2.125 C11.879,1.579 11.181,0.197 10.077,0.197 L10.077,0.197 Z" class="si-glyph-fill">
|
||||
|
||||
</path>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
19
icons/svg/substore/external.svg
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 365.789 365.789" xml:space="preserve">
|
||||
<g id="XMLID_7_">
|
||||
<path id="XMLID_8_" d="M137.743,18.96v139.676c0,62.873,51.15,114.023,114.022,114.023c62.873,0,114.023-51.15,114.023-114.023
|
||||
V18.96H137.743z M225.575,98.13c0,14.77-12.017,26.787-26.787,26.787S172.001,112.9,172.001,98.13
|
||||
c0-14.771,12.017-26.787,26.787-26.787S225.575,83.359,225.575,98.13z M277.957,98.13c0-14.771,12.017-26.787,26.787-26.787
|
||||
s26.787,12.017,26.787,26.787c0,14.77-12.017,26.787-26.787,26.787S277.957,112.9,277.957,98.13z M219.562,172.001
|
||||
c3.773,8.898,17.209,15.894,32.204,15.894s28.432-6.996,32.205-15.894h33.146c-1.503,13.065-8.85,25.31-20.672,34.176
|
||||
c-12.122,9.092-27.989,14.1-44.679,14.1c-16.688,0-32.556-5.007-44.678-14.1c-11.823-8.867-19.17-21.111-20.673-34.176H219.562z"/>
|
||||
<path id="XMLID_13_" d="M177.154,284.553l-1.181-0.703h-29.747c-3.772-8.898-17.209-15.894-32.203-15.894
|
||||
c-14.995,0-28.432,6.996-32.205,15.894H48.673c1.503-13.065,8.85-25.31,20.672-34.176c12.124-9.093,27.991-14.1,44.679-14.1
|
||||
c1.293,0,2.678,0.041,4.356,0.129l8.923,0.469l-4.268-7.85c-11.563-21.271-17.675-45.369-17.675-69.687V93.13H0v139.676
|
||||
c0,62.873,51.15,114.023,114.023,114.023c34.758,0,67.232-15.701,89.099-43.077l4.313-5.402l-6.48-2.406
|
||||
C192.743,292.895,184.736,289.063,177.154,284.553z M61.045,145.512c14.771,0,26.787,12.017,26.787,26.787
|
||||
c0,14.771-12.017,26.787-26.787,26.787c-14.77,0-26.786-12.017-26.786-26.787C34.259,157.529,46.275,145.512,61.045,145.512z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
2
icons/svg/substore/lab.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" width="800px" height="800px" viewBox="-0.5 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m22.171 19.68-7.352-11.311v-5.407h1.708v-2.962h-10.429v2.965h1.722v5.407l-7.366 11.308c-.285.431-.455.96-.455 1.528 0 1.542 1.25 2.792 2.792 2.792h.003 17.031c1.544-.003 2.795-1.255 2.795-2.8 0-.565-.167-1.091-.455-1.531l.007.011zm-.905 2.302c-.282.513-.818.854-1.434.854-.002 0-.004 0-.006 0h-17.032c-.001 0-.002 0-.003 0-.904 0-1.636-.732-1.636-1.636 0-.33.098-.638.266-.895l-.004.006 7.549-11.6v-5.751h4.686v5.754l7.541 11.6c.17.251.272.561.272.895 0 .285-.074.553-.204.785l.004-.008z"/><path d="m14.412 12.351h-6.191l-5.655 8.698c-.03.045-.048.1-.048.159 0 .051.013.098.036.14l-.001-.001c.05.087.142.145.248.146h17.031.001c.106 0 .198-.058.247-.145l.001-.001c.022-.04.036-.088.036-.138 0-.059-.018-.115-.049-.16l.001.001z"/></svg>
|
||||
|
After Width: | Height: | Size: 969 B |
4
icons/svg/substore/magic.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.544 1.49857C16.8278 1.08878 16.0621 1.24503 15.3437 1.54072C14.6378 1.83126 13.769 2.3458 12.7076 2.97441L12.0804 3.34588C11.394 3.75237 11.2339 3.83012 11.0785 3.84959C10.9285 3.86837 10.7686 3.83515 10.0272 3.60702L9.34735 3.3978C8.20554 3.0464 7.26483 2.75689 6.52104 2.64685C5.74973 2.53274 4.98782 2.57927 4.38078 3.13487C3.77784 3.68672 3.65464 4.4423 3.68494 5.22709C3.71433 5.98815 3.89821 6.96778 4.12234 8.16182L4.25502 8.86874C4.3996 9.63911 4.41777 9.81347 4.38149 9.97264C4.34436 10.1356 4.24727 10.294 3.77952 10.9431L3.3514 11.5371C2.62441 12.5457 2.03065 13.3695 1.67313 14.0516C1.30926 14.7457 1.08259 15.4902 1.40213 16.2436C1.72676 17.009 2.42603 17.3422 3.17507 17.5274C3.90291 17.7074 4.88842 17.7975 6.08514 17.907L6.79813 17.9723C7.57839 18.0437 7.73636 18.0742 7.85944 18.1446C7.98151 18.2144 8.08585 18.3329 8.53855 18.9671L8.95248 19.5469C9.64616 20.5187 10.2182 21.32 10.74 21.8553C11.2791 22.4083 11.9187 22.8384 12.743 22.7351C13.5531 22.6337 14.0878 22.0723 14.5134 21.4115C14.9307 20.7636 15.3538 19.842 15.8718 18.7137L16.1769 18.0494C16.2869 17.8098 16.3703 17.6316 16.4373 17.4962C16.4477 17.5079 16.4585 17.5194 16.4697 17.5306L20.4697 21.5306C20.7626 21.8235 21.2374 21.8235 21.5303 21.5306C21.8232 21.2377 21.8232 20.7628 21.5303 20.4699L17.6859 16.6255C17.7093 16.6173 17.7333 16.6088 17.758 16.6002L18.441 16.361C19.5975 15.956 20.5446 15.6243 21.2233 15.2696C21.9207 14.9051 22.5191 14.4235 22.7004 13.628C22.8839 12.8228 22.5399 12.1402 22.0536 11.5343C21.5851 10.9503 20.8613 10.2874 19.9839 9.48369L19.4604 9.00421C18.8892 8.48099 18.7829 8.36232 18.7259 8.22792C18.6669 8.08891 18.6544 7.91704 18.6665 7.12305L18.6775 6.39777C18.6962 5.17362 18.7114 4.1698 18.6122 3.41751C18.511 2.65005 18.2629 1.90987 17.544 1.49857ZM13.4178 4.29716C14.5467 3.62858 15.3217 3.17189 15.9146 2.92782C16.5071 2.68397 16.7019 2.74496 16.7991 2.80054C16.8936 2.8546 17.0424 2.98631 17.1251 3.61361C17.2081 4.24305 17.1965 5.13504 17.1767 6.43877L17.1647 7.21994C17.1547 7.82701 17.1461 8.34464 17.345 8.81361C17.5457 9.2869 17.9243 9.63271 18.3612 10.0316L18.4472 10.1103L18.9225 10.5456C19.8602 11.4046 20.4962 11.9901 20.8837 12.473C21.2622 12.9446 21.2697 13.1551 21.2379 13.2947C21.2039 13.444 21.0914 13.646 20.5285 13.9402C19.9583 14.2382 19.1162 14.5352 17.8865 14.9659L17.1539 15.2223C16.5752 15.4242 16.0914 15.593 15.7122 15.94C15.3345 16.2857 15.1202 16.7539 14.8621 17.3179L14.5343 18.0319C13.9843 19.2298 13.6047 20.0522 13.2524 20.5992C12.9015 21.1439 12.6931 21.2297 12.5566 21.2468C12.4345 21.2621 12.2378 21.2428 11.8141 20.8082C11.3826 20.3655 10.8767 19.6606 10.1351 18.6219L9.75937 18.0955L9.69049 17.9988C9.34758 17.5169 9.04872 17.0968 8.60434 16.8426C8.16092 16.5889 7.64642 16.5426 7.05381 16.4893L6.93485 16.4785L6.28697 16.4192C5.00882 16.3022 4.1387 16.2205 3.53516 16.0712C2.93966 15.924 2.82806 15.764 2.78306 15.6579C2.73296 15.5398 2.7003 15.3229 3.00168 14.748C3.30352 14.1721 3.83249 13.435 4.60438 12.364L5.06497 11.7251C5.42825 11.2224 5.73046 10.8041 5.844 10.3059C5.95834 9.80418 5.86331 9.30141 5.75053 8.70473L5.60821 7.94698C5.36962 6.67572 5.20841 5.80603 5.18383 5.16922C5.15965 4.54303 5.27846 4.34669 5.39353 4.24137C5.50449 4.13981 5.69883 4.04154 6.30151 4.1307C6.91831 4.22195 7.7488 4.4753 8.96802 4.85048L9.6966 5.0748C10.2652 5.25066 10.7542 5.40192 11.2649 5.33796C11.7704 5.27465 12.2154 5.01032 12.7422 4.69734L13.4178 4.29716Z" fill="#1C274C"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
5
icons/svg/substore/stack.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.04582 10.8715C8.52718 10.6007 8.6979 9.99103 8.42713 9.50967C8.15637 9.02831 7.54665 8.85759 7.0653 9.12836L3.50974 11.1284C3.18725 11.3098 2.99128 11.6544 3.0003 12.0243C3.00931 12.3942 3.22184 12.7289 3.55279 12.8944L5.63258 13.9343L3.50974 15.1284C3.18725 15.3098 2.99128 15.6544 3.0003 16.0243C3.00931 16.3942 3.22184 16.7289 3.55279 16.8944L11.5528 20.8944C11.8343 21.0351 12.1657 21.0351 12.4472 20.8944L20.4472 16.8944C20.7782 16.7289 20.9907 16.3942 20.9997 16.0243C21.0087 15.6544 20.8128 15.3098 20.4903 15.1284L18.3674 13.9343L20.4472 12.8944C20.7782 12.7289 20.9907 12.3942 20.9997 12.0243C21.0087 11.6544 20.8128 11.3098 20.4903 11.1284L16.9347 9.12836C16.4533 8.85759 15.8436 9.02831 15.5729 9.50967C15.3021 9.99103 15.4728 10.6007 15.9542 10.8715L17.8679 11.948L12 14.8819L6.13213 11.948L8.04582 10.8715ZM16.2077 15.0141L12.4472 16.8944C12.1657 17.0351 11.8343 17.0351 11.5528 16.8944L7.7923 15.0141L6.13213 15.948L12 18.8819L17.8679 15.948L16.2077 15.0141Z" fill="#152C70"/>
|
||||
<path d="M12.4472 3.10557C12.1657 2.96481 11.8343 2.96481 11.5528 3.10557L3.55279 7.10557C3.214 7.27496 3 7.62123 3 8C3 8.37877 3.214 8.72504 3.55279 8.89443L11.5528 12.8944C11.8343 13.0352 12.1657 13.0352 12.4472 12.8944L20.4472 8.89443C20.786 8.72504 21 8.37877 21 8C21 7.62123 20.786 7.27496 20.4472 7.10557L12.4472 3.10557Z" fill="#4296FF"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
7
icons/svg/vk.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
aria-label="VK" role="img"
|
||||
viewBox="0 0 512 512"><rect
|
||||
width="512" height="512"
|
||||
rx="15%"
|
||||
fill="#5281b8"/><path fill="#ffffff" d="M274 363c5-1 14-3 14-15 0 0-1-30 13-34s32 29 51 42c14 9 25 8 25 8l51-1s26-2 14-23c-1-2-9-15-39-42-31-30-26-25 11-76 23-31 33-50 30-57-4-7-20-6-20-6h-57c-6 0-9 1-12 6 0 0-9 25-21 45-25 43-35 45-40 42-9-5-7-24-7-37 0-45 7-61-13-65-13-2-59-4-73 3-7 4-11 11-8 12 3 0 12 1 17 7 8 13 9 75-2 81-15 11-53-62-62-86-2-6-5-7-12-9H79c-6 0-15 1-11 13 27 56 83 193 184 192z"/></svg>
|
||||
|
After Width: | Height: | Size: 656 B |
23
icons/svg/wan/smart-tv-1.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 58 58" xml:space="preserve">
|
||||
<rect y="5.5" style="fill:#38454F;" width="58" height="38"/>
|
||||
<path style="fill:#61B872;" d="M13.962,21.5h-2.924C10.465,21.5,10,21.035,10,20.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C15,21.035,14.535,21.5,13.962,21.5z"/>
|
||||
<path style="fill:#48A0DC;" d="M24.962,21.5h-2.924C21.465,21.5,21,21.035,21,20.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C26,21.035,25.535,21.5,24.962,21.5z"/>
|
||||
<path style="fill:#EBBA16;" d="M35.962,21.5h-2.924C32.465,21.5,32,21.035,32,20.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C37,21.035,36.535,21.5,35.962,21.5z"/>
|
||||
<path style="fill:#BF4D90;" d="M46.962,21.5h-2.924C43.465,21.5,43,21.035,43,20.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C48,21.035,47.535,21.5,46.962,21.5z"/>
|
||||
<path style="fill:#DD352E;" d="M13.962,32.5h-2.924C10.465,32.5,10,32.035,10,31.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C15,32.035,14.535,32.5,13.962,32.5z"/>
|
||||
<path style="fill:#A4E869;" d="M24.962,32.5h-2.924C21.465,32.5,21,32.035,21,31.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C26,32.035,25.535,32.5,24.962,32.5z"/>
|
||||
<path style="fill:#50508A;" d="M35.962,32.5h-2.924C32.465,32.5,32,32.035,32,31.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C37,32.035,36.535,32.5,35.962,32.5z"/>
|
||||
<path style="fill:#BE7C6D;" d="M46.962,32.5h-2.924C43.465,32.5,43,32.035,43,31.462v-2.924c0-0.573,0.465-1.038,1.038-1.038h2.924
|
||||
c0.573,0,1.038,0.465,1.038,1.038v2.924C48,32.035,47.535,32.5,46.962,32.5z"/>
|
||||
<polygon style="fill:#AFB6BB;" points="30,49.5 30,43.5 28,43.5 28,49.5 15,49.5 15,52.5 43,52.5 43,49.5 "/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
25
icons/svg/wan/torrent-clients.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 12.7 12.7" id="svg8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
|
||||
|
||||
<defs id="defs2">
|
||||
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5343">
|
||||
|
||||
<path d="m 3.0688351,285.55677 c -1.613568,1.19596 -2.5662181,3.08478 -2.56883509,5.09323 0,3.50701 2.84299219,6.35 6.35000009,6.35 C 10.357008,297 13.2,294.15701 13.2,290.65 c -0.0022,-0.84296 -0.452078,-2.71271 -0.500228,-2.45359 -0.02424,0.84121 -0.571809,2.35322 -0.602031,2.23138 -0.0026,-0.50621 -0.2876,-1.42626 -0.305098,-1.19509 0.02804,1.40695 -1.48374,3.17677 -2.3076623,3.50038 -0.8310457,0.36942 -1.7371637,0.56412 -2.6117267,0.56534 -0.1736918,2e-5 -1.1686519,-0.13807 -1.6443439,-0.70435 -0.826376,-0.89253 -0.00201,-1.09994 0.4625039,-1.27331 0.5055862,-0.18871 1.030887,-0.30969 1.5203212,-0.42013 0.7456988,-0.16826 0.4710618,-0.52626 0.1049028,-0.6289 -0.9266939,-0.25976 -2.044886,0.33543 -2.8654579,0.30593 -0.848406,-0.0291 -0.804618,-1.69621 -0.1405601,-1.76217 0.7394212,-0.0734 1.6665151,-0.51079 1.461779,-0.65673 -0.8303549,-0.61672 -0.9617369,-0.79081 -1.0595549,-1.16418 -0.1480201,-0.565 0.341282,-1.03557 0.05777,-0.96356 -0.2596169,0.08 -0.4110678,0.15641 -0.5988619,0.25715 -0.1672929,0.0897 -0.293814,0.0546 -0.6751841,0.002 -0.3249449,-0.045 -0.3870058,-0.0557 -0.3755009,-0.25673 0.0115,-0.20097 0.07295,-0.52125 -0.05223,-0.47648 z" id="path5345" style="fill:#7aafff;fill-opacity:1;stroke:none;stroke-width:2.01045942;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
|
||||
|
||||
</clipPath>
|
||||
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4543">
|
||||
|
||||
<path d="m 1.7760088,291.5696 c -1.82613339,0.17434 -3.2940315,0.91934 -3.4903996,2.16451 -0.2629054,1.66729 1.5678591,3.34127 4.0891213,3.73893 1.2172084,0.19119 2.434234,0.053 3.3807423,-0.38387 0.7310194,0.5283 1.669357,0.90078 2.6704721,1.06008 2.5212691,0.39771 4.7783381,-0.6315 5.0412801,-2.2988 0.262905,-1.6673 -1.490667,-1.94329 -4.257163,-2.17938 -2.7664958,-0.23609 -3.6163896,-1.68839 -5.7470448,-2.04575 -0.5660191,-0.0893 -1.1380808,-0.10817 -1.6870084,-0.0557 z" id="path4545" style="opacity:1;vector-effect:none;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2.11666656;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
|
||||
|
||||
</clipPath>
|
||||
|
||||
</defs>
|
||||
|
||||
<g id="layer1" transform="translate(0,-284.3)">
|
||||
|
||||
<circle cx="6.3499999" cy="290.64999" id="path4514" r="6.3499999" style="fill:#aaccff;fill-opacity:1;stroke:none;stroke-width:1.74658811;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
|
||||
|
||||
|
After Width: | Height: | Size: 6.4 KiB |
12
icons/svg/wan/vlan-1.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" id="icon" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: none;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<path d="M30,17V15H17V11h2a2.0023,2.0023,0,0,0,2-2V4a2.0023,2.0023,0,0,0-2-2H13a2.0023,2.0023,0,0,0-2,2V9a2.0023,2.0023,0,0,0,2,2h2v4H2v2H8v4H6a2.0023,2.0023,0,0,0-2,2v5a2.0023,2.0023,0,0,0,2,2h6a2.0023,2.0023,0,0,0,2-2V23a2.0023,2.0023,0,0,0-2-2H10V17H22v4H20a2.0023,2.0023,0,0,0-2,2v5a2.0023,2.0023,0,0,0,2,2h6a2.0023,2.0023,0,0,0,2-2V23a2.0023,2.0023,0,0,0-2-2H24V17ZM13,4h6V9H13ZM12,28H6V23h6Zm14,0H20V23h6Z" transform="translate(0 0)"/>
|
||||
<rect id="_Transparent_Rectangle_" data-name="<Transparent Rectangle>" class="cls-1" width="32" height="32"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 889 B |
7
icons/svg/wan/webway-priority.svg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
aria-label="WireGuard" role="img"
|
||||
viewBox="0 0 512 512"><rect
|
||||
width="512" height="512"
|
||||
rx="15%"
|
||||
fill="#88171a"/><path d="m238 53l35 8 0 2c-15 2-30-4-45-5 11 7 23 11 35 15-19 16-35-5-56 9 20 10 19 8 21 27-9 1-24 10-27 16 13 3 28 0 41 8-4 3-14 7-18 10 9 2 20-2 25 1 19 16 54 38 64 60 17 37-22 77-60 83-53 11-83 66-64 117 19 50 78 72 125 46 66-40 56-108 16-145-2-2-4-2-6 0-14 9-29 17-45 24 36 8 41 35 37 54-13 48-78 37-85-4-3-19 7-38 24-46 59-26 87-30 104-97 6-38-3-58-31-80-11-11-33-18-40-35-1-2 1-6 3-6 10-2 49-3 49-1 7 7 13-4 16-9-10-2-21-1-29-1-1 0-3-2-4-3 1 -1 3-2 4-2h41c0-7-9-17-18-19v3c-8 1-16-1-24-4-4-3-7-9-11-11-16-9-33-16-54-16-10 0-17 1-23 1zm74 30l3 3-4 2c-2 1-3 0-4-1-2-3 4-5 5-4zm-120 96c-54 33-51 109-3 139 4 2 6 2 8-1 12-15 23-22 36-30-25-4-38-16-37-33-4-60 83-54 74 2-2 10-8 19-16 25 27-6 47-21 55-48 2-8 2-19-2-26-30-44-75-53-115-28zm-62 195c16-7 33-10 49-13 1-13 5-26 13-36-30 0-55 20-62 49z" fill="#ffffff"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
2
icons/svg/wan/webway-unpriveleged.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><title>WireGuard icon</title><path d="M23.98 11.645S24.533 0 11.735 0C.418 0 .064 11.17.064 11.17S-1.6 24 11.997 24C25.04 24 23.98 11.645 23.98 11.645zM8.155 7.576c2.4-1.47 5.469-.571 6.618 1.638.218.419.246 1.063.108 1.503-.477 1.516-1.601 2.366-3.145 2.728.455-.39.817-.832.933-1.442a2.112 2.112 0 0 0-.364-1.677 2.14 2.14 0 0 0-2.465-.75c-.95.36-1.47 1.228-1.377 2.294.087.99.839 1.632 2.245 1.876-.21.111-.372.193-.53.281a5.113 5.113 0 0 0-1.644 1.43c-.143.192-.24.208-.458.075-2.827-1.729-3.009-6.067.078-7.956zM6.04 18.258c-.455.116-.895.286-1.359.438.227-1.532 2.021-2.943 3.539-2.782a3.91 3.91 0 0 0-.74 2.072c-.504.093-.98.155-1.44.272zM15.703 3.3c.448.017.898.01 1.347.02a2.324 2.324 0 0 1 .334.047 3.249 3.249 0 0 1-.34.434c-.16.15-.341.296-.573.069-.055-.055-.187-.042-.283-.044-.447-.005-.894-.02-1.34-.003a8.323 8.323 0 0 0-1.154.118c-.072.013-.178.25-.146.338.078.207.191.435.359.567.619.49 1.277.928 1.9 1.413.604.472 1.167.99 1.51 1.7.446.928.46 1.9.267 2.877-.322 1.63-1.147 2.98-2.483 3.962-.538.395-1.205.62-1.821.903-.543.25-1.1.465-1.644.712-.98.446-1.53 1.51-1.369 2.615.149 1.015 1.04 1.862 2.059 2.037 1.223.21 2.486-.586 2.785-1.83.336-1.397-.423-2.646-1.845-3.024l-.256-.066c.38-.17.708-.291 1.012-.458q.793-.437 1.558-.925c.15-.096.231-.096.36.014.977.846 1.56 1.898 1.724 3.187.27 2.135-.74 4.096-2.646 5.101-2.948 1.555-6.557-.215-7.208-3.484-.558-2.8 1.418-5.34 3.797-5.83 1.023-.211 1.958-.637 2.685-1.425.47-.508.697-.944.775-1.141a3.165 3.165 0 0 0 .217-1.158 2.71 2.71 0 0 0-.237-.992c-.248-.566-1.2-1.466-1.435-1.656l-2.24-1.754c-.079-.065-.168-.06-.36-.047-.23.016-.815.048-1.067-.018.204-.155.76-.38 1-.56-.726-.49-1.554-.314-2.315-.46.176-.328 1.046-.831 1.541-.888a7.323 7.323 0 0 0-.135-.822c-.03-.111-.154-.22-.263-.283-.262-.154-.541-.281-.843-.434a1.755 1.755 0 0 1 .906-.28 3.385 3.385 0 0 1 .908.088c.54.123.97.042 1.399-.324-.338-.136-.676-.26-1.003-.407a9.843 9.843 0 0 1-.942-.493c.85.118 1.671.437 2.54.32l.022-.118-2.018-.47c1.203-.11 2.323-.128 3.384.388.299.146.61.266.897.432.14.08.233.24.348.365.09.098.164.23.276.29.424.225.89.234 1.366.223l.01-.16c.479.15 1.017.702 1.017 1.105-.776 0-1.55-.003-2.325.004-.083 0-.165.061-.247.094.078.046.155.128.235.131z M14.703 2.153a.118.118 0 0 0-.016.19.179.179 0 0 0 .246.065c.075-.038.148-.078.238-.125-.072-.062-.13-.114-.19-.163-.106-.087-.193-.032-.278.033z"/></svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
25
icons/svg/windows-telemetry.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 512 512" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M495.156,342.381h-25.212V91.195c0-9.303-7.542-16.844-16.844-16.844H58.901c-9.303,0-16.844,7.542-16.844,16.844
|
||||
v251.186H16.844C7.542,342.381,0,349.923,0,359.226v44.016c0,18.972,15.435,34.407,34.406,34.407c12.315,0,435.419,0,443.188,0
|
||||
c18.972,0,34.406-15.435,34.406-34.407v-44.016C512,349.923,504.459,342.381,495.156,342.381z M75.745,108.04h360.511v234.342
|
||||
c-6.856,0-352.822,0-360.511,0V108.04z M195.836,403.961H34.406c-0.395,0-0.718-0.322-0.718-0.719V376.07
|
||||
c7.084,0,153.529,0,162.147,0V403.961z M282.476,403.96h-52.952V376.07h52.952V403.96z M478.312,403.242
|
||||
c0,0.396-0.322,0.719-0.718,0.719h-161.43V376.07c8.634,0,155.088,0,162.147,0V403.242z"/>
|
||||
<path d="M400.412,127.038H111.588c-9.302,0-16.844,7.542-16.844,16.844v162.657c0,9.302,7.542,16.844,16.844,16.844h288.825
|
||||
c9.304,0,16.844-7.542,16.844-16.844V143.882C417.257,134.579,409.715,127.038,400.412,127.038z M383.568,289.695H128.432
|
||||
V160.726h255.136V289.695z"/>
|
||||
<path d="M256,281.758c31.513,0,59.168-20.146,68.813-50.131c1.079-3.354,1.079-6.962,0-10.315
|
||||
c-9.645-29.985-37.3-50.131-68.813-50.131c-31.513,0-59.168,20.146-68.813,50.131c-1.079,3.354-1.079,6.962,0,10.315
|
||||
C196.832,261.612,224.487,281.758,256,281.758z M256,204.868c14.95,0,28.271,8.486,34.669,21.6
|
||||
c-6.399,13.115-19.72,21.6-34.669,21.6c-14.949,0-28.271-8.486-34.67-21.6C227.729,213.354,241.051,204.868,256,204.868z"/>
|
||||
<circle cx="255.999" cy="226.465" r="13.827"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
10
icons/svg/yandex-2.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 -155.5 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||
<g>
|
||||
<path d="M83.1452991,0 L56.2637363,0 C29.3821734,0 6.25152625,20.004884 6.25152625,58.7643468 C6.25152625,81.8949939 17.5042735,99.3992674 36.8840049,108.151404 L0.625152625,173.167277 C-0.625152625,175.042735 0.625152625,176.918193 2.5006105,176.918193 L19.3797314,176.918193 C20.6300366,176.918193 21.8803419,176.29304 22.5054945,175.042735 L55.6385836,111.277167 L67.5164835,111.277167 L67.5164835,175.042735 C67.5164835,175.667888 68.1416361,176.918193 69.3919414,176.918193 L84.3956044,176.918193 C85.6459096,176.918193 86.2710623,176.29304 86.2710623,175.042735 L86.2710623,2.5006105 C85.6459096,0.625152625 85.020757,0 83.1452991,0 L83.1452991,0 Z M67.5164835,96.2735043 L57.5140415,96.2735043 C14.3785104,96.2735043 17.5042735,15.003663 55.6385836,15.003663 L68.1416361,15.003663 L68.1416361,96.2735043 L67.5164835,96.2735043 Z" fill="#FF0000">
|
||||
|
||||
</path>
|
||||
<path d="M173.167277,58.7643468 L158.163614,58.7643468 C156.913309,58.7643468 156.288156,59.3894994 156.288156,60.6398046 L156.288156,105.650794 L128.781441,105.650794 L128.781441,60.6398046 C128.781441,59.3894994 128.156288,58.7643468 126.905983,58.7643468 L112.527473,58.7643468 C111.277167,58.7643468 110.652015,59.3894994 110.652015,60.6398046 L110.652015,175.042735 C110.652015,176.29304 111.277167,176.918193 112.527473,176.918193 L127.531136,176.918193 C128.781441,176.918193 129.406593,176.29304 129.406593,175.042735 L129.406593,120.029304 L156.913309,120.029304 L156.913309,175.042735 C156.913309,176.29304 157.538462,176.918193 158.788767,176.918193 L173.79243,176.918193 C175.042735,176.918193 175.667888,176.29304 175.667888,175.042735 L175.667888,60.6398046 C175.042735,59.3894994 174.417582,58.7643468 173.167277,58.7643468 L173.167277,58.7643468 Z M510.749695,161.289377 C510.749695,160.664225 510.124542,160.664225 509.499389,160.664225 C503.247863,160.664225 465.113553,178.793651 465.113553,118.778999 C465.113553,92.5225885 475.115995,55.6385836 498.871795,77.5189255 C499.496947,78.1440781 500.1221,78.1440781 500.747253,78.1440781 C501.372405,78.1440781 501.997558,77.5189255 502.622711,76.2686203 L508.874237,65.6410256 C509.499389,65.015873 509.499389,64.3907204 509.499389,63.7655678 C509.499389,62.5152625 508.249084,61.8901099 506.998779,61.2649573 C465.738706,40.6349206 444.483516,78.7692308 444.483516,123.155067 C444.483516,180.669109 486.368742,188.796093 510.124542,171.291819 C511.374847,170.666667 511.374847,169.416361 511.374847,168.791209 L510.749695,161.289377 L510.749695,161.289377 Z M408.224664,111.90232 L436.981685,60.014652 C437.606838,59.3894994 436.981685,58.1391941 436.356532,58.1391941 L421.978022,58.1391941 C417.601954,58.1391941 416.351648,59.3894994 415.101343,62.5152625 C413.851038,65.6410256 392.595849,110.026862 390.095238,111.90232 L390.095238,60.014652 C390.095238,59.3894994 389.470085,58.1391941 388.844933,58.1391941 L373.216117,58.1391941 C372.590965,58.1391941 371.965812,58.7643468 371.965812,60.014652 L371.965812,175.042735 C371.965812,175.667888 372.590965,176.918193 373.216117,176.918193 L388.844933,176.918193 C390.095238,176.918193 390.095238,176.29304 390.095238,175.042735 L390.095238,115.653236 C391.970696,116.903541 418.227106,171.291819 418.852259,173.167277 C420.102564,175.667888 422.603175,176.918193 425.728938,176.918193 L441.357753,176.918193 C442.608059,176.918193 442.608059,176.29304 441.982906,175.042735 L408.224664,111.90232 L408.224664,111.90232 Z M271.316239,161.91453 L268.190476,161.91453 C264.43956,161.91453 263.814408,160.664225 263.814408,157.538462 L263.814408,60.014652 C263.814408,58.7643468 263.189255,58.1391941 262.564103,58.1391941 L214.42735,58.1391941 C213.177045,58.1391941 212.551893,58.7643468 212.551893,60.014652 C212.551893,86.2710623 213.177045,130.031746 195.672772,161.91453 L190.671551,161.91453 C189.421245,161.91453 188.796093,162.539683 188.796093,163.789988 L188.796093,198.173382 C188.796093,199.423687 190.046398,200.04884 190.671551,200.04884 L201.924298,200.04884 C204.424908,200.04884 205.675214,198.173382 205.675214,196.297924 L205.675214,176.918193 L256.312576,176.918193 L256.312576,198.173382 C256.312576,198.798535 256.937729,200.04884 258.188034,200.04884 L270.691087,200.04884 C271.941392,200.04884 273.81685,198.798535 273.81685,196.297924 L273.81685,163.789988 C273.191697,162.539683 272.566545,161.91453 271.316239,161.91453 L271.316239,161.91453 Z M245.059829,161.91453 L210.051282,161.91453 C220.053724,145.660562 229.431013,119.404151 229.431013,73.1428571 L245.059829,73.1428571 L245.059829,161.91453 L245.059829,161.91453 Z M320.078144,55.6385836 C294.446886,55.6385836 282.568987,87.5213675 282.568987,122.529915 C282.568987,180.043956 322.578755,188.796093 350.08547,171.916972 C351.335775,171.291819 351.335775,170.666667 351.335775,170.041514 L349.460317,161.91453 C349.460317,161.289377 348.835165,160.664225 347.58486,160.664225 C337.582418,160.664225 302.573871,178.168498 302.573871,121.279609 C315.076923,122.529915 315.076923,122.529915 352.586081,122.529915 C351.960928,93.7728938 348.835165,55.6385836 320.078144,55.6385836 L320.078144,55.6385836 Z M303.199023,108.151404 C303.199023,62.5152625 333.206349,53.7631258 333.206349,106.901099 C320.078144,106.901099 314.45177,106.901099 303.199023,108.151404 L303.199023,108.151404 Z" fill="#000000">
|
||||
|
||||
</path>
|
||||
|
After Width: | Height: | Size: 5.5 KiB |
65
proxy-provider/cadian/amnezia.yaml
Normal file
@@ -0,0 +1,65 @@
|
||||
# GUIDE: https://wiki.metacubex.one/en/config/proxies/wg/#wireguard_1
|
||||
|
||||
# NETHERLANDS
|
||||
# [Interface]
|
||||
# PrivateKey = aOzeKSSrGTqEwVsltHh10L1MbbVsHnRHbFNDzen6/k8=
|
||||
# Address = 10.136.22.215/32
|
||||
# DNS = 8.8.4.4,1.1.1.1
|
||||
# MTU = 1280
|
||||
# Jc = 43
|
||||
# Jmin = 50
|
||||
# Jmax = 70
|
||||
# S1 = 110
|
||||
# S2 = 120
|
||||
# H1 = 1593635057
|
||||
# H2 = 430880481
|
||||
# H3 = 1214405368
|
||||
# H4 = 1739253821
|
||||
|
||||
# [Peer]
|
||||
# PublicKey = hXvwetCANoEol0j80d8XuDmgNGwP+Ui25BH2MKxGJBE=
|
||||
# PresharedKey = q1zJdX6ZE+gJWQ+JwDgzZ7Un1lgJ1ENtdBV7iwGIZcg=
|
||||
# AllowedIPs = 0.0.0.0/0,::/0
|
||||
# PersistentKeepalive = 25
|
||||
# Endpoint = [nl03awg.kcufwfgnkr.net:60136](http://nl03awg.kcufwfgnkr.net:60136/)
|
||||
|
||||
proxies:
|
||||
- name: "vzd-wg-netherlands"
|
||||
type: wireguard #
|
||||
ip: 10.136.22.215/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: aOzeKSSrGTqEwVsltHh10L1MbbVsHnRHbFNDzen6/k8= #
|
||||
peers:
|
||||
- server: nl03awg.kcufwfgnkr.net #
|
||||
port: 60136 #
|
||||
public-key: hXvwetCANoEol0j80d8XuDmgNGwP+Ui25BH2MKxGJBE= #
|
||||
pre-shared-key: q1zJdX6ZE+gJWQ+JwDgzZ7Un1lgJ1ENtdBV7iwGIZcg= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
mtu: 1280 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: false # Option whether to force remote DNS resolution
|
||||
dns: [1.1.1.1, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 43
|
||||
jmin: 50
|
||||
jmax: 70
|
||||
s1: 110
|
||||
s2: 120
|
||||
h1: 1593635057
|
||||
h2: 430880481
|
||||
h3: 1214405368
|
||||
h4: 1739253821
|
||||
|
||||
- name: "cadian-adguard"
|
||||
type: socks5
|
||||
server: 192.168.0.3
|
||||
port: 1080
|
||||
username: adguard
|
||||
password: adguard
|
||||
# tls: true
|
||||
# fingerprint: xxxx
|
||||
# skip-cert-verify: true
|
||||
udp: true
|
||||
# ip-version: ipv6
|
||||
159
proxy-provider/scarus/amnezia copy.yaml
Normal file
@@ -0,0 +1,159 @@
|
||||
# GUIDE: https://wiki.metacubex.one/en/config/proxies/wg/#wireguard_1
|
||||
# KAZAKHSTAN
|
||||
# [Interface]
|
||||
# + Address = 100.70.184.183/32
|
||||
# + DNS = 8.8.8.8, 8.8.4.4
|
||||
# + PrivateKey = reZgTReg3y4wff6p5lBDzDTA+R+46t7h3CJrveI+Dsg=
|
||||
# + Jc = 4
|
||||
# + Jmin = 10
|
||||
# + Jmax = 50
|
||||
# + S1 = 110
|
||||
# + S2 = 20
|
||||
# + H1 = 211644422
|
||||
# + H2 = 533572853
|
||||
# + H3 = 237534087
|
||||
# + H4 = 1314455475
|
||||
# [Peer]
|
||||
# + PublicKey = 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc=
|
||||
# PresharedKey = WIBgPDNngeueVAuO4I+Yo0zP41NMiFDE/D7nh3Vjulw=
|
||||
# + AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# + Endpoint = 5.189.202.78:46358
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
# POLAND
|
||||
# [Interface]
|
||||
# Address = 100.71.64.86/32
|
||||
# DNS = 8.8.8.8, 8.8.4.4
|
||||
# PrivateKey = /K20yRTTw44Ged/fXjdf4hSLnr33igHMl0SAXy0aMCE=
|
||||
# Jc = 2
|
||||
# Jmin = 10
|
||||
# Jmax = 50
|
||||
# S1 = 18
|
||||
# S2 = 122
|
||||
# H1 = 1512494805
|
||||
# H2 = 1147470590
|
||||
# H3 = 1658720028
|
||||
# H4 = 1826833034
|
||||
# [Peer]
|
||||
# PublicKey = Z01PDi29KeHvdtThNoSmXdxG4zyT1yFbulcI7AA5nQg=
|
||||
# PresharedKey = uExSfwmdNaUTiJmyNNMuoDavJEKdrdsAqNaVcZ/U00Y=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# Endpoint = 212.23.222.12:37089
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
# USA
|
||||
# [Interface]
|
||||
# Address = 100.71.64.155/32
|
||||
# DNS = 8.8.8.8, 8.8.4.4
|
||||
# PrivateKey = Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg=
|
||||
# Jc = 3
|
||||
# Jmin = 10
|
||||
# Jmax = 50
|
||||
# S1 = 145
|
||||
# S2 = 34
|
||||
# H1 = 203715079
|
||||
# H2 = 914012290
|
||||
# H3 = 174842657
|
||||
# H4 = 1514769902
|
||||
# [Peer]
|
||||
# PublicKey = ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs=
|
||||
# PresharedKey = oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# Endpoint = 5.8.93.236:42854
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
|
||||
proxies:
|
||||
name: "💫 amz-wg-usa"
|
||||
type: wireguard #
|
||||
ip: 100.71.64.155/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg= #
|
||||
peers:
|
||||
- server: 5.8.93.236 #
|
||||
port: 42854 #
|
||||
public-key: ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs= #
|
||||
pre-shared-key: oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 3
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 145
|
||||
s2: 34
|
||||
h1: 203715079
|
||||
h2: 914012290
|
||||
h3: 174842657
|
||||
h4: 1514769902
|
||||
|
||||
name: "💫 amz-wg-poland"
|
||||
type: wireguard #
|
||||
ip: 100.71.64.86/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: /K20yRTTw44Ged/fXjdf4hSLnr33igHMl0SAXy0aMCE= #
|
||||
peers:
|
||||
- server: 212.23.222.12 #
|
||||
port: 37089 #
|
||||
public-key: Z01PDi29KeHvdtThNoSmXdxG4zyT1yFbulcI7AA5nQg= #
|
||||
pre-shared-key: uExSfwmdNaUTiJmyNNMuoDavJEKdrdsAqNaVcZ/U00Y= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 2
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 18
|
||||
s2: 122
|
||||
h1: 1512494805
|
||||
h2: 1147470590
|
||||
h3: 1658720028
|
||||
h4: 1826833034
|
||||
|
||||
name: "💫 amz-wg-kazakhstan"
|
||||
type: wireguard #
|
||||
ip: 100.70.184.183/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: ZiA7zQ9osP4nEoB5jryU99gpHFg6cTprfiaA1nV/pks= #
|
||||
peers:
|
||||
- server: 5.189.202.78 #
|
||||
port: 46358 #
|
||||
public-key: 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc= #
|
||||
pre-shared-key: aJ4XS6+QgVasEcGP+5DInldM5i/YSR6PPmmix0wMtFA= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 4
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 110
|
||||
s2: 20
|
||||
h1: 211644422
|
||||
h2: 533572853
|
||||
h3: 237534087
|
||||
h4: 1314455475
|
||||
# AmneziaWG v1.5
|
||||
# i1: <b 0xf6ab3267fa><c><b 0xf6ab><t><r 10><wt 10>
|
||||
# i2: <b 0xf6ab3267fa><r 100>
|
||||
# i3: ""
|
||||
# i4: ""
|
||||
# i5: ""
|
||||
# j1: <b 0xffffffff><c><b 0xf6ab><t><r 10>
|
||||
# j2: <c><b 0xf6ab><t><wt 1000>
|
||||
# j3: <t><b 0xf6ab><c><r 10>
|
||||
# itime: 60
|
||||
@@ -2,36 +2,209 @@
|
||||
# KAZAKHSTAN
|
||||
# [Interface]
|
||||
# + Address = 100.70.184.183/32
|
||||
# DNS = 8.8.8.8, 8.8.4.4
|
||||
# + DNS = 8.8.8.8, 8.8.4.4
|
||||
# + PrivateKey = reZgTReg3y4wff6p5lBDzDTA+R+46t7h3CJrveI+Dsg=
|
||||
# Jc = 4
|
||||
# Jmin = 10
|
||||
# Jmax = 50
|
||||
# S1 = 110
|
||||
# S2 = 20
|
||||
# H1 = 211644422
|
||||
# H2 = 533572853
|
||||
# H3 = 237534087
|
||||
# H4 = 1314455475
|
||||
# + Jc = 4
|
||||
# + Jmin = 10
|
||||
# + Jmax = 50
|
||||
# + S1 = 110
|
||||
# + S2 = 20
|
||||
# + H1 = 211644422
|
||||
# + H2 = 533572853
|
||||
# + H3 = 237534087
|
||||
# + H4 = 1314455475
|
||||
# [Peer]
|
||||
# PublicKey = 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc=
|
||||
# + PublicKey = 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc=
|
||||
# PresharedKey = WIBgPDNngeueVAuO4I+Yo0zP41NMiFDE/D7nh3Vjulw=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# + AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# + Endpoint = 5.189.202.78:46358
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
# POLAND
|
||||
# [Interface]
|
||||
# Address = 100.71.64.86/32
|
||||
# DNS = 8.8.8.8, 8.8.4.4
|
||||
# PrivateKey = /K20yRTTw44Ged/fXjdf4hSLnr33igHMl0SAXy0aMCE=
|
||||
# Jc = 2
|
||||
# Jmin = 10
|
||||
# Jmax = 50
|
||||
# S1 = 18
|
||||
# S2 = 122
|
||||
# H1 = 1512494805
|
||||
# H2 = 1147470590
|
||||
# H3 = 1658720028
|
||||
# H4 = 1826833034
|
||||
# [Peer]
|
||||
# PublicKey = Z01PDi29KeHvdtThNoSmXdxG4zyT1yFbulcI7AA5nQg=
|
||||
# PresharedKey = uExSfwmdNaUTiJmyNNMuoDavJEKdrdsAqNaVcZ/U00Y=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# Endpoint = 212.23.222.12:37089
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
# USA
|
||||
# [Interface]
|
||||
# Address = 100.71.64.155/32
|
||||
# DNS = 8.8.8.8, 8.8.4.4
|
||||
# PrivateKey = Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg=
|
||||
# Jc = 3
|
||||
# Jmin = 10
|
||||
# Jmax = 50
|
||||
# S1 = 145
|
||||
# S2 = 34
|
||||
# H1 = 203715079
|
||||
# H2 = 914012290
|
||||
# H3 = 174842657
|
||||
# H4 = 1514769902
|
||||
# [Peer]
|
||||
# PublicKey = ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs=
|
||||
# PresharedKey = oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# Endpoint = 5.8.93.236:42854
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
# VEZDEHOD NETHERLANDS
|
||||
# [Interface]
|
||||
# PrivateKey = mJd8aibZI0iuQqPxpTdbs1Enb9+Ury7ido20lu2NrWo=
|
||||
# Address = 10.136.82.167/32
|
||||
# DNS = 1.1.1.1, 8.8.4.4
|
||||
# MTU = 1380
|
||||
# Jc = 43
|
||||
# Jmin = 50
|
||||
# Jmax = 70
|
||||
# S1 = 110
|
||||
# S2 = 120
|
||||
# H1 = 1593635057
|
||||
# H2 = 430880481
|
||||
# H3 = 1214405368
|
||||
# H4 = 1739253821
|
||||
# [Peer]
|
||||
# PublicKey = gbUPMNfaxgRSGD3xcnnbAJSclxfnOyh4U1qqmYMWmCI=
|
||||
# PresharedKey = SCz82d6cfj9bfdlUyHwEBYC3u4T3znL6wFpJ7dMQYbM=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# PersistentKeepalive = 25
|
||||
# Endpoint = nl02awg.kcufwfgnkr.net:60136
|
||||
|
||||
|
||||
proxies:
|
||||
name: "💫 kz-wg-amnezia"
|
||||
type: wireguard
|
||||
ip: 100.70.184.183/32
|
||||
private-key: reZgTReg3y4wff6p5lBDzDTA+R+46t7h3CJrveI+Dsg=
|
||||
- name: "vzd-wg-netherlands"
|
||||
type: wireguard #
|
||||
ip: 10.136.82.167/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: mJd8aibZI0iuQqPxpTdbs1Enb9+Ury7ido20lu2NrWo= #
|
||||
peers:
|
||||
- server: 5.189.202.78
|
||||
port: 46358
|
||||
public-key: 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc=
|
||||
allowed-ips: ['0.0.0.0/0', '::/0']
|
||||
# reserved: [209,98,59] # 如果需要自己填
|
||||
udp: true
|
||||
mtu: <预设MTU> # 按需设置,不用直接删除
|
||||
remote-dns-resolve: true # 按需设置,不用直接删除
|
||||
dns: <使用的DNS> # 按需设置,不用直接删除
|
||||
- server: nl02awg.kcufwfgnkr.net #
|
||||
port: 60136 #
|
||||
public-key: gbUPMNfaxgRSGD3xcnnbAJSclxfnOyh4U1qqmYMWmCI= #
|
||||
pre-shared-key: SCz82d6cfj9bfdlUyHwEBYC3u4T3znL6wFpJ7dMQYbM= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
mtu: 1380 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [1.1.1.1, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 43
|
||||
jmin: 50
|
||||
jmax: 70
|
||||
s1: 110
|
||||
s2: 120
|
||||
h1: 1593635057
|
||||
h2: 430880481
|
||||
h3: 1214405368
|
||||
h4: 1739253821
|
||||
|
||||
- name: "amz-wg-usa"
|
||||
type: wireguard #
|
||||
ip: 100.71.64.155/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg= #
|
||||
peers:
|
||||
- server: 5.8.93.236 #
|
||||
port: 42854 #
|
||||
public-key: ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs= #
|
||||
pre-shared-key: oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 3
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 145
|
||||
s2: 34
|
||||
h1: 203715079
|
||||
h2: 914012290
|
||||
h3: 174842657
|
||||
h4: 1514769902
|
||||
|
||||
- name: "amz-wg-poland"
|
||||
type: wireguard #
|
||||
ip: 100.71.64.86/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: /K20yRTTw44Ged/fXjdf4hSLnr33igHMl0SAXy0aMCE= #
|
||||
peers:
|
||||
- server: 212.23.222.12 #
|
||||
port: 37089 #
|
||||
public-key: Z01PDi29KeHvdtThNoSmXdxG4zyT1yFbulcI7AA5nQg= #
|
||||
pre-shared-key: uExSfwmdNaUTiJmyNNMuoDavJEKdrdsAqNaVcZ/U00Y= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 2
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 18
|
||||
s2: 122
|
||||
h1: 1512494805
|
||||
h2: 1147470590
|
||||
h3: 1658720028
|
||||
h4: 1826833034
|
||||
|
||||
- name: "amz-wg-kazakhstan"
|
||||
type: wireguard #
|
||||
ip: 100.70.184.183/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: ZiA7zQ9osP4nEoB5jryU99gpHFg6cTprfiaA1nV/pks= #
|
||||
peers:
|
||||
- server: 5.189.202.78 #
|
||||
port: 46358 #
|
||||
public-key: 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc= #
|
||||
pre-shared-key: aJ4XS6+QgVasEcGP+5DInldM5i/YSR6PPmmix0wMtFA= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 4
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 110
|
||||
s2: 20
|
||||
h1: 211644422
|
||||
h2: 533572853
|
||||
h3: 237534087
|
||||
h4: 1314455475
|
||||
# AmneziaWG v1.5
|
||||
# i1: <b 0xf6ab3267fa><c><b 0xf6ab><t><r 10><wt 10>
|
||||
# i2: <b 0xf6ab3267fa><r 100>
|
||||
# i3: ""
|
||||
# i4: ""
|
||||
# i5: ""
|
||||
# j1: <b 0xffffffff><c><b 0xf6ab><t><r 10>
|
||||
# j2: <c><b 0xf6ab><t><wt 1000>
|
||||
# j3: <t><b 0xf6ab><c><r 10>
|
||||
# itime: 60
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpER1E3THlXRHBSOVFrU2ZvZi1zcnN3@151.243.101.40:2060#%E2%9A%A1%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B1%D1%80%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F%20-%20GB_T074055
|
||||
vmess://eyJhZGQiOiAiMTUxLjI0My4xMDEuNDAiLCAiYWlkIjogIjAiLCAiaG9zdCI6ICJnb29nbGUuY29tIiwgImlkIjogImEzZTc1OTM2LTBlNDQtNGJjOS1iOTdlLWExZmRiMjc2Y2NhNCIsICJuZXQiOiAidGNwIiwgInBhdGgiOiAiLyIsICJwb3J0IjogODA4MSwgInBzIjogIlx1MjZhMVx1MDQxMlx1MDQzNVx1MDQzYlx1MDQzOFx1MDQzYVx1MDQzZVx1MDQzMVx1MDQ0MFx1MDQzOFx1MDQ0Mlx1MDQzMFx1MDQzZFx1MDQzOFx1MDQ0ZiAtIEdCX1QwNzQwNTUiLCAic2N5IjogImF1dG8iLCAidGxzIjogIm5vbmUiLCAidHlwZSI6ICJodHRwIiwgInYiOiAiMiJ9
|
||||
vmess://eyJhZGQiOiAiMTUxLjI0My4xMDEuNDAiLCAiYWlkIjogIjAiLCAiaG9zdCI6ICJnb29nbGUuY29tIiwgImlkIjogImEzZTc1OTM2LTBlNDQtNGJjOS1iOTdlLWExZmRiMjc2Y2NhNCIsICJuZXQiOiAid3MiLCAicGF0aCI6ICIvIiwgInBvcnQiOiA4MDgwLCAicHMiOiAiXHUyNmExXHUwNDEyXHUwNDM1XHUwNDNiXHUwNDM4XHUwNDNhXHUwNDNlXHUwNDMxXHUwNDQwXHUwNDM4XHUwNDQyXHUwNDMwXHUwNDNkXHUwNDM4XHUwNDRmIC0gR0JfVDA3NDA1NSIsICJzY3kiOiAiYXV0byIsICJ0bHMiOiAibm9uZSIsICJ0eXBlIjogIiIsICJ2IjogIjIifQ==
|
||||
vless://ca1a269d-6409-4bbf-a4e2-1e9cb04490e2@151.243.101.40:8443?security=reality&type=tcp&headerType=&path=&host=&sni=discordapp.com&fp=chrome&pbk=SbVKOEMjK0sIlbwg4akyBg5mL5KZwwB-ed4eEE7YnRc&sid=6ba85179e30d4fc2#%E2%9A%A1%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B1%D1%80%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F%20-%20GB_T074055
|
||||
vless://ca1a269d-6409-4bbf-a4e2-1e9cb04490e2@151.243.101.40:2053?security=reality&type=grpc&headerType=&serviceName=xyz&authority=&mode=gun&sni=discordapp.com&fp=chrome&pbk=SbVKOEMjK0sIlbwg4akyBg5mL5KZwwB-ed4eEE7YnRc&sid=#%E2%9A%A1%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B1%D1%80%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F%20-%20GB_T074055
|
||||
trojan://TEx16RQixr5cJ3rCBz1Ddw@151.243.101.40:2058?security=tls&type=ws&headerType=&path=%2F&host=&sni=uk.hydranet.space&fp=#%E2%9A%A1%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B1%D1%80%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F%20-%20GB_T074055
|
||||
159
proxy-provider/solar/amnezia.yaml
Normal file
@@ -0,0 +1,159 @@
|
||||
# GUIDE: https://wiki.metacubex.one/en/config/proxies/wg/#wireguard_1
|
||||
# KAZAKHSTAN
|
||||
# [Interface]
|
||||
# + Address = 100.70.184.183/32
|
||||
# + DNS = 8.8.8.8, 8.8.4.4
|
||||
# + PrivateKey = reZgTReg3y4wff6p5lBDzDTA+R+46t7h3CJrveI+Dsg=
|
||||
# + Jc = 4
|
||||
# + Jmin = 10
|
||||
# + Jmax = 50
|
||||
# + S1 = 110
|
||||
# + S2 = 20
|
||||
# + H1 = 211644422
|
||||
# + H2 = 533572853
|
||||
# + H3 = 237534087
|
||||
# + H4 = 1314455475
|
||||
# [Peer]
|
||||
# + PublicKey = 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc=
|
||||
# PresharedKey = WIBgPDNngeueVAuO4I+Yo0zP41NMiFDE/D7nh3Vjulw=
|
||||
# + AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# + Endpoint = 5.189.202.78:46358
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
# POLAND
|
||||
# [Interface]
|
||||
# Address = 100.71.64.86/32
|
||||
# DNS = 8.8.8.8, 8.8.4.4
|
||||
# PrivateKey = /K20yRTTw44Ged/fXjdf4hSLnr33igHMl0SAXy0aMCE=
|
||||
# Jc = 2
|
||||
# Jmin = 10
|
||||
# Jmax = 50
|
||||
# S1 = 18
|
||||
# S2 = 122
|
||||
# H1 = 1512494805
|
||||
# H2 = 1147470590
|
||||
# H3 = 1658720028
|
||||
# H4 = 1826833034
|
||||
# [Peer]
|
||||
# PublicKey = Z01PDi29KeHvdtThNoSmXdxG4zyT1yFbulcI7AA5nQg=
|
||||
# PresharedKey = uExSfwmdNaUTiJmyNNMuoDavJEKdrdsAqNaVcZ/U00Y=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# Endpoint = 212.23.222.12:37089
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
# USA
|
||||
# [Interface]
|
||||
# Address = 100.71.64.155/32
|
||||
# DNS = 8.8.8.8, 8.8.4.4
|
||||
# PrivateKey = Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg=
|
||||
# Jc = 3
|
||||
# Jmin = 10
|
||||
# Jmax = 50
|
||||
# S1 = 145
|
||||
# S2 = 34
|
||||
# H1 = 203715079
|
||||
# H2 = 914012290
|
||||
# H3 = 174842657
|
||||
# H4 = 1514769902
|
||||
# [Peer]
|
||||
# PublicKey = ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs=
|
||||
# PresharedKey = oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk=
|
||||
# AllowedIPs = 0.0.0.0/0, ::/0
|
||||
# Endpoint = 5.8.93.236:42854
|
||||
# PersistentKeepalive = 25
|
||||
|
||||
|
||||
proxies:
|
||||
name: "💫 amz-wg-usa"
|
||||
type: wireguard #
|
||||
ip: 100.71.64.155/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: Vuk0huRtjGpA7KtWuQN/kJE0CRFOFs3JysN71nDFGqg= #
|
||||
peers:
|
||||
- server: 5.8.93.236 #
|
||||
port: 42854 #
|
||||
public-key: ZqTlR9tYsMacuawQQaU6UCoXdT1exYJD2tzFXTpN9zs= #
|
||||
pre-shared-key: oOJNRLL+5aOgimi28Lwq18w6xCrry4AFLt68fhbUSlk= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 3
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 145
|
||||
s2: 34
|
||||
h1: 203715079
|
||||
h2: 914012290
|
||||
h3: 174842657
|
||||
h4: 1514769902
|
||||
|
||||
name: "💫 amz-wg-poland"
|
||||
type: wireguard #
|
||||
ip: 100.71.64.86/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: /K20yRTTw44Ged/fXjdf4hSLnr33igHMl0SAXy0aMCE= #
|
||||
peers:
|
||||
- server: 212.23.222.12 #
|
||||
port: 37089 #
|
||||
public-key: Z01PDi29KeHvdtThNoSmXdxG4zyT1yFbulcI7AA5nQg= #
|
||||
pre-shared-key: uExSfwmdNaUTiJmyNNMuoDavJEKdrdsAqNaVcZ/U00Y= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 2
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 18
|
||||
s2: 122
|
||||
h1: 1512494805
|
||||
h2: 1147470590
|
||||
h3: 1658720028
|
||||
h4: 1826833034
|
||||
|
||||
name: "💫 amz-wg-kazakhstan"
|
||||
type: wireguard #
|
||||
ip: 100.70.184.183/32 # The IPv4 address used by this machine in the Wireguard network
|
||||
# ipv6: # The IPv6 address used by this machine in the Wireguard network
|
||||
private-key: ZiA7zQ9osP4nEoB5jryU99gpHFg6cTprfiaA1nV/pks= #
|
||||
peers:
|
||||
- server: 5.189.202.78 #
|
||||
port: 46358 #
|
||||
public-key: 5uUhd8S8MjnULEEAiSQysBi+JO6zfrXC0QIIsqsjUkc= #
|
||||
pre-shared-key: aJ4XS6+QgVasEcGP+5DInldM5i/YSR6PPmmix0wMtFA= # Optional
|
||||
allowed-ips: ['0.0.0.0/0', '::/0'] #
|
||||
# reserved: # Optional value of the Wireguard protocol reserved field, required by some WARP nodes
|
||||
udp: true #
|
||||
# mtu: 1408 #
|
||||
# dialer-proxy: # An identifier for an outbound proxy. When the value is not empty, the specified proxy/proxy-group will be used to make connections.
|
||||
remote-dns-resolve: true # Option whether to force remote DNS resolution
|
||||
dns: [8.8.8.8, 8.8.4.4]
|
||||
amnezia-wg-option:
|
||||
jc: 4
|
||||
jmin: 10
|
||||
jmax: 50
|
||||
s1: 110
|
||||
s2: 20
|
||||
h1: 211644422
|
||||
h2: 533572853
|
||||
h3: 237534087
|
||||
h4: 1314455475
|
||||
# AmneziaWG v1.5
|
||||
# i1: <b 0xf6ab3267fa><c><b 0xf6ab><t><r 10><wt 10>
|
||||
# i2: <b 0xf6ab3267fa><r 100>
|
||||
# i3: ""
|
||||
# i4: ""
|
||||
# i5: ""
|
||||
# j1: <b 0xffffffff><c><b 0xf6ab><t><r 10>
|
||||
# j2: <c><b 0xf6ab><t><wt 1000>
|
||||
# j3: <t><b 0xf6ab><c><r 10>
|
||||
# itime: 60
|
||||
@@ -0,0 +1,20 @@
|
||||
[Interface]
|
||||
PrivateKey = gArBNZID8qVF9VKHcVWU/sJrPLHgk6VB5VYTzoIEn0U=
|
||||
Address = 10.136.11.36/32
|
||||
DNS = 1.1.1.1, 8.8.4.4
|
||||
MTU = 1380
|
||||
Jc = 43
|
||||
Jmin = 50
|
||||
Jmax = 70
|
||||
S1 = 110
|
||||
S2 = 120
|
||||
H1 = 1593635057
|
||||
H2 = 430880481
|
||||
H3 = 1214405368
|
||||
H4 = 1739253821
|
||||
[Peer]
|
||||
PublicKey = gbUPMNfaxgRSGD3xcnnbAJSclxfnOyh4U1qqmYMWmCI=
|
||||
PresharedKey = iWlsGgLucNELlsmK4+nkAmT49NSkaERpKKjIjDNCG04=
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
PersistentKeepalive = 25
|
||||
Endpoint = nl02awg.kcufwfgnkr.net:60136
|
||||
@@ -1,67 +0,0 @@
|
||||
payload:
|
||||
- DOMAIN-SUFFIX,4pda.to
|
||||
- DOMAIN-SUFFIX,airchina.com
|
||||
- DOMAIN-SUFFIX,amnezia.org
|
||||
- DOMAIN-SUFFIX,api.notion.com
|
||||
- DOMAIN-SUFFIX,forum.funkypenguin.co.nz
|
||||
- DOMAIN-SUFFIX,getoutline.com
|
||||
- DOMAIN-SUFFIX,ggpht.com
|
||||
- DOMAIN-SUFFIX,gl-inet.com
|
||||
- DOMAIN-SUFFIX,googleapis.com
|
||||
- DOMAIN-SUFFIX,googlevideo.com
|
||||
- DOMAIN-SUFFIX,gvt1.com
|
||||
- DOMAIN-SUFFIX,habr.com
|
||||
- DOMAIN-SUFFIX,hashicorp.com
|
||||
- DOMAIN-SUFFIX,ifconfig.me
|
||||
- DOMAIN-SUFFIX,ILook.tv
|
||||
- DOMAIN-SUFFIX,img.notionusercontent.com
|
||||
- DOMAIN-SUFFIX,ipinfo.io
|
||||
- DOMAIN-SUFFIX,knowyourmeme.com
|
||||
- DOMAIN-SUFFIX,kym-cdn.com
|
||||
- DOMAIN-SUFFIX,medium.com
|
||||
- DOMAIN-SUFFIX,metacubex.one
|
||||
- DOMAIN-SUFFIX,notifiarr.wiki
|
||||
- DOMAIN-SUFFIX,notion.com
|
||||
- DOMAIN-SUFFIX,notion.site
|
||||
- DOMAIN-SUFFIX,notion.so
|
||||
- DOMAIN-SUFFIX,notionusercontent.com
|
||||
- DOMAIN-SUFFIX,onshape.com
|
||||
- DOMAIN-SUFFIX,plati.market
|
||||
- DOMAIN-SUFFIX,play.google.com
|
||||
- DOMAIN-SUFFIX,rustorka.com
|
||||
- DOMAIN-SUFFIX,rutracker.cc
|
||||
- DOMAIN-SUFFIX,rutracker.org
|
||||
- DOMAIN-SUFFIX,secure.notion-static.com
|
||||
- DOMAIN-SUFFIX,t.co
|
||||
- DOMAIN-SUFFIX,video.google.com
|
||||
- DOMAIN-SUFFIX,youtu.be
|
||||
- DOMAIN-SUFFIX,youtube.com
|
||||
- DOMAIN-SUFFIX,youtubeeducation.com
|
||||
- DOMAIN-SUFFIX,youtubekids.com
|
||||
- DOMAIN-SUFFIX,youtube-nocookie.com
|
||||
- DOMAIN-SUFFIX,youtube-ui.l.google.com
|
||||
- DOMAIN-SUFFIX,ytimg.com
|
||||
- DOMAIN-SUFFIX,ytimg.l.google.com
|
||||
- DOMAIN-SUFFIX,zerolab.net
|
||||
- DOMAIN-SUFFIX,l.google.com
|
||||
- DOMAIN-SUFFIX,youtubei.googleapis.com
|
||||
- DOMAIN-SUFFIX,nhacmp3youtube.com
|
||||
- DOMAIN-SUFFIX,googleusercontent.com
|
||||
- DOMAIN-SUFFIX,chatgpt.com
|
||||
- DOMAIN-SUFFIX,auth.openai.com
|
||||
- DOMAIN-SUFFIX,auth0.openai.com
|
||||
- DOMAIN-SUFFIX,cdn.oaistatic.com
|
||||
- DOMAIN-SUFFIX,openai.com
|
||||
- DOMAIN-SUFFIX,files.oaiusercontent.com
|
||||
- DOMAIN-SUFFIX,instagram.com
|
||||
- DOMAIN-SUFFIX,copilot.microsoft.com
|
||||
- DOMAIN-SUFFIX,microsoft.com
|
||||
- DOMAIN-SUFFIX,live.com
|
||||
- DOMAIN-SUFFIX,google.dev
|
||||
- DOMAIN-SUFFIX,gstatic.com
|
||||
- DOMAIN-SUFFIX,alkalimakersuite-pa.clients6.google.com
|
||||
- DOMAIN-SUFFIX,fonts.googleapis.com
|
||||
- DOMAIN-SUFFIX,developerprofiles-pa.googleapis.com
|
||||
- DOMAIN-SUFFIX,ankiweb.net
|
||||
- DOMAIN-SUFFIX,onplanners.com
|
||||
- DOMAIN-SUFFIX,assetdamage.world
|
||||
@@ -0,0 +1,3 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.10.103/32
|
||||
- SRC-IP-CIDR,192.168.10.86/32
|
||||
@@ -1,5 +0,0 @@
|
||||
payload:
|
||||
- DOMAIN-SUFFIX,aeza.net
|
||||
- DOMAIN-SUFFIX,open.ru
|
||||
- DOMAIN-SUFFIX,bm-bank.ru
|
||||
- DOMAIN-SUFFIX,shamanlanding.org
|
||||
@@ -1,42 +0,0 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.10.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.11.1/24
|
||||
- SRC-IP-CIDR,192.168.12.1/24
|
||||
- SRC-IP-CIDR,192.168.13.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.21.1/24
|
||||
- SRC-IP-CIDR,192.168.22.1/24
|
||||
- SRC-IP-CIDR,192.168.23.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.31.1/24
|
||||
- SRC-IP-CIDR,192.168.32.1/24
|
||||
- SRC-IP-CIDR,192.168.33.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.41.1/24
|
||||
- SRC-IP-CIDR,192.168.42.1/24
|
||||
- SRC-IP-CIDR,192.168.43.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.51.1/24
|
||||
- SRC-IP-CIDR,192.168.52.1/24
|
||||
- SRC-IP-CIDR,192.168.53.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.61.1/24
|
||||
- SRC-IP-CIDR,192.168.62.1/24
|
||||
- SRC-IP-CIDR,192.168.63.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.71.1/24
|
||||
- SRC-IP-CIDR,192.168.72.1/24
|
||||
- SRC-IP-CIDR,192.168.73.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.71.1/24
|
||||
- SRC-IP-CIDR,192.168.72.1/24
|
||||
- SRC-IP-CIDR,192.168.73.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.81.1/24
|
||||
- SRC-IP-CIDR,192.168.82.1/24
|
||||
- SRC-IP-CIDR,192.168.83.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.91.1/24
|
||||
- SRC-IP-CIDR,192.168.92.1/24
|
||||
- SRC-IP-CIDR,192.168.93.1/24
|
||||
@@ -1,45 +0,0 @@
|
||||
payload:
|
||||
# SRC-IP-CIDR,192.168.10.1/24
|
||||
- SRC-IP-CIDR,192.168.14.1/24
|
||||
- SRC-IP-CIDR,192.168.15.1/24
|
||||
- SRC-IP-CIDR,192.168.16.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.20.1/24
|
||||
- SRC-IP-CIDR,192.168.24.1/24
|
||||
- SRC-IP-CIDR,192.168.25.1/24
|
||||
- SRC-IP-CIDR,192.168.26.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.30.1/24
|
||||
- SRC-IP-CIDR,192.168.34.1/24
|
||||
- SRC-IP-CIDR,192.168.35.1/24
|
||||
- SRC-IP-CIDR,192.168.36.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.40.1/24
|
||||
- SRC-IP-CIDR,192.168.44.1/24
|
||||
- SRC-IP-CIDR,192.168.45.1/24
|
||||
- SRC-IP-CIDR,192.168.46./24
|
||||
|
||||
- SRC-IP-CIDR,192.168.50.1/24
|
||||
- SRC-IP-CIDR,192.168.54.1/24
|
||||
- SRC-IP-CIDR,192.168.55.1/24
|
||||
- SRC-IP-CIDR,192.168.56.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.60.1/24
|
||||
- SRC-IP-CIDR,192.168.64.1/24
|
||||
- SRC-IP-CIDR,192.168.65.1/24
|
||||
- SRC-IP-CIDR,192.168.66.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.70.1/24
|
||||
- SRC-IP-CIDR,192.168.74.1/24
|
||||
- SRC-IP-CIDR,192.168.75.1/24
|
||||
- SRC-IP-CIDR,192.168.76.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.80.1/24
|
||||
- SRC-IP-CIDR,192.168.84.1/24
|
||||
- SRC-IP-CIDR,192.168.85.1/24
|
||||
- SRC-IP-CIDR,192.168.86.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.90.1/24
|
||||
- SRC-IP-CIDR,192.168.94.1/24
|
||||
- SRC-IP-CIDR,192.168.95.1/24
|
||||
- SRC-IP-CIDR,192.168.96.1/24
|
||||
@@ -1,2 +0,0 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,100.98.0.0/16
|
||||
@@ -1,5 +1,5 @@
|
||||
payload:
|
||||
- DOMAIN-SUFFIX,ifconfig.me
|
||||
- DOMAIN-SUFFIX,ipinfo.io
|
||||
- DOMAIN-SUFFIX,pervertium.com
|
||||
- DOMAIN-SUFFIX,tubesafari.com
|
||||
- SRC-IP-CIDR,192.168.10.203/32
|
||||
- SRC-IP-CIDR,192.168.10.204/32
|
||||
- SRC-IP-CIDR,100.98.138.18/32 # DTS-TAB-S7-NET
|
||||
- SRC-IP-CIDR,192.168.0.101/32 # DTS-TAB-S7-NET
|
||||
@@ -1,3 +1,3 @@
|
||||
payload:
|
||||
- DOMAIN-SUFFIX,twilio.com
|
||||
- DOMAIN-SUFFIX,webrtc.org
|
||||
- SRC-IP-CIDR,192.168.24.22/32
|
||||
|
||||
21
rule-provider/consolidated-lists-private/vlan10.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.11.1/24
|
||||
- SRC-IP-CIDR,192.168.21.1/24
|
||||
- SRC-IP-CIDR,192.168.31.1/24
|
||||
- SRC-IP-CIDR,192.168.41.1/24
|
||||
- SRC-IP-CIDR,192.168.51.1/24
|
||||
- SRC-IP-CIDR,192.168.61.1/24
|
||||
- SRC-IP-CIDR,192.168.71.1/24
|
||||
- SRC-IP-CIDR,192.168.81.1/24
|
||||
- SRC-IP-CIDR,192.168.91.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.10.91/32
|
||||
- SRC-IP-CIDR,192.168.10.164/32
|
||||
- SRC-IP-CIDR,192.168.10.91/32
|
||||
- SRC-IP-CIDR,192.168.10.71/32
|
||||
- SRC-IP-CIDR,192.168.10.200/32
|
||||
- SRC-IP-CIDR,192.168.10.201/32
|
||||
- SRC-IP-CIDR,192.168.10.202/32
|
||||
- SRC-IP-CIDR,192.168.10.203/32
|
||||
- SRC-IP-CIDR,192.168.10.204/32
|
||||
|
||||
11
rule-provider/consolidated-lists-private/vlan20.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.12.1/24
|
||||
- SRC-IP-CIDR,192.168.22.1/24
|
||||
- SRC-IP-CIDR,192.168.32.1/24
|
||||
- SRC-IP-CIDR,192.168.42.1/24
|
||||
- SRC-IP-CIDR,192.168.52.1/24
|
||||
- SRC-IP-CIDR,192.168.62.1/24
|
||||
- SRC-IP-CIDR,192.168.72.1/24
|
||||
- SRC-IP-CIDR,192.168.82.1/24
|
||||
- SRC-IP-CIDR,192.168.92.1/24
|
||||
|
||||
11
rule-provider/consolidated-lists-private/vlan30.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.13.1/24
|
||||
- SRC-IP-CIDR,192.168.23.1/24
|
||||
- SRC-IP-CIDR,192.168.33.1/24
|
||||
- SRC-IP-CIDR,192.168.43.1/24
|
||||
- SRC-IP-CIDR,192.168.53.1/24
|
||||
- SRC-IP-CIDR,192.168.63.1/24
|
||||
- SRC-IP-CIDR,192.168.73.1/24
|
||||
- SRC-IP-CIDR,192.168.83.1/24
|
||||
- SRC-IP-CIDR,192.168.93.1/24
|
||||
|
||||
10
rule-provider/consolidated-lists-private/vlan40.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.14.1/24
|
||||
- SRC-IP-CIDR,192.168.24.1/24
|
||||
- SRC-IP-CIDR,192.168.34.1/24
|
||||
- SRC-IP-CIDR,192.168.44.5/24
|
||||
- SRC-IP-CIDR,192.168.54.5/24
|
||||
- SRC-IP-CIDR,192.168.64.5/24
|
||||
- SRC-IP-CIDR,192.168.74.5/24
|
||||
- SRC-IP-CIDR,192.168.84.5/24
|
||||
- SRC-IP-CIDR,192.168.94.5/24
|
||||
20
rule-provider/consolidated-lists-private/vlan50.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.15.1/24
|
||||
- SRC-IP-CIDR,192.168.25.1/24
|
||||
- SRC-IP-CIDR,192.168.35.1/24
|
||||
- SRC-IP-CIDR,192.168.41.5/24
|
||||
- SRC-IP-CIDR,192.168.51.5/24
|
||||
- SRC-IP-CIDR,192.168.61.5/24
|
||||
- SRC-IP-CIDR,192.168.71.5/24
|
||||
- SRC-IP-CIDR,192.168.81.5/24
|
||||
- SRC-IP-CIDR,192.168.91.5/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.10.1/32
|
||||
- SRC-IP-CIDR,192.168.10.2/32
|
||||
- SRC-IP-CIDR,192.168.10.3/32
|
||||
- SRC-IP-CIDR,192.168.10.4/32
|
||||
- SRC-IP-CIDR,192.168.10.5/32
|
||||
- SRC-IP-CIDR,192.168.10.6/32
|
||||
- SRC-IP-CIDR,192.168.10.7/32
|
||||
- SRC-IP-CIDR,192.168.10.8/32
|
||||
- SRC-IP-CIDR,192.168.10.9/32
|
||||
@@ -1,18 +1,11 @@
|
||||
payload:
|
||||
- SRC-IP-CIDR,192.168.19.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.29.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.39.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.49.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.59.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.69.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.79.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.89.1/24
|
||||
|
||||
- SRC-IP-CIDR,192.168.99.1/24
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
payload:
|
||||
- GEOSITE,refilter
|
||||
- GEOIP,re-filter,no-resolve
|
||||
@@ -0,0 +1,2 @@
|
||||
payload:
|
||||
- GEOSITE,win-spy
|
||||
@@ -13,6 +13,9 @@ payload:
|
||||
# IP-ASN: 1
|
||||
# IP-CIDR: 2
|
||||
# TOTAL: 36
|
||||
- GEOSITE,category-ai-!cn
|
||||
- GEOSITE,category-ai-chat-!cn
|
||||
|
||||
- DOMAIN,servd-anthropic-website.b-cdn.net
|
||||
- DOMAIN-SUFFIX,anthropic.com
|
||||
- DOMAIN-SUFFIX,claude.ai
|
||||
|
||||
9
rule-provider/consolidated-services/anime.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
payload:
|
||||
- DOMAIN,webtoons.com
|
||||
- DOMAIN,www.webtoons.com
|
||||
- DOMAIN-SUFFIX,webtoons.com
|
||||
- DOMAIN-SUFFIX,webtoons.xyz
|
||||
- DOMAIN-SUFFIX,webtoons-static.pstatic.net
|
||||
- DOMAIN-SUFFIX,webtoon-phinf.pstatic.net
|
||||
- DOMAIN-KEYWORD,webtoons
|
||||
- DOMAIN-SUFFIX,line.me
|
||||
@@ -3,6 +3,10 @@
|
||||
##FETCH##
|
||||
|
||||
payload:
|
||||
# Own
|
||||
- DOMAIN-SUFFIX,cryptocloud.plus
|
||||
- DOMAIN-SUFFIX,exodus.io
|
||||
|
||||
- DOMAIN-SUFFIX,payeer.com
|
||||
- DOMAIN-SUFFIX,pocket-exchange.com
|
||||
- DOMAIN-SUFFIX,volet.com
|
||||
|
||||
2
rule-provider/consolidated-services/entertainment.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
payload:
|
||||
- GEOSITE, category-entertainment
|
||||
@@ -2,6 +2,8 @@
|
||||
##FETCH## https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/Rockstar/Rockstar.yaml
|
||||
|
||||
payload:
|
||||
- GEOSITE,category-games-!cn
|
||||
|
||||
- DOMAIN,eaasserts-a.akamaihd.net
|
||||
- DOMAIN,originasserts.akamaized.net
|
||||
- DOMAIN,gog.salesmanago.com
|
||||
|
||||
@@ -2,4 +2,10 @@
|
||||
##FETCH##
|
||||
|
||||
payload:
|
||||
- DOMAIN-SUFFIX,libgen.li
|
||||
- GEOSITE,category-novel
|
||||
|
||||
- DOMAIN-SUFFIX,libgen.li
|
||||
|
||||
- DOMAIN-SUFFIX,gaminik.net
|
||||
- DOMAIN-SUFFIX,gaminik.cn
|
||||
- DOMAIN-SUFFIX,langbag.com
|
||||
@@ -3,18 +3,11 @@
|
||||
##FETCH## https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/Reddit/Reddit.yaml
|
||||
|
||||
payload:
|
||||
- GEOSITE,newscorp
|
||||
|
||||
- DOMAIN-SUFFIX,habr.com
|
||||
- DOMAIN-SUFFIX,medium.com
|
||||
|
||||
- DOMAIN-SUFFIX,redd.it
|
||||
- DOMAIN-SUFFIX,reddit.com
|
||||
- DOMAIN-SUFFIX,redditmail.com
|
||||
- DOMAIN-SUFFIX,redditmedia.com
|
||||
- DOMAIN-SUFFIX,redditstatic.com
|
||||
- DOMAIN-SUFFIX,reddituploads.com
|
||||
- DOMAIN-SUFFIX,reddituploads.com.cdn-cf.behance.net
|
||||
- DOMAIN-SUFFIX,reddituploads.com.cdn-cf.dropbox.com
|
||||
|
||||
|
||||
- DOMAIN-SUFFIX,d1f1eryiqyjs0r.cloudfront.net
|
||||
- DOMAIN-SUFFIX,d3lar09xbwlsge.cloudfront.net
|
||||
- DOMAIN-SUFFIX,d3q1qj9jzsu8nw.cloudfront.net
|
||||
|
||||
@@ -5,7 +5,9 @@ payload:
|
||||
- DOMAIN-KEYWORD,fisting
|
||||
- DOMAIN-KEYWORD,punishworld
|
||||
- DOMAIN-SUFFIX,asstr-mirror.org
|
||||
|
||||
- DOMAIN-SUFFIX,tnaflix.com
|
||||
- DOMAIN-KEYWORD,bdsm
|
||||
|
||||
- DOMAIN-SUFFIX,phncdn.com
|
||||
- DOMAIN-SUFFIX,phprcdn.com
|
||||
- DOMAIN-SUFFIX,pornhub.com
|
||||
@@ -60,4 +62,12 @@ payload:
|
||||
- DOMAIN-SUFFIX,vrninja.tv
|
||||
- DOMAIN-SUFFIX,sxyprn.net
|
||||
- DOMAIN-SUFFIX,fapcat.com
|
||||
- DOMAIN-SUFFIX,redwap.me
|
||||
- DOMAIN-SUFFIX,redwap.me
|
||||
|
||||
- DOMAIN-SUFFIX,pervertium.com
|
||||
- DOMAIN-SUFFIX,tubesafari.com
|
||||
|
||||
- DOMAIN-SUFFIX,growcdnssedge.com
|
||||
- DOMAIN-SUFFIX,flixcdn.com
|
||||
- DOMAIN-SUFFIX,noodlemagazine.com
|
||||
- DOMAIN-SUFFIX,pvvstream.pro
|
||||
@@ -1,7 +1,5 @@
|
||||
payload:
|
||||
- DOMAIN-SUFFIX,globus.ru
|
||||
- DOMAIN-SUFFIX,samokat.ru
|
||||
- DOMAIN-SUFFIX,smartmed.pro
|
||||
- DOMAIN-SUFFIX,megamarket.ru
|
||||
- DOMAIN-SUFFIX,anextel.ru
|
||||
- DOMAIN-SUFFIX,2gis.com
|
||||
- DOMAIN-SUFFIX,rg.ru
|
||||
@@ -6,6 +6,7 @@ payload:
|
||||
|
||||
- DOMAIN-SUFFIX,rutracker.org
|
||||
- DOMAIN-SUFFIX,rustorka.com
|
||||
- DOMAIN-SUFFIX,rustorka.top
|
||||
- DOMAIN-SUFFIX,rutracker.cc
|
||||
- DOMAIN-KEYWORD,piratebay
|
||||
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
##FETCH##
|
||||
|
||||
payload:
|
||||
- DOMAIN-KEYWORD,aliexpress
|
||||
- GEOSITE,alibaba
|
||||
#- DOMAIN-KEYWORD,aliexpress
|
||||
2
rule-provider/services/amazon-cloudfront.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
payload:
|
||||
- GEOIP,cloudfront,no-resolve
|
||||
@@ -3,6 +3,8 @@
|
||||
##FETCH##
|
||||
|
||||
payload:
|
||||
- GEOIP,cloudflare,no-resolve
|
||||
|
||||
- DOMAIN-SUFFIX,cf-ipfs.com
|
||||
- DOMAIN-SUFFIX,cf-ns.com
|
||||
- DOMAIN-SUFFIX,cf-ns.net
|
||||
@@ -16,6 +18,7 @@ payload:
|
||||
- DOMAIN-SUFFIX,cloudflare-dns.com
|
||||
- DOMAIN-SUFFIX,cloudflare-ipfs.com
|
||||
- DOMAIN-SUFFIX,cloudflare-quic.com
|
||||
- DOMAIN-SUFFIX,cloudflare-ech.com
|
||||
- DOMAIN-SUFFIX,cloudflare.com
|
||||
- DOMAIN-SUFFIX,cloudflare.net
|
||||
- DOMAIN-SUFFIX,cloudflare.tv
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
##EXCLUDE## *instagram*
|
||||
|
||||
payload:
|
||||
- GEOIP,facebook,no-resolve
|
||||
|
||||
- DOMAIN-SUFFIX,cdninstagram.com
|
||||
- DOMAIN-SUFFIX,fb.com
|
||||
- DOMAIN-SUFFIX,fb.me
|
||||
@@ -15,31 +17,4 @@ payload:
|
||||
- DOMAIN-SUFFIX,oculus.com
|
||||
- DOMAIN-SUFFIX,oculuscdn.com
|
||||
- DOMAIN-SUFFIX,rocksdb.org
|
||||
- DOMAIN-SUFFIX,whatsapp.com
|
||||
- DOMAIN-SUFFIX,whatsapp.net
|
||||
- DOMAIN-KEYWORD,facebook
|
||||
- IP-ASN,32934
|
||||
- IP-CIDR,3.123.36.126/32
|
||||
- IP-CIDR,35.157.215.84/32
|
||||
- IP-CIDR,35.157.217.255/32
|
||||
- IP-CIDR,52.58.209.134/32
|
||||
- IP-CIDR,54.93.124.31/32
|
||||
- IP-CIDR,54.162.243.80/32
|
||||
- IP-CIDR,54.173.34.141/32
|
||||
- IP-CIDR,54.235.23.242/32
|
||||
- IP-CIDR,169.45.248.118/32
|
||||
- IP-CIDR,103.4.96.0/22,no-resolve
|
||||
- IP-CIDR,129.134.0.0/17,no-resolve
|
||||
- IP-CIDR,157.240.0.0/17,no-resolve
|
||||
- IP-CIDR,173.252.64.0/19,no-resolve
|
||||
- IP-CIDR,173.252.96.0/19,no-resolve
|
||||
- IP-CIDR,179.60.192.0/22,no-resolve
|
||||
- IP-CIDR,185.60.216.0/22,no-resolve
|
||||
- IP-CIDR,204.15.20.0/22,no-resolve
|
||||
- IP-CIDR,31.13.24.0/21,no-resolve
|
||||
- IP-CIDR,31.13.64.0/18,no-resolve
|
||||
- IP-CIDR,45.64.40.0/22,no-resolve
|
||||
- IP-CIDR,66.220.144.0/20,no-resolve
|
||||
- IP-CIDR,69.171.224.0/19,no-resolve
|
||||
- IP-CIDR,69.63.176.0/20,no-resolve
|
||||
- IP-CIDR,74.119.76.0/22,no-resolve
|
||||
- DOMAIN-KEYWORD,facebook
|
||||
6
rule-provider/services/fastly.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
|
||||
##FETCH## https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/Cloudflare/Cloudflare.yaml
|
||||
##FETCH##
|
||||
|
||||
payload:
|
||||
- GEOIP,fastly,no-resolve
|
||||
@@ -2,6 +2,8 @@
|
||||
##FETCH##
|
||||
|
||||
payload:
|
||||
- GEOSITE,google-gemini
|
||||
|
||||
- DOMAIN,ai.google.dev
|
||||
- DOMAIN,alkalimakersuite-pa.clients6.google.com
|
||||
- DOMAIN,makersuite.google.com
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
##FETCH## https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/GitHub/GitHub.yaml
|
||||
|
||||
payload:
|
||||
- GEOSITE,github
|
||||
|
||||
- DOMAIN-SUFFIX,atom.io
|
||||
- DOMAIN-SUFFIX,dependabot.com
|
||||
- DOMAIN-SUFFIX,ghcr.io
|
||||
|
||||
@@ -2,6 +2,17 @@
|
||||
##FETCH## https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Clash/GoogleDrive/GoogleDrive.yaml
|
||||
|
||||
payload:
|
||||
- GEOIP,google,no-resolve
|
||||
|
||||
- GEOSITE,google
|
||||
- GEOSITE,google-deepmind
|
||||
- GEOSITE,google-play
|
||||
- GEOSITE,google-registry
|
||||
- GEOSITE,google-registry-tld
|
||||
- GEOSITE,google-scholar
|
||||
- GEOSITE,google-trust-services
|
||||
- GEOSITE,googlefcm)
|
||||
|
||||
- DOMAIN,voice.telephony.goog
|
||||
- DOMAIN-SUFFIX,0emm.com
|
||||
- DOMAIN-SUFFIX,1e100.net
|
||||
@@ -698,11 +709,6 @@ payload:
|
||||
- DOMAIN-KEYWORD,gmail
|
||||
- DOMAIN-KEYWORD,google
|
||||
- DOMAIN-KEYWORD,recaptcha
|
||||
- IP-CIDR,172.110.32.0/21
|
||||
- IP-CIDR,173.194.0.0/16
|
||||
- IP-CIDR,216.73.80.0/20
|
||||
- IP-CIDR,74.125.0.0/16
|
||||
- IP-CIDR6,2620:120:e000::/40
|
||||
|
||||
- DOMAIN,www.googleapis.com
|
||||
- DOMAIN-SUFFIX,docs.google.com
|
||||
|
||||