summary refs log tree commit diff
path: root/demo
diff options
context:
space:
mode:
authormatrix.org <matrix@matrix.org>2014-08-12 15:10:52 +0100
committermatrix.org <matrix@matrix.org>2014-08-12 15:10:52 +0100
commit4f475c7697722e946e39e42f38f3dd03a95d8765 (patch)
tree076d96d3809fb836c7245fd9f7960e7b75888a77 /demo
downloadsynapse-4f475c7697722e946e39e42f38f3dd03a95d8765.tar.xz
Reference Matrix Home Server
Diffstat (limited to 'demo')
-rw-r--r--demo/README22
-rwxr-xr-xdemo/clean.sh16
-rwxr-xr-xdemo/start.sh24
-rwxr-xr-xdemo/stop.sh14
-rw-r--r--demo/webserver.py39
5 files changed, 115 insertions, 0 deletions
diff --git a/demo/README b/demo/README
new file mode 100644
index 0000000000..0b584ceb15
--- /dev/null
+++ b/demo/README
@@ -0,0 +1,22 @@
+Requires you to have done:
+    python setup.py develop
+
+
+The demo start.sh will start three synapse servers on ports 8080, 8081 and 8082, with host names localhost:$port. This can be easily changed to `hostname`:$port in start.sh if required. 
+It will also start a web server on port 8000 pointed at the webclient.
+
+stop.sh will stop the synapse servers and the webclient.
+
+clean.sh will delete the databases and log files.
+
+To start a completely new set of servers, run:
+
+    ./demo/stop.sh; ./demo/clean.sh && ./demo/start.sh
+
+
+Logs and sqlitedb will be stored in demo/808{0,1,2}.{log,db}
+
+
+
+Also note that when joining a public room on a differnt HS via "#foo:bar.net", then you are (in the current impl) joining a room with room_id "foo". This means that it won't work if your HS already has a room with that name.
+
diff --git a/demo/clean.sh b/demo/clean.sh
new file mode 100755
index 0000000000..d5649fee83
--- /dev/null
+++ b/demo/clean.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+
+PID_FILE="$DIR/servers.pid"
+
+if [ -f $PID_FILE ]; then
+    echo "servers.pid exists!"
+    exit 1
+fi
+
+find "$DIR" -name "*.log" -delete
+find "$DIR" -name "*.db" -delete
+
diff --git a/demo/start.sh b/demo/start.sh
new file mode 100755
index 0000000000..4701872926
--- /dev/null
+++ b/demo/start.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+
+CWD=$(pwd)
+
+cd "$DIR/.."
+
+for port in "8080" "8081" "8082"; do
+    echo "Starting server on port $port... "
+
+    python -m synapse.app.homeserver \
+        -p "$port" \
+        -H "localhost:$port" \
+        -f "$DIR/$port.log" \
+        -d "$DIR/$port.db" \
+        -vv \
+        -D --pid-file "$DIR/$port.pid"
+done
+
+echo "Starting webclient on port 8000..."
+python "demo/webserver.py" -p 8000 -P "$DIR/webserver.pid" "webclient"
+
+cd "$CWD"
diff --git a/demo/stop.sh b/demo/stop.sh
new file mode 100755
index 0000000000..85a1d2c161
--- /dev/null
+++ b/demo/stop.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+DIR="$( cd "$( dirname "$0" )" && pwd )"
+
+FILES=$(find "$DIR" -name "*.pid" -type f);
+
+for pid_file in $FILES; do
+    pid=$(cat "$pid_file")
+    if [[ $pid ]]; then
+        echo "Killing $pid_file with $pid"
+        kill $pid
+    fi
+done
+
diff --git a/demo/webserver.py b/demo/webserver.py
new file mode 100644
index 0000000000..78f3213540
--- /dev/null
+++ b/demo/webserver.py
@@ -0,0 +1,39 @@
+import argparse
+import BaseHTTPServer
+import os
+import SimpleHTTPServer
+
+from daemonize import Daemonize
+
+
+def setup():
+    parser = argparse.ArgumentParser()
+    parser.add_argument("directory")
+    parser.add_argument("-p", "--port", dest="port", type=int, default=8080)
+    parser.add_argument('-P', "--pid-file", dest="pid", default="web.pid")
+    args = parser.parse_args()
+
+    # Get absolute path to directory to serve, as daemonize changes to '/'
+    os.chdir(args.directory)
+    dr = os.getcwd()
+
+    httpd = BaseHTTPServer.HTTPServer(
+        ('', args.port),
+        SimpleHTTPServer.SimpleHTTPRequestHandler
+    )
+
+    def run():
+        os.chdir(dr)
+        httpd.serve_forever()
+
+    daemon = Daemonize(
+            app="synapse-webclient",
+            pid=args.pid,
+            action=run,
+            auto_close_fds=False,
+        )
+
+    daemon.start()
+
+if __name__ == '__main__':
+    setup()