diff --git a/sulu-builder/Makefile b/sulu-builder/Makefile index dd3b3343d65541084339e5516b9a4a29ad06eb45..e2ea538bb6f56e1d6d58f3ee5a24e82b81fa39eb 100644 --- a/sulu-builder/Makefile +++ b/sulu-builder/Makefile @@ -152,26 +152,7 @@ define Package/${PKG_NAME}/install ifeq ($(CONFIG_PACKAGE_skopeo)$(CONFIG_PACKAGE_umoci),yy) $(CP) $(PKG_BUILD_DIR)/build/src/config/widgets/lcm-store.json $(1)/sulu/config/widgets/ endif - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_BIN) ./files/etc/config/sulu $(1)/etc/config/sulu - - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/etc/init.d/sulu $(1)/etc/init.d/sulu - - $(INSTALL_DIR) $(1)/etc/mosquitto/conf.d/ - $(INSTALL_DATA) ./files/etc/mosquitto/conf.d/obuspa.conf $(1)/etc/mosquitto/conf.d/ - $(INSTALL_DATA) ./files/etc/mosquitto/conf.d/sulu.conf $(1)/etc/mosquitto/conf.d/ - $(INSTALL_DATA) ./files/etc/mosquitto/sulu.password $(1)/etc/mosquitto/sulu.password - - $(INSTALL_DIR) $(1)/etc/nginx/conf.d - $(INSTALL_DATA) ./files/etc/nginx/conf.d/sulu.conf $(1)/etc/nginx/conf.d/ - - $(INSTALL_DIR) $(1)/etc/sulu - $(INSTALL_DATA) ./files/etc/sulu/roles.json $(1)/etc/sulu/ - $(INSTALL_BIN) ./files/etc/sulu/sulu.sh $(1)/etc/sulu/ - - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/etc/uci-defaults/99-fix-sulu-config $(1)/etc/uci-defaults/ + $(CP) ./files/* $(1)/ endef $(eval $(call BuildPackage,${PKG_NAME})) diff --git a/sulu-builder/files/etc/config/sulu b/sulu-builder/files/etc/config/sulu deleted file mode 100644 index c9ede9412dc5ab6f0f71371a2132cc3fdc7dd116..0000000000000000000000000000000000000000 --- a/sulu-builder/files/etc/config/sulu +++ /dev/null @@ -1,6 +0,0 @@ -config global 'global' - option enabled '1' - option enable_system_credentials '1' - option role_based_access '1' - list user 'admin' - list user 'user' diff --git a/sulu-builder/files/etc/init.d/sulu b/sulu-builder/files/etc/init.d/sulu index 6006b7de0776450fbeba8a5cf5b4f8bc35c4a1f8..e339542d1cb4da855f234de2963bc5e4f9786d62 100755 --- a/sulu-builder/files/etc/init.d/sulu +++ b/sulu-builder/files/etc/init.d/sulu @@ -1,41 +1,19 @@ #!/bin/sh /etc/rc.common -USE_PROCD=1 - START=99 -STOP=01 +STOP=10 -. /lib/functions.sh -. /etc/sulu/sulu.sh +USE_PROCD=1 log() { echo "${@}"|logger -t sulu.init -p debug } -validate_sulu_global_section() -{ - uci_validate_section sulu global global \ - 'enabled:bool:1' \ - 'enable_system_credentials:bool:1' \ - 'role_based_access:bool:0' -} - start_service() { - local enabled enable_system_credentials role_based_access - - config_load sulu procd_open_instance sulu - - validate_sulu_global_section || return 0; # append sulu connection injection - if [ "${enabled}" -eq "0" ]; then - procd_close_instance - return 0 - fi - - configure_sulu "${enable_system_credentials}" "${role_based_access}" 1 - update_nginx_config "${enabled}" procd_close_instance + } reload_service() { @@ -45,5 +23,5 @@ reload_service() { service_triggers() { - procd_add_reload_trigger "sulu" + procd_add_config_trigger "config.change" "obuspa" /etc/init.d/sulu reload } diff --git a/sulu-builder/files/etc/mosquitto/conf.d/sulu.conf b/sulu-builder/files/etc/mosquitto/conf.d/sulu.conf index 150f43eb735491a1c2c3568f30232fcc211dfe29..dcded9bcbca9f3e0abed506ef5cc524df4c0bb9a 100644 --- a/sulu-builder/files/etc/mosquitto/conf.d/sulu.conf +++ b/sulu-builder/files/etc/mosquitto/conf.d/sulu.conf @@ -1,4 +1,5 @@ listener 9001 protocol websockets +plugin /usr/lib/mosquitto_auth_shadow.so require_certificate false allow_anonymous false diff --git a/sulu-builder/files/etc/mosquitto/sulu.password b/sulu-builder/files/etc/mosquitto/sulu.password deleted file mode 100644 index f0e1a126738765e7b99dc530f058770857834eba..0000000000000000000000000000000000000000 --- a/sulu-builder/files/etc/mosquitto/sulu.password +++ /dev/null @@ -1 +0,0 @@ -admin:$6$OmM9kU/lYct3KJ9j$iP0WK4ezEtRm8+EAggNp7WbJFoWO0p7IUdI0v/hr1WcVHyfFAC30Pb8Csn7GqwwqI2dcmnDOAITnimo2VNe6ug== diff --git a/sulu-builder/files/etc/nginx/conf.d/sulu.conf b/sulu-builder/files/etc/nginx/conf.d/sulu.conf deleted file mode 100644 index 025139c8b5a7b9c01d985dad7a1914d3e7c769cf..0000000000000000000000000000000000000000 --- a/sulu-builder/files/etc/nginx/conf.d/sulu.conf +++ /dev/null @@ -1,25 +0,0 @@ -server { - listen 8080; - listen [::]:8080; - server_name _sulu; - root /sulu; - location /config/ { - autoindex on; - - if ($request_method = 'OPTIONS') { - add_header 'Access-Control-Allow-Origin' '*'; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; - add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; - add_header 'Access-Control-Max-Age' 1728000; - add_header 'Content-Type' 'text/plain; charset=utf-8'; - add_header 'Content-Length' 0; - return 204; - } - if ($request_method = 'GET') { - add_header 'Access-Control-Allow-Origin' '*' always; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; - add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; - add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; - } - } -} diff --git a/sulu-builder/files/etc/nginx/conf.d/sulu.locations b/sulu-builder/files/etc/nginx/conf.d/sulu.locations new file mode 100644 index 0000000000000000000000000000000000000000..97b207a4e428ed37a215901272b45bf03aaec88b --- /dev/null +++ b/sulu-builder/files/etc/nginx/conf.d/sulu.locations @@ -0,0 +1,18 @@ +location /config/ { + autoindex on; + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain; charset=utf-8'; + add_header 'Content-Length' 0; + return 204; + } + if ($request_method = 'GET') { + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; + } +} diff --git a/sulu-builder/files/etc/sulu/roles.json b/sulu-builder/files/etc/sulu/roles.json deleted file mode 100644 index 0893750f7142f8da4e485b22f216578e5211c8e3..0000000000000000000000000000000000000000 --- a/sulu-builder/files/etc/sulu/roles.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "roles": [ - { - "name": "admin", - "permission": [ - { - "object": "Device.", - "perm": [ - "PERMIT_ALL" - ] - } - ] - }, - { - "name": "user", - "permission": [ - { - "object": "Device.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO" - ] - }, - { - "object": "Device.LocalAgent.Subscription.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_ADD", - "PERMIT_SET", - "PERMIT_DEL" - ] - }, - { - "object": "Device.WiFi.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_OPER", - "PERMIT_SUBS_VAL_CHANGE", - "PERMIT_SUBS_OBJ_ADD", - "PERMIT_SUBS_OBJ_DEL", - "PERMIT_SUBS_EVT_OPER_COMP" - ] - }, - { - "object": "Device.DNS.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_OPER", - "PERMIT_SUBS_VAL_CHANGE", - "PERMIT_SUBS_OBJ_ADD", - "PERMIT_SUBS_OBJ_DEL", - "PERMIT_SUBS_EVT_OPER_COMP" - ] - }, - { - "object": "Device.IP.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_OPER", - "PERMIT_SUBS_VAL_CHANGE", - "PERMIT_SUBS_OBJ_ADD", - "PERMIT_SUBS_OBJ_DEL", - "PERMIT_SUBS_EVT_OPER_COMP" - ] - } - ] - }, - { - "name": "undefined-1" - }, - { - "name": "undefined-2" - }, - { - "name": "undefined-3" - }, - { - "name": "undefined-4" - } - ] -} diff --git a/sulu-builder/files/etc/sulu/sulu.sh b/sulu-builder/files/etc/sulu/sulu.sh deleted file mode 100644 index 6f888c23cc3c08163c25fcdc3dc42e6aa2f23259..0000000000000000000000000000000000000000 --- a/sulu-builder/files/etc/sulu/sulu.sh +++ /dev/null @@ -1,378 +0,0 @@ -#!/bin/sh - -. /lib/functions.sh - -SULU_CONFIG="/sulu/config/connectionConfig.json" -ACL_FILE="/tmp/sulu/mqtt.acl" -MB_SULU_CONF="/etc/mosquitto/conf.d/sulu.conf" -_RESTART_SERVICES="0" - -mkdir -p /tmp/sulu/ - -function slog() -{ - echo "$*" |logger -t sulu.init -p debug -} - -function _get_agent_id() -{ - local oui serial endpointid - - endpointid="$(uci_get obuspa localagent EndpointID)" - if [ -z "${endpointid}" ]; then - oui="$(db -q get device.deviceinfo.ManufacturerOUI)" - serial="$(db -q get device.deviceinfo.SerialNumber)" - echo "${oui}-${serial}" - else - echo "$(echo "${endpointid/::/,}"|cut -d "," -f 2)" - fi -} - -function _get_endpoint_id() -{ - local oui serial endpointid - - endpointid="$(uci_get obuspa localagent EndpointID)" - if [ -z "${endpointid}" ]; then - oui="$(db -q get device.deviceinfo.ManufacturerOUI)" - serial="$(db -q get device.deviceinfo.SerialNumber)" - echo "os::${oui}-${serial}" - else - echo "${endpointid}" - fi -} - -function _get_sulu_users() -{ - echo "$(uci -q get sulu.global.user)" -} - -function generate_sulu_conn_config() -{ - local rbac users - - rbac="${1}" - users="$(_get_sulu_users)" - - json_init; - if [ "${rbac}" -eq "1" ]; then - json_add_string 'currentConnection' 'rbac'; - else - json_add_string 'currentConnection' 'main'; - fi - json_add_object 'connections'; - json_add_object 'rbac'; - json_add_string 'toId' "$(_get_endpoint_id)"; - json_add_int 'port' 9001; - json_add_string 'protocol' 'ws'; - json_add_array 'auth'; - json_close_array; - - json_add_object 'overrides'; - for f in ${users}; do - json_add_object "${f}"; - json_add_string 'fromId' "self::sulu-${f}"; - json_add_string 'publishEndpoint' "/usp/$(_get_agent_id)/${f}/endpoint"; - json_add_string 'subscribeEndpoint' "/usp/$(_get_agent_id)/${f}/controller"; - json_close_object; - done - json_close_object; - json_close_object; - - # add the default connection - json_add_object 'main'; - json_add_string 'fromId' 'proto::interop-usp-controller'; - json_add_string 'toId' "$(_get_endpoint_id)"; - json_add_int 'port' 9001; - json_add_string 'protocol' 'ws'; - json_add_string 'publishEndpoint' "/usp/endpoint"; - json_add_string 'subscribeEndpoint' "/usp/controller"; - json_add_array 'auth'; - json_close_array; - json_close_object; - json_close_object; - - json_dump > ${SULU_CONFIG} -} - -function set_sulu_connection_mode() -{ - local rbac profile config - - rbac="${1}" - - profile="$(jq '.currentConnection' ${SULU_CONFIG})" - if [ "$rbac" -eq "1" -a "${profile}" == "\"main\"" ]; then - config="$(jq '.currentConnection = "rbac"' ${SULU_CONFIG})" - echo "${config}" > ${SULU_CONFIG} - elif [ "$rbac" -eq "0" -a "${profile}" == "\"rbac\"" ]; then - config="$(jq '.currentConnection = "main"' ${SULU_CONFIG})" - echo "${config}" > ${SULU_CONFIG} - fi -} -function _update_obuspa_config() -{ - local restart - - restart=0 - if ! uci_get obuspa localmqtt >/dev/null 2>&1; then - uci_add obuspa mqtt localmqtt - uci_set obuspa localmqtt BrokerAddress "127.0.0.1" - uci_set obuspa localmqtt BrokerPort "1883" - uci_set obuspa localmqtt TransportProtocol "TCP/IP" - restart=1 - fi - - if ! uci_get obuspa agent_mtp >/dev/null 2>&1; then - uci_add obuspa mtp agent_mtp - uci_set obuspa agent_mtp Protocol "MQTT" - uci_set obuspa agent_mtp ResponseTopicConfigured "/usp/endpoint" - uci_set obuspa agent_mtp mqtt "localmqtt" - restart=1 - fi - - if ! uci_get obuspa localcontroller >/dev/null 2>&1; then - uci_add obuspa controller localcontroller - uci_set obuspa localcontroller EndpointID "proto::interop-usp-controller" - uci_set obuspa localcontroller Protocol "MQTT" - uci_set obuspa localcontroller Topic "/usp/controller" - uci_set obuspa localcontroller mqtt "localmqtt" - uci_set obuspa localcontroller assigned_role_name "full_access" - restart=1 - fi - return "${restart}" -} - -function _remove_obuspa_config() -{ - local restart - - restart=0 - if [ "$(uci_get obuspa localmqtt)" == "mqtt" ]; then - uci_remove obuspa localmqtt - restart=1 - fi - if [ "$(uci_get obuspa agent_mtp)" == "mtp" ]; then - uci_remove obuspa agent_mtp - restart=1 - fi - if [ "$(uci_get obuspa localcontroller)" == "controller" ]; then - uci_remove obuspa localcontroller - restart=1 - fi - return "${restart}" -} - -function _update_obuspa_config_rbac() { - local agent users restart - - agent="$(_get_agent_id)" - users="$(_get_sulu_users)" - restart=0 - - for f in ${users}; do - local sec - - # Add mqtt - sec="mqtt_sulu_${f}" - if ! uci_get obuspa mqtt ${sec} >/dev/null 2>&1; then - uci_add obuspa mqtt ${sec} - uci_set obuspa ${sec} BrokerAddress "127.0.0.1" - uci_set obuspa ${sec} BrokerPort "1883" - uci_set obuspa ${sec} TransportProtocol "TCP/IP" - restart=1 - fi - - # Add mtp - sec="mtp_sulu_${f}" - if ! uci_get obuspa mtp ${sec} >/dev/null 2>&1; then - uci_add obuspa mtp ${sec} - uci_set obuspa ${sec} Protocol "MQTT" - uci_set obuspa ${sec} ResponseTopicConfigured "/usp/${agent}/${f}/endpoint" - uci_set obuspa ${sec} mqtt "mqtt_sulu_$f" - restart=1 - fi - - # Add controller - sec="controller_sulu_${f}" - if ! uci_get obuspa controller ${sec} >/dev/null 2>&1; then - uci_add obuspa controller ${sec} - uci_set obuspa ${sec} EndpointID "self::sulu-${f}" - uci_set obuspa ${sec} Protocol "MQTT" - uci_set obuspa ${sec} Topic "/usp/${agent}/${f}/controller" - uci_set obuspa ${sec} mqtt "mqtt_sulu_$f" - uci_set obuspa ${sec} assigned_role_name "$f" - restart=1 - fi - done - if [ -f "/etc/sulu/roles.json" ]; then - uci_set obuspa global role_file "/etc/sulu/roles.json" - fi - return "${restart}" -} - -function _remove_sulu_sec() -{ - local sec - - if [[ "${1}" == *"_sulu_"* ]]; then - uci_remove obuspa ${1} - return 1 - fi - return 0 -} - -function _remove_obuspa_config_rbac() -{ - local restart - - restart=0 - config_foreach _remove_sulu_sec mqtt - restart="$(( restart + $? ))" - config_foreach _remove_sulu_sec mtp - restart="$(( restart + $? ))" - config_foreach _remove_sulu_sec controller - restart="$(( restart + $? ))" - uci_set obuspa global role_file "" - - return "${restart}" -} - -function _create_acl() { - local agentid rbac users - - rbac="${1:-0}" - - [ -f "${ACL_FILE}" ] && rm -f "${ACL_FILE}" - - if [ "${rbac}" -eq "0" ]; then - return 0; - fi - - agentid="$(_get_agent_id)" - users="$(_get_sulu_users)" - for f in ${users}; do - echo "user ${f}" >> ${ACL_FILE} - echo "topic read /usp/${agentid}/${f}/controller/reply-to/#" >> ${ACL_FILE} - echo "topic write /usp/${agentid}/${f}/endpoint/#" >> ${ACL_FILE} - echo "topic read /usp/${agentid}/${f}/controller/#" >> ${ACL_FILE} - echo "" >> ${ACL_FILE} - done -} - -function update_mosquitto_broker_config() -{ - local system_cred rbac restart - - system_cred="${1}" - rbac="${2}" - restart=0 - - if [ "${system_cred}" -eq "1" ]; then - if grep -q "password_file " ${MB_SULU_CONF}; then - sed -i '/password_file /d' ${MB_SULU_CONF} - restart=1 - fi - if ! grep -q "plugin .*mosquitto_auth_shadow.so" ${MB_SULU_CONF}; then - echo "plugin /usr/lib/mosquitto_auth_shadow.so" >> ${MB_SULU_CONF} - restart=1 - fi - else - if grep -q 'plugin .*mosquitto_auth_shadow.so' ${MB_SULU_CONF}; then - sed -i '/plugin .*mosquitto_auth_shadow.so/d' ${MB_SULU_CONF} - restart=1 - fi - if ! grep -q "password_file /etc/mosquitto/sulu.password" ${MB_SULU_CONF}; then - echo "password_file /etc/mosquitto/sulu.password" >> ${MB_SULU_CONF} - restart=1 - fi - fi - - if [ "${rbac}" -eq "1" ]; then - _create_acl "${rbac}" - if ! grep -q "acl_file ${ACL_FILE}" ${MB_SULU_CONF}; then - echo "acl_file ${ACL_FILE}" >> ${MB_SULU_CONF} - restart=1 - fi - else - if grep -q "acl_file ${ACL_FILE}" ${MB_SULU_CONF}; then - sed -i '/acl_file /d' ${MB_SULU_CONF} - restart=1 - fi - fi - - if [ "${_RESTART_SERVICES}" -eq "1" -a "${restart}" -eq "1" ]; then - slog "Restarting mqtt broker..." - /etc/init.d/mosquitto restart & - fi -} - -function update_obuspa_config() -{ - local rbac restart - - rbac="${1}" - restart=0 - - uci_load obuspa - if [ "${rbac}" -eq "1" ]; then - _remove_obuspa_config - restart="$(( restart + $? ))" - _update_obuspa_config_rbac - restart="$(( restart + $? ))" - else - _remove_obuspa_config_rbac - restart="$(( restart + $? ))" - _update_obuspa_config - restart="$(( restart + $? ))" - fi - uci_commit obuspa - - if [ "${_RESTART_SERVICES}" -eq "1" -a "${restart}" -gt "0" ]; then - slog "Restarting obuspa..." - ubus call uci commit '{"config":"obuspa"}' - fi -} - -function update_nginx_config() -{ - local enabled restart - - restart=0 - enabled="${1:-0}" - if [ "${enabled}" -eq "1" ]; then - if [ ! -f "/etc/nginx/conf.d/sulu.conf" ]; then - cp /etc/sulu/nginx.conf /etc/nginx/conf.d/sulu.conf - restart=1 - fi - else - if [ -f "/etc/nginx/conf.d/sulu.conf" ]; then - rm -f /etc/nginx/conf.d/sulu.conf - restart=1 - fi - fi - if [ "${_RESTART_SERVICES}" -eq "1" -a "${restart}" -eq "1" ]; then - slog "Restarting nginx..." - ubus call uci commit '{"config":"nginx"}' - fi -} - -function configure_sulu() -{ - local sys_cred rbac restart - - sys_cred="${1}" - rbac="${2}" - restart="${3:-0}" - - if [ -z "${sys_cred}" -o -z "${rbac}" ]; then - slog "Invalid inputs" - return 0 - fi - - _RESTART_SERVICES="${restart}" - - update_mosquitto_broker_config "${sys_cred}" "${rbac}" - set_sulu_connection_mode "${rbac}" - update_obuspa_config "${rbac}" -} diff --git a/sulu-builder/files/etc/uci-defaults/90-sulu-set-nginx-conf b/sulu-builder/files/etc/uci-defaults/90-sulu-set-nginx-conf new file mode 100644 index 0000000000000000000000000000000000000000..7b74aabaf3c474a55c19a455377feba17430c879 --- /dev/null +++ b/sulu-builder/files/etc/uci-defaults/90-sulu-set-nginx-conf @@ -0,0 +1,10 @@ +mkdir -p /tmp/sulu + +uci -q get nginx._sulu && exit 0 + +uci -q set nginx._sulu=server +uci -q add_list nginx._sulu.listen='8080' +uci -q add_list nginx._sulu.listen='[::]:8080' +uci -q set nginx._sulu.root='/sulu' +uci -q set nginx._sulu.server_name='_sulu' +uci -q add_list nginx._sulu.include='conf.d/sulu.locations' diff --git a/sulu-builder/files/etc/uci-defaults/99-fix-sulu-config b/sulu-builder/files/etc/uci-defaults/99-fix-sulu-config deleted file mode 100644 index 8db027ef985ac2c0dca86f71552c4aa86d96d72a..0000000000000000000000000000000000000000 --- a/sulu-builder/files/etc/uci-defaults/99-fix-sulu-config +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. /etc/sulu/sulu.sh - -config_load sulu -config_get enable_system_credentials global enable_system_credentials 1 -config_get role_based_access global role_based_access 0 -config_get enabled global enabled 0 - -configure_sulu "${enable_system_credentials}" "${role_based_access}" 0 -update_nginx_config "${enabled}" -generate_sulu_conn_config "${role_based_access}" diff --git a/sulu/Makefile b/sulu/Makefile index dff40ae6f872321828a0473276ffbde80b3ef1c4..a11877783024acbfe6d6e3d97e2797f02e008038 100644 --- a/sulu/Makefile +++ b/sulu/Makefile @@ -35,7 +35,11 @@ define Package/sulu/description endef define Package/sulu/install + $(INSTALL_DIR) $(1)/sulu + $(INSTALL_DIR) $(1)/sulu/config $(INSTALL_DIR) $(1)/sulu/config/widgets + $(INSTALL_DIR) $(1)/etc/nginx/ + $(INSTALL_DIR) $(1)/etc/mosquitto/conf.d/ $(CP) $(PKG_BUILD_DIR)/dist/* $(1)/sulu $(CP) $(PKG_BUILD_DIR)/config/*.json $(1)/sulu/config $(CP) $(PKG_BUILD_DIR)/config/widgets/diagnostics.json $(1)/sulu/config/widgets/ @@ -43,26 +47,7 @@ define Package/sulu/install ifeq ($(CONFIG_PACKAGE_skopeo)$(CONFIG_PACKAGE_umoci),yy) $(CP) $(PKG_BUILD_DIR)/config/widgets/lcm-store.json $(1)/sulu/config/widgets/ endif - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_BIN) ./files/etc/config/sulu $(1)/etc/config/sulu - - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/etc/init.d/sulu $(1)/etc/init.d/sulu - - $(INSTALL_DIR) $(1)/etc/mosquitto/conf.d/ - $(INSTALL_DATA) ./files/etc/mosquitto/conf.d/obuspa.conf $(1)/etc/mosquitto/conf.d/ - $(INSTALL_DATA) ./files/etc/mosquitto/conf.d/sulu.conf $(1)/etc/mosquitto/conf.d/ - $(INSTALL_DATA) ./files/etc/mosquitto/sulu.password $(1)/etc/mosquitto/sulu.password - - $(INSTALL_DIR) $(1)/etc/nginx/conf.d - $(INSTALL_DATA) ./files/etc/nginx/conf.d/sulu.conf $(1)/etc/nginx/conf.d/ - - $(INSTALL_DIR) $(1)/etc/sulu - $(INSTALL_DATA) ./files/etc/sulu/roles.json $(1)/etc/sulu/ - $(INSTALL_BIN) ./files/etc/sulu/sulu.sh $(1)/etc/sulu/ - - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/etc/uci-defaults/99-fix-sulu-config $(1)/etc/uci-defaults/ + $(CP) ./files/* $(1)/ endef $(eval $(call BuildPackage,sulu)) diff --git a/sulu/files/etc/config/sulu b/sulu/files/etc/config/sulu deleted file mode 100644 index c9ede9412dc5ab6f0f71371a2132cc3fdc7dd116..0000000000000000000000000000000000000000 --- a/sulu/files/etc/config/sulu +++ /dev/null @@ -1,6 +0,0 @@ -config global 'global' - option enabled '1' - option enable_system_credentials '1' - option role_based_access '1' - list user 'admin' - list user 'user' diff --git a/sulu/files/etc/init.d/sulu b/sulu/files/etc/init.d/sulu index 6006b7de0776450fbeba8a5cf5b4f8bc35c4a1f8..e339542d1cb4da855f234de2963bc5e4f9786d62 100755 --- a/sulu/files/etc/init.d/sulu +++ b/sulu/files/etc/init.d/sulu @@ -1,41 +1,19 @@ #!/bin/sh /etc/rc.common -USE_PROCD=1 - START=99 -STOP=01 +STOP=10 -. /lib/functions.sh -. /etc/sulu/sulu.sh +USE_PROCD=1 log() { echo "${@}"|logger -t sulu.init -p debug } -validate_sulu_global_section() -{ - uci_validate_section sulu global global \ - 'enabled:bool:1' \ - 'enable_system_credentials:bool:1' \ - 'role_based_access:bool:0' -} - start_service() { - local enabled enable_system_credentials role_based_access - - config_load sulu procd_open_instance sulu - - validate_sulu_global_section || return 0; # append sulu connection injection - if [ "${enabled}" -eq "0" ]; then - procd_close_instance - return 0 - fi - - configure_sulu "${enable_system_credentials}" "${role_based_access}" 1 - update_nginx_config "${enabled}" procd_close_instance + } reload_service() { @@ -45,5 +23,5 @@ reload_service() { service_triggers() { - procd_add_reload_trigger "sulu" + procd_add_config_trigger "config.change" "obuspa" /etc/init.d/sulu reload } diff --git a/sulu/files/etc/mosquitto/conf.d/sulu.conf b/sulu/files/etc/mosquitto/conf.d/sulu.conf index 150f43eb735491a1c2c3568f30232fcc211dfe29..dcded9bcbca9f3e0abed506ef5cc524df4c0bb9a 100644 --- a/sulu/files/etc/mosquitto/conf.d/sulu.conf +++ b/sulu/files/etc/mosquitto/conf.d/sulu.conf @@ -1,4 +1,5 @@ listener 9001 protocol websockets +plugin /usr/lib/mosquitto_auth_shadow.so require_certificate false allow_anonymous false diff --git a/sulu/files/etc/mosquitto/sulu.password b/sulu/files/etc/mosquitto/sulu.password deleted file mode 100644 index f0e1a126738765e7b99dc530f058770857834eba..0000000000000000000000000000000000000000 --- a/sulu/files/etc/mosquitto/sulu.password +++ /dev/null @@ -1 +0,0 @@ -admin:$6$OmM9kU/lYct3KJ9j$iP0WK4ezEtRm8+EAggNp7WbJFoWO0p7IUdI0v/hr1WcVHyfFAC30Pb8Csn7GqwwqI2dcmnDOAITnimo2VNe6ug== diff --git a/sulu/files/etc/nginx/conf.d/sulu.conf b/sulu/files/etc/nginx/conf.d/sulu.conf deleted file mode 100644 index 025139c8b5a7b9c01d985dad7a1914d3e7c769cf..0000000000000000000000000000000000000000 --- a/sulu/files/etc/nginx/conf.d/sulu.conf +++ /dev/null @@ -1,25 +0,0 @@ -server { - listen 8080; - listen [::]:8080; - server_name _sulu; - root /sulu; - location /config/ { - autoindex on; - - if ($request_method = 'OPTIONS') { - add_header 'Access-Control-Allow-Origin' '*'; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; - add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; - add_header 'Access-Control-Max-Age' 1728000; - add_header 'Content-Type' 'text/plain; charset=utf-8'; - add_header 'Content-Length' 0; - return 204; - } - if ($request_method = 'GET') { - add_header 'Access-Control-Allow-Origin' '*' always; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; - add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; - add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; - } - } -} diff --git a/sulu/files/etc/nginx/conf.d/sulu.locations b/sulu/files/etc/nginx/conf.d/sulu.locations new file mode 100644 index 0000000000000000000000000000000000000000..97b207a4e428ed37a215901272b45bf03aaec88b --- /dev/null +++ b/sulu/files/etc/nginx/conf.d/sulu.locations @@ -0,0 +1,18 @@ +location /config/ { + autoindex on; + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain; charset=utf-8'; + add_header 'Content-Length' 0; + return 204; + } + if ($request_method = 'GET') { + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; + } +} diff --git a/sulu/files/etc/sulu/roles.json b/sulu/files/etc/sulu/roles.json deleted file mode 100644 index 0893750f7142f8da4e485b22f216578e5211c8e3..0000000000000000000000000000000000000000 --- a/sulu/files/etc/sulu/roles.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "roles": [ - { - "name": "admin", - "permission": [ - { - "object": "Device.", - "perm": [ - "PERMIT_ALL" - ] - } - ] - }, - { - "name": "user", - "permission": [ - { - "object": "Device.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO" - ] - }, - { - "object": "Device.LocalAgent.Subscription.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_ADD", - "PERMIT_SET", - "PERMIT_DEL" - ] - }, - { - "object": "Device.WiFi.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_OPER", - "PERMIT_SUBS_VAL_CHANGE", - "PERMIT_SUBS_OBJ_ADD", - "PERMIT_SUBS_OBJ_DEL", - "PERMIT_SUBS_EVT_OPER_COMP" - ] - }, - { - "object": "Device.DNS.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_OPER", - "PERMIT_SUBS_VAL_CHANGE", - "PERMIT_SUBS_OBJ_ADD", - "PERMIT_SUBS_OBJ_DEL", - "PERMIT_SUBS_EVT_OPER_COMP" - ] - }, - { - "object": "Device.IP.", - "perm": [ - "PERMIT_GET", - "PERMIT_GET_INST", - "PERMIT_OBJ_INFO", - "PERMIT_CMD_INFO", - "PERMIT_OPER", - "PERMIT_SUBS_VAL_CHANGE", - "PERMIT_SUBS_OBJ_ADD", - "PERMIT_SUBS_OBJ_DEL", - "PERMIT_SUBS_EVT_OPER_COMP" - ] - } - ] - }, - { - "name": "undefined-1" - }, - { - "name": "undefined-2" - }, - { - "name": "undefined-3" - }, - { - "name": "undefined-4" - } - ] -} diff --git a/sulu/files/etc/sulu/sulu.sh b/sulu/files/etc/sulu/sulu.sh deleted file mode 100644 index 6f888c23cc3c08163c25fcdc3dc42e6aa2f23259..0000000000000000000000000000000000000000 --- a/sulu/files/etc/sulu/sulu.sh +++ /dev/null @@ -1,378 +0,0 @@ -#!/bin/sh - -. /lib/functions.sh - -SULU_CONFIG="/sulu/config/connectionConfig.json" -ACL_FILE="/tmp/sulu/mqtt.acl" -MB_SULU_CONF="/etc/mosquitto/conf.d/sulu.conf" -_RESTART_SERVICES="0" - -mkdir -p /tmp/sulu/ - -function slog() -{ - echo "$*" |logger -t sulu.init -p debug -} - -function _get_agent_id() -{ - local oui serial endpointid - - endpointid="$(uci_get obuspa localagent EndpointID)" - if [ -z "${endpointid}" ]; then - oui="$(db -q get device.deviceinfo.ManufacturerOUI)" - serial="$(db -q get device.deviceinfo.SerialNumber)" - echo "${oui}-${serial}" - else - echo "$(echo "${endpointid/::/,}"|cut -d "," -f 2)" - fi -} - -function _get_endpoint_id() -{ - local oui serial endpointid - - endpointid="$(uci_get obuspa localagent EndpointID)" - if [ -z "${endpointid}" ]; then - oui="$(db -q get device.deviceinfo.ManufacturerOUI)" - serial="$(db -q get device.deviceinfo.SerialNumber)" - echo "os::${oui}-${serial}" - else - echo "${endpointid}" - fi -} - -function _get_sulu_users() -{ - echo "$(uci -q get sulu.global.user)" -} - -function generate_sulu_conn_config() -{ - local rbac users - - rbac="${1}" - users="$(_get_sulu_users)" - - json_init; - if [ "${rbac}" -eq "1" ]; then - json_add_string 'currentConnection' 'rbac'; - else - json_add_string 'currentConnection' 'main'; - fi - json_add_object 'connections'; - json_add_object 'rbac'; - json_add_string 'toId' "$(_get_endpoint_id)"; - json_add_int 'port' 9001; - json_add_string 'protocol' 'ws'; - json_add_array 'auth'; - json_close_array; - - json_add_object 'overrides'; - for f in ${users}; do - json_add_object "${f}"; - json_add_string 'fromId' "self::sulu-${f}"; - json_add_string 'publishEndpoint' "/usp/$(_get_agent_id)/${f}/endpoint"; - json_add_string 'subscribeEndpoint' "/usp/$(_get_agent_id)/${f}/controller"; - json_close_object; - done - json_close_object; - json_close_object; - - # add the default connection - json_add_object 'main'; - json_add_string 'fromId' 'proto::interop-usp-controller'; - json_add_string 'toId' "$(_get_endpoint_id)"; - json_add_int 'port' 9001; - json_add_string 'protocol' 'ws'; - json_add_string 'publishEndpoint' "/usp/endpoint"; - json_add_string 'subscribeEndpoint' "/usp/controller"; - json_add_array 'auth'; - json_close_array; - json_close_object; - json_close_object; - - json_dump > ${SULU_CONFIG} -} - -function set_sulu_connection_mode() -{ - local rbac profile config - - rbac="${1}" - - profile="$(jq '.currentConnection' ${SULU_CONFIG})" - if [ "$rbac" -eq "1" -a "${profile}" == "\"main\"" ]; then - config="$(jq '.currentConnection = "rbac"' ${SULU_CONFIG})" - echo "${config}" > ${SULU_CONFIG} - elif [ "$rbac" -eq "0" -a "${profile}" == "\"rbac\"" ]; then - config="$(jq '.currentConnection = "main"' ${SULU_CONFIG})" - echo "${config}" > ${SULU_CONFIG} - fi -} -function _update_obuspa_config() -{ - local restart - - restart=0 - if ! uci_get obuspa localmqtt >/dev/null 2>&1; then - uci_add obuspa mqtt localmqtt - uci_set obuspa localmqtt BrokerAddress "127.0.0.1" - uci_set obuspa localmqtt BrokerPort "1883" - uci_set obuspa localmqtt TransportProtocol "TCP/IP" - restart=1 - fi - - if ! uci_get obuspa agent_mtp >/dev/null 2>&1; then - uci_add obuspa mtp agent_mtp - uci_set obuspa agent_mtp Protocol "MQTT" - uci_set obuspa agent_mtp ResponseTopicConfigured "/usp/endpoint" - uci_set obuspa agent_mtp mqtt "localmqtt" - restart=1 - fi - - if ! uci_get obuspa localcontroller >/dev/null 2>&1; then - uci_add obuspa controller localcontroller - uci_set obuspa localcontroller EndpointID "proto::interop-usp-controller" - uci_set obuspa localcontroller Protocol "MQTT" - uci_set obuspa localcontroller Topic "/usp/controller" - uci_set obuspa localcontroller mqtt "localmqtt" - uci_set obuspa localcontroller assigned_role_name "full_access" - restart=1 - fi - return "${restart}" -} - -function _remove_obuspa_config() -{ - local restart - - restart=0 - if [ "$(uci_get obuspa localmqtt)" == "mqtt" ]; then - uci_remove obuspa localmqtt - restart=1 - fi - if [ "$(uci_get obuspa agent_mtp)" == "mtp" ]; then - uci_remove obuspa agent_mtp - restart=1 - fi - if [ "$(uci_get obuspa localcontroller)" == "controller" ]; then - uci_remove obuspa localcontroller - restart=1 - fi - return "${restart}" -} - -function _update_obuspa_config_rbac() { - local agent users restart - - agent="$(_get_agent_id)" - users="$(_get_sulu_users)" - restart=0 - - for f in ${users}; do - local sec - - # Add mqtt - sec="mqtt_sulu_${f}" - if ! uci_get obuspa mqtt ${sec} >/dev/null 2>&1; then - uci_add obuspa mqtt ${sec} - uci_set obuspa ${sec} BrokerAddress "127.0.0.1" - uci_set obuspa ${sec} BrokerPort "1883" - uci_set obuspa ${sec} TransportProtocol "TCP/IP" - restart=1 - fi - - # Add mtp - sec="mtp_sulu_${f}" - if ! uci_get obuspa mtp ${sec} >/dev/null 2>&1; then - uci_add obuspa mtp ${sec} - uci_set obuspa ${sec} Protocol "MQTT" - uci_set obuspa ${sec} ResponseTopicConfigured "/usp/${agent}/${f}/endpoint" - uci_set obuspa ${sec} mqtt "mqtt_sulu_$f" - restart=1 - fi - - # Add controller - sec="controller_sulu_${f}" - if ! uci_get obuspa controller ${sec} >/dev/null 2>&1; then - uci_add obuspa controller ${sec} - uci_set obuspa ${sec} EndpointID "self::sulu-${f}" - uci_set obuspa ${sec} Protocol "MQTT" - uci_set obuspa ${sec} Topic "/usp/${agent}/${f}/controller" - uci_set obuspa ${sec} mqtt "mqtt_sulu_$f" - uci_set obuspa ${sec} assigned_role_name "$f" - restart=1 - fi - done - if [ -f "/etc/sulu/roles.json" ]; then - uci_set obuspa global role_file "/etc/sulu/roles.json" - fi - return "${restart}" -} - -function _remove_sulu_sec() -{ - local sec - - if [[ "${1}" == *"_sulu_"* ]]; then - uci_remove obuspa ${1} - return 1 - fi - return 0 -} - -function _remove_obuspa_config_rbac() -{ - local restart - - restart=0 - config_foreach _remove_sulu_sec mqtt - restart="$(( restart + $? ))" - config_foreach _remove_sulu_sec mtp - restart="$(( restart + $? ))" - config_foreach _remove_sulu_sec controller - restart="$(( restart + $? ))" - uci_set obuspa global role_file "" - - return "${restart}" -} - -function _create_acl() { - local agentid rbac users - - rbac="${1:-0}" - - [ -f "${ACL_FILE}" ] && rm -f "${ACL_FILE}" - - if [ "${rbac}" -eq "0" ]; then - return 0; - fi - - agentid="$(_get_agent_id)" - users="$(_get_sulu_users)" - for f in ${users}; do - echo "user ${f}" >> ${ACL_FILE} - echo "topic read /usp/${agentid}/${f}/controller/reply-to/#" >> ${ACL_FILE} - echo "topic write /usp/${agentid}/${f}/endpoint/#" >> ${ACL_FILE} - echo "topic read /usp/${agentid}/${f}/controller/#" >> ${ACL_FILE} - echo "" >> ${ACL_FILE} - done -} - -function update_mosquitto_broker_config() -{ - local system_cred rbac restart - - system_cred="${1}" - rbac="${2}" - restart=0 - - if [ "${system_cred}" -eq "1" ]; then - if grep -q "password_file " ${MB_SULU_CONF}; then - sed -i '/password_file /d' ${MB_SULU_CONF} - restart=1 - fi - if ! grep -q "plugin .*mosquitto_auth_shadow.so" ${MB_SULU_CONF}; then - echo "plugin /usr/lib/mosquitto_auth_shadow.so" >> ${MB_SULU_CONF} - restart=1 - fi - else - if grep -q 'plugin .*mosquitto_auth_shadow.so' ${MB_SULU_CONF}; then - sed -i '/plugin .*mosquitto_auth_shadow.so/d' ${MB_SULU_CONF} - restart=1 - fi - if ! grep -q "password_file /etc/mosquitto/sulu.password" ${MB_SULU_CONF}; then - echo "password_file /etc/mosquitto/sulu.password" >> ${MB_SULU_CONF} - restart=1 - fi - fi - - if [ "${rbac}" -eq "1" ]; then - _create_acl "${rbac}" - if ! grep -q "acl_file ${ACL_FILE}" ${MB_SULU_CONF}; then - echo "acl_file ${ACL_FILE}" >> ${MB_SULU_CONF} - restart=1 - fi - else - if grep -q "acl_file ${ACL_FILE}" ${MB_SULU_CONF}; then - sed -i '/acl_file /d' ${MB_SULU_CONF} - restart=1 - fi - fi - - if [ "${_RESTART_SERVICES}" -eq "1" -a "${restart}" -eq "1" ]; then - slog "Restarting mqtt broker..." - /etc/init.d/mosquitto restart & - fi -} - -function update_obuspa_config() -{ - local rbac restart - - rbac="${1}" - restart=0 - - uci_load obuspa - if [ "${rbac}" -eq "1" ]; then - _remove_obuspa_config - restart="$(( restart + $? ))" - _update_obuspa_config_rbac - restart="$(( restart + $? ))" - else - _remove_obuspa_config_rbac - restart="$(( restart + $? ))" - _update_obuspa_config - restart="$(( restart + $? ))" - fi - uci_commit obuspa - - if [ "${_RESTART_SERVICES}" -eq "1" -a "${restart}" -gt "0" ]; then - slog "Restarting obuspa..." - ubus call uci commit '{"config":"obuspa"}' - fi -} - -function update_nginx_config() -{ - local enabled restart - - restart=0 - enabled="${1:-0}" - if [ "${enabled}" -eq "1" ]; then - if [ ! -f "/etc/nginx/conf.d/sulu.conf" ]; then - cp /etc/sulu/nginx.conf /etc/nginx/conf.d/sulu.conf - restart=1 - fi - else - if [ -f "/etc/nginx/conf.d/sulu.conf" ]; then - rm -f /etc/nginx/conf.d/sulu.conf - restart=1 - fi - fi - if [ "${_RESTART_SERVICES}" -eq "1" -a "${restart}" -eq "1" ]; then - slog "Restarting nginx..." - ubus call uci commit '{"config":"nginx"}' - fi -} - -function configure_sulu() -{ - local sys_cred rbac restart - - sys_cred="${1}" - rbac="${2}" - restart="${3:-0}" - - if [ -z "${sys_cred}" -o -z "${rbac}" ]; then - slog "Invalid inputs" - return 0 - fi - - _RESTART_SERVICES="${restart}" - - update_mosquitto_broker_config "${sys_cred}" "${rbac}" - set_sulu_connection_mode "${rbac}" - update_obuspa_config "${rbac}" -} diff --git a/sulu/files/etc/uci-defaults/90-sulu-set-nginx-conf b/sulu/files/etc/uci-defaults/90-sulu-set-nginx-conf new file mode 100644 index 0000000000000000000000000000000000000000..7b74aabaf3c474a55c19a455377feba17430c879 --- /dev/null +++ b/sulu/files/etc/uci-defaults/90-sulu-set-nginx-conf @@ -0,0 +1,10 @@ +mkdir -p /tmp/sulu + +uci -q get nginx._sulu && exit 0 + +uci -q set nginx._sulu=server +uci -q add_list nginx._sulu.listen='8080' +uci -q add_list nginx._sulu.listen='[::]:8080' +uci -q set nginx._sulu.root='/sulu' +uci -q set nginx._sulu.server_name='_sulu' +uci -q add_list nginx._sulu.include='conf.d/sulu.locations' diff --git a/sulu/files/etc/uci-defaults/99-fix-sulu-config b/sulu/files/etc/uci-defaults/99-fix-sulu-config deleted file mode 100644 index 8db027ef985ac2c0dca86f71552c4aa86d96d72a..0000000000000000000000000000000000000000 --- a/sulu/files/etc/uci-defaults/99-fix-sulu-config +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. /etc/sulu/sulu.sh - -config_load sulu -config_get enable_system_credentials global enable_system_credentials 1 -config_get role_based_access global role_based_access 0 -config_get enabled global enabled 0 - -configure_sulu "${enable_system_credentials}" "${role_based_access}" 0 -update_nginx_config "${enabled}" -generate_sulu_conn_config "${role_based_access}"