awg-manager/shm_actions_script.sh

101 lines
3.2 KiB
Bash
Raw Normal View History

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"
sudo bash -c "$(curl -sL https://raw.githubusercontent.com/bkeenke/awg-manager/master/init.sh)" @ install
echo
2022-11-07 09:23:30 +00:00
SERVER_HOST="{{ server.settings.host_name }}"
2024-02-13 21:55:52 +00:00
SERVER_INTERFACE="{{ server.settings.interface }}"
2024-02-12 05:48:01 +00:00
if [[ -z "$SERVER_INTERFACE" ]]; then
SERVER_INTERFACE=$(ip route | awk '/default/ {print $5; exit}')
fi
2022-11-07 09:23:30 +00:00
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
echo "Download awg-manager.sh & encode.py"
mkdir -p $CONF_DIR
curl -s https://raw.githubusercontent.com/bkeenke/awg-manager/master/awg-manager.sh > $AWG_MANAGER
curl -s https://raw.githubusercontent.com/bkeenke/awg-manager/master/encode.py > $CONF_DIR/encode.py
2023-02-10 13:27:08 +00:00
echo "Init server"
2024-02-12 05:48:01 +00:00
chmod 700 $AWG_MANAGER
2022-08-31 15:36:12 +00:00
if [ $SERVER_INTERFACE ]; then
2024-02-12 05:48:01 +00:00
$AWG_MANAGER -i -s $SERVER_HOST -I $SERVER_INTERFACE
2022-08-31 15:36:12 +00:00
else
2024-02-12 05:48:01 +00:00
$AWG_MANAGER -i -s $SERVER_HOST
2022-08-31 15:36:12 +00:00
fi
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-04-24 21:13:07 +00:00
$API_URL/shm/v1/storage/manage/conf_{{ 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/url_{{ us.id }} \
--data-binary "vpn://$ENCODE"
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" \
$API_URL/shm/v1/storage/manage/encode_{{ us.id }}
curl -s -XDELETE \
-H "session-id: $SESSION_ID" \
$API_URL/shm/v1/storage/manage/url_{{ us.id }}
curl -s -XDELETE \
2022-11-08 12:02:19 +00:00
-H "session-id: $SESSION_ID" \
2024-04-24 21:13:07 +00:00
$API_URL/shm/v1/storage/manage/conf_{{ us.id }}
2022-11-07 09:23:30 +00:00
echo "done"
;;
*)
echo "Unknown event: $EVENT. Exit."
exit 0
;;
esac