From 3fd45e1574cd285c40b8ec1560ce7fa645474890 Mon Sep 17 00:00:00 2001 From: David Schroeder Date: Sun, 3 Feb 2019 19:24:19 -0600 Subject: [PATCH] Update nodemgmt-scripts.sh --- nodemgmt-scripts.sh | 406 ++++++++++++++++++++++---------------------- 1 file changed, 201 insertions(+), 205 deletions(-) diff --git a/nodemgmt-scripts.sh b/nodemgmt-scripts.sh index fd720c94..f60d8090 100755 --- a/nodemgmt-scripts.sh +++ b/nodemgmt-scripts.sh @@ -15,7 +15,6 @@ source /opt/idssys/defaults/default.inc source /opt/idssys/settings/nodemgmt.conf source /opt/idssys/nodemgmt/defaults.inc - # ========================================================= # STATUS() { @@ -60,78 +59,71 @@ STATUS() { echo -e "${idsCL[Yellow]}-------------------------------------------------------------${idsCL[Default]}" echo "" } +NEWCERT(){ + echo -e "${idsCL[LightGreen]}Requesting Certificate for '${idsCL[Yellow]}${2}${idsCL[LightGreen]}'...${idsCL[Default]}" + echo "" + do_with_root $CERT_DAEMON certonly --webroot -w /var/www/html -d $2 + do_with_root chown -R root:letsencrypt /etc/letsencrypt + do_with_root chmod -R 6775 /etc/letsencrypt + echo -e "${idsCL[LightYellow]}Waiting for certifcate replication between the nodes...${idsCL[Default]}" + echo "" + sleep 20 + ${FOLDER}/nodemgmt-scripts.sh service nginx reload +} -case "$1" in +CERTRENEW(){ + echo -e "${idsCL[LightGreen]}Renewing Certificates...${idsCL[Default]}" + do_with_root $CERT_DAEMON renew --webroot -w /var/www/html 2>&1 | tee /opt/idssys/nodemgmt/cert-renewal.lastrun + do_with_root chown -R root:letsencrypt /etc/letsencrypt 2>&1 | tee -a /opt/idssys/nodemgmt/cert-renewal.lastrun + do_with_root chmod -R 6775 /etc/letsencrypt 2>&1 | tee -a /opt/idssys/nodemgmt/cert-renewal.lastrun + echo -e "${idsCL${idsCL[LightYellow]}}Waiting for certifcate replication between the nodes...${idsCL[Default]}" + echo "" + sleep 20 + ${FOLDER}/nodemgmt-scripts.sh service nginx reload 2>&1 | tee -a /opt/idssys/nodemgmt/cert-renewal.lastrun +} +NIGHTLYRENEW(){ + rm -f /opt/idssys/nodemgmt/cert-renewal.lastrun + do_with_root $CERT_DAEMON renew --webroot -w /var/www/html &>> /opt/idssys/nodemgmt/cert-renewal.lastrun + do_with_root chown -R root:letsencrypt /etc/letsencrypt &>> /opt/idssys/nodemgmt/cert-renewal.lastrun + do_with_root chmod -R 6775 /etc/letsencrypt &>> /opt/idssys/nodemgmt/cert-renewal.lastrun + sleep 20 + ${FOLDER}/nodemgmt-scripts.sh service nginx reload &>> /opt/idssys/nodemgmt/cert-renewal.lastrun +} - newcert) - echo -e "${idsCL[LightGreen]}Requesting Certificate for '${idsCL[Yellow]}${2}${idsCL[LightGreen]}'...${idsCL[Default]}" - echo "" - do_with_root $CERT_DAEMON certonly --webroot -w /var/www/html -d $2 - do_with_root chown -R root:letsencrypt /etc/letsencrypt - do_with_root chmod -R 6775 /etc/letsencrypt - echo -e "${idsCL[LightYellow]}Waiting for certifcate replication between the nodes...${idsCL[Default]}" - echo "" - sleep 20 - ${FOLDER}/nodemgmt-scripts.sh service nginx reload - exit 0 - ;; - - certrenew) - echo -e "${idsCL[LightGreen]}Renewing Certificates...${idsCL[Default]}" - do_with_root $CERT_DAEMON renew --webroot -w /var/www/html 2>&1 | tee /opt/idssys/nodemgmt/cert-renewal.lastrun - do_with_root chown -R root:letsencrypt /etc/letsencrypt 2>&1 | tee -a /opt/idssys/nodemgmt/cert-renewal.lastrun - do_with_root chmod -R 6775 /etc/letsencrypt 2>&1 | tee -a /opt/idssys/nodemgmt/cert-renewal.lastrun - echo -e "${idsCL${idsCL[LightYellow]}}Waiting for certifcate replication between the nodes...${idsCL[Default]}" - echo "" - sleep 20 - ${FOLDER}/nodemgmt-scripts.sh service nginx reload 2>&1 | tee -a /opt/idssys/nodemgmt/cert-renewal.lastrun - exit 0 - ;; - - nightlyrenew) - rm -f /opt/idssys/nodemgmt/cert-renewal.lastrun - do_with_root $CERT_DAEMON renew --webroot -w /var/www/html &>> /opt/idssys/nodemgmt/cert-renewal.lastrun - do_with_root chown -R root:letsencrypt /etc/letsencrypt &>> /opt/idssys/nodemgmt/cert-renewal.lastrun - do_with_root chmod -R 6775 /etc/letsencrypt &>> /opt/idssys/nodemgmt/cert-renewal.lastrun - sleep 20 - ${FOLDER}/nodemgmt-scripts.sh service nginx reload &>> /opt/idssys/nodemgmt/cert-renewal.lastrun - exit 0 - ;; +DELSITE(){ + DEL_SITE=${2} + echo -e "${idsCL[LightRed]}Deleting site '${idsCL[Red]}${DEL_SITE}${idsCL[LightRed]}'...${idsCL[Default]}" + echo "" - delsite) - DEL_SITE=${2} - echo -e "${idsCL[LightRed]}Deleting site '${idsCL[Red]}${DEL_SITE}${idsCL[LightRed]}'...${idsCL[Default]}" - echo "" - - echo -e "${idsCL[LightRed]}[[Removing Files and Folders]]${idsCL[Default]}" - echo -e "${idsCL[LightRed]}-------------------------------------------${idsCL[Default]}" - - nid=1 - for nip in "${NODE_HOSTS[@]}" - do - if [[ $(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) == *"${nip}"* ]]; then - nip='localhost ' - NCMD='' - else - NCMD="ssh root@${nip}" - fi - echo -en "Removing from iDS-Node${nid} ($nip)... ${idsCL[Default]}" - ${NCMD} rm -f /etc/nginx/sites-available/${DEL_SITE}.conf - ${NCMD} rm -f /etc/nginx/sites-enabled/${DEL_SITE}.conf - ${NCMD} rm -rf /var/www/${DEL_SITE} - ${NCMD} rm -rf /etc/letsencrypt/archive/${DEL_SITE} - ${NCMD} rm -rf /etc/letsencrypt/live/${DEL_SITE} - ${NCMD} rm -f /etc/letsencrypt/renewal/${DEL_SITE}.conf - echo -e "${idsCL[Green]}OK${idsCL[Default]}" - nid=`expr $nid + 1` - done - echo "" - ${FOLDER}/nodemgmt-scripts.sh service nginx reload - echo -e "${idsCL[LightRed]}Site has been deleted.${idsCL[Default]}" - - ;; - newsite) + echo -e "${idsCL[LightRed]}[[Removing Files and Folders]]${idsCL[Default]}" + echo -e "${idsCL[LightRed]}-------------------------------------------${idsCL[Default]}" + + nid=1 + for nip in "${NODE_HOSTS[@]}" + do + if [[ $(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) == *"${nip}"* ]]; then + nip='localhost ' + NCMD='' + else + NCMD="ssh root@${nip}" + fi + echo -en "Removing from iDS-Node${nid} ($nip)... ${idsCL[Default]}" + ${NCMD} rm -f /etc/nginx/sites-available/${DEL_SITE}.conf + ${NCMD} rm -f /etc/nginx/sites-enabled/${DEL_SITE}.conf + ${NCMD} rm -rf /var/www/${DEL_SITE} + ${NCMD} rm -rf /etc/letsencrypt/archive/${DEL_SITE} + ${NCMD} rm -rf /etc/letsencrypt/live/${DEL_SITE} + ${NCMD} rm -f /etc/letsencrypt/renewal/${DEL_SITE}.conf + echo -e "${idsCL[Green]}OK${idsCL[Default]}" + nid=`expr $nid + 1` + done + echo "" + ${FOLDER}/nodemgmt-scripts.sh service nginx reload + echo -e "${idsCL[LightRed]}Site has been deleted.${idsCL[Default]}" +} + +NEWSITE(){ while [ $# -gt 0 ]; do case "$1" in -site) NEW_SITE=${2};; @@ -287,97 +279,88 @@ case "$1" in printf "%-${width}s- %s\n" " -port {host port}" "(required if type set to proxy)" echo "}" exit 1 - fi - exit 1 - ;; - - update) - exit 0 - ;; - - status) - STATUS - ;; - - status-check) - if [ "${STATUS_CHECK_EMAIL}" != "" ]; then - if [ ! -z ${LOCAL_SERVICES+x} ]; then - lip=$(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) - for srvc in "${LOCAL_SERVICES[@]}" + fi +} + +STATUS-CHECK(){ + if [ "${STATUS_CHECK_EMAIL}" != "" ]; then + if [ ! -z ${LOCAL_SERVICES+x} ]; then + lip=$(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) + for srvc in "${LOCAL_SERVICES[@]}" + do + if [ $(pgrep ${srvc} | wc -l) -lt "1" ]; then + echo "${NM_SERVICES[${srvc}]} is down" | mail -s "${NODE_HOSTNAME}-${nip}" ${STATUS_CHECK_EMAIL} + touch ${FOLDER}/localhost-${srvc}.down + elif [ -f ${FOLDER}/localhost-${srvc}.down ]; then + echo "${NM_SERVICES[${srvc}]} is back UP!" | mail -s "${NODE_HOSTNAME}-${nip}" ${STATUS_CHECK_EMAIL} + rm -f ${FOLDER}/localhost-${srvc}.down + fi + done + fi + if [ -z ${LOCAL_SERVICES+x} ] || [ "${2}" = "all" ]; then + nid=1 + for nip in "${NODE_HOSTS[@]}" + do + if [[ $(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) == *"${nip}"* ]]; then NCMD='' + else NCMD="ssh root@${nip}" + fi + for srvc in "${NODE_SERVICES[@]}" do - if [ $(pgrep ${srvc} | wc -l) -lt "1" ]; then - echo "${NM_SERVICES[${srvc}]} is down" | mail -s "${NODE_HOSTNAME}-${nip}" ${STATUS_CHECK_EMAIL} - touch ${FOLDER}/localhost-${srvc}.down - elif [ -f ${FOLDER}/localhost-${srvc}.down ]; then - echo "${NM_SERVICES[${srvc}]} is back UP!" | mail -s "${NODE_HOSTNAME}-${nip}" ${STATUS_CHECK_EMAIL} - rm -f ${FOLDER}/localhost-${srvc}.down + if [ $(${NCMD} pgrep ${srvc} | wc -l) -lt "1" ]; then + echo "${NM_SERVICES[${srvc}]} is down" | mail -s "iDS-Node${nid}-${nip}" ${STATUS_CHECK_EMAIL} + touch ${FOLDER}/${nip}-${srvc}.down + elif [ -f ${FOLDER}/${nip}-${srvc}.down ]; then + echo "${NM_SERVICES[${srvc}]} is back UP!" | mail -s "iDS-Node${nid}-${nip}" ${STATUS_CHECK_EMAIL} + rm -f ${FOLDER}/${nip}-${srvc}.down fi done - fi - if [ -z ${LOCAL_SERVICES+x} ] || [ "${2}" = "all" ]; then - nid=1 - for nip in "${NODE_HOSTS[@]}" - do - if [[ $(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) == *"${nip}"* ]]; then NCMD='' - else NCMD="ssh root@${nip}" - fi - for srvc in "${NODE_SERVICES[@]}" - do - if [ $(${NCMD} pgrep ${srvc} | wc -l) -lt "1" ]; then - echo "${NM_SERVICES[${srvc}]} is down" | mail -s "iDS-Node${nid}-${nip}" ${STATUS_CHECK_EMAIL} - touch ${FOLDER}/${nip}-${srvc}.down - elif [ -f ${FOLDER}/${nip}-${srvc}.down ]; then - echo "${NM_SERVICES[${srvc}]} is back UP!" | mail -s "iDS-Node${nid}-${nip}" ${STATUS_CHECK_EMAIL} - rm -f ${FOLDER}/${nip}-${srvc}.down - fi - done - nid=`expr $nid + 1` - done - fi + nid=`expr $nid + 1` + done fi - ;; - - set-permissions) - if [ "${2}" != "" ]; then - NEW_SITE=${2} - echo -e "${idsCL[Yellow]}Setting new site folder permissions for (/var/www/${NEW_SITE})${idsCL[Default]}" + fi +} + +SET-PERMISSIONS(){ + if [ "${2}" != "" ]; then + NEW_SITE=${2} + echo -e "${idsCL[Yellow]}Setting new site folder permissions for (/var/www/${NEW_SITE})${idsCL[Default]}" + fi + nid=1 + for nip in "${NODE_HOSTS[@]}" + do + if [[ $(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) == *"${nip}"* ]]; then + nip='localhost ' + NCMD='' + else + NCMD="ssh root@${nip}" fi - nid=1 - for nip in "${NODE_HOSTS[@]}" - do - if [[ $(/sbin/ip -o -4 addr list ens192 | awk '{print $4}' | cut -d/ -f1) == *"${nip}"* ]]; then - nip='localhost ' - NCMD='' - else - NCMD="ssh root@${nip}" - fi - if [ "${NEW_SITE}" != "" ]; then - echo -en "${idsCL[Cyan]}iDS-Node${nid} (${nip}) ${idsCL[Default]}" - ${NCMD} chown -R www-data:www-data /var/www/$NEW_SITE - ${NCMD} chmod -R 7775 /var/www/$NEW_SITE - echo -e "${idsCL[Green]}Complete${idsCL[Default]}" - else - echo -e "${idsCL[Yellow]}Setting folder permissions for iDS-Node${nid} (${nip})${idsCL[Default]}" - echo -en "${idsCL[Cyan]}LetsEncrypt Certs ${idsCL[Default]}" - ${NCMD} chown -R root:letsencrypt /etc/letsencrypt - ${NCMD} chmod -R 6775 /etc/letsencrypt - echo -e "${idsCL[Green]}Complete${idsCL[Default]}" - echo -en "${idsCL[Cyan]}Webserver folders ${idsCL[Default]}" - ${NCMD} chown -R www-data:www-data /var/www - ${NCMD} chmod -R 7775 /var/www - echo -e "${idsCL[Green]}Complete${idsCL[Default]}" - echo -en "${idsCL[Cyan]}Gitea Folder ${idsCL[Default]}" - ${NCMD} chown -R git:git /var/lib/gitea - ${NCMD} chmod -R 750 /var/lib/gitea - echo -e "${idsCL[Green]}Complete${idsCL[Default]}" - echo "" - fi - nid=`expr $nid + 1` - done - if [ "${NEW_SITE}" != "" ]; then echo ""; fi - ;; - -service) + if [ "${NEW_SITE}" != "" ]; then + echo -en "${idsCL[Cyan]}iDS-Node${nid} (${nip}) ${idsCL[Default]}" + ${NCMD} chown -R www-data:www-data /var/www/$NEW_SITE + ${NCMD} chmod -R 7775 /var/www/$NEW_SITE + echo -e "${idsCL[Green]}Complete${idsCL[Default]}" + else + echo -e "${idsCL[Yellow]}Setting folder permissions for iDS-Node${nid} (${nip})${idsCL[Default]}" + echo -en "${idsCL[Cyan]}LetsEncrypt Certs ${idsCL[Default]}" + ${NCMD} chown -R root:letsencrypt /etc/letsencrypt + ${NCMD} chmod -R 6775 /etc/letsencrypt + echo -e "${idsCL[Green]}Complete${idsCL[Default]}" + echo -en "${idsCL[Cyan]}Webserver folders ${idsCL[Default]}" + ${NCMD} chown -R www-data:www-data /var/www + ${NCMD} chmod -R 7775 /var/www + echo -e "${idsCL[Green]}Complete${idsCL[Default]}" + echo -en "${idsCL[Cyan]}Gitea Folder ${idsCL[Default]}" + ${NCMD} chown -R git:git /var/lib/gitea + ${NCMD} chmod -R 750 /var/lib/gitea + echo -e "${idsCL[Green]}Complete${idsCL[Default]}" + echo "" + fi + nid=`expr $nid + 1` + done + if [ "${NEW_SITE}" != "" ]; then echo ""; fi +} + +SERVICE(){ if [ "${NM_SERVICES[${2}]}" = "" ]; then echo -e "${idsCL[Red]}(${2}) is not an allowed service.${idsCL[Default]}" exit 1 @@ -420,59 +403,72 @@ service) echo "" echo -e "${idsCL[Green]}${NM_SERVICES[${2}]} has been ${ADISP}ed${idsCL[Default]}" echo "" - exit 0 -;; - gui) - while : - do - echo "" - echo " [1] Node Status" - echo " [2] Node Services" - echo "" - echo " [3] New Site" - echo " [4] New Certificate" - echo " [5] Renew Certificates" - echo "" - echo " [6] Set folder permissions on nodes" - echo "" - echo " [Q] Quit" - echo "" - echo "" - echo -e -n "${idsCL[LightYellow]}Please select an [ActionItem] from above:${idsCL[Default]} " - read -n 1 opt - echo "" - case $opt in - 1) - STATUS - echo "" - read -n 1 -s -p "Press any key to continue" - ${0} gui;; - 2) GLANCES_INSTALL - INSTALL_MENU;; - 3) X11VNC_INSTALL - INSTALL_MENU;; - 4) FW_INSTALL - INSTALL_MENU;; - 5) LINUPX_UNINSTALL - INSTALL_MENU;; - 6) LINUPX_UNINSTALL - INSTALL_MENU;; - [Qq]) EXIT1 - exit 1;; - *) echo "Thats an invaild option,"; - echo "please select a valid option only."; - sleep 1;; - esac - done - ;; +} - *) - echo -e "Usage: ${idsCL[Yellow]}nodemgmt${idsCL[Default]} { ${idsCL[Yellow]}service${idsCL[Default]} [service] [action] | ${idsCL[Yellow]}status${idsCL[Default]} | ${idsCL[Yellow]}newcert${idsCL[Default]} [domain(,s)] | ${idsCL[Yellow]}certrenew${idsCL[Default]} }" +GUI(){ + while : + do + echo "" + echo " [1] Node Status" + echo " [2] Node Services" + echo "" + echo " [3] New Site" + echo " [4] New Certificate" + echo " [5] Renew Certificates" + echo "" + echo " [6] Set folder permissions on nodes" + echo "" + echo " [Q] Quit" echo "" echo "" - exit 0 - ;; + echo -e -n "${idsCL[LightYellow]}Please select an [ActionItem] from above:${idsCL[Default]} " + read -n 1 opt + echo "" + case $opt in + 1) + STATUS + echo "" + read -n 1 -s -p "Press any key to continue" + ${0} gui;; + 2) GLANCES_INSTALL + INSTALL_MENU;; + 3) X11VNC_INSTALL + INSTALL_MENU;; + 4) FW_INSTALL + INSTALL_MENU;; + 5) LINUPX_UNINSTALL + INSTALL_MENU;; + 6) LINUPX_UNINSTALL + INSTALL_MENU;; + [Qq]) EXIT1 + exit 1;; + *) echo "Thats an invaild option,"; + echo "please select a valid option only."; + sleep 1;; + esac + done +} -esac +if [ ${action-x} ]; then + case $action in + newcert) NEWCERT;; + certrenew) CERTRENEW;; + nightlyrenew) NIGHTLYRENEW;; + delsite) DELSITE;; + newsite) NEWSITE;; + update) ;; + status) STATUS;; + status-check) STATUS-CHECK;; + set-permissions) SET-PERMISSIONS;; + service) SERVICE;; + *) + echo -e "Usage: ${idsCL[Yellow]}nodemgmt${idsCL[Default]} { ${idsCL[Yellow]}service${idsCL[Default]} [service] [action] | ${idsCL[Yellow]}status${idsCL[Default]} | ${idsCL[Yellow]}newcert${idsCL[Default]} [domain(,s)] | ${idsCL[Yellow]}certrenew${idsCL[Default]} }" + echo "" + echo "" + exit 0;; + esac +else + GUI +fi exit 0 \ No newline at end of file