diff --git a/rootfs/back/cont-init.d/50-vrs b/rootfs/back/cont-init.d/50-vrs
new file mode 100755
index 0000000..96270bf
--- /dev/null
+++ b/rootfs/back/cont-init.d/50-vrs
@@ -0,0 +1,129 @@
+#!/usr/bin/with-contenv bash
+#shellcheck shell=bash disable=SC2034,SC2164,SC2015
+
+APPNAME="$(hostname)/vrs-init"
+VRS_DIR="/opt/vrs"
+VRS_EXEC="mono VirtualRadar.exe"
+VRS_CMDLINE=()
+VRS_CMDLINE+=("-nogui")
+VRS_CMDLINE+=("-createAdmin:${VRS_ADMIN_USERNAME}")
+VRS_CMDLINE+=("-password:${VRS_ADMIN_PASSWORD}")
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+#Silhouettes, OpFlags and DB
+FLAGSDB_LINK="https://github.com/rikgale/VRSData/raw/main/BaseStation.zip"
+
+#max runtime in seconds for VRS init
+MAXTIME=15
+
+#helper files for updatechecks
+ACTUALFILE="$VRS_CONFIG_DIR/commitid"
+ACTUALFILE_CM="$VRS_CONFIG_DIR/commitid_cm"
+ACTUALFILE_SQB="$VRS_CONFIG_DIR/commitid_sqb"
+
+#We need that for the update-after-fresh-install prevention
+WHICHREPO_SQB="https://api.github.com/repos/rikgale/VRSData/branches"
+WHICHBRANCH_SQB="main"
+
+#if the helper file to store the commit ID isn't there, create it empty
+touch $ACTUALFILE
+#and the same for the custom markers
+touch $ACTUALFILE_CM
+#for the database
+touch $ACTUALFILE_SQB
+
+#debugging stuff
+#echo $ACTUAL
+#echo $PROBE
+BUILD_DATE=$(cat "${VRS_DIR}"/builddate)
+
+echo "[$APPNAME][$(date)] Initializing Virtual Radar Server, build ${BUILD_DATE}..."
+
+mkdir -p "${VRS_CONFIG_DIR}/flags"
+mkdir -p "${VRS_CONFIG_DIR}/silhouettes"
+mkdir -p "${VRS_CONFIG_DIR}/photos"
+mkdir -p "${VRS_CONFIG_DIR}/db"
+mkdir -p "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"
+
+#download and install pre-filled DB for operator flags. As this should only happen once, no commit id check needed
+if [ ! -e "${VRS_CONFIG_DIR}/db/BaseStation.sqb" ]
+then
+ echo "[$APPNAME][$(date)] Downloading database for Operator Flags"
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/BaseStation.zip" ${FLAGSDB_LINK} && unzip -qq -o -d "${VRS_CONFIG_DIR}/db" "${VRS_CONFIG_DIR}/BaseStation.zip"
+ then
+ echo "[$APPNAME][$(date)] Database for Operator Flags installed successfully"
+ #that should prevent a DB update right after a fresh download
+ PROBE_SQB=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO_SQB | awk "c&&!--c;/$WHICHBRANCH_SQB/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ echo "$PROBE_SQB" > $ACTUALFILE_SQB
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE_SQB to commit ID $PROBE_SQB"
+ else
+ echo "[$APPNAME][$(date)] Database for Operator Flags not installed - failure"
+ fi
+else
+ echo "[$APPNAME][$(date)] Found an existing DB in $VRS_CONFIG_DIR, not touching anything!"
+fi
+
+#copy PluginsConfig into place if it's not there
+if [ ! -e "${VRS_CONFIG_DIR}/PluginsConfiguration.txt" ]
+ then
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt not found, adding template"
+ if cp -f /opt/vrs/PluginsConfiguration.txt "${VRS_CONFIG_DIR}/PluginsConfiguration.txt"
+ then
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt not found, adding template - OK"
+ else
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt not found, adding template - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt found, not touching anything"
+fi
+
+# Starting VRS temporarily to create a username and password if none exist
+# If VRS has been initialized previously this step will be skipped.
+# If it hasn't, a username / password and a bunch of other files will be created...
+# ...and VRS will actually stay up and run. We will shut it down after a max runtime of $MAXTIME secs.
+if [ ! -e "${VRS_CONFIG_DIR}/Configuration.xml" ]
+then
+ echo "[$APPNAME][$(date)] No Configuration.xml found, doing first run initialization."
+ cd "${VRS_DIR}"
+ # shellcheck disable=SC2068,SC2086
+ timeout "$MAXTIME" exec ${VRS_EXEC} ${VRS_CMDLINE[@]} #>/dev/null 2>&1
+ echo "[$APPNAME][$(date)] Virtual Radar Server has been initialized."
+else
+ echo "[$APPNAME][$(date)] Configuration.xml found, skipping initialization."
+fi
+
+# Replace 127.0.0.1 With ReadSB
+sed -i "s#
127.0.0.1#${VRS_SBSHOST:-readsb}#g" "${VRS_CONFIG_DIR}/Configuration.xml"
+sed -i "s#30003#${VRS_SBSPORT:-30003}#g" "${VRS_CONFIG_DIR}/Configuration.xml"
+
+#Injecting settings for silhouettes, OpFlags and DB into Configuration.xml
+if ! grep -q "" "${VRS_CONFIG_DIR}/Configuration.xml"
+then
+ sed -i "/^ .*/a \ \/root/.local/share/VirtualRadar/db/BaseStation.sqb" "${VRS_CONFIG_DIR}/Configuration.xml"
+ echo "[$APPNAME][$(date)] Added database filename to Configuration.xml"
+else
+ echo "[$APPNAME][$(date)] DatabaseFileName found, not touching config."
+fi
+
+if ! grep -q "" "${VRS_CONFIG_DIR}/Configuration.xml"
+then
+ sed -i "/^ .*/a \ \/root/.local/share/VirtualRadar/flags" "${VRS_CONFIG_DIR}/Configuration.xml"
+ echo "[$APPNAME][$(date)] Added Operator Flags folder to Configuration.xml"
+else
+ echo "[$APPNAME][$(date)] OperatorFlagsFolder found, not touching config."
+fi
+
+if ! grep -q "" "${VRS_CONFIG_DIR}/Configuration.xml"
+then
+ sed -i "/^ .*/a \ \/root/.local/share/VirtualRadar/silhouettes" "${VRS_CONFIG_DIR}/Configuration.xml"
+ echo "[$APPNAME][$(date)] Added Silhouettes folder to Configuration.xml"
+else
+ echo "[$APPNAME][$(date)] SilhouettesFolder found, not touching config."
+fi
+
+#cleanup and exit
+[[ -f "${VRS_CONFIG_DIR}/BaseStation.zip" ]] && rm -f "${VRS_CONFIG_DIR}/BaseStation.zip" || true
+echo "[$APPNAME][$(date)] Cleaned up downloaded files."
+echo "[$APPNAME][$(date)] Finished basic configuration."
+
+exit 0
diff --git a/rootfs/back/cont-init.d/60-marker b/rootfs/back/cont-init.d/60-marker
new file mode 100755
index 0000000..5cb8049
--- /dev/null
+++ b/rootfs/back/cont-init.d/60-marker
@@ -0,0 +1,77 @@
+#!/usr/bin/with-contenv bash
+# shellcheck shell=bash
+
+APPNAME="$(hostname)/vrs-ccmarker"
+#VRS_DIR="/opt/vrs"
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+
+#PluginConfig Settings (escaped)
+CCMARKER_DISABLED="%3cInjectSettings%3e%0a++++%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3etrue%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fMyMarkers1\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+CCMARKER_ENABLED="%3cInjectSettings%3e%0a++++%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3etrue%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fMyMarkers1\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+
+#Downloadlinks
+EXT_MARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1.html"
+EXT_HFDLMARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1HFDL.html"
+
+echo "[$APPNAME][$(date)] Starting CustomContent Markers script..."
+
+#Create the directory in case it's not there
+mkdir -p "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"
+
+if [[ -n "${VRS_ENHANCED_MARKERS}" ]]
+ then
+ echo "[$APPNAME][$(date)] Downloading and installing Custom Markers"
+ #normal markers
+ if [[ "${VRS_ENHANCED_MARKERS}" == "normal" ]]
+ then
+ echo "[$APPNAME][$(date)] Normal Custom markers"
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_MARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] Normal Custom marker file download - OK"
+ echo "[$APPNAME][$(date)] Injecting custom marker config into PluginsConfiguration.txt"
+ if sed -i -e "s/$CCMARKER_DISABLED/$CCMARKER_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Custom marker config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Custom marker config enabled - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] Normal Custom marker file download - Failure"
+ fi
+ #HFDL markers
+ elif [[ "${VRS_ENHANCED_MARKERS}" == "HFDL" ]] || [[ "${VRS_ENHANCED_MARKERS}" == "hfdl" ]]
+ then
+ echo "[$APPNAME][$(date)] HFDL Custom markers"
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_HFDLMARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] HFDL Custom marker file download - OK"
+ echo "[$APPNAME][$(date)] Injecting custom marker config into PluginsConfiguration.txt"
+ if sed -i -e "s/$CCMARKER_DISABLED/$CCMARKER_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Custom marker config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Custom marker config enabled - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] HFDL Custom marker file download - Failure"
+ fi
+ #disabled
+ elif [[ "${VRS_ENHANCED_MARKERS}" == "disabled" ]] || [[ "${VRS_ENHANCED_MARKERS}" == "false" ]]
+ then
+ echo "[$APPNAME][$(date)] HFDL Custom markers disabled"
+ if sed -i -e "s/$CCMARKER_ENABLED/$CCMARKER_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Custom marker config disabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Custom marker config disabled - Failure"
+ fi
+
+ else echo "[$APPNAME][$(date)] yaml setting unkown. Check readme."
+ fi
+ else
+ echo "[$APPNAME][$(date)] Custom Markers not enabled"
+fi
+
+#cleanup and exit
+exit 0
diff --git a/rootfs/back/cont-init.d/61-layer b/rootfs/back/cont-init.d/61-layer
new file mode 100755
index 0000000..3f0379b
--- /dev/null
+++ b/rootfs/back/cont-init.d/61-layer
@@ -0,0 +1,106 @@
+#!/usr/bin/with-contenv bash
+# shellcheck shell=bash
+
+APPNAME="$(hostname)/vrs-cclayer"
+#VRS_DIR="/opt/vrs"
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+
+#PluginConfig Settings (escaped)
+LAYER_EOB_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfBody\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_EOB_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfBody\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_EOH_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eHead%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfHead\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_EOH_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eHead%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfHead\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_SCALE_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fScale\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_SCALE_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fScale\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_FULLSCREEN_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fFullScreen\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_FULLSCREEN_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fFullScreen\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+
+#Downloadlinks
+EXT_LAYERS_LINK="https://github.com/rikgale/VRSCustomLayers/raw/main/VRSCustomLayers.zip"
+
+echo "[$APPNAME][$(date)] Starting CustomContent Layers script..."
+
+#Create the directory in case it's not there
+[ -d "${VRS_EXTENSION_DIR}" ] && mkdir -p "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"
+
+if [[ -n "${VRS_ENHANCED_LAYERS_COUNTRY}" ]]
+ then
+ #cleaning up first
+ cd "${VRS_EXTENSION_DIR}" || exit
+ rm "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"/*.geojson
+ echo "[$APPNAME][$(date)] Downloading and installing Enhanced Layers"
+ if curl --fail --compressed -s -L -o "${VRS_EXTENSION_DIR}/enhancedlayers.zip" ${EXT_LAYERS_LINK} &&\
+ unzip -q -o "${VRS_EXTENSION_DIR}/enhancedlayers.zip" &&\
+ rm "${VRS_EXTENSION_DIR}/enhancedlayers.zip" &&\
+ cp -r "${VRS_EXTENSION_DIR}"/VRSCustomLayers/* "${VRS_EXTENSION_DIR}" &&\
+ cp -r "${VRS_EXTENSION_DIR}"/'Put these files in VRS root folder'/* "${VRS_EXTENSION_DIR}" &&\
+ rm -r 'Put these files in VRS root folder'
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers archive download and uncompress - OK"
+ case "${VRS_ENHANCED_LAYERS_COUNTRY,,}" in
+ (uk) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/UK//' -- *.geojson
+ ;;
+ (de) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/DE//' -- *.geojson
+ ;;
+ (usa1) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/USA1//' -- *.geojson
+ ;;
+ (usaaz) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/USAAZ//' -- *.geojson
+ ;;
+ (se) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/SE//' -- *.geojson
+ ;;
+ (au) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/AU//' -- *.geojson
+ ;;
+ (*) echo "[$APPNAME][$(date)] Unknown or wrong country, default set to UK"
+ ;;
+ esac
+ if sed -i -e "s/$LAYER_EOB_DISABLED/$LAYER_EOB_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_EOH_DISABLED/$LAYER_EOH_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_SCALE_DISABLED/$LAYER_SCALE_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_FULLSCREEN_DISABLED/$LAYER_FULLSCREEN_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - Failure"
+ fi
+ if ! [[ -n "${VRS_ENHANCED_LAYERS_OPENAIP_APIKEY}" || "${VRS_ENHANCED_LAYERS_OPENWX_APIKEY}" ]]
+ then
+ echo "[$APPNAME][$(date)] VRS_ENHANCED_LAYERS_OPENAIP_APIKEY and VRS_ENHANCED_LAYERS_OPENWX_APIKEY not set. Expect those layers not to work."
+ else
+ if sed -i -e "s/##OPENWXAPIKEY##/${VRS_ENHANCED_LAYERS_OPENWX_APIKEY}/g" ${VRS_EXTENSION_DIR}/EndOfBody.html &&\
+ sed -i -e "s/##OPENAIPKEY##/${VRS_ENHANCED_LAYERS_OPENAIP_APIKEY}/g" ${VRS_EXTENSION_DIR}/EndOfBody.html
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers API Keys config injection - OK"
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers API Keys config injection - Failure"
+ fi
+ fi
+ if [[ -n "${VRS_ENHANCED_LAYERS_CONFIG}" ]]
+ then
+ #shellcheck disable=SC2001
+ sed -i "s|##EXTERNALCONFIG##|$(sed -e 's|/\*[^*]*\*/||g' <<< "${VRS_ENHANCED_LAYERS_CONFIG//[[:space:]]/}")|g" "${VRS_EXTENSION_DIR}"/EndOfBody.html
+ fi
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers archive download and uncompress - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers not set in the yaml. Exiting."
+ if sed -i -e "s/$LAYER_EOB_ENABLED/$LAYER_EOB_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_EOH_ENABLED/$LAYER_EOH_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_SCALE_ENABLED/$LAYER_SCALE_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_FULLSCREEN_ENABLED/$LAYER_FULLSCREEN_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - Failure"
+ fi
+ exit 0
+fi
+#cleanup and exit
+exit 0
diff --git a/rootfs/back/services.d/autoupdate/run b/rootfs/back/services.d/autoupdate/run
new file mode 100644
index 0000000..f03aecd
--- /dev/null
+++ b/rootfs/back/services.d/autoupdate/run
@@ -0,0 +1,324 @@
+#!/usr/bin/with-contenv bash
+#shellcheck shell=bash disable=SC2128
+
+APPNAME="$(hostname)/autoupdate"
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+export VRS_CONFIG_DIR
+
+#Silhouettes, OpFlags and DB
+SILH_LINK="https://github.com/rikgale/VRSOperatorFlags/raw/main/Silhouettes.zip"
+SILH_DV_LINK="https://github.com/rikgale/VRSOperatorFlags/raw/main/DVSilhouettes.zip"
+FLAGS_LINK="https://github.com/rikgale/VRSOperatorFlags/raw/main/OperatorFlags.zip"
+#we need a permanent variable to reset if the sils are changed
+SILH_FILE="$VRS_CONFIG_DIR/silh"
+
+#rickgales extras
+#LocalAircraft.txt
+EXT_LOCALAC_LINK="https://raw.githubusercontent.com/rikgale/LocalAircraft/main/LocalAircraft.txt"
+#ExtraMarkers
+EXT_MARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1.html"
+EXT_HFDLMARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1HFDL.html"
+
+#sqb update link
+FULLAIRCRAFT_LINK="https://github.com/rikgale/VRSData/raw/main/FullAircraft.zip"
+INCREMENTAL_UPD_LINK="https://raw.githubusercontent.com/rikgale/VRSData/main/DailyUpdates/"
+
+#Variables for optimized downloads
+WHICHREPO="https://api.github.com/repos/rikgale/VRSOperatorFlags/branches"
+WHICHBRANCH="main"
+ACTUALFILE="$VRS_CONFIG_DIR/commitid"
+#the same for CustomMarkers
+WHICHREPO_CM="https://api.github.com/repos/rikgale/VRSCustomMarkers/branches"
+WHICHBRANCH_CM="main"
+ACTUALFILE_CM="$VRS_CONFIG_DIR/commitid_cm"
+#and the sqb
+WHICHREPO_SQB="https://api.github.com/repos/rikgale/VRSData/branches"
+WHICHBRANCH_SQB="main"
+ACTUALFILE_SQB="$VRS_CONFIG_DIR/commitid_sqb"
+
+#Tine of the updatecheck. Changed from 02:20 to 03:30 to hopefully prevent any daylightsavings mishaps
+UPDATETIME="03:20"
+
+#Failsetting for the SQB Backup
+SQBFAIL=0
+
+#Give VRS a bit of time to start
+sleep 5
+
+#Who we are and what we are doing
+echo "[$APPNAME][$(date)] Autoupdate service started."
+
+#mopping up first because of some changes - incremental updates
+[[ -f "${VRS_CONFIG_DIR}/db/FullAircraft.csv" ]] && rm -f "${VRS_CONFIG_DIR}/db/FullAircraft.csv"
+
+if [[ -n "${VRS_DEBUG_NOAUTOUPDATE}" ]]
+ then
+ echo "[$APPNAME][$(date)] debugging set, exited"
+ sleep infinity
+fi
+
+#Let's go
+while true
+do
+ #lets reset this variable first
+ export FULLAIRCRAFT_NAME="none"
+ #we need these in the loop, otherwise they will never get updated
+ ACTUAL=$(<"$ACTUALFILE")
+ PROBE=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO | awk "c&&!--c;/$WHICHBRANCH/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ #The same check as above but for the custom markers
+ ACTUAL_CM=$(<"$ACTUALFILE_CM")
+ PROBE_CM=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO_CM | awk "c&&!--c;/$WHICHBRANCH_CM/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ #and the database
+ ACTUAL_SQB=$(<"$ACTUALFILE_SQB")
+ PROBE_SQB=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO_SQB | awk "c&&!--c;/$WHICHBRANCH_SQB/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ #Here are some files we're gonna update anyway, no matter of repo updates
+ echo "[$APPNAME][$(date)] Updating LocalAircraft.txt"
+ if curl --fail -s -L -o "${VRS_CONFIG_DIR}/LocalAircraft.txt" ${EXT_LOCALAC_LINK}
+ then
+ echo "[$APPNAME][$(date)] LocalAircraft.txt downloaded and installed successfully"
+ else
+ echo "[$APPNAME][$(date)] LocalAircraft.txt - failure"
+ fi
+
+ #if there is a change in the commit ID, download and install sil/opflags
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ echo "[$APPNAME][$(date)] Looking for Sil / Operator Flags updates"
+ #following is some logic to force a download of the silh files if the dv envar is changed
+ SILH_PROBE=$(<"$SILH_FILE")
+ [ -n "${VRS_SILHOUETTES_DUALVIEW}" ] && echo "dv" > $SILH_FILE || echo "sv" > $SILH_FILE
+ ACTUAL_SILH=$(<"$SILH_FILE")
+ if [[ "$SILH_PROBE" != "$ACTUAL_SILH" ]]
+ then
+ ACTUAL="reset"
+ fi
+ if [[ "$ACTUAL" != "$PROBE" ]]
+ then
+ echo "[$APPNAME][$(date)] Looks like there was an update for Sil /Operator Flags. Going to download the files"
+ echo "$PROBE" > $ACTUALFILE
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE to commit ID $PROBE"
+ if [[ -n "${VRS_SILHOUETTES_DUALVIEW}" ]]
+ then
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/silhouettesDV.zip" ${SILH_DV_LINK} && rm ${VRS_CONFIG_DIR}/silhouettes/* && unzip -u -qq -d "${VRS_CONFIG_DIR}/silhouettes" "${VRS_CONFIG_DIR}/silhouettesDV.zip"
+ then
+ echo "[$APPNAME][$(date)] Dual View Silhouettes installed successfully"
+ else
+ echo "[$APPNAME][$(date)] Dual View Silhouettes not installed - failure"
+ fi
+ fi
+ if [[ -n "${VRS_SILHOUETTES_DUALVIEW}" ]]
+ then
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/silhouettes.zip" ${SILH_LINK} && unzip -u -qq -n -d "${VRS_CONFIG_DIR}/silhouettes" "${VRS_CONFIG_DIR}/silhouettes.zip"
+ then
+ echo "[$APPNAME][$(date)] Silhouettes installed successfully - DV Setup"
+ else
+ echo "[$APPNAME][$(date)] Silhouettes not installed - DV Setup - failure"
+ fi
+ else
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/silhouettes.zip" ${SILH_LINK} && unzip -u -qq -o -d "${VRS_CONFIG_DIR}/silhouettes" "${VRS_CONFIG_DIR}/silhouettes.zip"
+ then
+ echo "[$APPNAME][$(date)] Silhouettes installed successfully"
+ else
+ echo "[$APPNAME][$(date)] Silhouettes not installed - failure"
+ fi
+ fi
+ #download and install operator flags
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/OperatorFlags.zip" ${FLAGS_LINK} && unzip -u -qq -o -d "${VRS_CONFIG_DIR}/flags" "${VRS_CONFIG_DIR}/OperatorFlags.zip"
+ then
+ echo "[$APPNAME][$(date)] Operator Flags installed successfully"
+ else
+ echo "[$APPNAME][$(date)] Operator Flags not installed - failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] No changes found, nothing was downloaded."
+ fi
+ #looking for updates of the custom markers html file
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ echo "[$APPNAME][$(date)] Looking for updates for the custom markers file"
+ if [[ "$ACTUAL_CM" != "$PROBE_CM" ]]
+ then
+ echo "[$APPNAME][$(date)] Looks like there was an update for the custom markers. Going to download the file"
+ echo "$PROBE_CM" > $ACTUALFILE_CM
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE_CM to commit ID $PROBE_CM"
+ if [[ "${VRS_ENHANCED_MARKERS}" == "normal" ]]
+ then
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_MARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] New ADSB custom marker file installed successfully"
+ else
+ echo "[$APPNAME][$(date)] New ADSB custom marker file not installed - failure"
+ fi
+ elif [[ "${VRS_ENHANCED_MARKERS}" == "HFDL" ]] || [[ "${VRS_ENHANCED_MARKERS}" == "hfdl" ]]
+ then
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_HFDLMARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] New HFDL custom marker file installed successfully"
+ else
+ echo "[$APPNAME][$(date)] New HFDL custom marker file not installed - failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] No custom markers downloaded, not set in the yaml."
+ fi
+ else
+ echo "[$APPNAME][$(date)] No changes found, nothing was downloaded."
+ fi
+ #BaseSation SQB Update
+ if [[ -n "${VRS_DB_UPDATE_POLICY_FULLAUTO}" ]]
+ then
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ echo "[$APPNAME][$(date)] Looking for updates for the BaseStation.sqb"
+ if [[ "$ACTUAL_SQB" != "$PROBE_SQB" ]]
+ then
+ echo "[$APPNAME][$(date)] Looks like there was an update for the database. Going to download the updatefile"
+ #date of yesterday portion for the filename
+ DATE_YESTERDAY=$(date -d "yesterday" -I)
+ INCREMENTAL_UPD_FILENAME="Updates_${DATE_YESTERDAY}.zip"
+ INCREMENTAL_UPD_DL_LINK="${INCREMENTAL_UPD_LINK}${INCREMENTAL_UPD_FILENAME}"
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}" "${INCREMENTAL_UPD_DL_LINK}" && FULLAIRCRAFT_NAME=$(unzip -o "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}" -d "${VRS_CONFIG_DIR}/db/" | grep inflating | awk -F "/" '{print $NF}')
+ then
+ echo "[$APPNAME][$(date)] Incremental Update file ${INCREMENTAL_UPD_DL_LINK} downloaded"
+ echo "[$APPNAME][$(date)] Filename extrated from the zip: ${FULLAIRCRAFT_NAME}"
+ export FULLAIRCRAFT_NAME
+ else
+ echo "[$APPNAME][$(date)] no incremental update file found, going to download the full update"
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/db/FullAircraft.zip" ${FULLAIRCRAFT_LINK} && FULLAIRCRAFT_NAME=$(unzip -o "${VRS_CONFIG_DIR}/db/FullAircraft.zip" -d "${VRS_CONFIG_DIR}/db/" | grep inflating | awk -F "/" '{print $NF}')
+ then
+ echo "[$APPNAME][$(date)] Download of the latest FullAircraft update file - OK"
+ echo "[$APPNAME][$(date)] Filename extrated from the zip: ${FULLAIRCRAFT_NAME}"
+ export FULLAIRCRAFT_NAME
+ else
+ echo "[$APPNAME][$(date)] Download of the latest FullAircraft update file - FAIL!"
+ SQBFAIL=1
+ fi
+ fi
+ #shutting down VRS for the DB backup and update
+# echo "[$APPNAME][$(date)] Shutting down VRS temporarily as we are going to deal with the database."
+# s6-svc -wD -d -T 5000 /run/s6/services/vrs/
+# echo "[$APPNAME][$(date)] It's dead, Jim"
+ sleep 1
+ #delete the prior backup
+# if [ -e "${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb" ]
+# then
+# mv -f "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.1
+# echo "[$APPNAME][$(date)] Prior backup moved to secondary."
+# else
+# echo "[$APPNAME][$(date)] No prior backup found."
+# fi
+ echo "[$APPNAME][$(date)] Create a backup of the BaseStation.sqb"
+ if [[ -n "${VRS_DB_UPDATE_BACKUP_UNCOMPRESSED}" ]]
+ then
+ if [ -e "${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb" ]
+ then
+ mv -f "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.1
+ echo "[$APPNAME][$(date)] Prior backup moved to secondary."
+ else
+ echo "[$APPNAME][$(date)] No prior backup found."
+ fi
+ #uncompressed backup
+ if /opt/vrs/scripts/db_backup
+ then
+ echo "[$APPNAME][$(date)] Uncompressed Backup of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Uncompressed Backup of BaseStation.sqb - FAIL!"
+ SQBFAIL=1
+ fi
+ else
+ if [ -e "${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb.gz" ]
+ then
+ mv -f "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.gz "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.gz.1
+ echo "[$APPNAME][$(date)] Prior backup moved to secondary."
+ else
+ echo "[$APPNAME][$(date)] No prior backup found."
+ fi
+ #compressed backup
+ if /opt/vrs/scripts/db_backup && gzip -f ${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb
+ then
+ echo "[$APPNAME][$(date)] Compressed Backup of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Compressed Backup of BaseStation.sqb - FAIL!"
+ SQBFAIL=1
+ fi
+ fi
+ #Starting the merge process - but check for any fails first. If one is found, we'll nope out here
+ if ! [[ $SQBFAIL == 0 ]]
+ then
+ echo "[$APPNAME][$(date)] Something went wrong with the Updatefile or the backup. Merge will be skipped"
+ else
+ echo "[$APPNAME][$(date)] Merging updates into BaseStation.sqb - this might take a few moments"
+ #we want to see how long this takes...
+ sleep 2
+ if TIMEFORMAT='Runtime of the update: %R seconds.'
+ time {
+ if [[ -n "${VRS_DB_UPDATE_WITH_VACUUM}" ]]
+ then
+ echo "[$APPNAME][$(date)] Started script with vacuum"
+ /opt/vrs/scripts/update_with_vacuum
+ else
+ echo "[$APPNAME][$(date)] Started script without vacuum"
+ /opt/vrs/scripts/update_without_vacuum
+ fi
+ }
+ then
+ echo "[$APPNAME][$(date)] Merging updates into BaseStation.sqb - OK"
+ echo "$PROBE_SQB" > $ACTUALFILE_SQB
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE_SQB to commit ID $PROBE_SQB"
+ else
+ echo "[$APPNAME][$(date)] Merging updates into BaseStation.sqb - FAIL!"
+ echo "[$APPNAME][$(date)] Restoring Backup."
+ if [[ -n "${VRS_DB_UPDATE_BACKUP_UNCOMPRESSED}" ]]
+ then
+ #uncompressed restore
+ echo "[$APPNAME][$(date)] Sleeping for 2 Seconds to let VRS do it's thing with the db"
+ sleep 2
+ if /opt/vrs/scripts/db_restore
+ then
+ echo "[$APPNAME][$(date)] Uncompressed Restore of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Uncompressed Restore of BaseStation.sqb - FAIL!"
+ fi
+ else
+ #compressed restore
+ echo "[$APPNAME][$(date)] Sleeping for 2 Seconds to let VRS do it's thing with the db"
+ sleep 2
+ if gunzip -f -k ${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb.gz && /opt/vrs/scripts/db_restore
+ then
+ echo "[$APPNAME][$(date)] Compressed Restore of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Compressed Restore of BaseStation.sqb - FAIL!"
+ fi
+ fi
+ fi
+ fi
+ #Restarting VRS after we're finished with the DB thingies
+ echo "[$APPNAME][$(date)] DB maintenance finished"
+# s6-svc -u /run/s6/services/vrs/
+ else
+ echo "[$APPNAME][$(date)] No update for the database found"
+ fi
+ else
+ echo "[$APPNAME][$(date)] VRS_DB_UPDATE_POLICY_FULLAUTO not set, skipped DB updates"
+ fi
+
+ #cleaning up downloaded files
+ [[ -f "${VRS_CONFIG_DIR}/silhouettes.zip" ]] && rm -f "${VRS_CONFIG_DIR}/silhouettes.zip"
+ [[ -f "${VRS_CONFIG_DIR}/OperatorFlags.zip" ]] && rm -f "${VRS_CONFIG_DIR}/OperatorFlags.zip"
+ #deleting any left over .csv files in the db folder
+ DBUPDATECSVFILES=("${VRS_CONFIG_DIR}/db/*.csv")
+ for CSVUPD in $DBUPDATECSVFILES
+ do
+# echo "[$APPNAME][$(date)] Deleting file: ${CSVUPD}"
+ rm -f "${CSVUPD}"
+ done
+ [[ -f "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}" ]] && rm -f "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}"
+ [[ -d "${VRS_EXTENSION_DIR}/VRSCustomLayers" ]] && rm -r -f "${VRS_EXTENSION_DIR}/VRSCustomLayers"
+ echo "[$APPNAME][$(date)] Cleaned up downloaded files - if any"
+ #calculationg the next run
+ NEXTRUN_SECONDS=$((($(date -f - +%s- <<<${UPDATETIME}$' tomorrow\nnow')0)%86400))
+ TIMENOW=$(date +%s)
+ SECONDS_TO_NEXT=$((TIMENOW+NEXTRUN_SECONDS))
+ NEXTRUN_TIME=$(date --date @$SECONDS_TO_NEXT)
+ echo "[$APPNAME][$(date)] Finished. Next run in $NEXTRUN_TIME"
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ #sleep a bit until the next run
+ sleep $NEXTRUN_SECONDS
+done
diff --git a/rootfs/back/services.d/vrs/run b/rootfs/back/services.d/vrs/run
new file mode 100755
index 0000000..ab231a1
--- /dev/null
+++ b/rootfs/back/services.d/vrs/run
@@ -0,0 +1,19 @@
+#!/usr/bin/with-contenv bash
+#shellcheck shell=bash disable=SC2015
+
+APPNAME="$(hostname)/vrs-runtime"
+VRS_DIR="/opt/vrs"
+VRS_EXEC="mono VirtualRadar.exe"
+VRS_CMDLINE=()
+VRS_CMDLINE+=("-nogui")
+[[ -n "${VRS_CULTURE}" ]] && VRS_CMDLINE+=("-culture:${VRS_CULTURE}") || true
+
+# start VRS and keep it in the foreground:
+cd "${VRS_DIR}" || exit
+echo "[$APPNAME][$(date)] Starting ${VRS_DIR}/${VRS_EXEC} ${VRS_CMDLINE[*]}"
+#exec ${VRS_EXEC} ${VRS_CMDLINE[@]} | stdbuf -o0 awk -v label=${APPNAME} '{print "[" label "][" strftime("%F %T%z", systime()) "] " $0}'
+exec ${VRS_EXEC} "${VRS_CMDLINE[@]}"
+
+#by wiedehopf. Trying to fix the s6-svc pipe trouble
+#trap 'kill 0' TERM
+#( ${VRS_EXEC} ${VRS_CMDLINE[@]} | stdbuf -o0 awk -v label=${APPNAME} '{print "[" label "][" strftime("%F %T%z", systime()) "] " $0}' )
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/50-vrs/type b/rootfs/etc/s6-overlay/s6-rc.d/50-vrs/type
new file mode 100644
index 0000000..bdd22a1
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/50-vrs/type
@@ -0,0 +1 @@
+oneshot
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/50-vrs/up b/rootfs/etc/s6-overlay/s6-rc.d/50-vrs/up
new file mode 100755
index 0000000..b7a5a54
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/50-vrs/up
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /etc/s6-overlay/scripts/50-vrs
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/60-marker/dependencies.d/50-vrs b/rootfs/etc/s6-overlay/s6-rc.d/60-marker/dependencies.d/50-vrs
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/60-marker/type b/rootfs/etc/s6-overlay/s6-rc.d/60-marker/type
new file mode 100644
index 0000000..bdd22a1
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/60-marker/type
@@ -0,0 +1 @@
+oneshot
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/60-marker/up b/rootfs/etc/s6-overlay/s6-rc.d/60-marker/up
new file mode 100755
index 0000000..4d2cad6
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/60-marker/up
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /etc/s6-overlay/scripts/60-marker
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/61-layer/dependencies.d/50-vrs b/rootfs/etc/s6-overlay/s6-rc.d/61-layer/dependencies.d/50-vrs
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/61-layer/dependencies.d/60-marker b/rootfs/etc/s6-overlay/s6-rc.d/61-layer/dependencies.d/60-marker
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/61-layer/type b/rootfs/etc/s6-overlay/s6-rc.d/61-layer/type
new file mode 100644
index 0000000..bdd22a1
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/61-layer/type
@@ -0,0 +1 @@
+oneshot
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/61-layer/up b/rootfs/etc/s6-overlay/s6-rc.d/61-layer/up
new file mode 100755
index 0000000..22fe889
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/61-layer/up
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /etc/s6-overlay/scripts/61-layer
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/dependencies.d/50-vrs b/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/dependencies.d/50-vrs
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/dependencies.d/60-marker b/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/dependencies.d/60-marker
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/dependencies.d/61-layer b/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/dependencies.d/61-layer
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/run b/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/run
new file mode 100755
index 0000000..4c2ff34
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /etc/s6-overlay/scripts/autoupdate
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/type b/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/autoupdate/type
@@ -0,0 +1 @@
+longrun
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/50-vrs b/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/50-vrs
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/60-marker b/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/60-marker
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/61-layer b/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/61-layer
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/autoupdate b/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/autoupdate
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/vrs b/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/vrs
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/vrs/dependencies.d/50-vrs b/rootfs/etc/s6-overlay/s6-rc.d/vrs/dependencies.d/50-vrs
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/vrs/dependencies.d/60-marker b/rootfs/etc/s6-overlay/s6-rc.d/vrs/dependencies.d/60-marker
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/vrs/dependencies.d/61-layer b/rootfs/etc/s6-overlay/s6-rc.d/vrs/dependencies.d/61-layer
new file mode 100644
index 0000000..e69de29
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/vrs/run b/rootfs/etc/s6-overlay/s6-rc.d/vrs/run
new file mode 100755
index 0000000..18c9c83
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/vrs/run
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec /etc/s6-overlay/scripts/vrs
diff --git a/rootfs/etc/s6-overlay/s6-rc.d/vrs/type b/rootfs/etc/s6-overlay/s6-rc.d/vrs/type
new file mode 100644
index 0000000..5883cff
--- /dev/null
+++ b/rootfs/etc/s6-overlay/s6-rc.d/vrs/type
@@ -0,0 +1 @@
+longrun
diff --git a/rootfs/etc/s6-overlay/scripts/50-vrs b/rootfs/etc/s6-overlay/scripts/50-vrs
new file mode 100755
index 0000000..76c6e74
--- /dev/null
+++ b/rootfs/etc/s6-overlay/scripts/50-vrs
@@ -0,0 +1,129 @@
+#!/command/with-contenv bash
+#shellcheck shell=bash disable=SC2034,SC2164,SC2015
+
+APPNAME="$(hostname)/vrs-init"
+VRS_DIR="/opt/vrs"
+VRS_EXEC="mono VirtualRadar.exe"
+VRS_CMDLINE=()
+VRS_CMDLINE+=("-nogui")
+VRS_CMDLINE+=("-createAdmin:${VRS_ADMIN_USERNAME}")
+VRS_CMDLINE+=("-password:${VRS_ADMIN_PASSWORD}")
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+#Silhouettes, OpFlags and DB
+FLAGSDB_LINK="https://github.com/rikgale/VRSData/raw/main/BaseStation.zip"
+
+#max runtime in seconds for VRS init
+MAXTIME=15
+
+#helper files for updatechecks
+ACTUALFILE="$VRS_CONFIG_DIR/commitid"
+ACTUALFILE_CM="$VRS_CONFIG_DIR/commitid_cm"
+ACTUALFILE_SQB="$VRS_CONFIG_DIR/commitid_sqb"
+
+#We need that for the update-after-fresh-install prevention
+WHICHREPO_SQB="https://api.github.com/repos/rikgale/VRSData/branches"
+WHICHBRANCH_SQB="main"
+
+#if the helper file to store the commit ID isn't there, create it empty
+touch $ACTUALFILE
+#and the same for the custom markers
+touch $ACTUALFILE_CM
+#for the database
+touch $ACTUALFILE_SQB
+
+#debugging stuff
+#echo $ACTUAL
+#echo $PROBE
+BUILD_DATE=$(cat "${VRS_DIR}"/builddate)
+
+echo "[$APPNAME][$(date)] Initializing Virtual Radar Server, build ${BUILD_DATE}..."
+
+mkdir -p "${VRS_CONFIG_DIR}/flags"
+mkdir -p "${VRS_CONFIG_DIR}/silhouettes"
+mkdir -p "${VRS_CONFIG_DIR}/photos"
+mkdir -p "${VRS_CONFIG_DIR}/db"
+mkdir -p "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"
+
+#download and install pre-filled DB for operator flags. As this should only happen once, no commit id check needed
+if [ ! -e "${VRS_CONFIG_DIR}/db/BaseStation.sqb" ]
+then
+ echo "[$APPNAME][$(date)] Downloading database for Operator Flags"
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/BaseStation.zip" ${FLAGSDB_LINK} && unzip -qq -o -d "${VRS_CONFIG_DIR}/db" "${VRS_CONFIG_DIR}/BaseStation.zip"
+ then
+ echo "[$APPNAME][$(date)] Database for Operator Flags installed successfully"
+ #that should prevent a DB update right after a fresh download
+ PROBE_SQB=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO_SQB | awk "c&&!--c;/$WHICHBRANCH_SQB/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ echo "$PROBE_SQB" > $ACTUALFILE_SQB
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE_SQB to commit ID $PROBE_SQB"
+ else
+ echo "[$APPNAME][$(date)] Database for Operator Flags not installed - failure"
+ fi
+else
+ echo "[$APPNAME][$(date)] Found an existing DB in $VRS_CONFIG_DIR, not touching anything!"
+fi
+
+#copy PluginsConfig into place if it's not there
+if [ ! -e "${VRS_CONFIG_DIR}/PluginsConfiguration.txt" ]
+ then
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt not found, adding template"
+ if cp -f /opt/vrs/PluginsConfiguration.txt "${VRS_CONFIG_DIR}/PluginsConfiguration.txt"
+ then
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt not found, adding template - OK"
+ else
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt not found, adding template - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] PluginsConfiguration.txt found, not touching anything"
+fi
+
+# Starting VRS temporarily to create a username and password if none exist
+# If VRS has been initialized previously this step will be skipped.
+# If it hasn't, a username / password and a bunch of other files will be created...
+# ...and VRS will actually stay up and run. We will shut it down after a max runtime of $MAXTIME secs.
+if [ ! -e "${VRS_CONFIG_DIR}/Configuration.xml" ]
+then
+ echo "[$APPNAME][$(date)] No Configuration.xml found, doing first run initialization."
+ cd "${VRS_DIR}"
+ # shellcheck disable=SC2068,SC2086
+ timeout "$MAXTIME" exec ${VRS_EXEC} ${VRS_CMDLINE[@]} #>/dev/null 2>&1
+ echo "[$APPNAME][$(date)] Virtual Radar Server has been initialized."
+else
+ echo "[$APPNAME][$(date)] Configuration.xml found, skipping initialization."
+fi
+
+# Replace 127.0.0.1 With ReadSB
+sed -i "s#127.0.0.1#${VRS_SBSHOST:-readsb}#g" "${VRS_CONFIG_DIR}/Configuration.xml"
+sed -i "s#30003#${VRS_SBSPORT:-30003}#g" "${VRS_CONFIG_DIR}/Configuration.xml"
+
+#Injecting settings for silhouettes, OpFlags and DB into Configuration.xml
+if ! grep -q "" "${VRS_CONFIG_DIR}/Configuration.xml"
+then
+ sed -i "/^ .*/a \ \/root/.local/share/VirtualRadar/db/BaseStation.sqb" "${VRS_CONFIG_DIR}/Configuration.xml"
+ echo "[$APPNAME][$(date)] Added database filename to Configuration.xml"
+else
+ echo "[$APPNAME][$(date)] DatabaseFileName found, not touching config."
+fi
+
+if ! grep -q "" "${VRS_CONFIG_DIR}/Configuration.xml"
+then
+ sed -i "/^ .*/a \ \/root/.local/share/VirtualRadar/flags" "${VRS_CONFIG_DIR}/Configuration.xml"
+ echo "[$APPNAME][$(date)] Added Operator Flags folder to Configuration.xml"
+else
+ echo "[$APPNAME][$(date)] OperatorFlagsFolder found, not touching config."
+fi
+
+if ! grep -q "" "${VRS_CONFIG_DIR}/Configuration.xml"
+then
+ sed -i "/^ .*/a \ \/root/.local/share/VirtualRadar/silhouettes" "${VRS_CONFIG_DIR}/Configuration.xml"
+ echo "[$APPNAME][$(date)] Added Silhouettes folder to Configuration.xml"
+else
+ echo "[$APPNAME][$(date)] SilhouettesFolder found, not touching config."
+fi
+
+#cleanup and exit
+[[ -f "${VRS_CONFIG_DIR}/BaseStation.zip" ]] && rm -f "${VRS_CONFIG_DIR}/BaseStation.zip" || true
+echo "[$APPNAME][$(date)] Cleaned up downloaded files."
+echo "[$APPNAME][$(date)] Finished basic configuration."
+
+exit 0
diff --git a/rootfs/etc/s6-overlay/scripts/60-marker b/rootfs/etc/s6-overlay/scripts/60-marker
new file mode 100755
index 0000000..cadd043
--- /dev/null
+++ b/rootfs/etc/s6-overlay/scripts/60-marker
@@ -0,0 +1,77 @@
+#!/command/with-contenv bash
+# shellcheck shell=bash
+
+APPNAME="$(hostname)/vrs-ccmarker"
+#VRS_DIR="/opt/vrs"
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+
+#PluginConfig Settings (escaped)
+CCMARKER_DISABLED="%3cInjectSettings%3e%0a++++%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3etrue%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fMyMarkers1\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+CCMARKER_ENABLED="%3cInjectSettings%3e%0a++++%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3etrue%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fMyMarkers1\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+
+#Downloadlinks
+EXT_MARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1.html"
+EXT_HFDLMARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1HFDL.html"
+
+echo "[$APPNAME][$(date)] Starting CustomContent Markers script..."
+
+#Create the directory in case it's not there
+mkdir -p "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"
+
+if [[ -n "${VRS_ENHANCED_MARKERS}" ]]
+ then
+ echo "[$APPNAME][$(date)] Downloading and installing Custom Markers"
+ #normal markers
+ if [[ "${VRS_ENHANCED_MARKERS}" == "normal" ]]
+ then
+ echo "[$APPNAME][$(date)] Normal Custom markers"
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_MARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] Normal Custom marker file download - OK"
+ echo "[$APPNAME][$(date)] Injecting custom marker config into PluginsConfiguration.txt"
+ if sed -i -e "s/$CCMARKER_DISABLED/$CCMARKER_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Custom marker config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Custom marker config enabled - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] Normal Custom marker file download - Failure"
+ fi
+ #HFDL markers
+ elif [[ "${VRS_ENHANCED_MARKERS}" == "HFDL" ]] || [[ "${VRS_ENHANCED_MARKERS}" == "hfdl" ]]
+ then
+ echo "[$APPNAME][$(date)] HFDL Custom markers"
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_HFDLMARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] HFDL Custom marker file download - OK"
+ echo "[$APPNAME][$(date)] Injecting custom marker config into PluginsConfiguration.txt"
+ if sed -i -e "s/$CCMARKER_DISABLED/$CCMARKER_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Custom marker config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Custom marker config enabled - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] HFDL Custom marker file download - Failure"
+ fi
+ #disabled
+ elif [[ "${VRS_ENHANCED_MARKERS}" == "disabled" ]] || [[ "${VRS_ENHANCED_MARKERS}" == "false" ]]
+ then
+ echo "[$APPNAME][$(date)] HFDL Custom markers disabled"
+ if sed -i -e "s/$CCMARKER_ENABLED/$CCMARKER_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Custom marker config disabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Custom marker config disabled - Failure"
+ fi
+
+ else echo "[$APPNAME][$(date)] yaml setting unkown. Check readme."
+ fi
+ else
+ echo "[$APPNAME][$(date)] Custom Markers not enabled"
+fi
+
+#cleanup and exit
+exit 0
diff --git a/rootfs/etc/s6-overlay/scripts/61-layer b/rootfs/etc/s6-overlay/scripts/61-layer
new file mode 100755
index 0000000..06e6f1d
--- /dev/null
+++ b/rootfs/etc/s6-overlay/scripts/61-layer
@@ -0,0 +1,106 @@
+#!/command/with-contenv bash
+# shellcheck shell=bash
+
+APPNAME="$(hostname)/vrs-cclayer"
+#VRS_DIR="/opt/vrs"
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+
+#PluginConfig Settings (escaped)
+LAYER_EOB_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfBody\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_EOB_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfBody\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_EOH_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eHead%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfHead\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_EOH_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e\*%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eHead%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fEndOfHead\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_SCALE_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fScale\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_SCALE_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fScale\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_FULLSCREEN_DISABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3efalse%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fFullScreen\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+LAYER_FULLSCREEN_ENABLED="%3cInjectSettings%3e%0a++++++%3cEnabled%3etrue%3c%2fEnabled%3e%0a++++++%3cPathAndFile%3e%2fdesktop\.html%3c%2fPathAndFile%3e%0a++++++%3cInjectionLocation%3eBody%3c%2fInjectionLocation%3e%0a++++++%3cStart%3efalse%3c%2fStart%3e%0a++++++%3cFile%3e%2froot%2f\.local%2fshare%2fVirtualRadar%2fCustomContent%2fCustomInjectedFiles%2fFullScreen\.html%3c%2fFile%3e%0a++++%3c%2fInjectSettings%3e%0a"
+
+#Downloadlinks
+EXT_LAYERS_LINK="https://github.com/rikgale/VRSCustomLayers/raw/main/VRSCustomLayers.zip"
+
+echo "[$APPNAME][$(date)] Starting CustomContent Layers script..."
+
+#Create the directory in case it's not there
+[ -d "${VRS_EXTENSION_DIR}" ] && mkdir -p "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"
+
+if [[ -n "${VRS_ENHANCED_LAYERS_COUNTRY}" ]]
+ then
+ #cleaning up first
+ cd "${VRS_EXTENSION_DIR}" || exit
+ rm "${VRS_CONFIG_DIR}/CustomContent/CustomInjectedFiles"/*.geojson
+ echo "[$APPNAME][$(date)] Downloading and installing Enhanced Layers"
+ if curl --fail --compressed -s -L -o "${VRS_EXTENSION_DIR}/enhancedlayers.zip" ${EXT_LAYERS_LINK} &&\
+ unzip -q -o "${VRS_EXTENSION_DIR}/enhancedlayers.zip" &&\
+ rm "${VRS_EXTENSION_DIR}/enhancedlayers.zip" &&\
+ cp -r "${VRS_EXTENSION_DIR}"/VRSCustomLayers/* "${VRS_EXTENSION_DIR}" &&\
+ cp -r "${VRS_EXTENSION_DIR}"/'Put these files in VRS root folder'/* "${VRS_EXTENSION_DIR}" &&\
+ rm -r 'Put these files in VRS root folder'
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers archive download and uncompress - OK"
+ case "${VRS_ENHANCED_LAYERS_COUNTRY,,}" in
+ (uk) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/UK//' -- *.geojson
+ ;;
+ (de) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/DE//' -- *.geojson
+ ;;
+ (usa1) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/USA1//' -- *.geojson
+ ;;
+ (usaaz) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/USAAZ//' -- *.geojson
+ ;;
+ (se) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/SE//' -- *.geojson
+ ;;
+ (au) echo "[$APPNAME][$(date)] Enhanced Layers renaming country files for: ${VRS_ENHANCED_LAYERS_COUNTRY}"
+ rename -f 's/AU//' -- *.geojson
+ ;;
+ (*) echo "[$APPNAME][$(date)] Unknown or wrong country, default set to UK"
+ ;;
+ esac
+ if sed -i -e "s/$LAYER_EOB_DISABLED/$LAYER_EOB_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_EOH_DISABLED/$LAYER_EOH_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_SCALE_DISABLED/$LAYER_SCALE_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_FULLSCREEN_DISABLED/$LAYER_FULLSCREEN_ENABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - Failure"
+ fi
+ if ! [[ -n "${VRS_ENHANCED_LAYERS_OPENAIP_APIKEY}" || "${VRS_ENHANCED_LAYERS_OPENWX_APIKEY}" ]]
+ then
+ echo "[$APPNAME][$(date)] VRS_ENHANCED_LAYERS_OPENAIP_APIKEY and VRS_ENHANCED_LAYERS_OPENWX_APIKEY not set. Expect those layers not to work."
+ else
+ if sed -i -e "s/##OPENWXAPIKEY##/${VRS_ENHANCED_LAYERS_OPENWX_APIKEY}/g" ${VRS_EXTENSION_DIR}/EndOfBody.html &&\
+ sed -i -e "s/##OPENAIPKEY##/${VRS_ENHANCED_LAYERS_OPENAIP_APIKEY}/g" ${VRS_EXTENSION_DIR}/EndOfBody.html
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers API Keys config injection - OK"
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers API Keys config injection - Failure"
+ fi
+ fi
+ if [[ -n "${VRS_ENHANCED_LAYERS_CONFIG}" ]]
+ then
+ #shellcheck disable=SC2001
+ sed -i "s|##EXTERNALCONFIG##|$(sed -e 's|/\*[^*]*\*/||g' <<< "${VRS_ENHANCED_LAYERS_CONFIG//[[:space:]]/}")|g" "${VRS_EXTENSION_DIR}"/EndOfBody.html
+ fi
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers archive download and uncompress - Failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers not set in the yaml. Exiting."
+ if sed -i -e "s/$LAYER_EOB_ENABLED/$LAYER_EOB_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_EOH_ENABLED/$LAYER_EOH_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_SCALE_ENABLED/$LAYER_SCALE_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt &&\
+ sed -i -e "s/$LAYER_FULLSCREEN_ENABLED/$LAYER_FULLSCREEN_DISABLED/g" ${VRS_CONFIG_DIR}/PluginsConfiguration.txt
+ then
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - OK"
+ else
+ echo "[$APPNAME][$(date)] Enhanced Layers config enabled - Failure"
+ fi
+ exit 0
+fi
+#cleanup and exit
+exit 0
diff --git a/rootfs/etc/s6-overlay/scripts/autoupdate b/rootfs/etc/s6-overlay/scripts/autoupdate
new file mode 100755
index 0000000..be27f04
--- /dev/null
+++ b/rootfs/etc/s6-overlay/scripts/autoupdate
@@ -0,0 +1,324 @@
+#!/command/with-contenv bash
+#shellcheck shell=bash disable=SC2128
+
+APPNAME="$(hostname)/autoupdate"
+VRS_CONFIG_DIR="/root/.local/share/VirtualRadar"
+VRS_EXTENSION_DIR="/root/.local/share/VirtualRadar/CustomContent/CustomInjectedFiles"
+export VRS_CONFIG_DIR
+
+#Silhouettes, OpFlags and DB
+SILH_LINK="https://github.com/rikgale/VRSOperatorFlags/raw/main/Silhouettes.zip"
+SILH_DV_LINK="https://github.com/rikgale/VRSOperatorFlags/raw/main/DVSilhouettes.zip"
+FLAGS_LINK="https://github.com/rikgale/VRSOperatorFlags/raw/main/OperatorFlags.zip"
+#we need a permanent variable to reset if the sils are changed
+SILH_FILE="$VRS_CONFIG_DIR/silh"
+
+#rickgales extras
+#LocalAircraft.txt
+EXT_LOCALAC_LINK="https://raw.githubusercontent.com/rikgale/LocalAircraft/main/LocalAircraft.txt"
+#ExtraMarkers
+EXT_MARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1.html"
+EXT_HFDLMARKERS_LINK="https://raw.githubusercontent.com/rikgale/VRSCustomMarkers/main/MyMarkers1HFDL.html"
+
+#sqb update link
+FULLAIRCRAFT_LINK="https://github.com/rikgale/VRSData/raw/main/FullAircraft.zip"
+INCREMENTAL_UPD_LINK="https://raw.githubusercontent.com/rikgale/VRSData/main/DailyUpdates/"
+
+#Variables for optimized downloads
+WHICHREPO="https://api.github.com/repos/rikgale/VRSOperatorFlags/branches"
+WHICHBRANCH="main"
+ACTUALFILE="$VRS_CONFIG_DIR/commitid"
+#the same for CustomMarkers
+WHICHREPO_CM="https://api.github.com/repos/rikgale/VRSCustomMarkers/branches"
+WHICHBRANCH_CM="main"
+ACTUALFILE_CM="$VRS_CONFIG_DIR/commitid_cm"
+#and the sqb
+WHICHREPO_SQB="https://api.github.com/repos/rikgale/VRSData/branches"
+WHICHBRANCH_SQB="main"
+ACTUALFILE_SQB="$VRS_CONFIG_DIR/commitid_sqb"
+
+#Tine of the updatecheck. Changed from 02:20 to 03:30 to hopefully prevent any daylightsavings mishaps
+UPDATETIME="03:20"
+
+#Failsetting for the SQB Backup
+SQBFAIL=0
+
+#Give VRS a bit of time to start
+sleep 5
+
+#Who we are and what we are doing
+echo "[$APPNAME][$(date)] Autoupdate service started."
+
+#mopping up first because of some changes - incremental updates
+[[ -f "${VRS_CONFIG_DIR}/db/FullAircraft.csv" ]] && rm -f "${VRS_CONFIG_DIR}/db/FullAircraft.csv"
+
+if [[ -n "${VRS_DEBUG_NOAUTOUPDATE}" ]]
+ then
+ echo "[$APPNAME][$(date)] debugging set, exited"
+ sleep infinity
+fi
+
+#Let's go
+while true
+do
+ #lets reset this variable first
+ export FULLAIRCRAFT_NAME="none"
+ #we need these in the loop, otherwise they will never get updated
+ ACTUAL=$(<"$ACTUALFILE")
+ PROBE=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO | awk "c&&!--c;/$WHICHBRANCH/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ #The same check as above but for the custom markers
+ ACTUAL_CM=$(<"$ACTUALFILE_CM")
+ PROBE_CM=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO_CM | awk "c&&!--c;/$WHICHBRANCH_CM/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ #and the database
+ ACTUAL_SQB=$(<"$ACTUALFILE_SQB")
+ PROBE_SQB=$(curl -sH "Accept: application/vnd.github.v3+json" $WHICHREPO_SQB | awk "c&&!--c;/$WHICHBRANCH_SQB/{c=2}" | awk '/"sha"/ { print $2}' | sed 's/"//g;s/.$//g')
+ #Here are some files we're gonna update anyway, no matter of repo updates
+ echo "[$APPNAME][$(date)] Updating LocalAircraft.txt"
+ if curl --fail -s -L -o "${VRS_CONFIG_DIR}/LocalAircraft.txt" ${EXT_LOCALAC_LINK}
+ then
+ echo "[$APPNAME][$(date)] LocalAircraft.txt downloaded and installed successfully"
+ else
+ echo "[$APPNAME][$(date)] LocalAircraft.txt - failure"
+ fi
+
+ #if there is a change in the commit ID, download and install sil/opflags
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ echo "[$APPNAME][$(date)] Looking for Sil / Operator Flags updates"
+ #following is some logic to force a download of the silh files if the dv envar is changed
+ SILH_PROBE=$(<"$SILH_FILE")
+ [ -n "${VRS_SILHOUETTES_DUALVIEW}" ] && echo "dv" > $SILH_FILE || echo "sv" > $SILH_FILE
+ ACTUAL_SILH=$(<"$SILH_FILE")
+ if [[ "$SILH_PROBE" != "$ACTUAL_SILH" ]]
+ then
+ ACTUAL="reset"
+ fi
+ if [[ "$ACTUAL" != "$PROBE" ]]
+ then
+ echo "[$APPNAME][$(date)] Looks like there was an update for Sil /Operator Flags. Going to download the files"
+ echo "$PROBE" > $ACTUALFILE
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE to commit ID $PROBE"
+ if [[ -n "${VRS_SILHOUETTES_DUALVIEW}" ]]
+ then
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/silhouettesDV.zip" ${SILH_DV_LINK} && rm ${VRS_CONFIG_DIR}/silhouettes/* && unzip -u -qq -d "${VRS_CONFIG_DIR}/silhouettes" "${VRS_CONFIG_DIR}/silhouettesDV.zip"
+ then
+ echo "[$APPNAME][$(date)] Dual View Silhouettes installed successfully"
+ else
+ echo "[$APPNAME][$(date)] Dual View Silhouettes not installed - failure"
+ fi
+ fi
+ if [[ -n "${VRS_SILHOUETTES_DUALVIEW}" ]]
+ then
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/silhouettes.zip" ${SILH_LINK} && unzip -u -qq -n -d "${VRS_CONFIG_DIR}/silhouettes" "${VRS_CONFIG_DIR}/silhouettes.zip"
+ then
+ echo "[$APPNAME][$(date)] Silhouettes installed successfully - DV Setup"
+ else
+ echo "[$APPNAME][$(date)] Silhouettes not installed - DV Setup - failure"
+ fi
+ else
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/silhouettes.zip" ${SILH_LINK} && unzip -u -qq -o -d "${VRS_CONFIG_DIR}/silhouettes" "${VRS_CONFIG_DIR}/silhouettes.zip"
+ then
+ echo "[$APPNAME][$(date)] Silhouettes installed successfully"
+ else
+ echo "[$APPNAME][$(date)] Silhouettes not installed - failure"
+ fi
+ fi
+ #download and install operator flags
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/OperatorFlags.zip" ${FLAGS_LINK} && unzip -u -qq -o -d "${VRS_CONFIG_DIR}/flags" "${VRS_CONFIG_DIR}/OperatorFlags.zip"
+ then
+ echo "[$APPNAME][$(date)] Operator Flags installed successfully"
+ else
+ echo "[$APPNAME][$(date)] Operator Flags not installed - failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] No changes found, nothing was downloaded."
+ fi
+ #looking for updates of the custom markers html file
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ echo "[$APPNAME][$(date)] Looking for updates for the custom markers file"
+ if [[ "$ACTUAL_CM" != "$PROBE_CM" ]]
+ then
+ echo "[$APPNAME][$(date)] Looks like there was an update for the custom markers. Going to download the file"
+ echo "$PROBE_CM" > $ACTUALFILE_CM
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE_CM to commit ID $PROBE_CM"
+ if [[ "${VRS_ENHANCED_MARKERS}" == "normal" ]]
+ then
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_MARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] New ADSB custom marker file installed successfully"
+ else
+ echo "[$APPNAME][$(date)] New ADSB custom marker file not installed - failure"
+ fi
+ elif [[ "${VRS_ENHANCED_MARKERS}" == "HFDL" ]] || [[ "${VRS_ENHANCED_MARKERS}" == "hfdl" ]]
+ then
+ if curl --fail -s -L -o "${VRS_EXTENSION_DIR}/MyMarkers1.html" ${EXT_HFDLMARKERS_LINK}
+ then
+ echo "[$APPNAME][$(date)] New HFDL custom marker file installed successfully"
+ else
+ echo "[$APPNAME][$(date)] New HFDL custom marker file not installed - failure"
+ fi
+ else
+ echo "[$APPNAME][$(date)] No custom markers downloaded, not set in the yaml."
+ fi
+ else
+ echo "[$APPNAME][$(date)] No changes found, nothing was downloaded."
+ fi
+ #BaseSation SQB Update
+ if [[ -n "${VRS_DB_UPDATE_POLICY_FULLAUTO}" ]]
+ then
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ echo "[$APPNAME][$(date)] Looking for updates for the BaseStation.sqb"
+ if [[ "$ACTUAL_SQB" != "$PROBE_SQB" ]]
+ then
+ echo "[$APPNAME][$(date)] Looks like there was an update for the database. Going to download the updatefile"
+ #date of yesterday portion for the filename
+ DATE_YESTERDAY=$(date -d "yesterday" -I)
+ INCREMENTAL_UPD_FILENAME="Updates_${DATE_YESTERDAY}.zip"
+ INCREMENTAL_UPD_DL_LINK="${INCREMENTAL_UPD_LINK}${INCREMENTAL_UPD_FILENAME}"
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}" "${INCREMENTAL_UPD_DL_LINK}" && FULLAIRCRAFT_NAME=$(unzip -o "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}" -d "${VRS_CONFIG_DIR}/db/" | grep inflating | awk -F "/" '{print $NF}')
+ then
+ echo "[$APPNAME][$(date)] Incremental Update file ${INCREMENTAL_UPD_DL_LINK} downloaded"
+ echo "[$APPNAME][$(date)] Filename extrated from the zip: ${FULLAIRCRAFT_NAME}"
+ export FULLAIRCRAFT_NAME
+ else
+ echo "[$APPNAME][$(date)] no incremental update file found, going to download the full update"
+ if curl --fail --compressed -s -L -o "${VRS_CONFIG_DIR}/db/FullAircraft.zip" ${FULLAIRCRAFT_LINK} && FULLAIRCRAFT_NAME=$(unzip -o "${VRS_CONFIG_DIR}/db/FullAircraft.zip" -d "${VRS_CONFIG_DIR}/db/" | grep inflating | awk -F "/" '{print $NF}')
+ then
+ echo "[$APPNAME][$(date)] Download of the latest FullAircraft update file - OK"
+ echo "[$APPNAME][$(date)] Filename extrated from the zip: ${FULLAIRCRAFT_NAME}"
+ export FULLAIRCRAFT_NAME
+ else
+ echo "[$APPNAME][$(date)] Download of the latest FullAircraft update file - FAIL!"
+ SQBFAIL=1
+ fi
+ fi
+ #shutting down VRS for the DB backup and update
+# echo "[$APPNAME][$(date)] Shutting down VRS temporarily as we are going to deal with the database."
+# s6-svc -wD -d -T 5000 /run/s6/services/vrs/
+# echo "[$APPNAME][$(date)] It's dead, Jim"
+ sleep 1
+ #delete the prior backup
+# if [ -e "${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb" ]
+# then
+# mv -f "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.1
+# echo "[$APPNAME][$(date)] Prior backup moved to secondary."
+# else
+# echo "[$APPNAME][$(date)] No prior backup found."
+# fi
+ echo "[$APPNAME][$(date)] Create a backup of the BaseStation.sqb"
+ if [[ -n "${VRS_DB_UPDATE_BACKUP_UNCOMPRESSED}" ]]
+ then
+ if [ -e "${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb" ]
+ then
+ mv -f "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.1
+ echo "[$APPNAME][$(date)] Prior backup moved to secondary."
+ else
+ echo "[$APPNAME][$(date)] No prior backup found."
+ fi
+ #uncompressed backup
+ if /opt/vrs/scripts/db_backup
+ then
+ echo "[$APPNAME][$(date)] Uncompressed Backup of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Uncompressed Backup of BaseStation.sqb - FAIL!"
+ SQBFAIL=1
+ fi
+ else
+ if [ -e "${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb.gz" ]
+ then
+ mv -f "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.gz "${VRS_CONFIG_DIR}"/db/Basestation_Backup.sqb.gz.1
+ echo "[$APPNAME][$(date)] Prior backup moved to secondary."
+ else
+ echo "[$APPNAME][$(date)] No prior backup found."
+ fi
+ #compressed backup
+ if /opt/vrs/scripts/db_backup && gzip -f ${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb
+ then
+ echo "[$APPNAME][$(date)] Compressed Backup of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Compressed Backup of BaseStation.sqb - FAIL!"
+ SQBFAIL=1
+ fi
+ fi
+ #Starting the merge process - but check for any fails first. If one is found, we'll nope out here
+ if ! [[ $SQBFAIL == 0 ]]
+ then
+ echo "[$APPNAME][$(date)] Something went wrong with the Updatefile or the backup. Merge will be skipped"
+ else
+ echo "[$APPNAME][$(date)] Merging updates into BaseStation.sqb - this might take a few moments"
+ #we want to see how long this takes...
+ sleep 2
+ if TIMEFORMAT='Runtime of the update: %R seconds.'
+ time {
+ if [[ -n "${VRS_DB_UPDATE_WITH_VACUUM}" ]]
+ then
+ echo "[$APPNAME][$(date)] Started script with vacuum"
+ /opt/vrs/scripts/update_with_vacuum
+ else
+ echo "[$APPNAME][$(date)] Started script without vacuum"
+ /opt/vrs/scripts/update_without_vacuum
+ fi
+ }
+ then
+ echo "[$APPNAME][$(date)] Merging updates into BaseStation.sqb - OK"
+ echo "$PROBE_SQB" > $ACTUALFILE_SQB
+ echo "[$APPNAME][$(date)] Updated $ACTUALFILE_SQB to commit ID $PROBE_SQB"
+ else
+ echo "[$APPNAME][$(date)] Merging updates into BaseStation.sqb - FAIL!"
+ echo "[$APPNAME][$(date)] Restoring Backup."
+ if [[ -n "${VRS_DB_UPDATE_BACKUP_UNCOMPRESSED}" ]]
+ then
+ #uncompressed restore
+ echo "[$APPNAME][$(date)] Sleeping for 2 Seconds to let VRS do it's thing with the db"
+ sleep 2
+ if /opt/vrs/scripts/db_restore
+ then
+ echo "[$APPNAME][$(date)] Uncompressed Restore of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Uncompressed Restore of BaseStation.sqb - FAIL!"
+ fi
+ else
+ #compressed restore
+ echo "[$APPNAME][$(date)] Sleeping for 2 Seconds to let VRS do it's thing with the db"
+ sleep 2
+ if gunzip -f -k ${VRS_CONFIG_DIR}/db/Basestation_Backup.sqb.gz && /opt/vrs/scripts/db_restore
+ then
+ echo "[$APPNAME][$(date)] Compressed Restore of BaseStation.sqb - OK"
+ else
+ echo "[$APPNAME][$(date)] Compressed Restore of BaseStation.sqb - FAIL!"
+ fi
+ fi
+ fi
+ fi
+ #Restarting VRS after we're finished with the DB thingies
+ echo "[$APPNAME][$(date)] DB maintenance finished"
+# s6-svc -u /run/s6/services/vrs/
+ else
+ echo "[$APPNAME][$(date)] No update for the database found"
+ fi
+ else
+ echo "[$APPNAME][$(date)] VRS_DB_UPDATE_POLICY_FULLAUTO not set, skipped DB updates"
+ fi
+
+ #cleaning up downloaded files
+ [[ -f "${VRS_CONFIG_DIR}/silhouettes.zip" ]] && rm -f "${VRS_CONFIG_DIR}/silhouettes.zip"
+ [[ -f "${VRS_CONFIG_DIR}/OperatorFlags.zip" ]] && rm -f "${VRS_CONFIG_DIR}/OperatorFlags.zip"
+ #deleting any left over .csv files in the db folder
+ DBUPDATECSVFILES=("${VRS_CONFIG_DIR}/db/*.csv")
+ for CSVUPD in $DBUPDATECSVFILES
+ do
+# echo "[$APPNAME][$(date)] Deleting file: ${CSVUPD}"
+ rm -f "${CSVUPD}"
+ done
+ [[ -f "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}" ]] && rm -f "${VRS_CONFIG_DIR}/db/${INCREMENTAL_UPD_FILENAME}"
+ [[ -d "${VRS_EXTENSION_DIR}/VRSCustomLayers" ]] && rm -r -f "${VRS_EXTENSION_DIR}/VRSCustomLayers"
+ echo "[$APPNAME][$(date)] Cleaned up downloaded files - if any"
+ #calculationg the next run
+ NEXTRUN_SECONDS=$((($(date -f - +%s- <<<${UPDATETIME}$' tomorrow\nnow')0)%86400))
+ TIMENOW=$(date +%s)
+ SECONDS_TO_NEXT=$((TIMENOW+NEXTRUN_SECONDS))
+ NEXTRUN_TIME=$(date --date @$SECONDS_TO_NEXT)
+ echo "[$APPNAME][$(date)] Finished. Next run in $NEXTRUN_TIME"
+ echo "[$APPNAME][$(date)] ----------------------------------------"
+ #sleep a bit until the next run
+ sleep $NEXTRUN_SECONDS
+done
diff --git a/rootfs/etc/s6-overlay/scripts/vrs b/rootfs/etc/s6-overlay/scripts/vrs
new file mode 100755
index 0000000..9315ade
--- /dev/null
+++ b/rootfs/etc/s6-overlay/scripts/vrs
@@ -0,0 +1,19 @@
+#!/command/with-contenv bash
+#shellcheck shell=bash disable=SC2015
+
+APPNAME="$(hostname)/vrs-runtime"
+VRS_DIR="/opt/vrs"
+VRS_EXEC="mono VirtualRadar.exe"
+VRS_CMDLINE=()
+VRS_CMDLINE+=("-nogui")
+[[ -n "${VRS_CULTURE}" ]] && VRS_CMDLINE+=("-culture:${VRS_CULTURE}") || true
+
+# start VRS and keep it in the foreground:
+cd "${VRS_DIR}" || exit
+echo "[$APPNAME][$(date)] Starting ${VRS_DIR}/${VRS_EXEC} ${VRS_CMDLINE[*]}"
+#exec ${VRS_EXEC} ${VRS_CMDLINE[@]} | stdbuf -o0 awk -v label=${APPNAME} '{print "[" label "][" strftime("%F %T%z", systime()) "] " $0}'
+exec ${VRS_EXEC} "${VRS_CMDLINE[@]}"
+
+#by wiedehopf. Trying to fix the s6-svc pipe trouble
+#trap 'kill 0' TERM
+#( ${VRS_EXEC} ${VRS_CMDLINE[@]} | stdbuf -o0 awk -v label=${APPNAME} '{print "[" label "][" strftime("%F %T%z", systime()) "] " $0}' )