Update external-proxies-sanitizer.js to refine noise patterns and enhance country detection rules
This commit is contained in:
@@ -29,7 +29,7 @@ const NOISE_PATTERNS = [
|
||||
/\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
|
||||
/\bvless\b/gi,
|
||||
/\bvmess\b/gi,
|
||||
/\bssr?\b/gi,
|
||||
/\btrojan\b/gi,
|
||||
@@ -50,6 +50,7 @@ const ICON_RULES = [
|
||||
{ regex: /\bPrime\b|\bAmazon\b/gi, icon: "📦" },
|
||||
{ regex: /\bChatGPT\b|\bOpenAI\b/gi, icon: "🤖" },
|
||||
{ regex: /\bSteam\b/gi, icon: "🎮" },
|
||||
{ regex: /\bTorrent✅\b|Torrent|\bP2P\b|\bP2P-Torrents\b/gi, icon: "🧲" }
|
||||
];
|
||||
|
||||
// 3) Optional “network” tag rules based on NAME text (not $server.network)
|
||||
@@ -62,49 +63,51 @@ const NAME_NETWORK_TAGS = [
|
||||
|
||||
// 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 },
|
||||
{ regex: /\b(Эстония|EE|EST|ESTONIA|TALLINN)\b/i, iso3: "EST", flag: "🇪🇪", priority: 110 }, // Estonia
|
||||
{ regex: /\b(Финляндия|FI|FIN|FINLAND|HELSINKI)\b/i, iso3: "FIN", flag: "🇫🇮", priority: 70 }, // Finland
|
||||
{ regex: /\b(Япония|JP|JPN|JAPAN|TOKYO|OSAKA)\b/i, iso3: "JPN", flag: "🇯🇵", priority: 210 }, // Japan
|
||||
{ regex: /\b(Гонконг|HK|HKG|HONG\s*KONG)\b/i, iso3: "HKG", flag: "🇭🇰", priority: 230 }, // Hong Kong
|
||||
{ regex: /\b(Германия|DE|DEU|GER(MANY)?|FRANKFURT|BERLIN|MUNICH)\b/i, iso3: "DEU", flag: "🇩🇪", priority: 20 }, // Germany
|
||||
{ regex: /\b(Франция|FR|FRA|FRANCE|PARIS|MARSEILLE)\b/i, iso3: "FRA", flag: "🇫🇷", priority: 50 }, // France
|
||||
{ regex: /\b(Нидерланды|NL|NLD|NETHERLANDS|HOLLAND|AMSTERDAM)\b/i, iso3: "NLD", flag: "🇳🇱", priority: 30 }, // Netherlands
|
||||
{ regex: /\b(Норвегия|NO|NOR|NORWAY|OSLO)\b/i, iso3: "NOR", flag: "🇳🇴", priority: 90 }, // Norway
|
||||
{ regex: /\b(Латвия|LV|LVA|LATVIA|RIGA)\b/i, iso3: "LVA", flag: "🇱🇻", priority: 120 }, // Latvia
|
||||
{ regex: /\b(Литва|LT|LTU|LITHUANIA|VILNIUS)\b/i, iso3: "LTU", flag: "🇱🇹", priority: 130 }, // Lithuania
|
||||
{ regex: /\b(Польша|PL|POL|POLAND|WARSAW|WARSZAWA)\b/i, iso3: "POL", flag: "🇵🇱", priority: 60 }, // Poland
|
||||
{ regex: /\b(Сингапур|SG|SGP|SINGAPORE)\b/i, iso3: "SGP", flag: "🇸🇬", priority: 200 }, // Singapore
|
||||
{ regex: /\b(South Korea|Корея|KR|KOR|KOREA|SEOUL)\b/i, iso3: "KOR", flag: "🇰🇷", priority: 220 }, // South Korea
|
||||
{ regex: /\b(Швеция|SE|SWE|SWEDEN|STOCKHOLM)\b/i, iso3: "SWE", flag: "🇸🇪", priority: 80 }, // Sweden
|
||||
{ regex: /\b(Швейцария|CH|CHE|SWITZERLAND|ZURICH|GENEVA)\b/i, iso3: "CHE", flag: "🇨🇭", priority: 100 }, // Switzerland
|
||||
{ regex: /\b(Турция|TR|TUR|TURKEY|ISTANBUL)\b/i, iso3: "TUR", flag: "🇹🇷", priority: 140 }, // Turkey
|
||||
{ regex: /\b(Великобритания|Англия|England|UK|GB|GBR|UNITED\s*KINGDOM)\b/i, iso3: "GBR", flag: "🇬🇧", priority: 40 }, // UK
|
||||
{ regex: /\b(США|USA|US|UNITED\s*STATES|AMERICA|NEW\s*YORK|NYC)\b/i, iso3: "USA", flag: "🇺🇸", priority: 10 }, // USA
|
||||
{ regex: /\b(Argentina|AR|ARG|ARGENTINA|BUENOS\s*AIRES)\b/i, iso3: "ARG", flag: "🇦🇷", priority: 240 }, // Argentina
|
||||
{ regex: /\b(Australia|AU|AUS|AUSTRALIA|SYDNEY)\b/i, iso3: "AUS", flag: "🇦🇺", priority: 250 }, // Australia
|
||||
{ regex: /\b(Austria|AT|AUT|AUSTRIA|VIENNA)\b/i, iso3: "AUT", flag: "🇦🇹", priority: 260 }, // Austria
|
||||
{ regex: /\b(Brazil|BR|BRA|BRAZIL|SAO\s*PAULO)\b/i, iso3: "BRA", flag: "🇧🇷", priority: 270 }, // Brazil
|
||||
{ regex: /\b(Bulgaria|BG|BGR|BULGARIA|SOFIA)\b/i, iso3: "BGR", flag: "🇧🇬", priority: 280 }, // Bulgaria
|
||||
{ regex: /\b(Canada|CA|CAN|CANADA|TORONTO)\b/i, iso3: "CAN", flag: "🇨🇦", priority: 290 }, // Canada
|
||||
{ regex: /\b(Czech\s*Republic|CZ|CZE|CZECH|PRAGUE)\b/i, iso3: "CZE", flag: "🇨🇿", priority: 300 }, // Czech Republic
|
||||
{ regex: /\b(Denmark|DK|DNK|DENMARK|COPENHAGEN)\b/i, iso3: "DNK", flag: "🇩🇰", priority: 310 }, // Denmark
|
||||
{ regex: /\b(Egypt|EG|EGY|EGYPT|CAIRO)\b/i, iso3: "EGY", flag: "🇪🇬", priority: 320 }, // Egypt
|
||||
{ regex: /\b(Georgia|GE|GEO|GEORGIA|TBILISI)\b/i, iso3: "GEO", flag: "🇬🇪", priority: 330 }, // Georgia
|
||||
{ regex: /\b(India|IN|IND|INDIA|MUMBAI)\b/i, iso3: "IND", flag: "🇮🇳", priority: 340 }, // India
|
||||
{ regex: /\b(Ireland|IE|IRL|IRELAND|DUBLIN)\b/i, iso3: "IRL", flag: "🇮🇪", priority: 350 }, // Ireland
|
||||
{ regex: /\b(Israel|IL|ISR|ISRAEL|TEL\s*AVIV)\b/i, iso3: "ISR", flag: "🇮🇱", priority: 360 }, // Israel
|
||||
{ regex: /\b(Italy|IT|ITA|ITALY|ROME)\b/i, iso3: "ITA", flag: "🇮🇹", priority: 370 }, // Italy
|
||||
{ regex: /\b(Kazakhstan|KZ|KAZ|KAZAKHSTAN|ALMATY)\b/i, iso3: "KAZ", flag: "🇰🇿", priority: 380 }, // Kazakhstan
|
||||
{ regex: /\b(Malaysia|MY|MYS|MALAYSIA|KUALA\s*LUMPUR)\b/i, iso3: "MYS", flag: "🇲🇾", priority: 390 }, // Malaysia
|
||||
{ regex: /\b(Moldova|MD|MDA|MOLDOVA|CHISINAU)\b/i, iso3: "MDA", flag: "🇲🇩", priority: 400 }, // Moldova
|
||||
{ regex: /\b(Nigeria|NG|NGA|NIGERIA|LAGOS)\b/i, iso3: "NGA", flag: "🇳🇬", priority: 410 }, // Nigeria
|
||||
{ regex: /\b(Philippines|PH|PHL|PHILIPPINES|MANILA)\b/i, iso3: "PHL", flag: "🇵🇭", priority: 420 }, // Philippines
|
||||
{ regex: /\b(Portugal|PT|PRT|PORTUGAL|LISBON)\b/i, iso3: "PRT", flag: "🇵🇹", priority: 430 }, // Portugal
|
||||
{ regex: /\b(Romania|RO|ROU|ROMANIA|BUCHAREST)\b/i, iso3: "ROU", flag: "🇷🇴", priority: 440 }, // Romania
|
||||
{ regex: /\b(Russia|RU|RUS|RUSSIA|MOSCOW)\b/i, iso3: "RUS", flag: "🇷🇺", priority: 450 }, // Russia
|
||||
{ regex: /\b(Spain|ES|ESP|SPAIN|MADRID)\b/i, iso3: "ESP", flag: "🇪🇸", priority: 460 }, // Spain
|
||||
{ regex: /\b(Taiwan|TW|TWN|TAIWAN|TAIPEI)\b/i, iso3: "TWN", flag: "🇹🇼", priority: 470 }, // Taiwan
|
||||
{ regex: /\b(Thailand|TH|THA|THAILAND|BANGKOK)\b/i, iso3: "THA", flag: "🇹🇭", priority: 480 }, // Thailand
|
||||
{ regex: /\b(UAE|United\s*Arab\s*Emirates|AE|ARE|DUBAI)\b/i, iso3: "ARE", flag: "🇦🇪", priority: 490 }, // UAE
|
||||
{ regex: /\b(Vietnam|VN|VNM|VIETNAM|HANOI)\b/i, iso3: "VNM", flag: "🇻🇳", priority: 500 } // Vietnam
|
||||
];
|
||||
|
||||
// 5) GeoIP mapping (ISO2 -> ISO3 + flag) used only if utils.geoip.lookup(ip) returns ISO2
|
||||
|
||||
Reference in New Issue
Block a user