2
0
Эх сурвалжийг харах

Merge branch 'kubiko-devel' into devel

Lauri Ojansivu 7 жил өмнө
parent
commit
7498dba32c

+ 1 - 0
.gitignore

@@ -14,3 +14,4 @@ package-lock.json
 **/stage
 **/prime
 **/*.snap
+snap/.snapcraft/

+ 15 - 0
CHANGELOG.md

@@ -1,3 +1,18 @@
+# Upcoming Wekan release
+
+[Snap updates](https://github.com/wekan/wekan/pull/1495):
+
+- cleanup of snap helper scripts
+- cleanup and snapctl settings handling
+- fix for snap store auto review refusal
+- adding support for automatic restart of services when setting(s) are changed.
+  No need to call systemctl restart anymore.....
+- fixing snap set functionality
+- adding optional caddy service support ( by default caddy service is disabled),
+  it can be enabled by calling: snap set wekan caddy-enabled=true
+
+Thanks to GitHub user kubiko for contributions.
+
 # v0.76 2018-02-21 Wekan release
 
 This release adds the following new features:

+ 5 - 0
snap-src/Caddyfile

@@ -0,0 +1,5 @@
+http://:8080
+proxy / localhost:3001 {
+  websocket
+  transparent
+}

+ 12 - 0
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

+ 10 - 5
snap-src/config → snap-src/bin/config

@@ -1,12 +1,9 @@
 #!/bin/sh
 
-# store here all configuration options for wekan snap
-# read configured settings first
-SETTINGS_FILE="$SNAP_COMMON/wekan_settings.sh"
-[ -f $SETTINGS_FILE ] && . $SETTINGS_FILE
+# 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"
+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"\
@@ -42,3 +39,11 @@ 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"

+ 0 - 0
snap-src/mongodb-backup → snap-src/bin/mongodb-backup


+ 0 - 0
snap-src/mongodb-control → snap-src/bin/mongodb-control


+ 0 - 0
snap-src/mongodb-restore → snap-src/bin/mongodb-restore


+ 0 - 3
snap-src/wekan-control → snap-src/bin/wekan-control

@@ -1,8 +1,5 @@
 #!/bin/bash
 
-SYSTEMD_WEKAN_SERVICE="snap.${SNAP_NAME}.wekan"
-SYSTEMD_MONGODB_SERVICE="snap.${SNAP_NAME}.mongodb"
-
 # get wekan/mongo settings
 source $SNAP/bin/wekan-read-settings
 

+ 11 - 6
snap-src/wekan-help → snap-src/bin/wekan-help

@@ -1,15 +1,22 @@
 #!/bin/bash
 
-source $SNAP/bin/config &>/dev/null
+# 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 two services, to check status/restart/stop use systemd commands"
+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:"
@@ -42,7 +49,5 @@ do
         echo -e "\t\tCurrent value set to: '${!key}', (default value: '${!default_value}')"
     fi
 done
-echo -e "\nFor changes to take effect restart wekan service,"
-echo -e "if mongodb key was change also restart mongodb service, before restarting wekan"
-echo -e "to restart mongodb: $ sudo systemctl restart snap.$SNAP_NAME.mongodb"
-echo -e "to restart wekan:   $ sudo systemctl restart snap.$SNAP_NAME.wekan"
+
+echo -e "\n!!!! Some changes result in restart of some or all services, use with caution !!!!!"

+ 29 - 0
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

+ 0 - 36
snap-src/wekan-read-settings

@@ -1,36 +0,0 @@
-#!/bin/sh
-
-# read wekan config
-source $SNAP/bin/config
-
-# TODO: uncomment following, once snapctl can be called from outside the hooks
-# for key in ${keys[@]}
-# do
-#   # snappy is picky about key syntax, using mapping
-#   MAP_KEY="KEY_$key"
-#   SNAPPY_KEY=
-#   if value=$(snapctl get ${!MAP_KEY}); then
-#       echo "$key='$value'"
-#       export $key=$value
-#   else
-#       # use default value
-#       default_value="DEFAULT_$key"
-#       echo "using default value: $key='${!default_value}'"
-#       export $key=${!default_value}
-#   fi
-# done
-
-# TODO: get rid of this workaround once above can be used
-# loop through all values, and if not defined, use default value
-for key in ${keys[@]}
-do
-  if [ "x" ==  "x${!key}" ]; then
-      # use default value
-      default_value="DEFAULT_$key"
-      echo "using default value: $key='${!default_value}'"
-      export $key=${!default_value}
-      # echo "export $key='${!def_value}'" >> $SETTINGS_FILE
-  else
-      echo "$key='${!key}'"
-  fi
-done

+ 19 - 25
snap/hooks/configure

@@ -1,32 +1,26 @@
 #!/bin/bash
 
+exec >> $SNAP_COMMON/hook.log 2>&1
+echo "$(date '+%Y-%m-%d %H:%M:%S') $0: Entering hook"
+
+set -x
+
 # read wekan config
 . $SNAP/bin/config
 
-# create run dir, we're going to use it for unix socket
-mkdir -p $SNAP_DATA/share
-mkdir -p $SNAP_DATA/shared
-
 # settings were altered by user, safest way to get them applied is to restart service
+# first check if caddy service is enabled
+value=$(snapctl get caddy-enabled)
+if [ "$value" = "true" ]; then
+    # update caddy file
+    bind_port=$(snapctl get caddy-bind-port)
+    port=$(snapctl get port)
+    [ "x" != "x${bind_port}" ] && sed -i 's|proxy / localhost:.* {|proxy / localhost:'"${bind_port}"' {|g' $SNAP_COMMON/Caddyfile
+    [ "x" != "x$port" ] && sed -i 's|http://:.*|http://:'"${port}"'|g' $SNAP_COMMON/Caddyfile
+    snapctl start --enable ${SNAP_NAME}.caddy 2>&1 || true
+else
+    snapctl stop --disable ${SNAP_NAME}.caddy 2>&1 || true
+fi
 
-# TODO: remove this workaround once it's not needed
-# for the moment we can't read settings outside of the hook,
-# so store all settings in helpper script which is then picked by main wrapper
-echo -e "#!/bin/sh\n" > $SETTINGS_FILE
-for key in ${keys[@]}
-do
-  # snappy is picky about key syntax, using mapping
-  MAP_KEY="KEY_$key"
-  if value=$(snapctl get ${!MAP_KEY}); then
-      echo "export $key='$value'" >> $SETTINGS_FILE
-  elif [ -d "${!key}" ]; then
-      # store back value from SETTINGS_FILE
-      echo "export $key='${!key}'" >> $SETTINGS_FILE
-  fi
-done
-
-# set file executable
-chmod 755 $SETTINGS_FILE
-# we can't use snapctl to restart service, may be one day ....
-
-echo "Setting has been updated, restart service."
+# restart all services
+snapctl restart ${SNAP_NAME} 2>&1 || true

+ 12 - 0
snap/hooks/install

@@ -0,0 +1,12 @@
+#!/bin/bash
+
+exec >> $SNAP_COMMON/hook.log 2>&1
+echo "$(date '+%Y-%m-%d %H:%M:%S') $0: Entering hook"
+
+# coppy caddy file in place
+[ ! -e $SNAP_COMMON/Caddyfile ] && cp $SNAP/Caddyfile $SNAP_COMMON/Caddyfile
+
+# create run dir, we're going to use it for unix socket
+mkdir -p $SNAP_DATA/share
+mkdir -p $SNAP_DATA/shared
+

+ 1 - 0
snap/hooks/post-refresh

@@ -0,0 +1 @@
+install

+ 19 - 7
snapcraft.yaml

@@ -38,6 +38,11 @@ apps:
         daemon: simple
         plugs: [network, network-bind]
 
+    caddy:
+        command: caddy-control
+        daemon: simple
+        plugs: [network, network-bind]
+
     help:
         command: wekan-help
 
@@ -85,6 +90,7 @@ parts:
             - npm
             - curl
             - paxctl
+            - execstack
         prepare: |
             echo "Cleaning environment first"
             rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
@@ -118,17 +124,23 @@ parts:
             cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
             cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
             rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
+            execstack --clear-execstack $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
         organize:
             README: README.wekan
 
     helpers:
         source: snap-src
         plugin: dump
+
+    caddy:
+        plugin: dump
+        source: https://caddyserver.com/download/linux/amd64?plugins=
+        source-type: tar
         organize:
-            wekan-control: bin/wekan-control
-            mongodb-control: bin/mongodb-control
-            wekan-read-settings: bin/wekan-read-settings
-            wekan-help: bin/wekan-help
-            mongodb-backup: bin/mongodb-backup
-            mongodb-restore: bin/mongodb-restore
-            config: bin/config
+          caddy: bin/caddy
+          CHANGES.txt: CADDY_CHANGES.txt
+          EULA.txt: CADDY_EULA.txt
+          LICENSES.txt: CADDY_LICENSES.txt
+          README.txt: CADDY_README.txt
+        stage:
+          - -init