#!/bin/bash CONFIG=/home/diaspora/diaspora/config/diaspora.toml BT="yipyap.social" h=8 w=60 function showAdminPassword(){ clear /home/diaspora/adminpw read -n 1 -p "Press any key to continue." } function getBoolSetting(){ [ "$(cat "$CONFIG" | grep "$1 =" | awk '{ print $3 }')" = "true" ] && echo "on" || echo "off" } function setBoolSetting(){ Invites="false" Registrations="false" for arg in $@; do case $arg in "Invites") Invites="true" ;; "Registrations") Registration="true" ;; esac done sudo -u diaspora sed -i "s/open = .*/open = $Invites/" "$CONFIG" sudo -u diaspora sed -i "s/enable_registrations = .*/enable_registrations = $Registrations/" "$CONFIG" } function setInvitesToZeroForUser(){ ret=$(sudo -u diaspora psql diaspora_production -c "UPDATE invitation_codes SET count=0 WHERE user_id = (SELECT id FROM users WHERE username = '$1');") if [[ "$ret" =~ ^UPDATE\ [1-9][0-9]*$ ]]; then dialog --backtitle "$BT" --msgbox "Invites has been set to zero." $h $w else dialog --backtitle "$BT" --msgbox "An error has occured:\n\"$ret\"" $h $w fi } function queryUser(){ if [[ "$1" =~ ^[0-9A-Za-z]+$ ]]; then user=$(sudo -u diaspora psql diaspora_production -c "SELECT username FROM users WHERE username LIKE '$1' LIMIT 1;" -At) if [ -n "$user" ]; then return 0 else return 1 fi else return 2 fi } function removeInvitesFromUserMenu(){ username=$(dialog --backtitle "$BT" --title "Remove invites from user" --inputbox "Here you can remove the invites from a user.\nUsername:" $h $w 3>&1 1>&2 2>&3) if [ $? -eq 0 ]; then queryUser "$username" ret=$? case $ret in 0) setInvitesToZeroForUser "$username" ;; 1) dialog --backtitle "$BT" --msgbox "Username not found." $h $w removeInvitesFromUserMenu ;; 2) dialog --backtitle "$BT" --msgbox "The username must be alphanumeric." $h $w removeInvitesFromUserMenu ;; esac fi } function menu(){ ACTION=$(dialog --backtitle "$BT" --title "Service menu" --menu "Henlo $USER. Whatcha wanna do?" 16 60 6 \ 1 "Settings" \ 2 "Remove invites from user" \ 3 "Restart Webservice" \ 4 "Restart Sidekiq" \ 5 "Show admin password" \ 3>&1 1>&2 2>&3 ) case $ACTION in 1) invites_enabled=$(getBoolSetting open) registration_enabled=$(getBoolSetting enable_registrations) options=$(dialog --backtitle "$BT" --nocancel --title "Settings" --checklist "Change the settings here!" 16 80 10 \ "Invites" "Are invites enabled?" "$invites_enabled" \ "Registrations" "Are registrations allowed?" "$registration_enabled" \ 3>&1 1>&2 2>&3 ) ret=$? case $ret in 0) setBoolSetting $options dialog --backtitle "$BT" --infobox "Applying configuration by restarting the Webservice, pls wait..." $h $w sudo systemctl restart diaspora-web.service ;; 255) dialog --backtitle "$BT" --infobox "Aborted." $h $w sleep 1 ;; esac menu ;; 2) removeInvitesFromUserMenu menu ;; 3) dialog --backtitle "$BT" --infobox "Restarting Webservice, pls wait..." $h $w sudo systemctl restart diaspora-web.service systemctl status diaspora-web > /tmp/mod_state dialog --backtitle "$BT" --textbox state 25 100 rm /tmp/mod_state menu ;; 4) dialog --backtitle "$BT" --infobox "Restarting Sidekiq, pls wait..." $h $w sudo systemctl restart diaspora-sidekiq.service systemctl status diaspora-sidekiq > /tmp/mod_state dialog --backtitle "$BT" --textbox state 25 100 rm /tmp/mod_state menu ;; 5) showAdminPassword menu ;; *) ;; esac } menu clear echo -ne "Thank you for playing Wing Commander!\n\nC:\\WC1>"