Commit Graph

273 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 c9792a5d5d fix: update firebase/php-jwt dependency to version 7.0 issues/33 security advisories ("PKSA-y2cr-5h3j-g3ys") 2026-04-24 10:57:10 +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 6c7bd421e3 refactor: migrate client management endpoints to web session auth and improve status validation 2026-04-24 06:44:08 +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 2d8b73bc93 Merge branch 'master' of https://github.com/infosave2007/amneziavpnphp 2026-04-15 20:56:54 +03:00
infosave2007 ce2e26aff4 chore: remove obsolete binary image file 2026-04-15 20:45:21 +03:00
infosave2007 5d88728333 feat: enhance AWG2 support with additional parameters and backward compatibility improvements 2026-04-15 20:26:48 +03:00
infosave2007 1065b1d849 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 65b57344b4 feat: implement container name resolution and persistence for AIVPN servers 2026-04-11 11:11:18 +03:00
Oleg Kirichenko edc73155cf Fix duplicate step in VPN server setup
Removed duplicate step in VPN server setup instructions.
2026-04-10 12:15:05 +03:00
Oleg Kirichenko 58437c9d5c Fix duplicate step in VPN server setup
Removed duplicate step in VPN server setup instructions.
2026-04-10 12:15:05 +03:00
infosave2007 af55843bc2 feat: enhance user roles migration with conditional column and index creation 2026-04-04 18:35:22 +03:00
infosave2007 17727f7b90 feat: enhance user roles migration with conditional column and index creation 2026-04-04 18:35:22 +03:00
infosave2007 ded0752d24 feat: enhance Dockerfile and README for improved installation and security practices 2026-04-04 18:29:38 +03:00
infosave2007 c590ec45fa feat: enhance Dockerfile and README for improved installation and security practices 2026-04-04 18:29:38 +03:00
infosave2007 5eb07078ec Merge feature/ssh-auth-draft into master — release v2.0.0 2026-04-04 18:13:12 +03:00
infosave2007 0098133520 Merge feature/ssh-auth-draft into master — release v2.0.0 2026-04-04 18:13:12 +03:00
infosave2007 8c4e7f65e7 feat: add available protocols section to README for better clarity 2026-04-04 18:07:55 +03:00
infosave2007 25ef9a7071 feat: add available protocols section to README for better clarity 2026-04-04 18:07:55 +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 e4b83794c3 feat: enhance Docker command execution with improved error handling and path management 2026-04-04 17:22:38 +03:00
infosave2007 b0da2c300d feat: update installation instructions for SQL migrations with improved clarity and consistency 2026-04-04 16:38:11 +03:00
infosave2007 228ae3f006 feat: update installation instructions for SQL migrations with improved clarity and consistency 2026-04-04 16:38:11 +03:00
infosave2007 ce3d74e49e feat: enhance client speed metrics visualization with improved data processing and responsive table layout 2026-04-04 16:32:14 +03:00
infosave2007 3c143d5506 feat: enhance client speed metrics visualization with improved data processing and responsive table layout 2026-04-04 16:32:14 +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 7051d47b1b 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 ce664072fa 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