feat(cli): add settings menu and VLESS log viewer with core selection

- Add settings menu to switch between Xray and V2Ray cores for VLESS connections
- Implement core type persistence in configuration with LoadSettings/SaveSettings
- Add VLESS error and access log viewer showing last 30 and 20 lines respectively
- Display current core type and system time in main menu
- Update VLESS connection to use selected core dynamically
- Refactor monitor.go to accept 'q' key input for graceful exit instead of signal handling
- Add proxy platform-specific implementations (proxy_unix.go, proxy_windows.go)
- Add downloader module for managing binary resources
- Include V2Ray and Xray configuration files and geodata (geoip.dat, geosite.dat)
- Update CLI imports to include path/filepath and time packages
- Improve user experience with core selection visibility and log diagnostics
This commit is contained in:
2026-04-06 20:06:35 +06:00
parent d88139af1b
commit 20d24a3639
19 changed files with 45913 additions and 45 deletions

View File

@@ -7,6 +7,7 @@ import (
"vpn-client/internal/admin"
"vpn-client/internal/cli"
"vpn-client/internal/config"
"vpn-client/internal/downloader"
)
func main() {
@@ -19,9 +20,23 @@ func main() {
os.Exit(1)
}
// Проверка и загрузка Xray и V2Ray
fmt.Println("Проверка наличия Xray и V2Ray...")
if err := downloader.CheckAndDownloadBoth(config.XrayDir, config.V2RayDir); err != nil {
fmt.Fprintf(os.Stderr, "Ошибка загрузки ядер: %v\n", err)
fmt.Println("\nНажмите Enter для выхода...")
fmt.Scanln()
os.Exit(1)
}
// Запуск CLI
if err := cli.Run(); err != nil {
fmt.Fprintf(os.Stderr, "Ошибка: %v\n", err)
fmt.Println("\nНажмите Enter для выхода...")
fmt.Scanln()
os.Exit(1)
}
// Нормальный выход
os.Exit(0)
}