#!/bin/bash # FILE: wgapi:back/admin_peer.cgi # DESCRIPTION: Recieves incoming admin requests for peer operations # ERRORS: # 3: Bad usage # 4: Missing config file CONFIG_FILE='/etc/wgapi/config' if ! [ ${#} -eq 0 ]; then printf 'ERROR! Bad input: %s %s\n' "${0}" "${*}" >>"${LOGFILE}" exit 3 fi & if ! [ -f "${CONFIG_FILE}" ]; then printf 'ERROR! %s could not find %s!\n' "${0}" "${CONFIG_FILE}" >>"${LOGFILE}" exit 4 fi; source "${CONFIG_FILE}" case "${REQUEST_METHOD}" in # List peers # GET /peer to list all # GET /peer?un=usernumber to list one user 'GET') "${LIB_DIR}/admin/peer/list" "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Add peer # POST /peer?t=mytoken&name=mynewpeername 'POST') "${LIB_DIR}/admin/peer/add" "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Delete peer # DELETE /peer?t=mytoken&pubkey=peerpubkey 'DELETE') "${LIB_DIR}/admin/peer/del" "${HTTP_X_REAL_IP}" "${QUERY_STRING}";; # Needed for CORS preflight 'OPTIONS') "${LIB_DIR}/http_res" 200;; # Bad request *) printf 'Invalid HTTP verb' | "${LIB_DIR}/http_res" 405;; esac