ImportSubscription no longer requires only http(s): paste awg://, AWG .conf/JSON, or naive links; subscription parser also reads hosted AWG and Clash wireguard/naive. Site lists support emails and FAQ; Store listing texts/tools updated. Co-authored-by: Cursor <cursoragent@cursor.com>
192 lines
10 KiB
Go
192 lines
10 KiB
Go
package main
|
||
|
||
import (
|
||
"encoding/csv"
|
||
"fmt"
|
||
"os"
|
||
"path/filepath"
|
||
)
|
||
|
||
func main() {
|
||
path := filepath.Join(`D:\vpn navi`, "store.csv")
|
||
f, err := os.Open(path)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
r := csv.NewReader(f)
|
||
r.FieldsPerRecord = -1
|
||
r.LazyQuotes = true
|
||
all, err := r.ReadAll()
|
||
f.Close()
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
if len(all) < 2 {
|
||
panic("empty csv")
|
||
}
|
||
header := all[0]
|
||
defIdx, enIdx := -1, -1
|
||
for i, h := range header {
|
||
switch h {
|
||
case "default":
|
||
defIdx = i
|
||
case "en":
|
||
enIdx = i
|
||
}
|
||
}
|
||
if defIdx < 0 || enIdx < 0 {
|
||
panic(fmt.Sprintf("columns: %v", header))
|
||
}
|
||
|
||
ru := map[string]string{
|
||
"Description": `EvilFox — приложение для безопасного доступа в интернет на Windows.
|
||
|
||
Защитите данные в публичных Wi‑Fi сетях: EvilFox шифрует трафик, скрывает ваш реальный IP-адрес и помогает предотвратить утечки DNS. Современный интерфейс на русском и английском, светлая и тёмная темы, удобный выбор серверов и понятный статус подключения.
|
||
|
||
Возможности:
|
||
• Шифрование трафика с поддержкой современных протоколов
|
||
• Режим прокси и полный режим защиты (TUN) для всего трафика приложений
|
||
• Защита от утечек (Kill Switch) при обрыве соединения
|
||
• Автовыбор сервера с наименьшим пингом
|
||
• Список серверов с флагами стран и группировкой по хосту
|
||
• Добавление собственной конфигурации по URL
|
||
• Мониторинг использования трафика и статистика сессий
|
||
• Интерфейс на русском и английском языках
|
||
|
||
EvilFox подходит для повседневной работы, путешествий и защиты приватности. Конфигурацию подключения вы добавляете самостоятельно; покупки внутри приложения не требуются.
|
||
|
||
Сайт: https://evilfox.win/
|
||
Поддержка: https://t.me/evilfox100Bot`,
|
||
"ReleaseNotes": `Обновление 4.2: улучшенный интерфейс для Microsoft Store, переключатель языка RU/EN, светлая тема по умолчанию, группировка серверов по IP с отображением доступных протоколов, исправления переключателей темы и языка, реальные флаги стран (SVG), Kill Switch и статистика.`,
|
||
"Title": "EvilFox",
|
||
"ShortTitle": "EvilFox",
|
||
"SortTitle": "EvilFox",
|
||
"VoiceTitle": "Evil Fox",
|
||
"ShortDescription": `Безопасный доступ в интернет: шифрование трафика, скрытие IP, защита от утечек DNS. Русский и английский. Современные протоколы, Kill Switch, удобный выбор серверов.`,
|
||
"DevStudio": "EvilFox",
|
||
"CopyrightTrademarkInformation": `© EvilFox. All rights reserved. EvilFox and the EvilFox logo are trademarks of their respective owners.`,
|
||
"AdditionalLicenseTerms": `Proprietary software. By installing EvilFox you agree to use the application in accordance with applicable laws. The app provides a client for encrypted network connections; server configurations are supplied by the user. See https://evilfox.win/ for support and terms.`,
|
||
"Feature1": "Шифрование трафика и скрытие IP-адреса",
|
||
"Feature2": "Режим прокси и полный режим защиты (TUN)",
|
||
"Feature3": "Kill Switch — блокировка трафика при обрыве VPN",
|
||
"Feature4": "Автовыбор сервера с лучшим пингом",
|
||
"Feature5": "Серверы с флагами стран и группировкой протоколов",
|
||
"Feature6": "Добавление конфигурации по URL",
|
||
"Feature7": "Статистика трафика и сессий",
|
||
"Feature8": "Интерфейс на русском и английском",
|
||
"Feature9": "Светлая и тёмная темы оформления",
|
||
"Feature10": "Защита от утечек DNS",
|
||
"MinimumHardwareReq1": "Windows 10 version 1809 or later (x64)",
|
||
"MinimumHardwareReq2": "Internet connection",
|
||
"MinimumHardwareReq3": "100 MB free disk space",
|
||
"RecommendedHardwareReq1": "Windows 11 (x64)",
|
||
"RecommendedHardwareReq2": "Stable broadband connection",
|
||
"SearchTerm1": "VPN",
|
||
"SearchTerm2": "privacy",
|
||
"SearchTerm3": "secure internet",
|
||
"SearchTerm4": "encrypt traffic",
|
||
"SearchTerm5": "EvilFox",
|
||
"SearchTerm6": "proxy client",
|
||
"SearchTerm7": "kill switch",
|
||
"DesktopScreenshotCaption1": "Главный экран: подключение и статус защиты",
|
||
"DesktopScreenshotCaption2": "Список серверов с флагами и пингом",
|
||
"DesktopScreenshotCaption3": "Настройки: тема, язык, Kill Switch",
|
||
"DesktopScreenshotCaption4": "Статистика использования",
|
||
}
|
||
|
||
en := map[string]string{
|
||
"Description": `EvilFox is a Windows app for private, secure internet access.
|
||
|
||
Protect your data on public Wi‑Fi: EvilFox encrypts your traffic, hides your real IP address, and helps prevent DNS leaks. A modern interface in English and Russian, light and dark themes, an easy server list, and a clear connection status.
|
||
|
||
Features:
|
||
• Traffic encryption with modern protocol support
|
||
• Proxy mode and full protection mode (TUN) for all app traffic
|
||
• Leak protection (Kill Switch) if the connection drops
|
||
• Auto-select the server with the lowest ping
|
||
• Server list with country flags and host grouping
|
||
• Add your own configuration via URL
|
||
• Traffic usage monitoring and session stats
|
||
• English and Russian interface
|
||
|
||
EvilFox is built for everyday browsing, travel, and privacy. You add your own connection configuration; no in-app purchases are required.
|
||
|
||
Website: https://evilfox.win/
|
||
Support: https://t.me/evilfox100Bot`,
|
||
"ReleaseNotes": `Version 4.2: Microsoft Store–ready UI polish, RU/EN language switch, light theme by default, servers grouped by IP with available protocols, theme/language toggle fixes, real country flags (SVG), Kill Switch, and usage statistics.`,
|
||
"Title": "EvilFox",
|
||
"ShortTitle": "EvilFox",
|
||
"SortTitle": "EvilFox",
|
||
"VoiceTitle": "Evil Fox",
|
||
"ShortDescription": `Secure internet access: encrypt traffic, hide your IP, help prevent DNS leaks. English & Russian. Modern protocols, Kill Switch, easy server selection.`,
|
||
"DevStudio": "EvilFox",
|
||
"CopyrightTrademarkInformation": `© EvilFox. All rights reserved. EvilFox and the EvilFox logo are trademarks of their respective owners.`,
|
||
"AdditionalLicenseTerms": `Proprietary software. By installing EvilFox you agree to use the application in accordance with applicable laws. The app provides a client for encrypted network connections; server configurations are supplied by the user. See https://evilfox.win/ for support and terms.`,
|
||
"Feature1": "Encrypt traffic and hide your IP address",
|
||
"Feature2": "Proxy mode and full protection mode (TUN)",
|
||
"Feature3": "Kill Switch blocks traffic if VPN drops",
|
||
"Feature4": "Auto-select the lowest-ping server",
|
||
"Feature5": "Servers with country flags and protocol grouping",
|
||
"Feature6": "Add configuration via URL",
|
||
"Feature7": "Traffic and session statistics",
|
||
"Feature8": "English and Russian interface",
|
||
"Feature9": "Light and dark themes",
|
||
"Feature10": "DNS leak protection",
|
||
"MinimumHardwareReq1": "Windows 10 version 1809 or later (x64)",
|
||
"MinimumHardwareReq2": "Internet connection",
|
||
"MinimumHardwareReq3": "100 MB free disk space",
|
||
"RecommendedHardwareReq1": "Windows 11 (x64)",
|
||
"RecommendedHardwareReq2": "Stable broadband connection",
|
||
"SearchTerm1": "VPN",
|
||
"SearchTerm2": "privacy",
|
||
"SearchTerm3": "secure internet",
|
||
"SearchTerm4": "encrypt traffic",
|
||
"SearchTerm5": "EvilFox",
|
||
"SearchTerm6": "proxy client",
|
||
"SearchTerm7": "kill switch",
|
||
"DesktopScreenshotCaption1": "Home: connect and protection status",
|
||
"DesktopScreenshotCaption2": "Server list with flags and ping",
|
||
"DesktopScreenshotCaption3": "Settings: theme, language, Kill Switch",
|
||
"DesktopScreenshotCaption4": "Usage statistics",
|
||
}
|
||
|
||
for i := 1; i < len(all); i++ {
|
||
row := all[i]
|
||
for len(row) < len(header) {
|
||
row = append(row, "")
|
||
}
|
||
field := row[0]
|
||
if v, ok := ru[field]; ok {
|
||
row[defIdx] = v
|
||
}
|
||
if v, ok := en[field]; ok {
|
||
row[enIdx] = v
|
||
}
|
||
all[i] = row
|
||
}
|
||
|
||
out, err := os.Create(path)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
// UTF-8 BOM for Excel / Partner Center
|
||
if _, err := out.Write([]byte{0xEF, 0xBB, 0xBF}); err != nil {
|
||
panic(err)
|
||
}
|
||
w := csv.NewWriter(out)
|
||
if err := w.WriteAll(all); err != nil {
|
||
panic(err)
|
||
}
|
||
w.Flush()
|
||
out.Close()
|
||
|
||
for _, want := range []string{"Description", "Title", "ShortDescription", "Feature1", "AdditionalLicenseTerms"} {
|
||
for _, row := range all[1:] {
|
||
if len(row) > 0 && row[0] == want {
|
||
fmt.Printf("%s default=%d en=%d\n", want, len(row[defIdx]), len(row[enIdx]))
|
||
}
|
||
}
|
||
}
|
||
fmt.Println("wrote", path)
|
||
}
|