2023-11-11 20:28:45 -05:00

167 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
MOCHA_DBNAME=$(cat /etc/mocha/dbname)
MOCHA_DBUSER=$(cat /etc/mocha/dbuser)
MOCHA_DBPASS=$(cat /etc/mocha/dbpass)
if [ ! -d ~/.config ]; then
mkdir ~/.config
fi
if [ ! -d ~/.config/mocha ]; then
mkdir ~/.config/mocha
fi
if [ -f ~/.config/mocha/tenant ]; then
CURRENT_TENANT=$(cat ~/.config/mocha/tenant)
#echo "current tenant: $CURRENT_TENANT"
#echo "use 'mocha oms tenant select' to change"
fi
if [ "$1" == "install" ]; then
if [ "$2" == "library" ]; then
echo "installing Mocha OMS from library '$3'..."
python3 /usr/lib/mocha/internal/mocha-install-library.py $3
else
echo "installing Mocha OMS from SQL..."
cd /usr/lib/mocha/sql/php
php ./install_mysql.php $MOCHA_DBNAME $MOCHA_DBUSER $MOCHA_DBPASS
fi
elif [ "$1" == "tenant" ]; then
if [ "$2" == "list" ]; then
mysql -D $MOCHA_DBNAME -u $MOCHA_DBUSER --password=$MOCHA_DBPASS -e "SELECT * FROM mocha_tenants"
elif [ "$2" == "create" ]; then
if [ $# -lt 3 ]; then
echo "usage: mocha oms tenant create TENANTNAME"
exit
fi
mysql -D $MOCHA_DBNAME -u $MOCHA_DBUSER --password=$MOCHA_DBPASS -e "CALL mocha_create_tenant('$3', NULL)"
elif [ "$2" == "delete" ]; then
if [ $# -lt 3 ]; then
echo "usage: mocha oms tenant delete TENANTNAME"
fi
if [ "$3" == "super" ]; then
echo "cannot delete the super tenant!"
exit
fi
mysql -D $MOCHA_DBNAME -u $MOCHA_DBUSER --password=$MOCHA_DBPASS -e "DELETE FROM mocha_tenants WHERE tenant_name = '$3'"
elif [ "$2" == "select" ]; then
if [ $# -lt 3 ]; then
echo "usage: mocha oms tenant select TENANTNAME"
exit
fi
echo $3 > ~/.config/mocha/tenant
echo "current tenant: $3"
elif [ "$2" == "release" ]; then
rm ~/.config/mocha/tenant
echo "current tenant: (none)"
fi
elif [ "$1" == "user" ]; then
if [ "$CURRENT_TENANT" == "" ]; then
echo "no tenant selected; please 'mocha oms tenant select' first"
exit
fi
if [ "$2" == "list" ]; then
mysql -D $MOCHA_DBNAME -u $MOCHA_DBUSER --password=$MOCHA_DBPASS -e "SELECT * FROM mocha_instances WHERE class_id = 39 AND tenant_id = mocha_get_tenant_by_name('$CURRENT_TENANT')";
elif [ "$2" == "set-password" ]; then
if [ "$3" == "" ]; then
echo "usage: mocha oms user set-password USERNAME [PASSWORD]"
exit
fi
PASSWORD=$4
if [ "$PASSWORD" == "" ]; then
echo "Changing password for $3."
stty -echo
read -p "New password: " PASSWORD
stty echo
echo ""
stty -echo
read -p "Retype new password: " PASSWORD2
stty echo
echo ""
echo ""
if [ "$PASSWORD" != "$PASSWORD2" ]; then
echo "Sorry, passwords do not match."
exit
fi
fi
PASSWORD_SALT=$(pwgen -s 128 -N 1)
PASSWORD_SALTED=$PASSWORD$PASSWORD_SALT
PASSWORD_HASH=$(php /usr/lib/mocha/sql/php/hash_pw.php $PASSWORD_SALTED)
# these two commands SHOULD execute atomically
# BUT for some reason this doesn't work on initial provisioning of the vagrant vm
# ........ for some reason, it works just fine when run manually though...
# oh well, it's not like anything is going to happen in the few picoseconds between calls...
mysql -D $MOCHA_DBNAME -u $MOCHA_DBUSER --password=$MOCHA_DBPASS -e "CALL mocha_set_attribute_value(mocha_get_tenant_by_name('$CURRENT_TENANT'), mocha_get_user_by_username('$3'), mocha_get_instance_by_global_identifier('F377FC294DF14AFB96434191F37A00A9'), '$PASSWORD_HASH', NULL, NULL)"
mysql -D $MOCHA_DBNAME -u $MOCHA_DBUSER --password=$MOCHA_DBPASS -e "CALL mocha_set_attribute_value(mocha_get_tenant_by_name('$CURRENT_TENANT'), mocha_get_user_by_username('$3'), mocha_get_instance_by_global_identifier('8C5A99BC40ED4FA2B23FF373C1F3F4BE'), '$PASSWORD_SALT', NULL, NULL)"
if [ $? -ne 0 ]; then
echo "mocha: password unchanged"
exit
fi
echo "mocha: password updated successfully"
exit
else
echo "usage: mocha oms user add|delete|lock|list|unlock|set-password"
fi
else
echo "usage: mocha oms tenant|user"
fi