Add site contacts/FAQ and accept AWG 2.0 / naive pastes in Add config.

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>
This commit is contained in:
Navis
2026-08-02 15:40:13 +03:00
co-authored by Cursor
parent e416327fbf
commit 50f7f71393
39 changed files with 3128 additions and 112 deletions
+191
View File
@@ -0,0 +1,191 @@
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 WiFi: 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 Storeready 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)
}