0d72579edd
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>