#!/bin/bash
+# Work from the directory this script is in
+APPIMAGE_BUILD_DIR=$(dirname $(readlink -f $0))
+cd $APPIMAGE_BUILD_DIR || exit 28
+echo APPIMAGE_BUILD_DIR is `pwd`
+
+# Remove old versions
rm -vf citadel-*appimage
export CITADEL_BUILD_DIR=/tmp/citadel-build-$$
export WEBCIT_BUILD_DIR=/tmp/webcit-build-$$
-rm -fr $CITADEL_BUILD_DIR $WEBCIT_BUILD_DIR
# libcitadel has to be built in a "real" library directory
pushd ../libcitadel || exit 1
if [ $CPU == x86_64 ] ; then
export ARCH=x86_64
elif [ $CPU == armv7l ] ; then
- export ARCH=armhf
+ export ARCH=arm
elif [ $CPU == aarch64 ] ; then
export ARCH=aarch64
fi
# 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
}
export PATH=$APPDIR/usr/bin:$PATH
exec $APPDIR/usr/local/citadel/citserver -x9 -h $CTDL_DIR
;;
- connect)
- export LD_LIBRARY_PATH=$APPDIR/usr/lib
- export PATH=$APPDIR/usr/bin:$PATH
- cd $APPDIR
- exec citadel $*
- ;;
*)
echo Unexpected command: ${1}
usage
}
+void install_client_link(void) {
+
+ FILE *fp;
+ char path_to_link[PATH_MAX];
+ snprintf(path_to_link, sizeof path_to_link, "%s/citadel", getenv("CTDL_DIR"));
+ fp = fopen(path_to_link, "w");
+ if (!fp) {
+ fprintf(stderr, "%s\n", strerror(errno));
+ return;
+ }
+
+ fprintf(fp, "#!/bin/bash\n"
+ "export APPDIR=%s\n"
+ "export LD_LIBRARY_PATH=${APPDIR}/usr/bin:$LD_LIBRARY_PATH\n"
+ "export PATH=${APPDIR}/usr/bin:$PATH\n"
+ "exec citadel\n"
+ ,
+ getenv("APPDIR")
+ );
+
+ fchmod(fileno(fp), 0755);
+ fclose(fp);
+}
+
+
int main(int argc, char **argv) {
int a;
int migrate_mode = 0;
signal(SIGINT, signal_handler);
signal(SIGQUIT, signal_handler);
- citserver_pid = start_citadel();
- webcit_pid = start_webcit();
- webcits_pid = start_webcits();
+ citserver_pid = start_citadel(); // start Citadel Server
+ webcit_pid = start_webcit(); // start WebCit HTTP
+ webcits_pid = start_webcits(); // start WebCit HTTPS
+
+ install_client_link();
main_loop();
}