Commit Graph

87 Commits

Author SHA1 Message Date
infosave 222953049d fix(awg2): restore client MTU=1280 (connects but no traffic)
Issue #50: AWG2 clients connect (handshake OK) but no traffic flows. The
awg2 client output_template lost its "MTU = 1280" line when migration 064
rewrote it (migration 058 had it). With no explicit MTU the client defaults
to 1420, which is too large once AmneziaWG obfuscation overhead (Jc junk
packets, S1/S2 padding) is added on top of WireGuard's: small packets (the
handshake) pass, larger packets (TLS, web pages) are dropped — tunnel
"connected" but unusable. 1280 is the official Amnezia app default.

- migrations/071: add "MTU = 1280" to the awg2 output_template (existing DBs).
- migrations/064: add the MTU line to the template source (fresh installs).
- buildClientConfig(): emit MTU = 1280 in the fallback path too.

Server-side NAT/forwarding/ip_forward were verified correct on a live server,
so this is purely a client-config regression. Generated client config now
contains "MTU = 1280" and mirrors the server's obfuscation params exactly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 14:23:41 +03:00
infosave d771af866c fix(awg2): mirror server obfuscation params in client config (fixes no-connect)
Clients were created successfully but could not connect: the AmneziaWG
handshake requires the client's obfuscation params (Jc/Jmin/Jmax/S1-S4/
H1-H4/I1-I5) to EXACTLY match the server's, and they did not.

Two causes, both fixed:
- syncServerKeysFromContainer() read params from `wg show` first and only
  accepted H1-H4 in the AWG-2.0 "a-b" range format, dropping the single-value
  H1-H4 used by classic AmneziaWG servers (the official Amnezia image). It
  also skipped the complete wg0.conf read once `wg show` returned partial
  data. Now the server config file (awg0.conf/wg0.conf) is the primary,
  format-agnostic source; `wg show` is a fallback that accepts single values
  and ranges.
- create() filled any param missing from the (incomplete) sync with awg2
  defaults — injecting H1-H4 ranges, S3/S4 and I1 onto a classic server that
  uses none of them. Now client params mirror the server's synced params
  verbatim; defaults are used only when nothing was synced at all. Empty
  AWG lines (params the server does not use) are stripped from the rendered
  config so the client carries exactly the server's set.

