You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/bin/sh
# TODO : # - add root user detection # - verify curl output to prevent overwriting config file with an HTTP answer
_usage() { echo "
Usage: $0 <command> --url <wgportal_url> [options...]
Commands : -d, --download only download config file -i, --install download config file and install the service (UNIMPLEMENTED)
Parameters: -u, --url <url> Specify your WG Portal base URL -f, --filename <file> Specify Wireguard filename (default: /etc/wireguard/wg0.conf) "
_version }
_version() { printf "%s version pre-alpha 0.1 (yes we're very cautious)\n" "$0" printf "USE AT YOUR OWN RISK and read the code before\n" }
_startswith() { _str="$1" _sub="$2" echo "$_str" | grep "^$_sub" >/dev/null 2>&1 }
_download() { [ -z "$WGPORTAL_URL" ] && printf "Please set wg-portal URL (see help)\n" && return 1 [ -z "$WG_CONFFILE" ] && WG_CONFFILE=/etc/wireguard/wg0.conf
trap 'stty echo; exit 99;' INT
if [ -f $WG_CONFFILE -a "$OVERWRITE" != "on" ]; then printf "WARNING : Wireguard config file already exists\n" printf "Exiting now to prevent overrid of your actual parameters\n" printf "You can force config overwriting with :\n" printf "OVERWRITE=on %s %s\n" "$0" "$_ARGS" exit 1; fi
printf "Username: " IFS= read -r username
printf "Password: " stty -echo IFS= read -r password stty echo printf "\n"
printf "Peer public key: " IFS= read -r wgpubkey printf "\n"
HTTP_STATUS=$(curl -w "%{http_code}" -G -s -o $WG_CONFFILE --user $username:$password --data-urlencode "pkey=$wgpubkey" -X GET $WGPORTAL_URL"api/v1/provisioning/peer" -H "accept: text/plain") res=$? if [ "$res" != "0" ]; then echo "the curl command failed with: $res" fi
[ $HTTP_STATUS -ne 200 ] && printf "Curl returned HTTP code %s\n" "$HTTP_STATUS" && exit 1
printf "WG config successfully download at %s\n" "$WG_CONFFILE" }
_install() { printf "install : This command does nothing ... yet (TDB)\n" }
_process() { while [ ${#} -gt 0 ]; do case "${1}" in --help | -h) _usage return ;; --version | -v) _version return ;; --download | -d) _CMD="download" ;; --url | -u) WGPORTAL_URL="$2" shift ;; --filename | -f) WG_CONFFILE="$2" shift ;; --install | -i) _CMD="install" ;; *) printf "Unknown parameter : %s\n" "$1" return 1 ;; esac
shift 1 done case "${_CMD}" in download) _download ;; install) _install ;; *) if [ "$_CMD" ]; then printf "Invalid command: %s\n" "$_CMD" fi esac }
main() { [ -z "$1" ] && _usage && return if _startswith "$1" '-'; then _process "$@"; else "$@"; fi }
_ARGS="$*" main "$@"
|