diff options
Diffstat (limited to 'snap-src/bin')
-rwxr-xr-x | snap-src/bin/caddy-control | 12 | ||||
-rwxr-xr-x | snap-src/bin/config | 49 | ||||
-rwxr-xr-x | snap-src/bin/mongodb-backup | 23 | ||||
-rwxr-xr-x | snap-src/bin/mongodb-control | 31 | ||||
-rwxr-xr-x | snap-src/bin/mongodb-restore | 16 | ||||
-rwxr-xr-x | snap-src/bin/wekan-control | 23 | ||||
-rwxr-xr-x | snap-src/bin/wekan-help | 53 | ||||
-rwxr-xr-x | snap-src/bin/wekan-read-settings | 29 |
8 files changed, 236 insertions, 0 deletions
diff --git a/snap-src/bin/caddy-control b/snap-src/bin/caddy-control new file mode 100755 index 00000000..92ce70ba --- /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 + snapctl stop caddy-service 2>&1 || true + # sleep here, in case snapctl fails to stop service so we do not restart too often + sleep 60 +fi diff --git a/snap-src/bin/config b/snap-src/bin/config new file mode 100755 index 00000000..c3434c8e --- /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 mongo provided through contect interface set to relative path to the socket inside 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. 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..08af132d --- /dev/null +++ b/snap-src/bin/mongodb-control @@ -0,0 +1,31 @@ +#!/bin/bash + +# get wekan/mongo settings +source $SNAP/bin/wekan-read-settings + +if [ "true" == "${DISABLE_MONGODB}" ]; then + echo "mongodb is disabled. Not starting it" + 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..a498b9b9 --- /dev/null +++ b/snap-src/bin/wekan-help @@ -0,0 +1,53 @@ +#!/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" +echo -e "\n" +echo -e "${SNAP_NAME} has multiple services, to check status/restart/stop use systemctl" +echo -e "mongodb service:" +echo -e "\t$ sudo systemctl status/start/stop/restart snap.$SNAP_NAME.mongodb" +echo -e "wekan service" +echo -e "\t$ sudo systemctl status/start/stop/restart snap.$SNAP_NAME.wekan" +echo -e "Optional caddy service" +echo -e "\t$ sudo systemctl status/start/stop/restart snap.$SNAP_NAME.caddy" +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 |