#!/usr/bin/env bash
set -e
LANG=C
PATH="/bin:/usr/sbin:/usr/bin:/sbin:/usr/local/bin:/usr/local/sbin"
# print header
echo -e "Content-type: text/html\n\n";
# print body/command
echo "<html><body>";
# print error
print_error() { echo "$@"; exit 1;}
# run cmd
runcmd() {
[[ "$@" ]] || print_error "No args passed to runcmd()" # exit if no args
bash -c "$@" 2>&1 # run cmd with stderr -> stdout redirection
}
##### USER MAPPING #####
# new array to store all users
declare -a users
mysqld='ps auxww | grep [m]ysqld' # cmd to run
users+=(${!mysqld*}) # push to users array
redis='ps auxww | grep [r]edis'
users+=(${!redis*})
# check for authenticated user
[[ $REMOTE_USER ]] || print_error "REMOTE_USER value not found"
# loop over users array then run cmd if known user found
for user in ${users[@]}
do
[[ $REMOTE_USER == $user ]] && { runcmd "${!user}"; break; }
done
echo "</body></html>";
location / {
gzip off;
auth_basic "auth";
auth_basic_user_file /etc/nginx/conf.d/mydomain.tld.htpasswd;
root /home/http/mydomain.tld/html;
fastcgi_param DOCUMENT_ROOT /home/http/mydomain.tld/html;
fastcgi_param SCRIPT_NAME runme.sh;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /home/http/mydomain.tld/html$fastcgi_script_name;
}