diff scripts/launcher/launch.sh @ 3:73d3b94b7364

added DNS SRV configuration script + move launching script to scripts/launcher/launch.sh
author souliane <souliane@mailoo.org>
date Fri, 27 Jun 2014 19:17:18 +0200
parents scripts/launch.sh@3ec5808e3b53
children 19448ad3a7d9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/launcher/launch.sh	Fri Jun 27 19:17:18 2014 +0200
@@ -0,0 +1,187 @@
+#!/bin/bash
+
+# This is a helping script to do some tasks like installing, cleaning, starting sat and/or libervia.
+
+# Python dist-packages where project are installed
+PACKAGES=/usr/local/lib/python2.7/dist-packages
+
+# Paths to the projects
+WORKSPACE=~/workspace
+SAT=$WORKSPACE/sat
+PYJS=$WORKSPACE/pyjamas
+LIBERVIA=$WORKSPACE/libervia
+PROSODY=$WORKSPACE/prosody-hg
+SATPUBSUB=$WORKSPACE/sat_pubsub
+URWID_SATEXT=$WORKSPACE/urwid_satext
+
+# PIDs of the processes
+LOCAL_DIR=~/.local/share/sat
+SAT_PID=$LOCAL_DIR/sat.pid
+LIB_PID=$LOCAL_DIR/libervia.pid
+SER_PID=$PROSODY/prosody.pid
+SPS_PID=$SATPUBSUB/twistd.pid
+
+# Connection information for sat_pubsub
+SPS_JID=sat-pubsub.souliane.org
+SPS_PWD=password
+
+# Informations for a concurrent sat instance
+# For this to work, you have to follow the instructions in:
+# http://wiki.goffi.org/wiki/Howto_launch_several_S%C3%A0T_instances
+# Also:
+#     - modify const_INT_PREFIX in the two DBus.py files
+#     - set DAEMON="" in the sat.sh to launch sat as a daemon
+SAT_MAIN=$WORKSPACE/sat_main
+SAT_MAIN_PID=~/.sat_main/sat.pid
+
+# 4 Firefox profiles names for testing
+FF_PROFILES=(test1 test2 test3 test4)
+# 4 SąT profiles names for testing
+SAT_PROFILES=(Peter Steven Dave Dino)
+# Passwords for these profiles
+SAT_PROFILES_PASSWD=(xxxxxx xxxxxx xxxxxx xxxxxx)
+
+# Launch sat in debug mode?
+SAT_DEBUG=1
+# Launch sat pubsub in debug mode?
+SPS_DEBUG=0
+# Launch libervia in debug mode?
+LIB_DEBUG=1
+# Force killing processes?
+KILL_FORCE=1
+
+kill_process() {
+    # $1 is the file containing the PID to kill
+    if [ -f $1 ]; then
+        PID=`cat $1`
+        if ps -p $PID > /dev/null; then
+            if [[ $KILL_FORCE = 1 ]]; then
+                kill -9 $PID
+            else
+                kill -INT $PID
+            fi
+        fi
+        rm -f $1
+    fi
+}
+
+stop_lib() {
+    echo "############ Stopping libervia ############"
+    libervia stop
+    kill_process $LIB_PID
+}
+stop_sat() {
+    echo "############### Stopping sat ##############"
+    sat stop
+    kill_process $SAT_PID
+}
+stop_ser() {
+    echo "############# Stopping Prosody ############"
+    cd $PROSODY && if [[ -f $SER_PID ]]; then ./prosodyctl stop; fi
+    kill_process $SER_PID
+    echo "########### Stopping sat_pubsub ###########"
+    kill_process $SPS_PID
+}
+start_ser() {
+    echo "############# Starting Prosody ############"
+    cd $PROSODY && ./prosodyctl start
+    echo "########## Installing sat_pubsub ##########"
+    cd $SATPUBSUB && sudo python setup.py install
+    echo "########### Starting sat-pubsub ###########"
+    if [[ $SPS_DEBUG = 1 ]]; then
+        mate-terminal -e "twistd -n -b sat_pubsub --jid=$SPS_JID --secret=$SPS_PWD" &
+    else
+        twistd sat_pubsub --jid=$SPS_JID --secret=$SPS_PWD
+    fi
+}
+start_sat() {
+    echo "############## Installing sat #############"
+    cd $SAT && sudo python setup.py install
+    echo "############### Starting sat ##############"
+    if [[ $SAT_DEBUG = 1 ]]; then
+        mate-terminal -e "sat debug" &
+    else
+        sat
+    fi
+}
+start_lib() {
+    echo "########### Installing libervia ###########"
+    cd $LIBERVIA && sudo python setup.py install
+    echo "############ Starting libervia ############"
+    cd src
+    if [[ $LIB_DEBUG = 1 ]]; then
+        mate-terminal -e "libervia debug" &
+    else
+        libervia
+    fi
+}
+4foxes() {
+    # Starts 4 instances of firefox and connect SąT profiles with Libervia
+    # Assumes the HTTPS port for local server is 8443
+    echo "####### Starting 4 libervia clients #######"
+    for I in `seq 0 3`; do
+        URL="https://localhost:8443/libervia.html?login=${SAT_PROFILES[$I]}&passwd=${SAT_PROFILES_PASSWD[$I]}"
+        firefox -no-remote -P ${FF_PROFILES[$I]} "$URL" &
+    done
+}
+clean() {
+    echo "############ Cleaning log files ###########"
+    rm -f $LOCAL_DIR/*.log*
+    rm -f $SATPUBSUB/twistd.log*
+    rm -f $PROSODY/prosody.log* $PROSODY/prosody.err*
+}
+purge() {
+    echo "######## Purging installed packages #######"
+    rm -rf $PACKAGES/sat
+    rm -rf $PACKAGES/sat_frontends
+    rm -rf $PACKAGES/libervia
+    rm -rf $PACKAGES/libervia_server
+}
+main() {
+    echo "######## Starting SąT main instance #######"
+    export PYTHONPATH=$SAT_MAIN/lib
+    cd $SAT_MAIN/lib/sat && hg pull -u && ./sat.sh
+    echo "#### Starting primitivus main instance ####"
+    cd $SAT_MAIN/lib/sat_frontends/primitivus && ./primitivus
+}
+bridge() {
+    echo "######### Generating DBus.py files ########"
+    cd $SAT/src/bridge/bridge_constructor
+    ./bridge_constructor.py --force && cp generated/DBus.py ../DBus.py
+    ./bridge_constructor.py -s frontend --force && cp generated/DBus.py ../../../frontends/src/bridge/DBus.py
+    cd $SAT_MAIN/src/bridge/bridge_constructor
+    SAT_BRIDGE_CONST_INT_PREFIX='"org.goffi.sat_main"' ./bridge_constructor.py --force && cp generated/DBus.py ../DBus.py
+    SAT_BRIDGE_CONST_INT_PREFIX='"org.goffi.sat_main"' ./bridge_constructor.py -s frontend  --force && cp generated/DBus.py ../../../frontends/src/bridge/DBus.py
+}
+monitor() {
+    echo "## Monitoring DBus for SąT main instance ##"
+    killall -q dbus-monitor
+    nohup dbus-monitor "sender='org.goffi.sat_main', interface='org.goffi.sat_main.core'" >> /tmp/sat_xml_core_`date +%y.%m.%d`&
+    nohup dbus-monitor "sender='org.goffi.sat_main', interface='org.goffi.sat_main.plugin'" >> /tmp/sat_xml_plugin_`date +%y.%m.%d`&
+}
+case "$1" in
+    stop_lib) stop_lib ;;
+    stop_sat) stop_sat ;;
+    stop_ser) stop_ser ;;
+    start_ser) start_ser ;;
+    start_sat) start_sat ;;
+    start_lib) start_lib ;;
+    stop) stop_lib && stop_sat && stop_ser ;;
+    start) start_ser && start_sat && start_lib;;
+    restart_sat) stop_sat && stop_ser && start_ser && start_sat ;;
+    restart_lib) stop_lib && start_lib ;;
+    4foxes) 4foxes ;;
+    clean) clean ;;
+    purge) clean && purge;;
+    main) main ;;
+    bridge) bridge;;
+    monitor) monitor;;
+    *)
+        # default: reinstall and restart all
+        stop_lib && stop_sat && stop_ser
+        clean
+        start_ser && start_sat && start_lib
+        ;;
+esac
+
+echo "Done."