diff --git a/distributions/openhab/src/main/descriptors/archive.xml b/distributions/openhab/src/main/descriptors/archive.xml
index 54954f6503..5abe575253 100644
--- a/distributions/openhab/src/main/descriptors/archive.xml
+++ b/distributions/openhab/src/main/descriptors/archive.xml
@@ -37,6 +37,7 @@
runtime
bin/*.bat
+ bin/*.lst
bin/**
@@ -48,8 +49,9 @@
lib/**
system/**
+ bin/*.lst
-
+
0644
diff --git a/distributions/openhab/src/main/resources/bin/backup b/distributions/openhab/src/main/resources/bin/backup
index 988c552412..7da547848b 100755
--- a/distributions/openhab/src/main/resources/bin/backup
+++ b/distributions/openhab/src/main/resources/bin/backup
@@ -44,12 +44,16 @@ setup(){
WorkingDir="$(cd "$(dirname "$0")" && cd ../.. && pwd -P)"
- if [ -z "$OPENHAB_CONF" ]; then OPENHAB_CONF="$WorkingDir/conf"; fi
- if [ -z "$OPENHAB_USERDATA" ]; then OPENHAB_USERDATA="$WorkingDir/userdata"; fi
- if [ -z "$OPENHAB_BACKUPS" ]; then OPENHAB_BACKUPS="$WorkingDir/backups"; fi
+ if [ -z "$OPENHAB_CONF" ]; then OPENHAB_CONF="$WorkingDir/conf"; fi
+ if [ -z "$OPENHAB_USERDATA" ]; then OPENHAB_USERDATA="$WorkingDir/userdata"; fi
+ if [ -z "$OPENHAB_BACKUPS" ]; then OPENHAB_BACKUPS="$WorkingDir/backups"; fi
+ if [ -z "$OPENHAB_RUNTIME" ]; then OPENHAB_RUNTIME="$WorkingDir/runtime"; fi
echo "Using '$OPENHAB_CONF' as conf folder..."
echo "Using '$OPENHAB_USERDATA' as userdata folder..."
+ echo "Using '$OPENHAB_RUNTIME' as runtime folder..."
+
+ fileList="$OPENHAB_RUNTIME/bin/userdata_sysfiles.lst"
timestamp=$(date +"%y_%m_%d-%H_%M_%S")
## Set the filename
@@ -111,20 +115,15 @@ cp -a "${OPENHAB_CONF:?}/"* "$TempDir/conf"
## Remove non-transferable userdata files
echo "Removing unnecessary files..."
-rm -rf "$TempDir/userdata/cache"
-rm -rf "$TempDir/userdata/tmp"
-rm -rf "$TempDir/userdata/etc/all.policy"
-rm -rf "$TempDir/userdata/etc/branding.properties"
-rm -rf "$TempDir/userdata/etc/branding-ssh.properties"
-rm -rf "$TempDir/userdata/etc/config.properties"
-rm -rf "$TempDir/userdata/etc/custom.properties"
-rm -rf "$TempDir/userdata/etc/version.properties"
-rm -rf "$TempDir/userdata/etc/distribution.info"
-rm -rf "$TempDir/userdata/etc/jre.properties"
-rm -rf "$TempDir/userdata/etc/profile.cfg"
-rm -rf "$TempDir/userdata/etc/startup.properties"
-rm -rf "$TempDir/userdata/etc/org.apache.karaf"*
-rm -rf "$TempDir/userdata/etc/org.ops4j.pax.url.mvn.cfg"
+if [ -f "$fileList" ]; then
+ while IFS= read -r fileName
+ do
+ rm -rf "$TempDir/userdata/etc/$fileName"
+ done < "$fileList"
+else
+ echo "System Filelist not found, exiting..."
+ exit 1
+fi
## If the backup directory is inside userdata folder do not include it
## Mainly for apt/rpm automatic
diff --git a/distributions/openhab/src/main/resources/bin/backup.ps1 b/distributions/openhab/src/main/resources/bin/backup.ps1
index e90419c4d9..7242da4d30 100644
--- a/distributions/openhab/src/main/resources/bin/backup.ps1
+++ b/distributions/openhab/src/main/resources/bin/backup.ps1
@@ -80,7 +80,7 @@
Write-Output "timestamp=$timestamp" | Add-Content "$TempDir\backup.properties"
Write-Output "user=openhab" | Add-Content "$TempDir\backup.properties"
Write-Output "group=openhab" | Add-Content "$TempDir\backup.properties"
-
+
Write-Host -ForegroundColor Cyan "Copying userdata and conf folder contents to temp directory"
mkdir "$TempDir\userdata" | Out-Null
Copy-Item $OHUserdata $TempDir -Recurse -Force
@@ -88,18 +88,9 @@
Copy-Item $OHConf $TempDir -Recurse -Force
Write-Host -ForegroundColor Cyan "Removing unnecessary files..."
- Remove-Item ($TempDir + '\userdata\etc\all.policy') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\branding.properties') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\branding-ssh.properties') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\config.properties') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\custom.properties') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\distribution.info') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\jre.properties') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\org.ops4j.pax.url.mvn.cfg') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\profile.cfg') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\startup.properties') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\version.properties') -ErrorAction SilentlyContinue
- Remove-Item ($TempDir + '\userdata\etc\org.apache.karaf*') -ErrorAction SilentlyContinue
+ foreach($FileName in Get-Content "$OHDirectory\runtime\bin\userdata_sysfiles.lst"){
+ Remove-Item ($TempDir + '\userdata\etc\' + $FileName) -ErrorAction SilentlyContinue
+ }
Remove-Item ($TempDir + '\userdata\cache') -Recurse -ErrorAction SilentlyContinue
Remove-Item ($TempDir + '\userdata\tmp') -Recurse -ErrorAction SilentlyContinue
@@ -113,7 +104,7 @@
Write-Host -ForegroundColor Cyan "Removing temp files..."
Remove-Item $TempDir -Recurse -ErrorAction SilentlyContinue
-
+
Write-Host -ForegroundColor Green "Backup created at $OHBackups\openhab2-backup-$timestamp.zip"
}
}
\ No newline at end of file
diff --git a/distributions/openhab/src/main/resources/bin/update b/distributions/openhab/src/main/resources/bin/update
index c60ad46a57..872e5fd690 100755
--- a/distributions/openhab/src/main/resources/bin/update
+++ b/distributions/openhab/src/main/resources/bin/update
@@ -28,14 +28,14 @@ setup(){
## Second parameter can be the openHAB path, if not assume the script is called from root!
if [ -z "$2" ]; then
- if [ -n "$OPENHAB_HOME" ]; then
+ if [ -n "$OPENHAB_HOME" ]; then
WorkingDir="$OPENHAB_HOME"
DirError="'OPENHAB_HOME' does not point towards openHAB's root directory."
else
WorkingDir="."
DirError="The script must be called from openHAB's root directory."
fi
- else
+ else
WorkingDir="$2"
DirError="The specified directory is not openHAB's root directory."
fi
@@ -259,22 +259,21 @@ echo ""
echo "Removing openHAB System Files..."
mkdir -p "$TempDir/runtime"
mkdir -p "$TempDir/userdata/etc"
-mv "$WorkingDir/runtime" "$TempDir/runtime/"
-mv "$WorkingDir/userdata/etc/all.policy" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/branding.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/branding-ssh.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/config.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/custom.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/custom.system.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/distribution.info" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/jre.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/org.apache.karaf"* "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/org.apache.felix"* "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/org.ops4j.pax.url.mvn.cfg" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/profile.cfg" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/startup.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/system.properties" "$TempDir/userdata/etc/"
-mv "$WorkingDir/userdata/etc/version.properties" "$TempDir/userdata/etc/"
+mv "$WorkingDir/runtime" "$TempDir/runtime/"
+
+## Go through a list of system files that are stored in the update archive.
+echo "New system filelist required, extracting from zip..."
+unzip -qp "$OutputFile" runtime/bin/userdata_sysfiles.lst > "$TempDir/filelist.lst" || {
+ echo "System Filelist not found in update, exiting..."
+ exit 1
+}
+while IFS= read -r fileName
+do
+ fullPath="$WorkingDir/userdata/etc/$fileName"
+ if [ -f "$fullPath" ]; then
+ mv "$fullPath" "$TempDir/userdata/etc/"
+ fi
+done < "$TempDir/filelist.lst"
## Clearing the cache and tmp folders is necessary for upgrade.
echo "Clearing cache..."
diff --git a/distributions/openhab/src/main/resources/bin/update.ps1 b/distributions/openhab/src/main/resources/bin/update.ps1
index e627d8e55a..6aa935f518 100644
--- a/distributions/openhab/src/main/resources/bin/update.ps1
+++ b/distributions/openhab/src/main/resources/bin/update.ps1
@@ -129,7 +129,7 @@ Function Update-openHAB {
Write-Host -ForegroundColor Cyan "Deleting the service..."
$service.Delete()
}
-
+
# Checking if openHAB is running
Write-Host -ForegroundColor Cyan "Checking whether openHAB is running..."
@@ -192,19 +192,9 @@ Function Update-openHAB {
# Delete current userdata files
Write-Host -ForegroundColor Cyan "Deleting current files in userdata that should not persist..."
- Remove-Item ($OHDirectory + '\userdata\etc\all.policy') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\branding.properties') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\branding-ssh.properties') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\config.properties') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\custom.properties') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\distribution.info') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\jre.properties') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\org.ops4j.pax.url.mvn.cfg') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\profile.cfg') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\startup.properties') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\version.properties') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\org.apache.karaf*') -ErrorAction SilentlyContinue
- Remove-Item ($OHDirectory + '\userdata\etc\org.apache.felix*') -ErrorAction SilentlyContinue
+ foreach($FileName in Get-Content "$TempDir\openhab-$OHVersion\runtime\bin\userdata_sysfiles.lst"){
+ Remove-Item "$OHDirectory\userdata\etc\$FileName" -ErrorAction SilentlyContinue
+ }
Remove-Item ($OHDirectory + '\userdata\cache') -Recurse -ErrorAction SilentlyContinue
Remove-Item ($OHDirectory + '\userdata\tmp') -Recurse -ErrorAction SilentlyContinue
diff --git a/distributions/openhab/src/main/resources/bin/userdata_sysfiles.lst b/distributions/openhab/src/main/resources/bin/userdata_sysfiles.lst
new file mode 100644
index 0000000000..ca61e3211b
--- /dev/null
+++ b/distributions/openhab/src/main/resources/bin/userdata_sysfiles.lst
@@ -0,0 +1,35 @@
+all.policy
+branding.properties
+branding-ssh.properties
+com.eclipsesource.jaxrs.connector.cfg
+com.eclipsesource.jaxrs.swagger.cfg
+config.properties
+custom.properties
+custom.system.properties
+distribution.info
+jmx.acl.org.apache.karaf.bundle.cfg
+jmx.acl.org.apache.karaf.config.cfg
+jre.properties
+org.apache.felix.eventadmin.impl.EventAdmin.cfg
+org.apache.felix.fileinstall-deploy.cfg
+org.apache.karaf.command.acl.bundle.cfg
+org.apache.karaf.command.acl.config.cfg
+org.apache.karaf.command.acl.feature.cfg
+org.apache.karaf.command.acl.jaas.cfg
+org.apache.karaf.command.acl.kar.cfg
+org.apache.karaf.command.acl.scope_bundle.cfg
+org.apache.karaf.command.acl.shell.cfg
+org.apache.karaf.command.acl.system.cfg
+org.apache.karaf.features.cfg
+org.apache.karaf.features.repos.cfg
+org.apache.karaf.jaas.cfg
+org.apache.karaf.kar.cfg
+org.apache.karaf.log.cfg
+org.apache.karaf.shell.cfg
+org.jupnp.cfg
+org.ops4j.pax.url.mvn.cfg
+overrides.properties
+profile.cfg
+startup.properties
+system.properties
+version.properties