#!/bin/bash
-## This is an AppImage control script for the Citadel system.
-##
-## Copyright (c) 2021 by the citadel.org team
-##
-## This program is open source software. It runs great on the
-## Linux operating system (and probably elsewhere). You can use,
-## copy, and run it under the terms of the GNU General Public
-## License version 3. Richard Stallman is an asshole communist.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
+# This is an AppImage control script for the Citadel system.
+#
+# Copyright (c) 2021 by the citadel.org team
+#
+# This program is open source software. It runs great on the
+# Linux operating system (and probably elsewhere). You can use,
+# copy, and run it under the terms of the GNU General Public
+# License version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
# Default values
HTTP_PORT=80
usage() {
echo ${APPIMAGE}: usage: ${APPIMAGE} '[-h data_directory] [-p http_port] [-s https_port] command'
- echo 'command must be one of: run, test, install'
+ echo 'command must be one of: run, test, install, database_cleanup, migrate'
exit 2
}
# Permanently install the Citadel AppImage to this system
installation() {
- clear
- echo
+ # Clear the screen and draw the banner
+ echo -e '\033[2J\033[H\033[44m\033[37m\033[K\033[0m'
+ echo -e '\033[44m\033[37m\033[1m Citadel installation\033[K\033[0m'
+ echo -e '\033[44m\033[37m \033[K\033[0m'
echo
# First ... check to make sure Citadel isn't already running.
echo Checking to make sure Citadel is not already running...
if ps ax | grep citserver | grep -v grep ; then
- echo Installation cannot proceed while Citadel is running.
+ echo
+ echo -e '\033[31m\033[1mInstallation cannot proceed while Citadel is running.\033[0m'
echo Stop your services and try again.
+ echo
exit 1
fi
echo OK
export LD_LIBRARY_PATH=$APPDIR/usr/lib
export PATH=$APPDIR/usr/bin
$APPDIR/usr/local/citadel/citserver -c || {
- echo Compatibility failed.
+ echo
+ echo -e '\033[31m\033[1mCompatibility failed.\033[0m'
+ echo 'This AppImage is not compatible with your system.'
+ echo 'If you are attempting to run it on a compatible platform, please make sure you'
+ echo 'have all of the latest updates and patches applied. Otherwise, you may have'
+ echo 'better luck with the Easy Install method.'
+ echo ''
exit 2
}
- )
+ ) || exit 2
echo OK
echo
+ # Clear the screen and draw the banner
+ echo -e '\033[2J\033[H\033[44m\033[37m\033[K\033[0m'
+ echo -e '\033[44m\033[37m\033[1m Citadel installation\033[K\033[0m'
+ echo -e '\033[44m\033[37m \033[K\033[0m'
+ echo
+
# Locate the Citadel run directory
confirmed=0
while [ ${confirmed} == 0 ]
echo Automatic installation is only supported with systemd.
echo You can still run Citadel but you will need to start it some other way.
exit 3
- }
+ } | exit 3
echo OK
echo
echo OK
echo
+ # Clear the screen and draw the banner
+ echo -e '\033[2J\033[H\033[44m\033[37m\033[K\033[0m'
+ echo -e '\033[44m\033[37m\033[1m Citadel installation\033[K\033[0m'
+ echo -e '\033[44m\033[37m \033[K\033[0m'
+ echo
+
echo Ready to install ${APPIMAGE} in ${CTDL_DIR}
echo Copying the AppImage...
rm -f ${CTDL_DIR}/citadel.appimage 2>/dev/null
cp ${APPIMAGE} ${CTDL_DIR}/citadel.appimage || {
echo Installation has failed with error code $? .
exit 4
- }
+ } | exit 4
echo Creating the systemd unit file...
(
) >/etc/systemd/system/citadel.service || {
echo Installation has failed with error code $? .
exit 5
- }
+ } | exit 5
echo OK
echo
systemctl enable citadel || {
echo Installation has failed with error code $? .
exit 6
- }
+ } | exit 6
echo OK
echo
systemctl start citadel || {
echo Installation has failed with error code $? .
exit 6
- }
+ } || exit 6
echo OK
echo
- echo Installation has completed.
+ # Clear the screen and draw the banner
+ echo -e '\033[2J\033[H\033[44m\033[37m\033[K\033[0m'
+ echo -e '\033[44m\033[37m\033[1m Citadel installation\033[K\033[0m'
+ echo -e '\033[44m\033[37m \033[K\033[0m'
+ echo
+
+ echo -e '\033[32m\033[1mInstallation has completed.\033[0m'
echo Please continue by browsing to http://`hostname`:${HTTP_PORT}
+ echo
+ echo -e 'If this is a new installation, the default administrator'
+ echo -e 'will be named \033[7madmin\033[0m with password \033[7mcitadel\033[0m.'
exit
}
install)
installation
;;
+ database_cleanup)
+ export LD_LIBRARY_PATH=$APPDIR/usr/lib
+ export PATH=$APPDIR/usr/bin:$PATH
+ exec $APPDIR/usr/local/citadel/database_cleanup.sh -h $CTDL_DIR
+ ;;
+ migrate)
+ export APPDIR CTDL_DIR HTTP_PORT HTTPS_PORT
+ export LD_LIBRARY_PATH=$APPDIR/usr/lib
+ export PATH=$APPDIR/usr/bin
+ exec ctdlvisor -m
+ ;;
+ mount)
+ echo This mode of operation mounts the AppImage but does not run anything.
+ echo -n Kill it when you are finished...
+ while true
+ do
+ sleep 1
+ done
+ ;;
+ debug)
+ export LD_LIBRARY_PATH=$APPDIR/usr/lib
+ export PATH=$APPDIR/usr/bin:$PATH
+ exec $APPDIR/usr/local/citadel/citserver -x9 -h $CTDL_DIR
+ ;;
*)
echo Unexpected command: ${1}
usage