Verified end-to-end on a live server: a real amneziawg-go client built from
the generated config completes the handshake
("latest handshake: 14 seconds ago", bidirectional transfer) — params
(jc/s1/s2/h1-h4) match the server exactly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:41:24 +03:00
infosave 0d72579edd fix(awg2): auto-detect wg/awg tool inside container (real cause of issue #50)
Live testing against an AmneziaWG 2.0 server revealed the actual root cause
of "Failed to generate client keys": the official Amnezia container image
ships the userspace tool only as `wg` (a patched AmneziaWG binary) and has
NO `awg` binary, while the panel hardcoded `awg` for AWG2. `awg genkey` then
failed with "sh: awg: not found". (amneziawg-go ships `awg` with `wg`
symlinked, so both names work there — but the Amnezia image does not.)

- generateClientKeys(): detect the tool inside the container
  (`command -v awg || command -v wg`) instead of hardcoding `awg`.
- addClientToServer(): resolve the tool via new resolveWgTool() helper so
  `wg set` / `wg-quick up` (peer apply) also work on the Amnezia image.
- executeServerCommand(): delegate to VpnServer::executeCommand so SSH key
  auth + docker sudo auto-detection apply to all 19 call sites (it was
  password-only before).

Verified end-to-end on a live AWG2 server: pre-fix code fails with
"Failed to generate client keys: sh: awg: not found"; fixed code creates
the client, generates keys, and the peer appears in `wg show wg0`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 12:13:15 +03:00
infosave b819eb35b0 fix(awg2): resolve issue #50 client key generation and install timeout
Issue #50 (AmneziaWG 2.0 / awg2): "Failed to generate client keys" when
creating clients, and "Invalid server response" on first install.

- VpnClient::generateClientKeys() built its own password-only SSH command
  (PubkeyAuthentication=no, no sudo), bypassing VpnServer::executeCommand.
  That broke key-based servers and hosts where docker requires sudo. Route
  it through executeCommand so SSH-key auth and docker sudo auto-detection
  apply, matching every other remote operation.
- VpnClient::getNextClientIP() read /opt/amnezia/awg/wg0.conf only; AWG2
  uses awg0.conf. Read awg0.conf first, fall back to wg0.conf.
- deploy route: lift PHP time limit (set_time_limit(0) + ignore_user_abort)
  so the multi-minute awg2 docker build is not killed mid-request, which
  produced the truncated, non-JSON "Invalid server response".
- migration 070: drop `--no-cache` from the awg2 docker build so layers are
  reused, making installs and retries fast and idempotent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 10:31:59 +03:00
infosave2007 809b0ca63d feat(migrations): Add WARP auto-integration with redsocks and iptables
- Implemented migration 067 to set up Cloudflare WARP with automatic routing for VPN client TCP traffic through a redsocks proxy.
- Included installation scripts for WARP and redsocks, along with iptables rules for traffic redirection.
- Added detection for X-Ray and patching of its outbound configuration.
- Created uninstall scripts to clean up configurations and remove installed packages.

fix(migrations): Enhance WARP install script for heredoc compatibility

- Implemented migration 068 to fix nested heredoc conflicts and streamline the WARP installation script for panel compatibility.
- Removed duplicate `set -eo pipefail` and adjusted formatting for better readability.

feat(migrations): Auto-detect AIVPN subnet for routing in WARP setup

- Implemented migration 069 to enhance the WARP installation script by adding detection for AIVPN subnets alongside existing AWG container detection.
- Updated routing logic to handle both container IPs and host-level VPN subnets.
- Ensured proper configuration of iptables for seamless traffic routing through the WARP proxy.
2026-04-25 10:40:21 +03:00
infosave2007 f04f9dd1cb refactor: enhance SSH command handling and auto-detect sudo requirements for Docker commands 2026-04-24 16:15:04 +03:00
infosave2007 aae920a5c2 fix: update SSH command execution to use semicolons for reliability and improve disk usage calculation 2026-04-24 15:48:42 +03:00
infosave2007 63f3d202b6 fix: correct AIVPN byte counter mapping to match server-to-client and client-to-server traffic semantics 2026-04-24 07:16:09 +03:00
infosave2007 8eed687f66 refactor: consolidate metric collection into single SSH calls and add support for SSH key authentication 2026-04-24 07:07:57 +03:00
infosave2007 4c4b682256 fix: normalize SSH private key to prevent libcrypto errors caused by incorrect formatting 2026-04-24 06:48:18 +03:00
infosave2007 a8bb70a58f fix: prevent secondary protocols from overwriting primary server configuration data 2026-04-23 18:31:05 +03:00
infosave2007 b99783e40f fix: prioritize protocol metadata container name over server data during protocol installation 2026-04-23 18:04:20 +03:00
infosave2007 6006628f64 feat: add multi-protocol support for AWG2 with dynamic tool selection and configuration path resolution 2026-04-23 18:00:09 +03:00
infosave2007 e2767b3af2 chore: configure writable backup and log directories with appropriate permissions in Docker and PHP 2026-04-23 16:21:36 +03:00
infosave2007 ebcf09df08 fix: cast shell_exec output to string to prevent null pointer exceptions during split 2026-04-23 16:17:32 +03:00
infosave2007 8fd8dd092c feat: implement AIVPN host binary fallback and update installation script for prebuilt binary 2026-04-21 18:56:05 +03:00
infosave2007 19e1107c9d feat: new protocol QR 2026-04-20 21:34:27 +03:00
infosave2007 7bacc94e9c feat: update QR code generation to use vpn:// format with JSON and zlib compression 2026-04-20 21:15:35 +03:00
infosave2007 c1282a058d feat: add install_protocol field and server_protocols entry in save method 2026-04-20 20:55:24 +03:00
infosave2007 c29162ddb9 feat: add support for AWG2 QR code generation and vpn:// URL configuration 2026-04-20 19:52:33 +03:00
infosave2007 08e0a3499c feat: update AWG2 configuration handling in InstallProtocolManager and VpnClient 2026-04-20 18:25:35 +03:00
infosave2007 5d88728333 feat: enhance AWG2 support with additional parameters and backward compatibility improvements 2026-04-15 20:26:48 +03:00
infosave2007 191f85562a feat: implement container name resolution and persistence for AIVPN servers 2026-04-11 11:11:18 +03:00
infosave2007 3a1cfb1856 feat: enhance Docker command execution with improved error handling and path management 2026-04-04 17:22:38 +03:00
infosave2007 d6eda37ebd feat: enhance ServerMonitoring to resolve container names based on protocol and improve client metrics handling 2026-04-04 16:24:21 +03:00
infosave2007 bb960645d7 feat: enhance VpnClient to support multi-protocol metadata and improve key generation error handling 2026-04-04 16:15:10 +03:00
infosave2007 1574f54bef feat: enhance AWG2 protocol handling by adding config directory management and fixing empty peer block in install script 2026-04-04 16:02:11 +03:00
infosave2007 51d5d13c41 feat: enhance SQL migration handling and add Docker installation instructions for remote servers 2026-04-04 15:48:15 +03:00
infosave2007 ecaae6c18a feat: synchronize MTProxy client links with current runtime configuration after reinstall 2026-04-04 15:35:59 +03:00
infosave2007 c38c3d1c83 feat: Add AIVPN support and enhance client statistics tracking
- Introduced AIVPN server detection and statistics fetching in ServerMonitoring.
- Implemented AIVPN client statistics handling in VpnClient, including raw and offset counters for traffic.
- Enhanced AWG parameters to include S3 and S4.
- Updated database schema to accommodate new AIVPN statistics fields.
- Added a script for remote reset and reinstallation of protocols.
- Improved client view template to ensure proper display of connection instructions.
- Added translations for connection instructions in multiple languages.
- Ensured host-level NAT for AWG subnet in VpnServer.
2026-04-04 15:27:40 +03:00
infosave2007 da5cdc6ae8 feat: add AWG2 protocol support and enhance API documentation for protocol management 2026-04-04 13:59:37 +03:00
infosave2007 da72a5b3ed feat: enhance VpnClient and VpnServer for improved command execution and configuration handling 2026-04-04 12:45:04 +03:00
infosave2007 65e6a2dd0b feat: add support for awg2, mtproxy, and aivpn protocols, and implement user role-based access control. 2026-04-04 09:56:49 +03:00
infosave2007 85ff5b2502 feat: Update client IP handling for X-Ray configuration and enable text content display by default 2026-02-14 11:39:04 +03:00
infosave2007 f6a854f5ab feat: Allocate proper IP address for clients and expose getNextClientIP method 2026-02-13 20:40:04 +03:00
infosave2007 e12f923aff feat: Add protocol_id to VPN clients insertion logic 2026-02-13 20:13:57 +03:00
infosave2007 444e64a50a feat: Update client insertion logic to use name/email instead of login 2026-02-13 19:37:41 +03:00
infosave2007 5172e43fc1 feat: Enhance protocol detection and restoration for AWG and X-Ray installations 2026-02-13 19:01:00 +03:00
infosave2007 327ebd85e9 feat: Enhance online client tracking by including recent handshake counts for WireGuard/AWG 2026-02-05 19:34:02 +03:00
infosave2007 09baa19a09 feat: Enforce single IP per peer for AWG/WireGuard connections 2026-01-30 22:14:09 +03:00
infosave2007 77398b5000 feat: Enforce single IP per user for Xray servers and update protocol checks 2026-01-30 21:45:05 +03:00
infosave2007 66bd218aec feat: Add online clients tracking and display on dashboard and server views 2026-01-30 21:07:30 +03:00
infosave2007 28a6de5697 feat: Implement single IP enforcement for Xray VLESS protocol with online tracking 2026-01-30 20:09:39 +03:00
infosave2007 e90e3a8df2 fix traffic reboot 2026-01-30 19:27:02 +03:00
infosave2007 f4fa6ec941 fix: Do not inherit client_id from server protocols (prevents duplicate UUIDs) 2026-01-30 15:58:15 +03:00
infosave2007 1627fc105e fix: Prevent X-ray client UUID reuse 2026-01-30 15:38:18 +03:00
infosave2007 77115fb2a0 fix: Cleanup debug logging in ServerMonitoring 2026-01-30 15:30:32 +03:00
infosave2007 11ab3cbc88 fix: Add X-ray support to ServerMonitoring for background stats collection 2026-01-30 15:21:32 +03:00
infosave2007 0b759f7b32 fix: Update vpn_clients speed columns in ServerMonitoring for real-time display 2026-01-30 15:14:29 +03:00
infosave2007 1c95b34cf6 feat: Enforce 1 user 1 connection for X-ray and fix active stats speed 2026-01-30 15:04:23 +03:00