167 lines
3.9 KiB
Bash
Executable File
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
|
|
|