Cleaned index.cgi and replaced mount with COPY in docker
parent
efc5c138b3
commit
3f80588c7b
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# FILE: wgapi:back/api/dashboard/add
|
# FILE: peer_add
|
||||||
# DESCRIPTION: Add a new peer
|
# DESCRIPTION: Add a new peer
|
||||||
# USAGE: add remote_ip querystring
|
# USAGE: add remote_ip querystring
|
||||||
# ERRORS:
|
# ERRORS:
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# FILE: wgapi:back/api/dashboard/del
|
# FILE: peer_del
|
||||||
# DESCRIPTION: Del a peer
|
# DESCRIPTION: Del a peer
|
||||||
# USAGE: del remote_ip querystring
|
# USAGE: del remote_ip querystring
|
||||||
# ERRORS:
|
# ERRORS:
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# FILE: peer_list
|
||||||
|
# DESCRIPTION: Add a new peer
|
||||||
|
# USAGE: add remote_ip
|
||||||
|
# ERRORS:
|
||||||
|
# 3: bad args/usage
|
||||||
|
# 4: config file not found
|
||||||
|
# 5: Wireguard not installed
|
||||||
|
# 9: Token file not found
|
||||||
|
# 10: Failed to get peer data from wg
|
||||||
|
# 11: Failed to generate new IPs
|
||||||
|
# 12: Servers file doesn't exist
|
||||||
|
# 15: Failed to add user to local wireguard
|
||||||
|
# 16: Failed to add user to federated server
|
||||||
|
# 17: User not found
|
||||||
|
|
||||||
|
CONFIG_FILE='/etc/wgapi/config'
|
||||||
|
if ! [ ${#} -eq 1 ]; then
|
||||||
|
printf 'ERROR! Bad input: %s %s\n' "${0}" "${*}" >>"${LOGFILE}"
|
||||||
|
exit 3
|
||||||
|
fi; if ! [ -x '/usr/bin/wg' ]; then
|
||||||
|
printf 'ERROR! %s could not find /usr/bin/wg\n' "${0}" >>"${LOGFILE}"
|
||||||
|
exit 5
|
||||||
|
fi; if ! [ -f "${CONFIG_FILE}" ]; then
|
||||||
|
printf 'ERROR! %s could not find %s!\n' "${0}" "${CONFIG_FILE}" >>"${LOGFILE}"
|
||||||
|
exit 4
|
||||||
|
fi
|
||||||
|
source "${CONFIG_FILE}"
|
||||||
|
if ! [ -f "${TOKENS_FILE}" ]; then
|
||||||
|
printf 'ERROR! %s could not find %s!\n' "${0}" "${TOKENS_FILE}" >>"${LOGFILE}"
|
||||||
|
exit 9
|
||||||
|
fi
|
||||||
|
ip="${1}"
|
||||||
|
printf '%s requested peer listing...\n' "${ip}" >>"${LOGFILE}"
|
||||||
|
|
||||||
|
# Create token if needed
|
||||||
|
token="$(grep "${ip}" "${TOKENS_FILE}" | cut -f2)"
|
||||||
|
if [ "${token}" == "" ]; then
|
||||||
|
printf 'Creating token for %s...\n' "${ip}" >>"${LOGFILE}"
|
||||||
|
token="$(</dev/urandom tr -dc '[:alnum:]' | fold -w 64 | head -n 1)"
|
||||||
|
printf '%s\t%s\n' "${ip}" "${token}" >>"${TOKENS_FILE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get peer list from wireguard
|
||||||
|
if peers="[$("${LIB_DIR}/wg_peer_list" "${ip}" json)]"; then
|
||||||
|
printf '{"token":"%s","peers":%s}' "${token}" "${peers}" | "${LIB_DIR}/http_res" 200 'application/json'
|
||||||
|
printf 'Sent peers to user %s\n' "${ip}" >>"${LOGFILE}"
|
||||||
|
else
|
||||||
|
printf 'ERROR: Failed to lookup user: %s\n' "${ip}" >>"${LOGFILE}"
|
||||||
|
printf 'Failed to lookup user' | "${LIB_DIR}/http_res" 500
|
||||||
|
fi
|
||||||
|
|
|
@ -9,6 +9,10 @@ RUN apt-get update && apt-get install --yes \
|
||||||
sudo curl apache2 openssl wireguard-tools dnsutils ipv6calc jq \
|
sudo curl apache2 openssl wireguard-tools dnsutils ipv6calc jq \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Copy over index.cgi
|
||||||
|
RUN mkdir /var/www/cgi-bin/ && chown www-data:www-data /var/www/cgi-bin/
|
||||||
|
COPY index.cgi /var/www/cgi-bin/index.cgi
|
||||||
|
|
||||||
# Configure apache
|
# Configure apache
|
||||||
RUN a2enmod cgi rewrite
|
RUN a2enmod cgi rewrite
|
||||||
RUN sed -i "s/^Listen 80$/Listen ${LISTEN_PORT}/" \
|
RUN sed -i "s/^Listen 80$/Listen ${LISTEN_PORT}/" \
|
||||||
|
|
|
@ -13,29 +13,13 @@ source "${CONFIG_FILE}"
|
||||||
case "${REQUEST_METHOD}" in
|
case "${REQUEST_METHOD}" in
|
||||||
|
|
||||||
# List peers
|
# List peers
|
||||||
'GET')
|
'GET') "${LIB_DIR}/peer_add" "${REMOTE_ADDR}";;
|
||||||
printf '%s requested peer listing...\n' "${REMOTE_ADDR}" >>"${LOGFILE}"
|
|
||||||
# Create token if needed
|
|
||||||
token="$(grep "${REMOTE_ADDR}" "${TOKENS_FILE}" | cut -f2)"
|
|
||||||
if [ "${token}" == "" ]; then
|
|
||||||
printf 'Creating token for %s...\n' "${REMOTE_ADDR}" >>"${LOGFILE}"
|
|
||||||
token="$(</dev/urandom tr -dc '[:alnum:]' | fold -w 64 | head -n 1)"
|
|
||||||
printf '%s\t%s\n' "${REMOTE_ADDR}" "${token}" >>"${TOKENS_FILE}"
|
|
||||||
fi
|
|
||||||
if peers="[$("${LIB_DIR}/wg_peer_list" "${REMOTE_ADDR}" json)]"; then
|
|
||||||
printf '{"token":"%s","peers":%s}' "${token}" "${peers}" | "${LIB_DIR}/http_res" 200 'application/json'
|
|
||||||
printf 'Sent peers to user %s\n' "${REMOTE_ADDR}" >>"${LOGFILE}"
|
|
||||||
else
|
|
||||||
printf 'ERROR: Failed to lookup user: %s\n' "${REMOTE_ADDR}" >>"${LOGFILE}"
|
|
||||||
printf 'Failed to lookup user' | "${LIB_DIR}/http_res" 500
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
# Add peer
|
# Add peer
|
||||||
'POST') ./add "${REMOTE_ADDR}" "${QUERY_STRING}";;
|
'POST') "${LIB_DIR}/peer_add" "${REMOTE_ADDR}" "${QUERY_STRING}";;
|
||||||
|
|
||||||
# Delete peer
|
# Delete peer
|
||||||
'DELETE') ./del "${REMOTE_ADDR}" "${QUERY_STRING}";;
|
'DELETE') "${LIB_DIR}/peer_del" "${REMOTE_ADDR}" "${QUERY_STRING}";;
|
||||||
|
|
||||||
# Bad request
|
# Bad request
|
||||||
*) printf 'Invalid HTTP verb' | "${LIB_DIR}/http_res" 405;;
|
*) printf 'Invalid HTTP verb' | "${LIB_DIR}/http_res" 405;;
|
||||||
|
|
|
@ -10,4 +10,3 @@ services:
|
||||||
- '/etc/wgapi:/etc/wgapi:ro'
|
- '/etc/wgapi:/etc/wgapi:ro'
|
||||||
- '/var/log/wgapi:/var/log/wgapi'
|
- '/var/log/wgapi:/var/log/wgapi'
|
||||||
- './back/lib:/usr/local/bin:ro'
|
- './back/lib:/usr/local/bin:ro'
|
||||||
- './back/srv/dashboard:/var/www/cgi-bin:ro'
|
|
||||||
|
|
Loading…
Reference in New Issue