# Wireguard Peer Manager This is simple CURD for managing wireguard peer notations on a wireguard server config. ## Requirements - Python 3.x - `requests` library (for the client) - WireGuard (`wg-quick` and `wg` commands must be available on the server) ## Server: wpm.py ### How to Run the Server `python wpm.py` ### Endpoints GET /peers: List all peers. POST /peers: Add a new peer. PUT /peers/: Update an existing peer. DELETE /peers/: Delete an existing peer. POST /restore: Restore the WireGuard configuration from a backup. ## Client: wpm_client.py The client script allows interaction with the WireGuard Peer Management API. ### Usage python wpm_client.py [options] ### Available Actions create: Create a new peer. Required options: --public-key, --allowed-ips update: Update an existing peer. Required options: --public-key, --allowed-ips delete: Delete a peer by its public key. Required options: --public-key list: List all peers. restore: Restore the WireGuard configuration from the most recent backup. ### Example Usage List Peers: ``` python wpm_client.py list ``` Create a New Peer: ``` python wpm_client.py create --public-key "" --allowed-ips "10.0.0.2/32" ``` Update an Existing Peer: ``` python wpm_client.py update --public-key "" --allowed-ips "10.0.0.3/32" ``` Delete a Peer: ``` python wpm_client.py delete --public-key "" ``` Restore Configuration: ``` python wpm_client.py restore ``` ### Backup and Restore The server automatically creates a backup before making any changes to the WireGuard configuration. The backups are stored in the same directory as the configuration file, inside a backups/ folder. You can restore the latest backup by sending a POST /restore request, which can be done using the client or via curl: curl -X POST http://localhost:8000/restore