From ce9593d4aed5275f884c20814168e2e426d531dd Mon Sep 17 00:00:00 2001 From: Ben Clark Date: Sun, 22 Apr 2018 16:05:35 +0100 Subject: [PATCH 1/2] Use list for systemfiles in userdata folder. Signed-off-by: Ben Clark --- .../openhab/src/main/resources/bin/backup | 33 +++++++++-------- .../openhab/src/main/resources/bin/backup.ps1 | 19 +++------- .../openhab/src/main/resources/bin/update | 35 +++++++++---------- .../openhab/src/main/resources/bin/update.ps1 | 18 +++------- .../main/resources/bin/userdata_sysfiles.lst | 35 +++++++++++++++++++ 5 files changed, 77 insertions(+), 63 deletions(-) create mode 100644 distributions/openhab/src/main/resources/bin/userdata_sysfiles.lst 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 From 5333da7007790c39abb8599ccd2e5c0429582866 Mon Sep 17 00:00:00 2001 From: Ben Clark Date: Mon, 30 Apr 2018 16:28:54 +0100 Subject: [PATCH 2/2] Remove execution permissions for .lst files Signed-off-by: Ben Clark --- distributions/openhab/src/main/descriptors/archive.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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