2022-11-08 12:02:19 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
set -e
|
2022-11-07 09:23:30 +00:00
|
|
|
|
|
|
|
|
EVENT="{{ event_name }}"
|
2024-02-12 05:48:01 +00:00
|
|
|
AWG_MANAGER="/etc/amnezia/amneziawg/awg-manager.sh"
|
2024-04-24 21:13:07 +00:00
|
|
|
CONF_DIR="/etc/amnezia/amneziawg"
|
2022-11-08 12:02:19 +00:00
|
|
|
SESSION_ID="{{ user.gen_session.id }}"
|
2023-01-24 18:14:00 +00:00
|
|
|
API_URL="{{ config.api.url }}"
|
2022-11-08 12:02:19 +00:00
|
|
|
|
|
|
|
|
echo "EVENT=$EVENT"
|
2022-11-07 09:23:30 +00:00
|
|
|
|
|
|
|
|
case $EVENT in
|
|
|
|
|
INIT)
|
2024-10-19 10:24:02 +00:00
|
|
|
echo
|
|
|
|
|
echo "Init"
|
2024-10-19 10:26:03 +00:00
|
|
|
sudo bash -c "$(curl -sL https://raw.githubusercontent.com/bkeenke/awg-manager/master/init.sh)" @ install >> /dev/null
|
2024-10-19 10:24:02 +00:00
|
|
|
echo
|
2022-11-07 09:23:30 +00:00
|
|
|
SERVER_HOST="{{ server.settings.host_name }}"
|
|
|
|
|
if [ -z $SERVER_HOST ]; then
|
2024-02-12 05:48:01 +00:00
|
|
|
SERVER_HOST="{{ server.settings.host }}"
|
2022-11-07 09:23:30 +00:00
|
|
|
fi
|
2023-05-15 06:52:16 +00:00
|
|
|
echo "Check domain: $API_URL"
|
|
|
|
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" $API_URL/shm/v1/test)
|
|
|
|
|
if [ $HTTP_CODE -ne '200' ]; then
|
|
|
|
|
echo "ERROR: incorrect API URL: $API_URL"
|
|
|
|
|
echo "Got status: $HTTP_CODE"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
2024-02-13 21:55:52 +00:00
|
|
|
echo
|
2024-04-24 21:13:07 +00:00
|
|
|
mkdir -p $CONF_DIR
|
2023-02-10 13:27:08 +00:00
|
|
|
|
|
|
|
|
echo "Init server"
|
2024-02-12 05:48:01 +00:00
|
|
|
chmod 700 $AWG_MANAGER
|
2025-02-06 14:25:58 +00:00
|
|
|
$AWG_MANAGER -i -s $SERVER_HOST
|
2022-11-07 09:23:30 +00:00
|
|
|
;;
|
|
|
|
|
CREATE)
|
2023-02-10 13:27:08 +00:00
|
|
|
echo "Create new user"
|
2024-04-24 22:46:03 +00:00
|
|
|
USER_CFG=$($AWG_MANAGER -u "{{ us.id }}" -c -p)
|
2023-02-10 13:27:08 +00:00
|
|
|
echo "Upload user key to SHM"
|
2024-04-24 21:13:07 +00:00
|
|
|
curl -s -XPUT \
|
2022-11-07 09:23:30 +00:00
|
|
|
-H "session-id: $SESSION_ID" \
|
|
|
|
|
-H "Content-Type: text/plain" \
|
2024-12-30 18:00:12 +00:00
|
|
|
$API_URL/shm/v1/storage/manage/vpn{{ us.id }} \
|
2024-04-24 22:46:03 +00:00
|
|
|
--data-binary "$USER_CFG"
|
2024-04-24 21:13:07 +00:00
|
|
|
sleep 1
|
2024-04-24 22:46:03 +00:00
|
|
|
ENCODE=$(cat $CONF_DIR/keys/{{ us.id }}/{{ us.id }}.vpn)
|
2024-04-24 21:13:07 +00:00
|
|
|
curl -sk -XPUT \
|
|
|
|
|
-H "session-id: $SESSION_ID" \
|
|
|
|
|
-H "Content-Type: text/plain" \
|
|
|
|
|
$API_URL/shm/v1/storage/manage/encode_{{ us.id }} \
|
|
|
|
|
--data-binary "$ENCODE"
|
2022-11-08 12:02:19 +00:00
|
|
|
echo "done"
|
|
|
|
|
;;
|
|
|
|
|
ACTIVATE)
|
2023-02-10 13:27:08 +00:00
|
|
|
echo "Activate user"
|
2024-02-12 05:48:01 +00:00
|
|
|
$AWG_MANAGER -u "{{ us.id }}" -U
|
2022-11-08 12:02:19 +00:00
|
|
|
echo "done"
|
|
|
|
|
;;
|
|
|
|
|
BLOCK)
|
2023-02-10 13:27:08 +00:00
|
|
|
echo "Block user"
|
2024-02-12 05:48:01 +00:00
|
|
|
$AWG_MANAGER -u "{{ us.id }}" -L
|
2022-11-07 09:23:30 +00:00
|
|
|
echo "done"
|
|
|
|
|
;;
|
|
|
|
|
REMOVE)
|
2023-02-10 13:27:08 +00:00
|
|
|
echo "Remove user"
|
2024-02-12 05:48:01 +00:00
|
|
|
$AWG_MANAGER -u "{{ us.id }}" -d
|
2023-02-10 13:27:08 +00:00
|
|
|
echo "Remove user key from SHM"
|
2024-04-24 21:13:07 +00:00
|
|
|
curl -s -XDELETE \
|
|
|
|
|
-H "session-id: $SESSION_ID" \
|
2024-12-30 18:00:12 +00:00
|
|
|
$API_URL/shm/v1/storage/manage/vpn{{ us.id }}
|
2024-04-24 21:13:07 +00:00
|
|
|
curl -s -XDELETE \
|
|
|
|
|
-H "session-id: $SESSION_ID" \
|
2024-12-30 18:00:12 +00:00
|
|
|
$API_URL/shm/v1/storage/manage/encode_{{ us.id }}
|
2022-11-07 09:23:30 +00:00
|
|
|
echo "done"
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Unknown event: $EVENT. Exit."
|
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
esac
|