aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTIONS.md1
-rw-r--r--backup-partition.rsc28
-rw-r--r--global-functions.rsc7
-rw-r--r--packages-update.rsc52
4 files changed, 51 insertions, 37 deletions
diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md
index 13d0508..e9bf7d1 100644
--- a/CONTRIBUTIONS.md
+++ b/CONTRIBUTIONS.md
@@ -47,6 +47,7 @@ Add yourself to the list,
* Marek Čábák
* Oleksandr Yukhymchuk
* Peter Holtkamp
+* Peter Ponzel
* Reiner Vehrenkamp
* Richard Österreicher
* Simon Hitzemann
diff --git a/backup-partition.rsc b/backup-partition.rsc
index 3c883f7..34cdc8f 100644
--- a/backup-partition.rsc
+++ b/backup-partition.rsc
@@ -24,17 +24,18 @@
:global VersionToNum;
:local CopyTo do={
- :local ScriptName [ :tostr $1 ];
- :local FallbackTo [ :tostr $2 ];
+ :local ScriptName [ :tostr $1 ];
+ :local FallbackTo [ :toid $2 ];
+ :local FallbackToName [ :tostr $3 ];
:global LogPrint;
:do {
/partitions/copy-to $FallbackTo;
- $LogPrint info $ScriptName ("Copied RouterOS to partition '" . $FallbackTo . "'.");
+ $LogPrint info $ScriptName ("Copied RouterOS to partition '" . $FallbackToName . "'.");
:return true;
} on-error={
- $LogPrint error $ScriptName ("Failed copying RouterOS to partition '" . $FallbackTo . "'!");
+ $LogPrint error $ScriptName ("Failed copying RouterOS to partition '" . $FallbackToName . "'!");
:return false;
}
}
@@ -58,13 +59,20 @@
:error false;
}
- :local FallbackTo [ /partitions/get $ActiveRunning fallback-to ];
+ :local FallbackToName [ /partitions/get $ActiveRunning fallback-to ];
+ :local FallbackTo [ /partition/find where name=$FallbackToName !active ];
+
+ :if ([ :len $FallbackTo ] < 1) do={
+ $LogPrint error $ScriptName ("There is no inactive partition named '" . $FallbackToName . "'.");
+ :set PackagesUpdateBackupFailure true;
+ :error false;
+ }
:if ([ /partitions/get $ActiveRunning version ] != [ /partitions/get $FallbackTo version]) do={
:if ([ $ScriptFromTerminal $ScriptName ] = true) do={
- :put ("The partitions have different RouterOS versions. Copy over to '" . $FallbackTo . "'? [y/N]");
+ :put ("The partitions have different RouterOS versions. Copy over to '" . $FallbackToName . "'? [y/N]");
:if (([ /terminal/inkey timeout=60 ] % 32) = 25) do={
- :if ([ $CopyTo $ScriptName $FallbackTo ] = false) do={
+ :if ([ $CopyTo $ScriptName $FallbackTo $FallbackToName ] = false) do={
:set PackagesUpdateBackupFailure true;
:error false;
}
@@ -75,7 +83,7 @@
:local NumLatest [ $VersionToNum ($Update->"latest-version") ];
:if ($BackupPartitionCopyBeforeFeatureUpdate = true && $NumLatest > 0 && \
($NumInstalled & 0xffff0000) != ($NumLatest & 0xffff0000)) do={
- :if ([ $CopyTo $ScriptName $FallbackTo ] = false) do={
+ :if ([ $CopyTo $ScriptName $FallbackTo $FallbackToName ] = false) do={
:set PackagesUpdateBackupFailure true;
:error false;
}
@@ -89,10 +97,10 @@
"[ /partitions/get [ find where running ] name ] . \"'!\")");
/partitions/save-config-to $FallbackTo;
/system/scheduler/remove "running-from-backup-partition";
- $LogPrint info $ScriptName ("Saved configuration to partition '" . $FallbackTo . "'.");
+ $LogPrint info $ScriptName ("Saved configuration to partition '" . $FallbackToName . "'.");
} on-error={
/system/scheduler/remove [ find where name="running-from-backup-partition" ];
- $LogPrint error $ScriptName ("Failed saving configuration to partition '" . $FallbackTo . "'!");
+ $LogPrint error $ScriptName ("Failed saving configuration to partition '" . $FallbackToName . "'!");
:set PackagesUpdateBackupFailure true;
:error false;
}
diff --git a/global-functions.rsc b/global-functions.rsc
index 121c5ec..44b3abe 100644
--- a/global-functions.rsc
+++ b/global-functions.rsc
@@ -829,7 +829,12 @@
:global LogPrint;
:global WaitForFile;
- :if ([ :len [ /disk/find where slot=tmpfs type=tmpfs ] ] = 1) do={
+ :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];
+ :if ([ :len $TmpFs ] = 1) do={
+ :if ([ /disk/get $TmpFs disabled ] = true) do={
+ $LogPrint info $0 ("The tmpfs is disabled, enabling.");
+ /disk/enable $TmpFs;
+ }
:return true;
}
diff --git a/packages-update.rsc b/packages-update.rsc
index 0208b1e..97039ec 100644
--- a/packages-update.rsc
+++ b/packages-update.rsc
@@ -60,32 +60,6 @@
:error true;
}
- :local NumInstalled [ $VersionToNum ($Update->"installed-version") ];
- :local NumLatest [ $VersionToNum ($Update->"latest-version") ];
-
- :local DoDowngrade false;
- :if ($NumInstalled > $NumLatest) do={
- :if ([ $ScriptFromTerminal $ScriptName ] = true) do={
- :put "Latest version is older than installed one. Want to downgrade? [y/N]";
- :if (([ /terminal/inkey timeout=60 ] % 32) = 25) do={
- :set DoDowngrade true;
- } else={
- :put "Canceled...";
- }
- } else={
- $LogPrint warning $ScriptName ("Not installing downgrade automatically.");
- :error false;
- }
- }
-
- :foreach Package in=[ /system/package/find where !bundle ] do={
- :local PkgName [ /system/package/get $Package name ];
- :if ([ $DownloadPackage $PkgName ($Update->"latest-version") ] = false) do={
- $LogPrint error $ScriptName ("Download for package " . $PkgName . " failed, update aborted.");
- :error false;
- }
- }
-
:local RunOrder ({});
:foreach Script in=[ /system/script/find where source~("\n# provides: backup-script\\b") ] do={
:local ScriptVal [ /system/script/get $Script ];
@@ -120,6 +94,32 @@
}
}
+ :local NumInstalled [ $VersionToNum ($Update->"installed-version") ];
+ :local NumLatest [ $VersionToNum ($Update->"latest-version") ];
+
+ :local DoDowngrade false;
+ :if ($NumInstalled > $NumLatest) do={
+ :if ([ $ScriptFromTerminal $ScriptName ] = true) do={
+ :put "Latest version is older than installed one. Want to downgrade? [y/N]";
+ :if (([ /terminal/inkey timeout=60 ] % 32) = 25) do={
+ :set DoDowngrade true;
+ } else={
+ :put "Canceled...";
+ }
+ } else={
+ $LogPrint warning $ScriptName ("Not installing downgrade automatically.");
+ :error false;
+ }
+ }
+
+ :foreach Package in=[ /system/package/find where !bundle ] do={
+ :local PkgName [ /system/package/get $Package name ];
+ :if ([ $DownloadPackage $PkgName ($Update->"latest-version") ] = false) do={
+ $LogPrint error $ScriptName ("Download for package " . $PkgName . " failed, update aborted.");
+ :error false;
+ }
+ }
+
:if ($DoDowngrade = true) do={
$LogPrint info $ScriptName ("Rebooting for downgrade.");
:delay 1s;