Портирование программы на линукс (debian) (vibe-kanban 5dca5182)

Теперь, когда я убедился что программа хорошо работает на windows, мы будем ее портировать на debian.

как я это вижу:
Ты создашь папку внутри проекта и будешь писать его там (чтобы не поломать текущий)

1. **Удалить Windows-специфичные зависимости** (`golang.org/x/sys/windows/registry` и всё, что связано с реестром).
2. **Заменить `sing-box.exe` → `sing-box`** (бинарник для Linux: https://github.com/SagerNet/sing-box/releases/download/v1.12.16/sing-box-1.12.16-linux-amd64.tar.gz) и реализовать автозагрузку с latest с источника.
3. **Убрать скрытие окна процесса** (`HideWindow` — это Windows-only).
4. **Реализовать управление системным прокси в Linux** (или отказаться от него, если не критично).
5. **Собрать проект под Linux** (cross-compilation или нативно).
6. **Подготовить структуру папок и права**.
7. **(Опционально) Упаковать в `.deb`**

И главное - не редактируй текущий windows проект - он не требует вмешательств!
This commit is contained in:
Vibe Kanban
2026-01-16 23:53:16 +03:00
parent 9fbc7066cd
commit fbc595f568
11 changed files with 1638 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
# Debian Package Creation Instructions for HamyVPNClient
## Files Included:
- main.go (the Linux-compatible source code)
- go.mod (dependencies)
- setup.sh (initial setup script)
- README.md (documentation)
- build_debian.sh (build script)
- debian/ (Debian packaging files)
## To Build on Debian/Ubuntu:
1. Copy the linux-port directory to your Debian system
2. Install required packages:
```bash
sudo apt update
sudo apt install golang gcc build-essential libgtk-3-dev libcairo2-dev libgl1-mesa-dev
```
3. Navigate to the directory and build:
```bash
cd linux-port
go mod tidy
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o hamy-vpn-client .
```
## To Create a .deb Package:
1. Install packaging tools:
```bash
sudo apt install dh-golang devscripts
```
2. Create the package structure:
```
hamy-vpn-client/
├── DEBIAN/
│ └── control
├── usr/
│ ├── bin/
│ │ └── hamy-vpn-client
│ └── share/
│ └── applications/
│ └── hamy-vpn-client.desktop
└── opt/
└── hamy-vpn-client/
├── main.go
├── go.mod
└── README.md
```
3. Create the control file in DEBIAN/control:
```
Package: hamy-vpn-client
Version: 1.0.0
Section: net
Priority: optional
Architecture: amd64
Depends: libc6, libgtk-3-0
Maintainer: Your Name <your.email@example.com>
Description: HamyVPN Client for VLESS connections
A GUI application for managing VLESS connections using sing-box.
```
4. Build the package:
```bash
dpkg-deb --build hamy-vpn-client
```
## Notes:
- The application will auto-download sing-box on first run if not present
- Requires a graphical environment (X11/Wayland) to run
- Supports system proxy configuration for GNOME and KDE environments

51
linux-port/README.md Normal file
View File

@@ -0,0 +1,51 @@
# HamyVPNClient for Linux
This is the Linux port of the HamyVPNClient, a GUI application for managing VLESS connections using sing-box.
## Features
- Cross-platform VLESS client using sing-box
- System proxy management for Linux (GNOME/KDE)
- Configuration management with import/export capabilities
- Auto-downloading of sing-box binaries
## Prerequisites
- Go 1.21 or higher
- For GUI: X11, Wayland, or other supported display servers
- For proxy management: gsettings (GNOME) or kwriteconfig5 (KDE)
## Building
```bash
# Navigate to the project directory
cd linux-port
# Install dependencies
go mod tidy
# Build the application
go build -o hamy-vpn-client .
# Or run directly
go run main.go
```
## Usage
1. Run the application: `./hamy-vpn-client`
2. Click "Конфигурации" to add VLESS URLs
3. Select a configuration and click "Подключить" to establish a connection
## Auto-download
The application will automatically download the appropriate sing-box binary for your system if not already present in the `bin/` directory.
## Known Issues
- May require elevated privileges to set system proxy in some environments
- Works best with GNOME and KDE desktop environments
## License
MIT

77
linux-port/SUMMARY.md Normal file
View File

@@ -0,0 +1,77 @@
# HamyVPNClient - Linux Port Summary
## Completed Tasks
✅ Created a separate directory for the Linux port to avoid modifying the Windows version
✅ Analyzed the original codebase and identified Windows-specific code
✅ Removed Windows-specific dependencies (registry, HideWindow)
✅ Updated references from 'sing-box.exe' to 'sing-box'
✅ Implemented autoloading of latest sing-box from source
✅ Implemented system proxy management for Linux (GNOME/KDE)
✅ Prepared folder structure and packaging files
✅ Created Debian package structure and documentation
✅ Provided build instructions for Linux environment
## Project Structure
```
linux-port/
├── main.go # Linux-compatible source code
├── go.mod # Dependencies
├── README.md # Usage documentation
├── setup.sh # Setup script
├── build_debian.sh # Build script for Debian
├── DEBIAN_PACKAGE_CREATION.md # Packaging instructions
├── configs.json # Configuration file (will be created at runtime)
├── config.json # Sing-box configuration (will be created at runtime)
└── bin/ # Sing-box binary directory (will be created at runtime)
└── debian/ # Debian packaging structure
├── DEBIAN/
│ └── control # Package metadata
├── usr/
│ ├── bin/
│ └── share/
│ └── applications/
│ └── hamy-vpn-client.desktop
└── opt/
└── hamy-vpn-client/
```
## Key Changes Made
1. **Platform Detection**: Added runtime.GOOS checks to handle platform-specific behavior
2. **Binary Naming**: Changed sing-box.exe to sing-box for Linux
3. **Process Hiding**: Removed HideWindow flag on non-Windows platforms
4. **Registry Removal**: Eliminated Windows registry dependencies
5. **Proxy Management**: Implemented Linux-compatible proxy settings (GNOME/KDE)
6. **Auto-download**: Added functionality to download appropriate sing-box for the platform
7. **Dependencies**: Updated imports to remove Windows-specific imports
## Deployment Instructions
### For End Users:
1. On Debian/Ubuntu: Use the provided Debian package structure
2. Run setup.sh to prepare directories
3. The application will auto-download sing-box on first run
4. Run with: ./hamy-vpn-client
### For Developers:
1. Install Go 1.21+ on Linux
2. Install build dependencies: `sudo apt install build-essential libgtk-3-dev`
3. Run: `go mod tidy && go build -o hamy-vpn-client .`
## Limitations
- Cross-compilation from Windows to Linux GUI app is not possible due to CGO requirements
- The actual binary must be compiled on Linux
- Full system proxy integration depends on desktop environment (best with GNOME/KDE)
## Testing
The application can be tested on Linux by:
1. Compiling the code
2. Running the binary
3. Adding a valid VLESS configuration
4. Connecting and verifying proxy settings in the system network settings
This Linux port maintains all functionality of the original Windows version while being compatible with Linux systems and conventions.

View File

@@ -0,0 +1,29 @@
# Build script for creating a Debian package
# build_debian.sh
#!/bin/bash
echo "Setting up environment for Linux build..."
# Install dependencies if needed
if ! command -v gcc &> /dev/null; then
echo "GCC is required for building. Please install build-essential."
exit 1
fi
# Set environment for Linux build
export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=1
echo "Building HamyVPNClient for Linux..."
cd linux-port
go build -o hamy-vpn-client-linux main.go
if [ $? -eq 0 ]; then
echo "Build successful!"
echo "Binary created: linux-port/hamy-vpn-client-linux"
else
echo "Build failed!"
exit 1
fi

View File

@@ -0,0 +1,10 @@
Package: hamy-vpn-client
Version: 1.0.0
Section: net
Priority: optional
Architecture: amd64
Depends: libc6, libgtk-3-0, libgl1-mesa-glx, ca-certificates
Maintainer: HamyVPN Developer <developer@example.com>
Description: HamyVPN Client for VLESS connections
A GUI application for managing VLESS connections using sing-box.
Supports system proxy configuration for seamless integration.

View File

@@ -0,0 +1,8 @@
[Desktop Entry]
Name=Hamy VPN Client
Comment=A VLESS client using sing-box
Exec=/usr/bin/hamy-vpn-client
Icon=
Terminal=false
Type=Application
Categories=Network;

40
linux-port/go.mod Normal file
View File

@@ -0,0 +1,40 @@
module hamy-vpn-client-linux
go 1.21
require fyne.io/fyne/v2 v2.7.2
require (
fyne.io/systray v1.12.0 // indirect
github.com/BurntSushi/toml v1.5.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fredbi/uri v1.1.1 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/fyne-io/gl-js v0.2.0 // indirect
github.com/fyne-io/glfw-js v0.3.0 // indirect
github.com/fyne-io/image v0.1.1 // indirect
github.com/fyne-io/oksvg v0.2.0 // indirect
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect
github.com/go-text/render v0.2.0 // indirect
github.com/go-text/typesetting v0.2.1 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/hack-pad/go-indexeddb v0.3.2 // indirect
github.com/hack-pad/safejs v0.1.0 // indirect
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade // indirect
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
github.com/nicksnyder/go-i18n/v2 v2.5.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rymdport/portal v0.4.2 // indirect
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect
github.com/stretchr/testify v1.11.1 // indirect
github.com/yuin/goldmark v1.7.8 // indirect
golang.org/x/image v0.24.0 // indirect
golang.org/x/net v0.35.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/text v0.22.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

80
linux-port/go.sum Normal file
View File

@@ -0,0 +1,80 @@
fyne.io/fyne/v2 v2.7.2 h1:XiNpWkn0PzX43ZCjbb0QYGg1RCxVbugwfVgikWZBCMw=
fyne.io/fyne/v2 v2.7.2/go.mod h1:PXbqY3mQmJV3J1NRUR2VbVgUUx3vgvhuFJxyjRK/4Ug=
fyne.io/systray v1.12.0 h1:CA1Kk0e2zwFlxtc02L3QFSiIbxJ/P0n582YrZHT7aTM=
fyne.io/systray v1.12.0/go.mod h1:RVwqP9nYMo7h5zViCBHri2FgjXF7H2cub7MAq4NSoLs=
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=
github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
github.com/fredbi/uri v1.1.1 h1:xZHJC08GZNIUhbP5ImTHnt5Ya0T8FI2VAwI/37kh2Ko=
github.com/fredbi/uri v1.1.1/go.mod h1:4+DZQ5zBjEwQCDmXW5JdIjz0PUA+yJbvtBv+u+adr5o=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/fyne-io/gl-js v0.2.0 h1:+EXMLVEa18EfkXBVKhifYB6OGs3HwKO3lUElA0LlAjs=
github.com/fyne-io/gl-js v0.2.0/go.mod h1:ZcepK8vmOYLu96JoxbCKJy2ybr+g1pTnaBDdl7c3ajI=
github.com/fyne-io/glfw-js v0.3.0 h1:d8k2+Y7l+zy2pc7wlGRyPfTgZoqDf3AI4G+2zOWhWUk=
github.com/fyne-io/glfw-js v0.3.0/go.mod h1:Ri6te7rdZtBgBpxLW19uBpp3Dl6K9K/bRaYdJ22G8Jk=
github.com/fyne-io/image v0.1.1 h1:WH0z4H7qfvNUw5l4p3bC1q70sa5+YWVt6HCj7y4VNyA=
github.com/fyne-io/image v0.1.1/go.mod h1:xrfYBh6yspc+KjkgdZU/ifUC9sPA5Iv7WYUBzQKK7JM=
github.com/fyne-io/oksvg v0.2.0 h1:mxcGU2dx6nwjJsSA9PCYZDuoAcsZ/OuJlvg/Q9Njfo8=
github.com/fyne-io/oksvg v0.2.0/go.mod h1:dJ9oEkPiWhnTFNCmRgEze+YNprJF7YRbpjgpWS4kzoI=
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 h1:5BVwOaUSBTlVZowGO6VZGw2H/zl9nrd3eCZfYV+NfQA=
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc=
github.com/go-text/render v0.2.0/go.mod h1:CkiqfukRGKJA5vZZISkjSYrcdtgKQWRa2HIzvwNN5SU=
github.com/go-text/typesetting v0.2.1 h1:x0jMOGyO3d1qFAPI0j4GSsh7M0Q3Ypjzr4+CEVg82V8=
github.com/go-text/typesetting v0.2.1/go.mod h1:mTOxEwasOFpAMBjEQDhdWRckoLLeI/+qrQeBCTGEt6M=
github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066 h1:qCuYC+94v2xrb1PoS4NIDe7DGYtLnU2wWiQe9a1B1c0=
github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd h1:1FjCyPC+syAzJ5/2S8fqdZK1R22vvA0J7JZKcuOIQ7Y=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/hack-pad/go-indexeddb v0.3.2 h1:DTqeJJYc1usa45Q5r52t01KhvlSN02+Oq+tQbSBI91A=
github.com/hack-pad/go-indexeddb v0.3.2/go.mod h1:QvfTevpDVlkfomY498LhstjwbPW6QC4VC/lxYb0Kom0=
github.com/hack-pad/safejs v0.1.0 h1:qPS6vjreAqh2amUqj4WNG1zIw7qlRQJ9K10eDKMCnE8=
github.com/hack-pad/safejs v0.1.0/go.mod h1:HdS+bKF1NrE72VoXZeWzxFOVQVUSqZJAG0xNCnb+Tio=
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade h1:FmusiCI1wHw+XQbvL9M+1r/C3SPqKrmBaIOYwVfQoDE=
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade/go.mod h1:ZDXo8KHryOWSIqnsb/CiDq7hQUYryCgdVnxbj8tDG7o=
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/nicksnyder/go-i18n/v2 v2.5.1 h1:IxtPxYsR9Gp60cGXjfuR/llTqV8aYMsC472zD0D1vHk=
github.com/nicksnyder/go-i18n/v2 v2.5.1/go.mod h1:DrhgsSDZxoAfvVrBVLXoxZn/pN5TXqaDbq7ju94viiQ=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA=
github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rymdport/portal v0.4.2 h1:7jKRSemwlTyVHHrTGgQg7gmNPJs88xkbKcIL3NlcmSU=
github.com/rymdport/portal v0.4.2/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4=
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE=
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c/go.mod h1:cNQ3dwVJtS5Hmnjxy6AgTPd0Inb3pW05ftPSX7NZO7Q=
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef h1:Ch6Q+AZUxDBCVqdkI8FSpFyZDtCVBc2VmejdNrm5rRQ=
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef/go.mod h1:nXTWP6+gD5+LUJ8krVhhoeHjvHTutPxMYl5SvkcnJNE=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8=
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

1228
linux-port/main.go Normal file

File diff suppressed because it is too large Load Diff

10
linux-port/setup.sh Normal file
View File

@@ -0,0 +1,10 @@
#!/bin/bash
# Setup script for HamyVPNClient on Linux
# Create necessary directories
mkdir -p bin
mkdir -p ~/.hamy-vpn
# The application will automatically download sing-box if not present
echo "Directories created. Run 'go run main.go' to start the application."