From 2e97cc7defb1b59e392f6ce87db9e5e1837e36f0 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Fri, 10 May 2019 08:27:54 +0200 Subject: [PATCH] novnc snap now creates services specified by snap set config settings. Switched to forking daemon type to handle multiple novnc services at a time --- snap/snapcraft.yaml | 4 +++- utils/svc_wrapper.sh | 30 ++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index b05c8822..ee1d4e14 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -17,6 +17,8 @@ parts: - websockify - bash - jq + - python-numpy + - python3-numpy hooks: install: @@ -30,5 +32,5 @@ apps: plugs: [network, network-bind] novncsvc: command: utils/svc_wrapper.sh - daemon: simple + daemon: forking plugs: [network, network-bind] diff --git a/utils/svc_wrapper.sh b/utils/svc_wrapper.sh index c203fa93..51d74645 100755 --- a/utils/svc_wrapper.sh +++ b/utils/svc_wrapper.sh @@ -1,19 +1,29 @@ #!/bin/bash -echo "snactp get services is: $(snapctl get services)" - -#for service in $(snapctl get services | cut -f1 -d' ' |cut -f2 -d".") # the cut calls get only the first column and then change 'service.n6801' to 'n6801' -snapctl get services | jq -c '.[]' | while read service; do - listen_port="$(echo $service | jq '.listen')" - vnc_host_port="$(echo $service | jq '.vnc')" - - # check for valid values +# `snapctl get services` returns a JSON array, example: +#{ +#"n6801": { +# "listen": 6801, +# "vnc": "localhost:5901" +#}, +#"n6802": { +# "listen": 6802, +# "vnc": "localhost:5902" +#} +#} +snapctl get services | jq -c '.[]' | while read service; do # for each service the user sepcified.. + # get the important data for the service (listen port, VNC host:port) + listen_port="$(echo $service | jq --raw-output '.listen')" + vnc_host_port="$(echo $service | jq --raw-output '.vnc')" # --raw-output removes any quotation marks from the output + + # check whether those values are valid expr "$listen_port" : '^[0-9]\+$' > /dev/null listen_port_valid=$? if [ ! $listen_port_valid ] || [ -z "$vnc_host_port" ]; then - # invalid values mean the service is disabled, do nothing + # invalid values mean the service is disabled, do nothing except for printing a message (logged in /var/log/system or systemd journal) echo "novnc: not starting service ${service} with listen_port ${listen_port} and vnc_host_port ${vnc_host_port}" else - $SNAP/utils/launch.sh --listen $listen_port --vnc $vnc_host_port + # start (and fork with '&') the service using the specified listen port and VNC host:port + $SNAP/utils/launch.sh --listen $listen_port --vnc $vnc_host_port & fi done