startup script enhancements

This commit is contained in:
buanet
2022-02-04 16:51:41 +01:00
parent c2707f3795
commit 57c697587f
2 changed files with 101 additions and 95 deletions

View File

@@ -1,6 +1,8 @@
## Changelog ## Changelog
### v6.1.0-beta.2 (upcoming) ### v6.1.0-beta.2 (upcoming)
* remove hostname check for multihost slave
* optimize startup script logging
* adding breaks and optimizing maintenance script (fixes [#233](https://github.com/buanet/ioBroker.docker/issues/233)) * adding breaks and optimizing maintenance script (fixes [#233](https://github.com/buanet/ioBroker.docker/issues/233))
* v6.1.0-beta.1 (2021-12-23) * v6.1.0-beta.1 (2021-12-23)
* some more corrections in maintenance script ([#232 @agross](https://github.com/buanet/ioBroker.docker/pull/232)) * some more corrections in maintenance script ([#232 @agross](https://github.com/buanet/ioBroker.docker/pull/232))

View File

@@ -39,6 +39,7 @@ echo "----- Debugging information
echo "----- -----" echo "----- -----"
echo "----- System -----" echo "----- System -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" arch: $(uname -m))" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" arch: $(uname -m))" && echo " -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" hostname: $(hostname))" && echo " -----"
echo "----- -----" echo "----- -----"
echo "----- Docker-Image -----" echo "----- Docker-Image -----"
echo -n "----- " && echo -n "$(printf "%-20s %-28s" image: ${VERSION})" && echo " -----" echo -n "----- " && echo -n "$(printf "%-20s %-28s" image: ${VERSION})" && echo " -----"
@@ -140,7 +141,7 @@ then
then then
echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"." echo "IoBroker backup file detected in /opt/iobroker. But Multihost is set to \"slave\"."
echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over." echo "Restoring a backup is not supported on Multihost slaves. Please check configuration and start over."
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
else else
echo "IoBroker backup file detected in /opt/iobroker." echo "IoBroker backup file detected in /opt/iobroker."
@@ -197,7 +198,7 @@ echo "Done."
echo ' ' echo ' '
# checking hostname in ioBroker to match container hostname # checking hostname in ioBroker to match container hostname
if [ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] if [ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ] && [ "$multihost" != "slave" ]
then then
echo "Hostname in ioBroker does not match the hostname of this container." echo "Hostname in ioBroker does not match the hostname of this container."
echo "Updating hostname to " $(hostname)"..." echo "Updating hostname to " $(hostname)"..."
@@ -216,7 +217,7 @@ echo "$(printf -- '-%.0s' {1..80})"
echo ' ' echo ' '
echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables." echo "Some adapters have special requirements/ settings which can be activated by the use of environment variables."
echo "For more information take a look at readme.md on Github!" echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
echo ' ' echo ' '
@@ -282,161 +283,164 @@ fi
# Checking ENV for multihost setup # Checking ENV for multihost setup
# Configuring objects db host if [ "$multihost" != "" ]
if [ "$multihost" = "master" ] && [ "$objectsdbtype" = "" ] && [ "$objectsdbhost" = "" ] && [ "$objectsdbport" = "" ]
then then
echo "Checking Multihost Setup..."
echo ' '
# Configuring objects db host
if [ "$multihost" = "master" ] && [ "$objectsdbtype" = "" ] && [ "$objectsdbhost" = "" ] && [ "$objectsdbport" = "" ]
then
echo "Multihost is set as \"master\" by ENV and no external objects db is set." echo "Multihost is set as \"master\" by ENV and no external objects db is set."
echo "Setting host of objects db to \"0.0.0.0\" to allow external communication..." echo "Setting host of objects db to \"0.0.0.0\" to allow external communication..."
jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg objectsdbhost "0.0.0.0" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
echo ' ' elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ]
elif [ "$multihost" = "master" ] && [ "$objectsdbhost" = "127.0.0.1" ] then
then
echo "Multihost is set as \"master\" by ENV. But objects db host is set to \"127.0.0.1\" by ENV too." echo "Multihost is set as \"master\" by ENV. But objects db host is set to \"127.0.0.1\" by ENV too."
echo "This configuration will not work! Please change or remove ENV \"IOB_OBJECTSDB_HOST\" and start over!" echo "This configuration will not allow slaves to connect the objects db! Please change or remove ENV \"IOB_OBJECTSDB_HOST\" and start over!"
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "master" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ] elif [ "$multihost" = "master" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ]
then then
echo "Multihost is set as \"master\" by ENV and external objects db is set." echo "Multihost is set as \"master\" by ENV and external objects db is set."
echo "Skipping this step..." elif ([ "$multihost" = "slave" ] && [ "$objectsdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbport" = "" ])
echo "Done." then
echo ' '
elif ([ "$multihost" = "slave" ] && [ "$objectsdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$objectsdbport" = "" ])
then
echo "Multihost is set as \"slave\" by ENV. But no external objects db is set." echo "Multihost is set as \"slave\" by ENV. But no external objects db is set."
echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a maser objects db." echo "You have to configure ENVs \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" to connect to a maser objects db."
echo "Please check your settings and start over." echo "Please check your settings and start over."
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "slave" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ] elif [ "$multihost" = "slave" ] && [ "$objectsdbtype" != "" ] && [ "$objectsdbhost" != "" ] && [ "$objectsdbport" != "" ]
then then
echo "Multihost is set as \"slave\" by ENV and external objects db is set." echo "Multihost is set as \"slave\" by ENV and external objects db is set."
echo "Skipping this step..." elif [ "$multihost" != "" ]
echo "Done." then
echo ' '
elif [ "$multihost" != "" ]
then
echo "Multihost is set but it seems like some configuration is missing." echo "Multihost is set but it seems like some configuration is missing."
echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" correctly and start over." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_OBJECTSDB_TYPE\", \"IOB_OBJECTSDB_HOST\" and \"IOB_OBJECTSDB_PORT\" correctly and start over."
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
fi fi
#Configuring states db host echo ' '
if [ "$multihost" = "master" ] && [ "$statesdbtype" = "" ] && [ "$statesdbhost" = "" ] && [ "$statesdbport" = "" ]
then #Configuring states db host
if [ "$multihost" = "master" ] && [ "$statesdbtype" = "" ] && [ "$statesdbhost" = "" ] && [ "$statesdbport" = "" ]
then
echo "Multihost is set as \"master\" by ENV and no external states db is set." echo "Multihost is set as \"master\" by ENV and no external states db is set."
echo "Setting host of states db to \"0.0.0.0\" to allow external communication..." echo "Setting host of states db to \"0.0.0.0\" to allow external communication..."
jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg statesdbhost "0.0.0.0" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
echo ' ' elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ]
elif [ "$multihost" = "master" ] && [ "$statesdbhost" = "127.0.0.1" ] then
then
echo "Multihost is set as \"master\" by ENV. But states db host is set to \"127.0.0.1\" by ENV too." echo "Multihost is set as \"master\" by ENV. But states db host is set to \"127.0.0.1\" by ENV too."
echo "This configuration will not work! Please change or remove ENV \"IOB_STATESDB_HOST\" and start over!" echo "This configuration will not work! Please change or remove ENV \"IOB_STATESDB_HOST\" and start over!"
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "master" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ] elif [ "$multihost" = "master" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ]
then then
echo "Multihost is set as \"master\" by ENV and external states db is set." echo "Multihost is set as \"master\" by ENV and external states db is set."
echo "Skipping this step..." elif ([ "$multihost" = "slave" ] && [ "$statesdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbport" = "" ])
echo "Done." then
echo ' '
elif ([ "$multihost" = "slave" ] && [ "$statesdbtype" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbhost" = "" ]) || ([ "$multihost" = "slave" ] && [ "$statesdbport" = "" ])
then
echo "Multihost is set as \"slave\" by ENV. But no external states db is set." echo "Multihost is set as \"slave\" by ENV. But no external states db is set."
echo "You have to configure ENVs \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESDB_PORT\" to connect to a maser states db." echo "You have to configure ENVs \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESDB_PORT\" to connect to a maser states db."
echo "Please check your settings and start over." echo "Please check your settings and start over."
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
elif [ "$multihost" = "slave" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ] elif [ "$multihost" = "slave" ] && [ "$statesdbtype" != "" ] && [ "$statesdbhost" != "" ] && [ "$statesdbport" != "" ]
then then
echo "Multihost is set as \"slave\" by ENV and external states db is set." echo "Multihost is set as \"slave\" by ENV and external states db is set."
echo "Skipping this step..." elif [ "$multihost" != "" ]
echo "Done." then
echo ' '
elif [ "$multihost" != "" ]
then
echo "Multihost is set but it seems like some configuration is missing." echo "Multihost is set but it seems like some configuration is missing."
echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESTDB_PORT\" correctly and start over." echo "Please checke if you have configured the ENVs \"MULTIHOST\", \"IOB_STATESDB_TYPE\", \"IOB_STATESDB_HOST\" and \"IOB_STATESTDB_PORT\" correctly and start over."
echo "For more information see readme.md on Github (https://github.com/buanet/ioBroker.docker)." echo "For more information see ioBroker Docker Image Docs (https://docs.buanet.de/iobroker-docker-image/docs/)."
exit 1 exit 1
fi
echo ' '
echo "Done."
echo ' '
fi fi
# Checking ENVs for custom setup of objects db # Checking ENVs for custom setup of objects db
if [ "$objectsdbtype" != "" ] || [ "$objectsdbhost" != "" ] || [ "$objectsdbport" != "" ] if [ "$objectsdbtype" != "" ] || [ "$objectsdbhost" != "" ] || [ "$objectsdbport" != "" ]
then then
echo "Checking custom settings for objects db..."
echo ' '
if [ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ] if [ "$objectsdbtype" != $(jq -r '.objects.type' /opt/iobroker/iobroker-data/iobroker.json) ]
then then
echo "ENV IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation." echo "IOB_OBJECTSDB_TYPE is set and value is different from detected ioBroker installation."
echo "Setting type of objects db to \""$objectsdbtype"\"..." echo "Setting type of objects db to \""$objectsdbtype"\"..."
jq --arg objectsdbtype "$objectsdbtype" '.objects.type = $objectsdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg objectsdbtype "$objectsdbtype" '.objects.type = $objectsdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
else else
echo "ENV IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here." echo "IOB_OBJECTSDB_TYPE is set and value meets detected ioBroker installation."
fi fi
if [ "$objectsdbhost" != $(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json) ] if [ "$objectsdbhost" != $(jq -r '.objects.host' /opt/iobroker/iobroker-data/iobroker.json) ]
then then
echo "ENV IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation." echo "IOB_OBJECTSDB_HOST is set and value is different from detected ioBroker installation."
echo "Setting host of objects db to \""$objectsdbhost"\"..." echo "Setting host of objects db to \""$objectsdbhost"\"..."
jq --arg objectsdbhost "$objectsdbhost" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg objectsdbhost "$objectsdbhost" '.objects.host = $objectsdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
else else
echo "ENV IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation. Nothing to do here." echo "IOB_OBJECTSDB_HOST is set and value meets detected ioBroker installation."
fi fi
if [ "$objectsdbport" != $(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json) ] if [ "$objectsdbport" != $(jq -r '.objects.port' /opt/iobroker/iobroker-data/iobroker.json) ]
then then
echo "ENV IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation." echo "IOB_OBJECTSDB_PORT is set and value is different from detected ioBroker installation."
echo "Setting port of objects db to \""$objectsdbport"\"..." echo "Setting port of objects db to \""$objectsdbport"\"..."
jq --arg objectsdbport $objectsdbport '.objects.port = $objectsdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg objectsdbport $objectsdbport '.objects.port = $objectsdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
else else
echo "ENV IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation. Nothing to do here." echo "IOB_OBJECTSDB_PORT is set and value meets detected ioBroker installation."
fi fi
echo ' ' echo ' '
echo "Done."
echo ' '
fi fi
# Checking ENVs for custom setup of states db# # Checking ENVs for custom setup of states db#
if [ "$statesdbtype" != "" ] || [ "$statesdbhost" != "" ] || [ "$statesdbport" != "" ] if [ "$statesdbtype" != "" ] || [ "$statesdbhost" != "" ] || [ "$statesdbport" != "" ]
then then
echo "Checking custom settings for states db..."
echo ' '
if [ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ] if [ "$statesdbtype" != $(jq -r '.states.type' /opt/iobroker/iobroker-data/iobroker.json) ]
then then
echo "ENV IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation." echo "IOB_STATESDB_TYPE is set and value is different from detected ioBroker installation."
echo "Setting type of states db to \""$statesdbtype"\"..." echo "Setting type of states db to \""$statesdbtype"\"..."
jq --arg statesdbtype "$statesdbtype" '.states.type = $statesdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg statesdbtype "$statesdbtype" '.states.type = $statesdbtype' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
else else
echo "ENV IOB_STATESDB_TYPE is set and value meets detected ioBroker installation. Nothing to do here." echo "IOB_STATESDB_TYPE is set and value meets detected ioBroker installation."
fi fi
if [ "$statesdbhost" != $(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json) ] if [ "$statesdbhost" != $(jq -r '.states.host' /opt/iobroker/iobroker-data/iobroker.json) ]
then then
echo "ENV IOB_STATESDB_HOST is set and value is different from detected ioBroker installation." echo "IOB_STATESDB_HOST is set and value is different from detected ioBroker installation."
echo "Setting host of states db to \""$statesdbhost"\"..." echo "Setting host of states db to \""$statesdbhost"\"..."
jq --arg statesdbhost "$statesdbhost" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg statesdbhost "$statesdbhost" '.states.host = $statesdbhost' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
else else
echo "ENV IOB_STATESDB_HOST is set and value meets detected ioBroker installation. Nothing to do here." echo "IOB_STATESDB_HOST is set and value meets detected ioBroker installation."
fi fi
if [ "$statesdbport" != $(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json) ] if [ "$statesdbport" != $(jq -r '.states.port' /opt/iobroker/iobroker-data/iobroker.json) ]
then then
echo "ENV IOB_STATESDB_PORT is set and value is different from detected ioBroker installation." echo "IOB_STATESDB_PORT is set and value is different from detected ioBroker installation."
echo "Setting port of states db to \""$statesdbport"\"..." echo "Setting port of states db to \""$statesdbport"\"..."
jq --arg statesdbport $statesdbport '.states.port = $statesdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json jq --arg statesdbport $statesdbport '.states.port = $statesdbport' /opt/iobroker/iobroker-data/iobroker.json > /opt/iobroker/iobroker-data/iobroker.json.tmp && mv /opt/iobroker/iobroker-data/iobroker.json.tmp /opt/iobroker/iobroker-data/iobroker.json
chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json chown -R $setuid:$setgid /opt/iobroker/iobroker-data/iobroker.json && chmod 674 /opt/iobroker/iobroker-data/iobroker.json
echo "Done." echo "Done."
else else
echo "ENV IOB_STATESDB_PORT is set and value meets detected ioBroker installation. Nothing to do here." echo "IOB_STATESDB_PORT is set and value meets detected ioBroker installation."
fi fi
echo ' ' echo ' '
echo "Done."
echo ' '
fi fi