summaryrefslogtreecommitdiffstats
path: root/snap-src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'snap-src/bin')
-rwxr-xr-xsnap-src/bin/caddy-control12
-rwxr-xr-xsnap-src/bin/config49
-rwxr-xr-xsnap-src/bin/mongodb-backup23
-rwxr-xr-xsnap-src/bin/mongodb-control32
-rwxr-xr-xsnap-src/bin/mongodb-restore16
-rwxr-xr-xsnap-src/bin/wekan-control23
-rwxr-xr-xsnap-src/bin/wekan-help48
-rwxr-xr-xsnap-src/bin/wekan-read-settings29
8 files changed, 232 insertions, 0 deletions
diff --git a/snap-src/bin/caddy-control b/snap-src/bin/caddy-control
new file mode 100755
index 00000000..46d36c6b
--- /dev/null
+++ b/snap-src/bin/caddy-control
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# get wekan/mongo settings
+source $SNAP/bin/wekan-read-settings
+
+if [ "$CADDY_ENABLED" = "true" ]; then
+ env LC_ALL=C caddy -conf=$SNAP_COMMON/Caddyfile -host=localhost:${CADDY_PORT}
+else
+ echo "caddy is disabled. Stop service"
+ snapctl stop --disable ${SNAP_NAME}.caddy
+ # sleep here, in case snapctl fails to stop service so we do not restart too often
+fi
diff --git a/snap-src/bin/config b/snap-src/bin/config
new file mode 100755
index 00000000..da2ee5cd
--- /dev/null
+++ b/snap-src/bin/config
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+# All supported keys are defined here together with descriptions and default values
+
+# list of supported keys
+keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT"
+
+# default values
+DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\
+"\t\t\t Default behaviour will preffer binding over unix socket, to disable unix socket binding set value to 'nill' string\n"\
+"\t\t\t To bind to instance of mongodb provided through content interface,set value to relative path to the socket inside '$SNAP_DATA/shared' directory"
+DEFAULT_MONGODB_BIND_UNIX_SOCKET="$SNAP_DATA/share"
+KEY_MONGODB_BIND_UNIX_SOCKET="mongodb-bind-unix-socket"
+
+DESCRIPTION_MONGODB_PORT="mongodb binding port: eg 27017 when using localhost"
+DEFAULT_MONGODB_PORT="27019"
+KEY_MONGODB_PORT='mongodb-port'
+
+DESCRIPTION_MONGODB_BIND_IP="mongodb binding ip address: eg 127.0.0.1 for localhost\n\t\tIf not defined default unix socket is used instead"
+DEFAULT_MONGODB_BIND_IP=""
+KEY_MONGODB_BIND_IP="mongodb-bind-ip"
+
+DESCRIPTION_MAIL_URL="wekan mail binding"
+DEFAULT_MAIL_URL="smtp://user:pass@mailserver.examples.com:25/"
+KEY_MAIL_URL="mail-url"
+
+DESCRIPTION_MAIL_FROM="wekan's admin mail from name email address"
+DEFAULT_MAIL_FROM="wekan-admin@example.com"
+KEY_MAIL_FROM="mail-from"
+
+DESCRIPTION_ROOT_URL="wekan's root url, eg http://127.0.0.1, https://example.com, https://wekan.example.com, http://example.com/wekan"
+DEFAULT_ROOT_URL="http://127.0.0.1"
+KEY_ROOT_URL="root-url"
+
+DESCRIPTION_PORT="port wekan is exposed at"
+DEFAULT_PORT="8080"
+KEY_PORT="port"
+
+DESCRIPTION_DISABLE_MONGODB="Disable mongodb service: use only if binding to database outside of the ${SNAP_NAME} snap. Valid values: [true,false]"
+DEFAULT_DISABLE_MONGODB="false"
+KEY_DISABLE_MONGODB="disable-mongodb"
+
+DESCRIPTION_CADDY_ENABLED="Enable caddy service (caddy - Every Site on HTTPS). Set to 'true' to enable caddy\n\t\tcaddy settings are handled through $SNAP_COMMON/Caddyfile"
+DEFAULT_CADDY_ENABLED="false"
+KEY_CADDY_ENABLED="caddy-enabled"
+
+DESCRIPTION_CADDY_BIND_PORT="Port on which caddy will expect proxy, value set here will be set in $SNAP_COMMON/Caddyfile"
+DEFAULT_CADDY_BIND_PORT="3001"
+KEY_CADDY_BIND_PORT="caddy-bind-port"
diff --git a/snap-src/bin/mongodb-backup b/snap-src/bin/mongodb-backup
new file mode 100755
index 00000000..bef8bf9b
--- /dev/null
+++ b/snap-src/bin/mongodb-backup
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# get wekan/mongo settings
+source $SNAP/bin/wekan-read-settings
+
+# make sure we have set minimum env variables for locale
+if [ -z "$LANG" ]; then
+ export LANG=en_US.UTF-8
+fi
+
+export LC_ALL=C
+
+if [ -z $1 ]; then
+ DATE=`/bin/date +%Y%m%dT%H%M%S`
+ mkdir -p $SNAP_COMMON/db-backups/
+ ARCHIVE=$SNAP_COMMON/db-backups/wekan-$DATE.backup
+else
+ ARCHIVE=$1
+fi
+# start mongodb backup
+[ "x" == "x${MONGODB_BIND_IP}" ] && MONGODB_BIND_IP="127.0.0.1"
+ echo "using bind ip"
+mongodump --host $MONGODB_BIND_IP --port $MONGODB_PORT -d wekan --gzip --archive=${ARCHIVE}
diff --git a/snap-src/bin/mongodb-control b/snap-src/bin/mongodb-control
new file mode 100755
index 00000000..a7a98739
--- /dev/null
+++ b/snap-src/bin/mongodb-control
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# get wekan/mongo settings
+source $SNAP/bin/wekan-read-settings
+
+if [ "true" == "${DISABLE_MONGODB}" ]; then
+ echo "mongodb is disabled. Stop service"
+ snapctl stop --disable ${SNAP_NAME}.mongodb
+ exit 0
+fi
+
+# make sure we have set minimum env variables for locale
+if [ -z "$LANG" ]; then
+ export LANG=en_US.UTF-8
+fi
+
+export LC_ALL=C
+
+# start mongo deamon
+BIND_OPTIONS=""
+if [ "nill" != "$MONGODB_BIND_UNIX_SOCKET" ] && [ "x" != "x${MONGODB_BIND_UNIX_SOCKET}" ]; then
+ BIND_OPTIONS+=" --unixSocketPrefix $MONGODB_BIND_UNIX_SOCKET"
+fi
+if [ "x" != "x${MONGODB_BIND_IP}" ]; then
+ BIND_OPTIONS+=" --bind_ip $MONGODB_BIND_IP"
+fi
+if [ "x" != "x${MONGODB_PORT}" ]; then
+ BIND_OPTIONS+=" --port $MONGODB_PORT"
+fi
+echo "mongodb bind options: $BIND_OPTIONS"
+
+mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/mongodb.log --logappend --journal $BIND_OPTIONS
diff --git a/snap-src/bin/mongodb-restore b/snap-src/bin/mongodb-restore
new file mode 100755
index 00000000..c1c82775
--- /dev/null
+++ b/snap-src/bin/mongodb-restore
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+# get wekan/mongo settings
+source $SNAP/bin/wekan-read-settings
+
+# make sure we have set minimum env variables for locale
+if [ -z "$LANG" ]; then
+ export LANG=en_US.UTF-8
+fi
+
+export LC_ALL=C
+
+# start mongodb backup
+[ "x" == "x${MONGODB_BIND_IP}" ] && MONGODB_BIND_IP="127.0.0.1"
+echo "using bind ip"
+mongorestore --host $MONGODB_BIND_IP --port $MONGODB_PORT -d wekan --gzip --archive=$1
diff --git a/snap-src/bin/wekan-control b/snap-src/bin/wekan-control
new file mode 100755
index 00000000..bc2cefde
--- /dev/null
+++ b/snap-src/bin/wekan-control
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# get wekan/mongo settings
+source $SNAP/bin/wekan-read-settings
+
+export NODE_PATH=$SNAP/bin
+# if possible we prefer to bind over unix socket
+if [ "nill" != "$MONGODB_BIND_UNIX_SOCKET" ] && [ "x" != "x$MONGODB_BIND_UNIX_SOCKET" ]; then
+ if [ -d $MONGODB_BIND_UNIX_SOCKET ]; then
+ export MONGO_URL="mongodb://$MONGODB_BIND_UNIX_SOCKET/mongodb-${MONGODB_PORT}.sock/wekan"
+ else
+ export MONGO_URL="mongodb://$SNAP_DATA/shared/$MONGODB_BIND_UNIX_SOCKET/wekan"
+ fi
+else
+ [ "x" == "x$MONGODB_BIND_IP" ] && MONGODB_BIND_IP="127.0.0.1"
+ export MONGO_URL="mongodb://$MONGODB_BIND_IP:$MONGODB_PORT/wekan"
+fi
+
+echo -e "MONGO_URL=$MONGO_URL"
+APPLICATION_DIRECTORY=$SNAP
+APPLICATION_START=main.js
+cd $APPLICATION_DIRECTORY
+$NODE_PATH/node $APPLICATION_START
diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help
new file mode 100755
index 00000000..ee565500
--- /dev/null
+++ b/snap-src/bin/wekan-help
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# first read settings
+source $SNAP/bin/wekan-read-settings &>/dev/null
+if [ "$CADDY_ENABLED" = "true" ]; then
+ # tweak port nunmber as it has been remapped
+ export PORT=${CADDY_PORT} &>/dev/null
+fi
+
+echo -e "Wekan: The open-source Trello-like kanban.\n"
+echo -e "Make sure you have connected all interfaces, check more by calling $ snap interfaces ${SNAP_NAME}"
+echo -e "\n"
+echo -e "${SNAP_NAME} has multiple services, to check status use systemctl"
+echo -e "\t$ systemctl status snap.$SNAP_NAME.*"
+echo -e "\n"
+echo -e "To make backup of wekan's database use: $ ${SNAP_NAME}.database-backup [backup file]"
+echo -e "\t backup file is optional parameter, if not passed backup is created in directory:"
+echo -e "\t\t${SNAP_COMMON}/db-backups"
+echo -e "To list existing backups in default directory: $ ${SNAP_NAME}.database-list-backups"
+echo -e "To restore wekan's database use: ${SNAP_NAME}.database-restore <path to backup>"
+echo -e "\n"
+echo -e "wekan can be configured to share mongodb with other services using content interface"
+echo -e "\t-sharing mongodb from $SNAP_NAME to other snap(s):"
+echo -e "\t\t-connect mongodb-slot with plug from corresponding snap(s)"
+echo -e "\t\t-configure corresponding service to use mongodb unix socket in shared directory, socket file name is: mongodb-$MONGODB_PORT.sock"
+echo -e "\t-sharing mongodb from other snap to $SNAP_NAME:"
+echo -e "\t\t-connect mongodb-plug with slot from snap providing mongodb"
+echo -e "\t\t-disable mongodb in $SNAP_NAME by calling: $ snap set $SNAP_NAME set disable-mongodb='true'"
+echo -e "\t\t-set mongodb-bind-unix-socket to point to serving mongodb. Use relative path inside shared directory, e.g run/mongodb-27017.sock"
+echo -e "\n"
+# parse config file for supported settings keys
+echo -e "wekan supports settings keys"
+echo -e "values can be changed by calling\n$ snap set $SNAP_NAME <key name>='<key value>'"
+echo -e "list of supported keys:"
+for key in ${keys[@]}
+do
+ default_value="DEFAULT_$key"
+ description="DESCRIPTION_$key"
+ snappy_key="KEY_$key"
+ echo -e "\t${!snappy_key}: ${!description}"
+ if [ "x" == "x${!key}" ]; then
+ echo -e "\t\tNo value set, using default value: '${!default_value}'"
+ else
+ echo -e "\t\tCurrent value set to: '${!key}', (default value: '${!default_value}')"
+ fi
+done
+
+echo -e "\n!!!! Some changes result in restart of some or all services, use with caution !!!!!"
diff --git a/snap-src/bin/wekan-read-settings b/snap-src/bin/wekan-read-settings
new file mode 100755
index 00000000..f216c2a8
--- /dev/null
+++ b/snap-src/bin/wekan-read-settings
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# read wekan config
+source $SNAP/bin/config
+
+
+for key in ${keys[@]}
+do
+ default_value="DEFAULT_$key"
+ description="DESCRIPTION_$key"
+ snappy_key="KEY_$key"
+ value=$(snapctl get ${!snappy_key})
+ if [ "x$value" == "x" ]; then
+ echo -e "$key=${!default_value} (default value)"
+ export $key=${!default_value}
+ else
+ echo -e "$key=$value"
+ export $key=$value
+ fi
+done
+
+# if caddy is enabled, do update port settings based on caddy file
+if [ "$CADDY_ENABLED" = "true" ]; then
+ echo "caddy is enabled, adjusting ports"
+ export CADDY_PORT=${PORT}
+ echo -e "CADDY_PORT=$CADDY_PORT"
+ export PORT=${CADDY_BIND_PORT}
+ echo -e "PORT=$PORT"
+fi