diaspora-mod/diaspora-mod

150 lines
3.9 KiB
Bash
Executable File

#!/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>"