From 7d5c9679952339c8064dc34967c13d0c7779ae87 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 14 Jan 2022 07:34:50 +0100 Subject: [PATCH 01/86] global-config: add $ScriptUpdatesUrlSuffix in overlay for RouterOS v6 --- global-config-overlay | 3 +++ 1 file changed, 3 insertions(+) diff --git a/global-config-overlay b/global-config-overlay index 37f78cf..63034c9 100644 --- a/global-config-overlay +++ b/global-config-overlay @@ -10,6 +10,9 @@ # Comment or remove to disable news and change notifications. :global GlobalConfigVersion 74; +# Use branch routeros-v6 with RouterOS v6: +:global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; + # Copy configuration from global-config here and modify it. From ee9818e34dbdfeba3104857a54c8ec1bc6aba4ce Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 14 Jan 2022 08:55:07 +0100 Subject: [PATCH 02/86] global: send notification on 'routeros-v6' This is mainly to keep the version in 'routeros-v6' and 'main' in sync... --- global-config | 2 +- global-config-overlay | 2 +- global-config.changes | 1 + global-functions | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/global-config b/global-config index 024e52f..75fbba4 100644 --- a/global-config +++ b/global-config @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! -:global GlobalConfigVersion 74; +:global GlobalConfigVersion 75; # This is used for DNS and backup file. :global Domain "example.com"; diff --git a/global-config-overlay b/global-config-overlay index 63034c9..c443bea 100644 --- a/global-config-overlay +++ b/global-config-overlay @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! # Comment or remove to disable news and change notifications. -:global GlobalConfigVersion 74; +:global GlobalConfigVersion 75; # Use branch routeros-v6 with RouterOS v6: :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; diff --git a/global-config.changes b/global-config.changes index a070ecd..6f0e2f7 100644 --- a/global-config.changes +++ b/global-config.changes @@ -78,6 +78,7 @@ 72="Introduced new script 'netwatch-dns' to manage DNS and DoH servers from netwatch."; 73="Renamed backup scripts ('cloud-backup' -> 'backup-cloud', 'email-backup' -> 'backup-email', 'upload-backup' -> 'backup-upload')."; 74="Extended 'hotspot-to-wpa', it can now read additional configuration from templates and hotspot users."; + 75="You are using the branch 'routeros-v6', well done."; }; # Migration steps to be applied on script updates diff --git a/global-functions b/global-functions index 625bbe4..9579f5c 100644 --- a/global-functions +++ b/global-functions @@ -8,7 +8,7 @@ # https://git.eworm.de/cgit/routeros-scripts/about/ # expected configuration version -:global ExpectedConfigVersion 74; +:global ExpectedConfigVersion 75; # global variables not to be changed by user :global GlobalFunctionsReady false; From 25338ca384ddd41c4b9d3ad2a937228562043235 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 17 Jan 2022 20:15:24 +0100 Subject: [PATCH 03/86] global-functions: $DownloadPackage: give url in debug output (cherry picked from commit 51cd11c80380eac0bfde4649cb30747c198881b7) --- global-functions | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/global-functions b/global-functions index 9579f5c..40cd271 100644 --- a/global-functions +++ b/global-functions @@ -278,13 +278,13 @@ $LogPrintExit2 error $0 ("Downloading required certificate failed.") true; } + :local Url ("https://upgrade.mikrotik.com/routeros/" . $PkgVer . "/" . $PkgFile); $LogPrintExit2 info $0 ("Downloading package file '" . $PkgName . "'...") false; + $LogPrintExit2 debug $0 ("... from url: " . $Url) false; :local Retry 3; :while ($Retry > 0) do={ :do { - / tool fetch check-certificate=yes-without-crl \ - ("https://upgrade.mikrotik.com/routeros/" . $PkgVer . "/" . $PkgFile) \ - dst-path=$PkgDest; + / tool fetch check-certificate=yes-without-crl $Url dst-path=$PkgDest; $WaitForFile $PkgDest; :if ([ / file get [ find where name=$PkgDest ] type ] = "package") do={ From 5363df356875325420a62273f00df1ea404d2aa4 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 17 Jan 2022 20:50:52 +0100 Subject: [PATCH 04/86] global-functions: $DownloadPackage: handle special case with name For RouterOS 6.x bundled package version and architecture are swapped. Closes: #21 (cherry picked from commit 1e6931c8e34d5035cb07baa98b57eccbcd4278ab) --- global-functions | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/global-functions b/global-functions index 40cd271..c6d311f 100644 --- a/global-functions +++ b/global-functions @@ -252,6 +252,7 @@ :global CleanFilePath; :global LogPrintExit2; :global MkDir; + :global VersionToNum; :global WaitForFile; :if ([ :len $PkgName ] = 0) do={ :return false; } @@ -259,6 +260,9 @@ :if ([ :len $PkgArch ] = 0) do={ :set PkgArch [ / system resource get architecture-name ]; } :local PkgFile ($PkgName . "-" . $PkgVer . "-" . $PkgArch . ".npk"); + :if ([ $VersionToNum $PkgVer ] < [ $VersionToNum "7.0" ] && $PkgName = "routeros") do={ + :set PkgFile ($PkgName . "-" . $PkgArch . "-" . $PkgVer . ".npk"); + } :if ($PkgArch = "x86_64" || $PkgName ~ "^routeros-") do={ :set PkgFile ($PkgName . "-" . $PkgVer . ".npk"); } From 9024e20c0b576d7d22c28ead3c6461e228bfda49 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Jan 2022 22:05:05 +0100 Subject: [PATCH 05/86] global-functions: $ScriptInstallUpdate: give final url in debug output (cherry picked from commit b4a5d824a268fae9f06ccf61fff4f67c760773ed) --- global-functions | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/global-functions b/global-functions index c6d311f..fc70cc2 100644 --- a/global-functions +++ b/global-functions @@ -731,15 +731,15 @@ :if ([ :len $SourceNew ] = 0 && $ScriptUpdatesFetch = true) do={ :local Comment [ $ParseKeyValueStore ($ScriptVal->"comment") ]; :if (!($Comment->"ignore" = true)) do={ - $LogPrintExit2 debug $0 ("Fetching script from url: " . $ScriptVal->"name") false; :do { :local BaseUrl $ScriptUpdatesBaseUrl; :local UrlSuffix $ScriptUpdatesUrlSuffix; :if ([ :typeof ($Comment->"base-url") ] = "str") do={ :set BaseUrl ($Comment->"base-url"); } :if ([ :typeof ($Comment->"url-suffix") ] = "str") do={ :set UrlSuffix ($Comment->"url-suffix"); } + :local Url ($BaseUrl . $ScriptVal->"name" . $UrlSuffix); - :local Result [ / tool fetch check-certificate=yes-without-crl \ - ($BaseUrl . $ScriptVal->"name" . $UrlSuffix) output=user as-value ]; + $LogPrintExit2 debug $0 ("Fetching script '" . $ScriptVal->"name" . "' from url: " . $Url) false; + :local Result [ / tool fetch check-certificate=yes-without-crl $Url output=user as-value ]; :if ($Result->"status" = "finished") do={ :set SourceNew ($Result->"data"); } @@ -804,11 +804,10 @@ :global GlobalConfigMigration; :local ChangeLogCode; - $LogPrintExit2 debug $0 ("Fetching news, changes and migration.") false; :do { - :local Result [ / tool fetch check-certificate=yes-without-crl \ - ($ScriptUpdatesBaseUrl . "global-config.changes" . $ScriptUpdatesUrlSuffix) \ - output=user as-value ]; + :local Url ($ScriptUpdatesBaseUrl . "global-config.changes" . $ScriptUpdatesUrlSuffix); + $LogPrintExit2 debug $0 ("Fetching news, changes and migration: " . $Url) false; + :local Result [ / tool fetch check-certificate=yes-without-crl $Url output=user as-value ]; :if ($Result->"status" = "finished") do={ :set ChangeLogCode ($Result->"data"); } From 0a9d0473f37b0091ff115ac7d47d93a521c37c7a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 20 Jan 2022 22:11:30 +0100 Subject: [PATCH 06/86] global-functions: $ScriptInstallUpdate: quote names in log output (cherry picked from commit 5e32105e7ea4bd357f9826d1ca24ca6e2c455bdc) --- global-functions | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/global-functions b/global-functions index fc70cc2..70f1077 100644 --- a/global-functions +++ b/global-functions @@ -723,8 +723,8 @@ :foreach Scheduler in=[ / system scheduler find where on-event~("\\b" . $ScriptVal->"name" . "\\b") ] do={ :local SchedulerVal [ / system scheduler get $Scheduler ]; :if ($ScriptVal->"policy" != $SchedulerVal->"policy") do={ - $LogPrintExit2 warning $0 ("Policies differ for script " . $ScriptVal->"name" . \ - " and its scheduler " . $SchedulerVal->"name" . "!") false; + $LogPrintExit2 warning $0 ("Policies differ for script '" . $ScriptVal->"name" . \ + "' and its scheduler '" . $SchedulerVal->"name" . "'!") false; } } @@ -744,7 +744,7 @@ :set SourceNew ($Result->"data"); } } on-error={ - $LogPrintExit2 warning $0 ("Failed fetching " . $ScriptVal->"name") false; + $LogPrintExit2 warning $0 ("Failed fetching script '" . $ScriptVal->"name" . "'!") false; } } } @@ -765,18 +765,18 @@ :set ReloadGlobalFunctions true; } } else={ - $LogPrintExit2 warning $0 ("Syntax validation for script " . $ScriptVal->"name" . \ - " failed! Ignoring!") false; + $LogPrintExit2 warning $0 ("Syntax validation for script '" . $ScriptVal->"name" . \ + "' failed! Ignoring!") false; } } else={ - $LogPrintExit2 warning $0 ("Looks like new script " . $ScriptVal->"name" . \ - " is not valid (missing shebang). Ignoring!") false; + $LogPrintExit2 warning $0 ("Looks like new script '" . $ScriptVal->"name" . \ + "' is not valid (missing shebang). Ignoring!") false; } } else={ - $LogPrintExit2 debug $0 ("Script " . $ScriptVal->"name" . " did not change.") false; + $LogPrintExit2 debug $0 ("Script '" . $ScriptVal->"name" . "' did not change.") false; } } else={ - $LogPrintExit2 debug $0 ("No update for script " . $ScriptVal->"name" . ".") false; + $LogPrintExit2 debug $0 ("No update for script '" . $ScriptVal->"name" . "'.") false; } } From 221b0409d5198c13c11b0dddb730bd0bf5752efe Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sun, 30 Jan 2022 22:05:58 +0100 Subject: [PATCH 07/86] check-routeros-update: use correct syntax (cherry picked from commit dfe995be270f1ee9621454e7feada84c33168db0) --- check-routeros-update | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/check-routeros-update b/check-routeros-update index 0f687a5..8cad07a 100644 --- a/check-routeros-update +++ b/check-routeros-update @@ -108,7 +108,7 @@ $LogPrintExit2 debug $0 ("Checking for updates...") false; :if ([ $ScriptFromTerminal $0 ] = true) do={ :put ("Do you want to install RouterOS version " . $Update->"latest-version" . "? [y/N]"); - :if (([ :terminal inkey timeout=60 ] % 32) = 25) do={ + :if (([ / terminal inkey timeout=60 ] % 32) = 25) do={ $DoUpdate; } else={ :put "Canceled..."; From 52bd08b750b16b03494af7f7bdd66225fa82995a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sun, 30 Jan 2022 22:06:37 +0100 Subject: [PATCH 08/86] packages-update: use correct syntax (cherry picked from commit 27a81bcbca52d513c5b9c10578474a1863bd08af) --- packages-update | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages-update b/packages-update index b6b0524..2e6d8be 100644 --- a/packages-update +++ b/packages-update @@ -35,7 +35,7 @@ $ScriptLock $0; :if ($NumInstalled > $NumLatest) do={ :if ([ $ScriptFromTerminal $0 ] = true) do={ :put "Latest version is older than installed one. Want to downgrade? [y/N]"; - :if (([ :terminal inkey timeout=60 ] % 32) = 25) do={ + :if (([ / terminal inkey timeout=60 ] % 32) = 25) do={ :set DoDowngrade true; } else={ :put "Canceled..."; @@ -61,7 +61,7 @@ $ScriptLock $0; $LogPrintExit2 warning $0 ("Running backup script " . $ScriptName . " before update failed!") false; :if ([ $ScriptFromTerminal $0 ] = true) do={ :put "Do you want to continue anyway? [y/N]"; - :if (([ :terminal inkey timeout=60 ] % 32) = 25) do={ + :if (([ / terminal inkey timeout=60 ] % 32) = 25) do={ $LogPrintExit2 info $0 ("User requested to continue anyway.") false; } else={ $LogPrintExit2 info $0 ("Canceled update...") true; @@ -80,7 +80,7 @@ $ScriptLock $0; :if ([ $ScriptFromTerminal $0 ] = true) do={ :put "Do you want to (s)chedule reboot or (r)eboot now? [s/R]"; - :if (([ :terminal inkey timeout=60 ] % 32) = 19) do={ + :if (([ / terminal inkey timeout=60 ] % 32) = 19) do={ / system scheduler add name="reboot-for-update" start-time=03:00:00 interval=1d \ on-event=(":global RandomDelay; \$RandomDelay 3600; " . \ "/ system scheduler remove reboot-for-update; / system reboot;"); From b2f45c03501b8f1ff446ec770c05fefcfa36d0ef Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 3 Feb 2022 14:29:37 +0100 Subject: [PATCH 09/86] doc/packages-update: link backup-cloud (cherry picked from commit dd19aea3628471ce54fefa30913879322f20e63a) --- doc/packages-update.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/packages-update.md b/doc/packages-update.md index ac69301..309a394 100644 --- a/doc/packages-update.md +++ b/doc/packages-update.md @@ -41,6 +41,7 @@ See also -------- * [Notify on RouterOS update](check-routeros-update.md) +* [Upload backup to Mikrotik cloud](backup-cloud.md) * [Send backup via e-mail](backup-email.md) * [Upload backup to server](backup-upload.md) From 8d49babb0114ad55ec3094f7d9cec2f1bfea43be Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 8 Feb 2022 17:39:53 +0100 Subject: [PATCH 10/86] doc/netwatch-notify: add sections (cherry picked from commit 42c203291a7db814be00f40caddb6980632358fa) --- doc/netwatch-notify.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index 78a0eed..9b504f7 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -38,6 +38,8 @@ The hosts to be checked have to be added to netwatch with specific comment: / tool netwatch add comment="notify, hostname=example.com" host=[ :resolve "example.com" ]; +### Hooks + It is possible to run an up hook command (`up-hook`) or down hook command (`down-hook`) when a notification is triggered. This has to be added in comment, note that some characters need extra escaping: @@ -48,10 +50,14 @@ Also there is a `pre-down-hook` that fires at two thirds of failed checks required for the notification. The idea is to fix the issue before a notification is sent. +### Count threshould + The count threshould (default is 5 checks) is configurable as well: / tool netwatch add comment="notify, hostname=example.com, count=10" host=104.18.144.11; +### Parents & dependencies + If the host is behind another checked host add a dependency, this will suppress notification if the parent host is down: @@ -61,6 +67,8 @@ suppress notification if the parent host is down: Note that every configured parent in a chain increases the check count threshould by one. +### Update from DNS + The host address can be updated dynamically. Give extra parameter `resolve` with a resolvable name: From c03da561cdf7cf6f47de79772749ef459f6ee495 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 3 Feb 2022 13:51:40 +0100 Subject: [PATCH 11/86] netwatch-notify: allow to suppress notification on host down (cherry picked from commit c6e581d4f90c9bea0adf405685aa634e264d1f3b) --- doc/netwatch-notify.md | 10 ++++++++++ global-config | 2 +- global-config-overlay | 2 +- global-config.changes | 1 + global-functions | 2 +- netwatch-notify | 16 +++++++++------- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index 9b504f7..dc107f2 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -78,6 +78,16 @@ But be warned: Dynamic updates will probably cause issues if the name has more than one record in dns - a high rate of configuration changes (and flash writes) at least. +### No notification on host down + +Also suppressing the notification on host down is possible with parameter +`no-down-notification`. This may be desired for devices that are usually +powered off, but accessibility is of interest. + + / tool netwatch add comment="notify, hostname=printer, no-down-notification" host=10.0.0.30; + +Go and get your coffee β˜•οΈ before sending the print job. + Also notification settings are required for e-mail, matrix and/or telegram. Tips & Tricks diff --git a/global-config b/global-config index 75fbba4..5f0f4db 100644 --- a/global-config +++ b/global-config @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! -:global GlobalConfigVersion 75; +:global GlobalConfigVersion 76; # This is used for DNS and backup file. :global Domain "example.com"; diff --git a/global-config-overlay b/global-config-overlay index c443bea..dfa2b99 100644 --- a/global-config-overlay +++ b/global-config-overlay @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! # Comment or remove to disable news and change notifications. -:global GlobalConfigVersion 75; +:global GlobalConfigVersion 76; # Use branch routeros-v6 with RouterOS v6: :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; diff --git a/global-config.changes b/global-config.changes index 6f0e2f7..37aa074 100644 --- a/global-config.changes +++ b/global-config.changes @@ -79,6 +79,7 @@ 73="Renamed backup scripts ('cloud-backup' -> 'backup-cloud', 'email-backup' -> 'backup-email', 'upload-backup' -> 'backup-upload')."; 74="Extended 'hotspot-to-wpa', it can now read additional configuration from templates and hotspot users."; 75="You are using the branch 'routeros-v6', well done."; + 76="Added an option to suppress notifications on host down with 'netwatch-notify'."; }; # Migration steps to be applied on script updates diff --git a/global-functions b/global-functions index 70f1077..68d8250 100644 --- a/global-functions +++ b/global-functions @@ -8,7 +8,7 @@ # https://git.eworm.de/cgit/routeros-scripts/about/ # expected configuration version -:global ExpectedConfigVersion 75; +:global ExpectedConfigVersion 76; # global variables not to be changed by user :global GlobalFunctionsReady false; diff --git a/netwatch-notify b/netwatch-notify index ae89cfb..e82cea6 100644 --- a/netwatch-notify +++ b/netwatch-notify @@ -122,10 +122,10 @@ $ScriptLock $0; :set Parent ($NetwatchNotify->$Parent->"parent"); } } - $LogPrintExit2 info $0 ("Host " . $HostName . " (" . $HostVal->"host" . ") is down for " . \ - $Metric->"count" . " checks, " . [ $IfThenElse ($ParentNotified = false) [ $IfThenElse \ - ($Metric->"notified" = true) ("already notified.") ($Count - $Metric->"count" . " to go.") ] \ - ("parent host " . $Parent . " is down.") ]) false; + $LogPrintExit2 [ $IfThenElse ($HostInfo->"no-down-notification" != true) info debug ] $0 \ + ("Host " . $HostName . " (" . $HostVal->"host" . ") is down for " . $Metric->"count" . " checks, " . \ + [ $IfThenElse ($ParentNotified = false) [ $IfThenElse ($Metric->"notified" = true) ("already notified.") \ + ($Count - $Metric->"count" . " to go.") ] ("parent host " . $Parent . " is down.") ]) false; :if ((($Count * 2) - ($Metric->"count" * 3)) / 2 = 0 && [ :typeof ($HostInfo->"pre-down-hook") ] = "str") do={ $NetwatchNotifyHook $HostName "pre-down" ($HostInfo->"pre-down-hook"); } @@ -134,9 +134,11 @@ $ScriptLock $0; :if ([ :typeof ($HostInfo->"down-hook") ] = "str") do={ :set Message ($Message . "\n\n" . [ $NetwatchNotifyHook $HostName "down" ($HostInfo->"down-hook") ]); } - $SendNotification2 ({ origin=$0; \ - subject=([ $SymbolForNotification "cross-mark" ] . "Netwatch Notify: " . $HostName . " down"); \ - message=$Message }); + :if ($HostInfo->"no-down-notification" != true) do={ + $SendNotification2 ({ origin=$0; \ + subject=([ $SymbolForNotification "cross-mark" ] . "Netwatch Notify: " . $HostName . " down"); \ + message=$Message }); + } :set ($Metric->"notified") true; } } From 0c607a8f9ce7ed9d33df775f03b0292787d9326f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 7 Feb 2022 21:46:10 +0100 Subject: [PATCH 12/86] netwatch-notify: nest conditions The logic here was right, but RouterOS runs the checks simultaneously. This caused delays even if no resolving was needed. Nesting the checks fixes this. (cherry picked from commit 0b46c508dc8f76955dd528900882b54c07b62ef3) --- netwatch-notify | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/netwatch-notify b/netwatch-notify index e82cea6..34a9e8f 100644 --- a/netwatch-notify +++ b/netwatch-notify @@ -66,21 +66,23 @@ $ScriptLock $0; :set $Metric ($NetwatchNotify->$HostName); } - :if ([ :typeof ($HostInfo->"resolve") ] = "str" && [ $DNSIsResolving ] = true) do={ - :do { - :local Resolve [ :resolve ($HostInfo->"resolve") ]; - :if ($Resolve != $HostVal->"host") do={ - $LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \ - $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . \ - "' resolves to different address " . $Resolve . ", updating.") false; - / tool netwatch set host=$Resolve $Host; - :set ($Metric->"resolve-failed") false; - } - } on-error={ - :if ($Metric->"resolve-failed" != true) do={ - $LogPrintExit2 warning $0 ("Resolving name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \ - $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . "' failed.") false; - :set ($Metric->"resolve-failed") true; + :if ([ :typeof ($HostInfo->"resolve") ] = "str") do={ + :if ([ $DNSIsResolving ] = true) do={ + :do { + :local Resolve [ :resolve ($HostInfo->"resolve") ]; + :if ($Resolve != $HostVal->"host") do={ + $LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \ + $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . \ + "' resolves to different address " . $Resolve . ", updating.") false; + / tool netwatch set host=$Resolve $Host; + :set ($Metric->"resolve-failed") false; + } + } on-error={ + :if ($Metric->"resolve-failed" != true) do={ + $LogPrintExit2 warning $0 ("Resolving name '" . $HostInfo->"resolve" . [ $IfThenElse ($HostInfo->"resolve" != \ + $HostInfo->"hostname") ("' for host '" . $HostInfo->"hostname") "" ] . "' failed.") false; + :set ($Metric->"resolve-failed") true; + } } } } From c95e8161485ac47aa3c4f65efe99f335cf330d46 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 7 Feb 2022 09:58:53 +0100 Subject: [PATCH 13/86] netwatch-dns: flush cache on configuration change (cherry picked from commit a47f5723cc4cdd287d36aaffd7619c17494f9345) --- netwatch-dns | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/netwatch-dns b/netwatch-dns index e731d95..e2fcfa3 100644 --- a/netwatch-dns +++ b/netwatch-dns @@ -43,12 +43,14 @@ $ScriptLock $0; :if ($DnsServers != $DnsCurrent) do={ $LogPrintExit2 info $0 ("Updating DNS servers: " . [ :tostr $DnsServers ]) false; / ip dns set servers=$DnsServers; + / ip dns cache flush; } } else={ :if ([ :len $DnsFallback ] > 0) do={ :if ($DnsFallback != $DnsCurrent) do={ $LogPrintExit2 info $0 ("Updating DNS servers to fallback: " . [ :tostr $DnsFallback ]) false; / ip dns set servers=$DnsFallback; + / ip dns cache flush; } } } @@ -69,10 +71,12 @@ $ScriptLock $0; :if ($DohServer != $DohCurrent) do={ $LogPrintExit2 info $0 ("Updating DoH server: " . $DohServer) false; / ip dns set use-doh-server=$DohServer; + / ip dns cache flush; } } else={ :if ($DohCurrent != "") do={ $LogPrintExit2 info $0 ("DoH server (" . $DohCurrent . ") is down, disabling.") false; / ip dns set use-doh-server=""; + / ip dns cache flush; } } From 32cc55f7d2570e80ab270ae6e5ce97e3c1bc7644 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 2 Feb 2022 21:10:10 +0100 Subject: [PATCH 14/86] introduce firmware-upgrade-reboot (cherry picked from commit 3c358980cb416c61419a0aaa384ab1db1dab8d29) --- README.md | 1 + doc/check-routeros-update.md | 1 + doc/firmware-upgrade-reboot.md | 36 ++++++++++++++++++++++++++++++++++ doc/packages-update.md | 1 + firmware-upgrade-reboot | 32 ++++++++++++++++++++++++++++++ global-config | 2 +- global-config-overlay | 2 +- global-config.changes | 1 + global-functions | 2 +- 9 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 doc/firmware-upgrade-reboot.md create mode 100644 firmware-upgrade-reboot diff --git a/README.md b/README.md index 990aef9..70d3ff5 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,7 @@ Available scripts * [Use wireless network with daily psk](doc/daily-psk.md) * [Comment DHCP leases with info from access list](doc/dhcp-lease-comment.md) * [Create DNS records for DHCP leases](doc/dhcp-to-dns.md) +* [Automatically upgrade firmware and reboot](doc/firmware-upgrade-reboot.md) * [Wait for global functions und modules](doc/global-wait.md) * [Send GPS position to server](doc/gps-track.md) * [Use WPA2 network with hotspot credentials](doc/hotspot-to-wpa.md) diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index 9385341..d55fa08 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -61,6 +61,7 @@ Installing script [packages-update](packages-update.md) gives extra options. See also -------- +* [Automatically upgrade firmware and reboot](firmware-upgrade-reboot.md) * [Manage system update](packages-update.md) --- diff --git a/doc/firmware-upgrade-reboot.md b/doc/firmware-upgrade-reboot.md new file mode 100644 index 0000000..6afc40e --- /dev/null +++ b/doc/firmware-upgrade-reboot.md @@ -0,0 +1,36 @@ +Automatically upgrade firmware and reboot +========================================= + +[β—€ Go back to main README](../README.md) + +πŸ›ˆ This script can not be used on its own but requires the base installation. +See [main README](../README.md) for details. + +Description +----------- + +RouterOS and firmware are upgraded separately, activating the latter +requires an extra reboot. This script handles upgrade and reboot. + +⚠️ **Warning**: This *should* be bullet proof, but I can not guarantee. In +worst case it has potential to cause a boot loop, so handle with care! + +Requirements and installation +----------------------------- + +Just install the script and create a scheduler: + + $ScriptInstallUpdate firmware-upgrade-reboot; + / system scheduler add name=firmware-upgrade-reboot on-event="/ system script run firmware-upgrade-reboot;" start-time=startup; + +Enjoy firmware being up to date and in sync with RouterOS. + +See also +-------- + +* [Notify on RouterOS update](check-routeros-update.md) +* [Manage system update](packages-update.md) + +--- +[β—€ Go back to main README](../README.md) +[β–² Go back to top](#top) diff --git a/doc/packages-update.md b/doc/packages-update.md index 309a394..a56f68e 100644 --- a/doc/packages-update.md +++ b/doc/packages-update.md @@ -44,6 +44,7 @@ See also * [Upload backup to Mikrotik cloud](backup-cloud.md) * [Send backup via e-mail](backup-email.md) * [Upload backup to server](backup-upload.md) +* [Automatically upgrade firmware and reboot](firmware-upgrade-reboot.md) --- [β—€ Go back to main README](../README.md) diff --git a/firmware-upgrade-reboot b/firmware-upgrade-reboot new file mode 100644 index 0000000..b3cb621 --- /dev/null +++ b/firmware-upgrade-reboot @@ -0,0 +1,32 @@ +#!rsc by RouterOS +# RouterOS script: firmware-upgrade-reboot +# Copyright (c) 2022 Christian Hesse +# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md +# +# install firmware upgrade, and reboot +# https://git.eworm.de/cgit/routeros-scripts/about/doc/firmware-upgrade-reboot.md + +:local 0 "firmware-upgrade-reboot"; +:global GlobalFunctionsReady; +:while ($GlobalFunctionsReady != true) do={ :delay 500ms; } + +:global LogPrintExit2; + +:local RouterBoard [ / system routerboard get ]; +:if ($RouterBoard->"current-firmware" = $RouterBoard->"upgrade-firmware") do={ + $LogPrintExit2 info $0 ("Firmware is already up to date.") true; +} + +:if ([ / system routerboard settings get auto-upgrade ] = false) do={ + $LogPrintExit2 info $0 ("Firmware version " . $RouterBoard->"upgrade-firmware" . \ + " is available, upgrading.") false; + / system routerboard upgrade; +} + +:while ([ :len [ / log find where topics=({"system";"info";"critical"}) \ + message="Firmware upgraded successfully, please reboot for changes to take effect!" ] ] = 0) do={ + :delay 1s; +} + +$LogPrintExit2 info $0 ("Firmware upgrade successful, rebooting.") false; +/ system reboot; diff --git a/global-config b/global-config index 5f0f4db..0554cdb 100644 --- a/global-config +++ b/global-config @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! -:global GlobalConfigVersion 76; +:global GlobalConfigVersion 77; # This is used for DNS and backup file. :global Domain "example.com"; diff --git a/global-config-overlay b/global-config-overlay index dfa2b99..9075df5 100644 --- a/global-config-overlay +++ b/global-config-overlay @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! # Comment or remove to disable news and change notifications. -:global GlobalConfigVersion 76; +:global GlobalConfigVersion 77; # Use branch routeros-v6 with RouterOS v6: :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; diff --git a/global-config.changes b/global-config.changes index 37aa074..d8cd39d 100644 --- a/global-config.changes +++ b/global-config.changes @@ -80,6 +80,7 @@ 74="Extended 'hotspot-to-wpa', it can now read additional configuration from templates and hotspot users."; 75="You are using the branch 'routeros-v6', well done."; 76="Added an option to suppress notifications on host down with 'netwatch-notify'."; + 77="Introduced new script 'firmware-upgrade-reboot'. Handle with care!"; }; # Migration steps to be applied on script updates diff --git a/global-functions b/global-functions index 68d8250..0a0b1ff 100644 --- a/global-functions +++ b/global-functions @@ -8,7 +8,7 @@ # https://git.eworm.de/cgit/routeros-scripts/about/ # expected configuration version -:global ExpectedConfigVersion 76; +:global ExpectedConfigVersion 77; # global variables not to be changed by user :global GlobalFunctionsReady false; From 943b60bfe38139e617b8f8eb58eccd0508d8f51a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 7 Feb 2022 14:28:09 +0100 Subject: [PATCH 15/86] update list of contributors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks a lot and please enjoy firmware-upgrade-reboot! 😊 (cherry picked from commit a50d9d30e3fbf6b4236f99cb40df656206492f8f) --- CONTRIBUTIONS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md index 33f82f9..ba4dfed 100644 --- a/CONTRIBUTIONS.md +++ b/CONTRIBUTIONS.md @@ -22,6 +22,7 @@ Add yourself to the list, * Abdul Mannan Abbasi * Andrew Cox * Christoph Boss (@Kampfwurst) +* Devin Dean (@dd2594gh) * Klaus Michael RΓΌbsam * Linux-Schmie.de Michael Gisbers * Manuel Kuhn From 3dd34523037ce356092eee59bc35acaa8d7020ed Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 10 Feb 2022 11:05:21 +0100 Subject: [PATCH 16/86] global-functions: $MkDir: do not act without directory (cherry picked from commit 7b48b25c271111570d27708ceac437e24f05e6fe) --- global-functions | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/global-functions b/global-functions index 0a0b1ff..9721b8b 100644 --- a/global-functions +++ b/global-functions @@ -510,6 +510,10 @@ :set Dir [ $CleanFilePath $Dir ]; + :if ($Dir = "") do={ + :return true; + } + :if ([ :len [ / file find where name=$Dir type="directory" ] ] = 1) do={ :return true; } From b60dcb5fad6181692a057a541a47cb1bc8ef2671 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 11 Feb 2022 00:19:41 +0100 Subject: [PATCH 17/86] firmware-upgrade-reboot: add a delay before reboot Looks like my timing was too good... Upgrade and reboot happened too fast, so device reported: system;error;critical router was rebooted without proper shutdown Let's try something smart... Delay the reboot by the amount of uptime, and hope all devices - slow and powerful - are happy. (cherry picked from commit 3f8e835233d8d9ac6f31572a1a115eb73c46ff92) --- firmware-upgrade-reboot | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/firmware-upgrade-reboot b/firmware-upgrade-reboot index b3cb621..a3a25db 100644 --- a/firmware-upgrade-reboot +++ b/firmware-upgrade-reboot @@ -28,5 +28,10 @@ :delay 1s; } +:local Uptime [ / system resource get uptime ]; +:if ($Uptime < 1m) do={ + :delay $Uptime; +} + $LogPrintExit2 info $0 ("Firmware upgrade successful, rebooting.") false; / system reboot; From a9805365d22ee32539b26509df21a0b8316d8ecc Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 11 Feb 2022 23:35:02 +0100 Subject: [PATCH 18/86] README: put hint into block quote (cherry picked from commit a5e421faebe8ac82c1ade73f8c1ea26ef728030b) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 70d3ff5..fae49a7 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ RouterOS script distribution](https://www.youtube.com/watch?v=B9neG3oAhcY) including demonstation recorded live at [MUM Europe 2019](https://mum.mikrotik.com/2019/EU/) in Vienna. -*Be warned!* Some details changed. So see the presentation, then follow -the steps below for up-to-date commands. +> ⚠️ **Warning**: Some details changed. So see the presentation, then follow +> the steps below for up-to-date commands. ### The long way in detail From 2f965630fac97cce6d46614818e3cebca10fc2f7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 11 Feb 2022 23:37:29 +0100 Subject: [PATCH 19/86] INITIAL-COMMANDS: put hint into block quote (cherry picked from commit 4b16dc06c4b1bcd7c7ec5e3849736765799e32e6) --- INITIAL-COMMANDS.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 9a8a129..2cea9a9 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -3,8 +3,9 @@ Initial commands [β—€ Go back to main README](README.md) -These command are inteneded for initial setup. If you are not aware of the -procedure please follow [the long way in detail](README.md#the-long-way-in-detail). +> ⚠️ **Warning**: These command are inteneded for initial setup. If you are +> not aware of the procedure please follow +> [the long way in detail](README.md#the-long-way-in-detail). One extra step is required if you run RouterOS v6: From 5f52e3e3f47706fa3edced5521796c38512d2aa3 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 11 Feb 2022 23:34:39 +0100 Subject: [PATCH 20/86] doc: put hints into block quote (cherry picked from commit 9e91ed56aaed77c6776ef95ebed791c40d7f21d2) --- doc/accesslist-duplicates.md | 4 ++-- doc/backup-cloud.md | 4 ++-- doc/backup-email.md | 5 ++--- doc/backup-upload.md | 4 ++-- doc/capsman-download-packages.md | 4 ++-- doc/capsman-rolling-upgrade.md | 4 ++-- doc/certificate-renew-issued.md | 4 ++-- doc/check-certificates.md | 4 ++-- doc/check-health.md | 4 ++-- doc/check-lte-firmware-upgrade.md | 4 ++-- doc/check-routeros-update.md | 4 ++-- doc/collect-wireless-mac.md | 4 ++-- doc/daily-psk.md | 4 ++-- doc/dhcp-lease-comment.md | 4 ++-- doc/dhcp-to-dns.md | 4 ++-- doc/firmware-upgrade-reboot.md | 8 ++++---- doc/global-wait.md | 4 ++-- doc/gps-track.md | 4 ++-- doc/hotspot-to-wpa.md | 4 ++-- doc/ipsec-to-dns.md | 4 ++-- doc/ipv6-update.md | 4 ++-- doc/lease-script.md | 4 ++-- doc/log-forward.md | 4 ++-- doc/mode-button.md | 4 ++-- doc/netwatch-dns.md | 4 ++-- doc/netwatch-notify.md | 4 ++-- doc/ospf-to-leds.md | 4 ++-- doc/packages-update.md | 4 ++-- doc/ppp-on-up.md | 4 ++-- doc/rotate-ntp.md | 4 ++-- doc/sms-action.md | 4 ++-- doc/sms-forward.md | 4 ++-- doc/update-gre-address.md | 4 ++-- doc/update-tunnelbroker.md | 4 ++-- 34 files changed, 70 insertions(+), 71 deletions(-) diff --git a/doc/accesslist-duplicates.md b/doc/accesslist-duplicates.md index e052c20..dcf2044 100644 --- a/doc/accesslist-duplicates.md +++ b/doc/accesslist-duplicates.md @@ -3,8 +3,8 @@ Find and remove access list duplicates [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index 117e4c7..92bf2f7 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -3,8 +3,8 @@ Upload backup to Mikrotik cloud [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/backup-email.md b/doc/backup-email.md index be36cb4..51ac9a4 100644 --- a/doc/backup-email.md +++ b/doc/backup-email.md @@ -3,8 +3,8 @@ Send backup via e-mail [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- @@ -12,7 +12,6 @@ Description This script sends binary backup (`/ system backup save`) and complete configuration export (`/ export terse`) via e-mail. - Requirements and installation ----------------------------- diff --git a/doc/backup-upload.md b/doc/backup-upload.md index 212b16c..d54b9bd 100644 --- a/doc/backup-upload.md +++ b/doc/backup-upload.md @@ -3,8 +3,8 @@ Upload backup to server [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/capsman-download-packages.md b/doc/capsman-download-packages.md index cdbd72b..8581ccc 100644 --- a/doc/capsman-download-packages.md +++ b/doc/capsman-download-packages.md @@ -3,8 +3,8 @@ Download packages for CAP upgrade from CAPsMAN [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/capsman-rolling-upgrade.md b/doc/capsman-rolling-upgrade.md index 92eafa6..fd89260 100644 --- a/doc/capsman-rolling-upgrade.md +++ b/doc/capsman-rolling-upgrade.md @@ -3,8 +3,8 @@ Run rolling CAP upgrades from CAPsMAN [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/certificate-renew-issued.md b/doc/certificate-renew-issued.md index 63d6408..c7c4635 100644 --- a/doc/certificate-renew-issued.md +++ b/doc/certificate-renew-issued.md @@ -3,8 +3,8 @@ Renew locally issued certificates [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/check-certificates.md b/doc/check-certificates.md index 44bee7a..2869b25 100644 --- a/doc/check-certificates.md +++ b/doc/check-certificates.md @@ -3,8 +3,8 @@ Renew certificates and notify on expiration [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/check-health.md b/doc/check-health.md index 8e271d6..358cc08 100644 --- a/doc/check-health.md +++ b/doc/check-health.md @@ -3,8 +3,8 @@ Notify about health state [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/check-lte-firmware-upgrade.md b/doc/check-lte-firmware-upgrade.md index ef68bcb..9729aa1 100644 --- a/doc/check-lte-firmware-upgrade.md +++ b/doc/check-lte-firmware-upgrade.md @@ -3,8 +3,8 @@ Notify on LTE firmware upgrade [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index d55fa08..ccf9bf2 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -3,8 +3,8 @@ Notify on RouterOS update [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/collect-wireless-mac.md b/doc/collect-wireless-mac.md index 380c89f..94b53b8 100644 --- a/doc/collect-wireless-mac.md +++ b/doc/collect-wireless-mac.md @@ -3,8 +3,8 @@ Collect MAC addresses in wireless access list [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/daily-psk.md b/doc/daily-psk.md index 105737a..c1a09e4 100644 --- a/doc/daily-psk.md +++ b/doc/daily-psk.md @@ -3,8 +3,8 @@ Use wireless network with daily psk [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/dhcp-lease-comment.md b/doc/dhcp-lease-comment.md index 0b8ceb2..3d19bdf 100644 --- a/doc/dhcp-lease-comment.md +++ b/doc/dhcp-lease-comment.md @@ -3,8 +3,8 @@ Comment DHCP leases with info from access list [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/dhcp-to-dns.md b/doc/dhcp-to-dns.md index 60eb29d..1982fa3 100644 --- a/doc/dhcp-to-dns.md +++ b/doc/dhcp-to-dns.md @@ -3,8 +3,8 @@ Create DNS records for DHCP leases [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/firmware-upgrade-reboot.md b/doc/firmware-upgrade-reboot.md index 6afc40e..7ca98fa 100644 --- a/doc/firmware-upgrade-reboot.md +++ b/doc/firmware-upgrade-reboot.md @@ -3,8 +3,8 @@ Automatically upgrade firmware and reboot [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- @@ -12,8 +12,8 @@ Description RouterOS and firmware are upgraded separately, activating the latter requires an extra reboot. This script handles upgrade and reboot. -⚠️ **Warning**: This *should* be bullet proof, but I can not guarantee. In -worst case it has potential to cause a boot loop, so handle with care! +> ⚠️ **Warning**: This *should* be bullet proof, but I can not guarantee. In +> worst case it has potential to cause a boot loop, so handle with care! Requirements and installation ----------------------------- diff --git a/doc/global-wait.md b/doc/global-wait.md index 2d9dad3..15b11f6 100644 --- a/doc/global-wait.md +++ b/doc/global-wait.md @@ -3,8 +3,8 @@ Wait for global functions and modules [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/gps-track.md b/doc/gps-track.md index e4e553c..d6ebe51 100644 --- a/doc/gps-track.md +++ b/doc/gps-track.md @@ -3,8 +3,8 @@ Send GPS position to server [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/hotspot-to-wpa.md b/doc/hotspot-to-wpa.md index f3dccdb..a29232d 100644 --- a/doc/hotspot-to-wpa.md +++ b/doc/hotspot-to-wpa.md @@ -3,8 +3,8 @@ Use WPA2 network with hotspot credentials [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/ipsec-to-dns.md b/doc/ipsec-to-dns.md index 9a0f486..d293b2c 100644 --- a/doc/ipsec-to-dns.md +++ b/doc/ipsec-to-dns.md @@ -3,8 +3,8 @@ Create DNS records for IPSec peers [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/ipv6-update.md b/doc/ipv6-update.md index 994ea23..8290e9d 100644 --- a/doc/ipv6-update.md +++ b/doc/ipv6-update.md @@ -3,8 +3,8 @@ Update configuration on IPv6 prefix change [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/lease-script.md b/doc/lease-script.md index 3d8a29b..78aeb36 100644 --- a/doc/lease-script.md +++ b/doc/lease-script.md @@ -3,8 +3,8 @@ Run other scripts on DHCP lease [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/log-forward.md b/doc/log-forward.md index e3603b5..b7ca016 100644 --- a/doc/log-forward.md +++ b/doc/log-forward.md @@ -3,8 +3,8 @@ Forward log messages via notification [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/mode-button.md b/doc/mode-button.md index 3cea720..49a40bc 100644 --- a/doc/mode-button.md +++ b/doc/mode-button.md @@ -3,8 +3,8 @@ Mode button with multiple presses [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/netwatch-dns.md b/doc/netwatch-dns.md index 96710a2..adb35ac 100644 --- a/doc/netwatch-dns.md +++ b/doc/netwatch-dns.md @@ -3,8 +3,8 @@ Manage DNS and DoH servers from netwatch [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index dc107f2..b111d59 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -3,8 +3,8 @@ Notify on host up and down [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/ospf-to-leds.md b/doc/ospf-to-leds.md index 908fb56..06c3b4b 100644 --- a/doc/ospf-to-leds.md +++ b/doc/ospf-to-leds.md @@ -3,8 +3,8 @@ Visualize OSPF state via LEDs [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/packages-update.md b/doc/packages-update.md index a56f68e..33f7b99 100644 --- a/doc/packages-update.md +++ b/doc/packages-update.md @@ -3,8 +3,8 @@ Manage system update [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/ppp-on-up.md b/doc/ppp-on-up.md index 7514f82..c0f7aee 100644 --- a/doc/ppp-on-up.md +++ b/doc/ppp-on-up.md @@ -3,8 +3,8 @@ Run scripts on ppp connection [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/rotate-ntp.md b/doc/rotate-ntp.md index c151db2..49231dd 100644 --- a/doc/rotate-ntp.md +++ b/doc/rotate-ntp.md @@ -3,8 +3,8 @@ Rotate NTP servers [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/sms-action.md b/doc/sms-action.md index e36d384..d83fa80 100644 --- a/doc/sms-action.md +++ b/doc/sms-action.md @@ -3,8 +3,8 @@ Act on received SMS [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/sms-forward.md b/doc/sms-forward.md index 873ccac..04c62a8 100644 --- a/doc/sms-forward.md +++ b/doc/sms-forward.md @@ -3,8 +3,8 @@ Forward received SMS [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/update-gre-address.md b/doc/update-gre-address.md index e45e17a..acd8f97 100644 --- a/doc/update-gre-address.md +++ b/doc/update-gre-address.md @@ -3,8 +3,8 @@ Update GRE configuration with dynamic addresses [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- diff --git a/doc/update-tunnelbroker.md b/doc/update-tunnelbroker.md index caff9ff..15d888f 100644 --- a/doc/update-tunnelbroker.md +++ b/doc/update-tunnelbroker.md @@ -3,8 +3,8 @@ Update tunnelbroker configuration [β—€ Go back to main README](../README.md) -πŸ›ˆ This script can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. Description ----------- From 5e7735a507e1b447f542c1251a28982fe5b30130 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 11 Feb 2022 23:50:56 +0100 Subject: [PATCH 21/86] doc/early-errors: no site structure, hint only (cherry picked from commit f0b0951968bc865877c1f5b6607935490ba68033) --- doc/early-errors.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/doc/early-errors.md b/doc/early-errors.md index a16da7d..b3c6800 100644 --- a/doc/early-errors.md +++ b/doc/early-errors.md @@ -1,11 +1,2 @@ -Send notification with early errors -=================================== - -[β—€ Go back to main README](../README.md) - -This script has been replace. Please migrate to +This script has been replaced. Please migrate to [Forward log messages via notification](log-forward.md). - ---- -[β—€ Go back to main README](../README.md) -[β–² Go back to top](#top) From d1c9fe4dce55feb0a77dd90eb9046897a89f8a35 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 12 Feb 2022 13:05:56 +0100 Subject: [PATCH 22/86] =?UTF-8?q?doc:=20use=20another=20info=20icon:=20?= =?UTF-8?q?=F0=9F=9B=88=20->=20=E2=84=B9=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit cd2a7dcf8ce3324179768b48a785f24f0d53aa19) --- doc/accesslist-duplicates.md | 2 +- doc/backup-cloud.md | 2 +- doc/backup-email.md | 2 +- doc/backup-upload.md | 2 +- doc/capsman-download-packages.md | 2 +- doc/capsman-rolling-upgrade.md | 2 +- doc/certificate-renew-issued.md | 2 +- doc/check-certificates.md | 2 +- doc/check-health.md | 2 +- doc/check-lte-firmware-upgrade.md | 2 +- doc/check-routeros-update.md | 2 +- doc/collect-wireless-mac.md | 2 +- doc/daily-psk.md | 2 +- doc/dhcp-lease-comment.md | 2 +- doc/dhcp-to-dns.md | 2 +- doc/firmware-upgrade-reboot.md | 2 +- doc/global-wait.md | 2 +- doc/gps-track.md | 2 +- doc/hotspot-to-wpa.md | 2 +- doc/ipsec-to-dns.md | 2 +- doc/ipv6-update.md | 2 +- doc/lease-script.md | 2 +- doc/log-forward.md | 2 +- doc/mode-button.md | 2 +- doc/netwatch-dns.md | 2 +- doc/netwatch-notify.md | 2 +- doc/ospf-to-leds.md | 2 +- doc/packages-update.md | 2 +- doc/ppp-on-up.md | 2 +- doc/rotate-ntp.md | 2 +- doc/sms-action.md | 2 +- doc/sms-forward.md | 2 +- doc/update-gre-address.md | 2 +- doc/update-tunnelbroker.md | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/doc/accesslist-duplicates.md b/doc/accesslist-duplicates.md index dcf2044..db1e00a 100644 --- a/doc/accesslist-duplicates.md +++ b/doc/accesslist-duplicates.md @@ -3,7 +3,7 @@ Find and remove access list duplicates [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index 92bf2f7..4df14fd 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -3,7 +3,7 @@ Upload backup to Mikrotik cloud [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/backup-email.md b/doc/backup-email.md index 51ac9a4..e6bed51 100644 --- a/doc/backup-email.md +++ b/doc/backup-email.md @@ -3,7 +3,7 @@ Send backup via e-mail [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/backup-upload.md b/doc/backup-upload.md index d54b9bd..1e17d62 100644 --- a/doc/backup-upload.md +++ b/doc/backup-upload.md @@ -3,7 +3,7 @@ Upload backup to server [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/capsman-download-packages.md b/doc/capsman-download-packages.md index 8581ccc..9cee6e6 100644 --- a/doc/capsman-download-packages.md +++ b/doc/capsman-download-packages.md @@ -3,7 +3,7 @@ Download packages for CAP upgrade from CAPsMAN [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/capsman-rolling-upgrade.md b/doc/capsman-rolling-upgrade.md index fd89260..34e3c91 100644 --- a/doc/capsman-rolling-upgrade.md +++ b/doc/capsman-rolling-upgrade.md @@ -3,7 +3,7 @@ Run rolling CAP upgrades from CAPsMAN [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/certificate-renew-issued.md b/doc/certificate-renew-issued.md index c7c4635..d7c4676 100644 --- a/doc/certificate-renew-issued.md +++ b/doc/certificate-renew-issued.md @@ -3,7 +3,7 @@ Renew locally issued certificates [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/check-certificates.md b/doc/check-certificates.md index 2869b25..f6a4d22 100644 --- a/doc/check-certificates.md +++ b/doc/check-certificates.md @@ -3,7 +3,7 @@ Renew certificates and notify on expiration [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/check-health.md b/doc/check-health.md index 358cc08..778c080 100644 --- a/doc/check-health.md +++ b/doc/check-health.md @@ -3,7 +3,7 @@ Notify about health state [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/check-lte-firmware-upgrade.md b/doc/check-lte-firmware-upgrade.md index 9729aa1..a9da4a2 100644 --- a/doc/check-lte-firmware-upgrade.md +++ b/doc/check-lte-firmware-upgrade.md @@ -3,7 +3,7 @@ Notify on LTE firmware upgrade [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index ccf9bf2..766c258 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -3,7 +3,7 @@ Notify on RouterOS update [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/collect-wireless-mac.md b/doc/collect-wireless-mac.md index 94b53b8..3120749 100644 --- a/doc/collect-wireless-mac.md +++ b/doc/collect-wireless-mac.md @@ -3,7 +3,7 @@ Collect MAC addresses in wireless access list [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/daily-psk.md b/doc/daily-psk.md index c1a09e4..28baac0 100644 --- a/doc/daily-psk.md +++ b/doc/daily-psk.md @@ -3,7 +3,7 @@ Use wireless network with daily psk [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/dhcp-lease-comment.md b/doc/dhcp-lease-comment.md index 3d19bdf..8679bfa 100644 --- a/doc/dhcp-lease-comment.md +++ b/doc/dhcp-lease-comment.md @@ -3,7 +3,7 @@ Comment DHCP leases with info from access list [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/dhcp-to-dns.md b/doc/dhcp-to-dns.md index 1982fa3..245b457 100644 --- a/doc/dhcp-to-dns.md +++ b/doc/dhcp-to-dns.md @@ -3,7 +3,7 @@ Create DNS records for DHCP leases [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/firmware-upgrade-reboot.md b/doc/firmware-upgrade-reboot.md index 7ca98fa..c913d8e 100644 --- a/doc/firmware-upgrade-reboot.md +++ b/doc/firmware-upgrade-reboot.md @@ -3,7 +3,7 @@ Automatically upgrade firmware and reboot [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/global-wait.md b/doc/global-wait.md index 15b11f6..2a7fbfa 100644 --- a/doc/global-wait.md +++ b/doc/global-wait.md @@ -3,7 +3,7 @@ Wait for global functions and modules [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/gps-track.md b/doc/gps-track.md index d6ebe51..3b9c94f 100644 --- a/doc/gps-track.md +++ b/doc/gps-track.md @@ -3,7 +3,7 @@ Send GPS position to server [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/hotspot-to-wpa.md b/doc/hotspot-to-wpa.md index a29232d..b410979 100644 --- a/doc/hotspot-to-wpa.md +++ b/doc/hotspot-to-wpa.md @@ -3,7 +3,7 @@ Use WPA2 network with hotspot credentials [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/ipsec-to-dns.md b/doc/ipsec-to-dns.md index d293b2c..349ae63 100644 --- a/doc/ipsec-to-dns.md +++ b/doc/ipsec-to-dns.md @@ -3,7 +3,7 @@ Create DNS records for IPSec peers [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/ipv6-update.md b/doc/ipv6-update.md index 8290e9d..ae4eb6a 100644 --- a/doc/ipv6-update.md +++ b/doc/ipv6-update.md @@ -3,7 +3,7 @@ Update configuration on IPv6 prefix change [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/lease-script.md b/doc/lease-script.md index 78aeb36..0ad67fb 100644 --- a/doc/lease-script.md +++ b/doc/lease-script.md @@ -3,7 +3,7 @@ Run other scripts on DHCP lease [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/log-forward.md b/doc/log-forward.md index b7ca016..3a0f3be 100644 --- a/doc/log-forward.md +++ b/doc/log-forward.md @@ -3,7 +3,7 @@ Forward log messages via notification [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/mode-button.md b/doc/mode-button.md index 49a40bc..c1c059e 100644 --- a/doc/mode-button.md +++ b/doc/mode-button.md @@ -3,7 +3,7 @@ Mode button with multiple presses [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/netwatch-dns.md b/doc/netwatch-dns.md index adb35ac..4fbfc2b 100644 --- a/doc/netwatch-dns.md +++ b/doc/netwatch-dns.md @@ -3,7 +3,7 @@ Manage DNS and DoH servers from netwatch [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index b111d59..c9917cb 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -3,7 +3,7 @@ Notify on host up and down [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/ospf-to-leds.md b/doc/ospf-to-leds.md index 06c3b4b..2fba33e 100644 --- a/doc/ospf-to-leds.md +++ b/doc/ospf-to-leds.md @@ -3,7 +3,7 @@ Visualize OSPF state via LEDs [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/packages-update.md b/doc/packages-update.md index 33f7b99..0007acc 100644 --- a/doc/packages-update.md +++ b/doc/packages-update.md @@ -3,7 +3,7 @@ Manage system update [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/ppp-on-up.md b/doc/ppp-on-up.md index c0f7aee..ae58da5 100644 --- a/doc/ppp-on-up.md +++ b/doc/ppp-on-up.md @@ -3,7 +3,7 @@ Run scripts on ppp connection [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/rotate-ntp.md b/doc/rotate-ntp.md index 49231dd..775b977 100644 --- a/doc/rotate-ntp.md +++ b/doc/rotate-ntp.md @@ -3,7 +3,7 @@ Rotate NTP servers [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/sms-action.md b/doc/sms-action.md index d83fa80..8442774 100644 --- a/doc/sms-action.md +++ b/doc/sms-action.md @@ -3,7 +3,7 @@ Act on received SMS [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/sms-forward.md b/doc/sms-forward.md index 04c62a8..417f462 100644 --- a/doc/sms-forward.md +++ b/doc/sms-forward.md @@ -3,7 +3,7 @@ Forward received SMS [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/update-gre-address.md b/doc/update-gre-address.md index acd8f97..c19e138 100644 --- a/doc/update-gre-address.md +++ b/doc/update-gre-address.md @@ -3,7 +3,7 @@ Update GRE configuration with dynamic addresses [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description diff --git a/doc/update-tunnelbroker.md b/doc/update-tunnelbroker.md index 15d888f..9dd7f19 100644 --- a/doc/update-tunnelbroker.md +++ b/doc/update-tunnelbroker.md @@ -3,7 +3,7 @@ Update tunnelbroker configuration [β—€ Go back to main README](../README.md) -> πŸ›ˆ **Info**: This script can not be used on its own but requires the base +> ℹ️ **Info**: This script can not be used on its own but requires the base > installation. See [main README](../README.md) for details. Description From 798fd7cc86eeac7e460a6dd670fdfdfeabdfe754 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 12 Feb 2022 13:15:33 +0100 Subject: [PATCH 23/86] doc/mod: put hints into block quote, update info icon, fix links (cherry picked from commit fd36241be649989e7b26348db31a3d3461888a1c) --- doc/mod/bridge-port-to.md | 8 ++++---- doc/mod/bridge-port-vlan.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/mod/bridge-port-to.md b/doc/mod/bridge-port-to.md index 5b2817b..02d1e8d 100644 --- a/doc/mod/bridge-port-to.md +++ b/doc/mod/bridge-port-to.md @@ -1,10 +1,10 @@ Manage ports in bridge ====================== -[β—€ Go back to main README](../README.md) +[β—€ Go back to main README](../../README.md) -πŸ›ˆ This module can not be used on its own but requires the base installation. -See [main README](../README.md) for details. +> ℹ️️ **Info**: This module can not be used on its own but requires the base +> installation. See [main README](../../README.md) for details. Description ----------- @@ -77,5 +77,5 @@ See also * [Manage VLANs on bridge ports](bridge-port-vlan.md) --- -[β—€ Go back to main README](../README.md) +[β—€ Go back to main README](../../README.md) [β–² Go back to top](#top) diff --git a/doc/mod/bridge-port-vlan.md b/doc/mod/bridge-port-vlan.md index 67dd04d..290826e 100644 --- a/doc/mod/bridge-port-vlan.md +++ b/doc/mod/bridge-port-vlan.md @@ -3,8 +3,8 @@ Manage VLANs on bridge ports [β—€ Go back to main README](../../README.md) -πŸ›ˆ This module can not be used on its own but requires the base installation. -See [main README](../../README.md) for details. +> ℹ️️ **Info**: This module can not be used on its own but requires the base +> installation. See [main README](../../README.md) for details. Description ----------- From 17b3e04d4141072a650b877ac601a6ac7fe0a800 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sun, 20 Feb 2022 23:34:35 +0100 Subject: [PATCH 24/86] doc/check-routeros-update: mention e-mail, matrix and telegram (cherry picked from commit 6f27553f15787540a7b4bc353d89aa4d3d268830) --- doc/check-routeros-update.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index 766c258..da74639 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -47,6 +47,8 @@ safe versions from a web server. The configuration goes to * `SafeUpdateUrl`: url to check for safe update, the channel (`long-term`, `stable` or `testing`) is appended +Also notification settings are required for e-mail, matrix and/or telegram. + Usage and invocation -------------------- From 06bdce1378f717d4f5c3bb61f5d560cb334f82fc Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sat, 19 Feb 2022 14:13:23 +0100 Subject: [PATCH 25/86] Makefile: match all *.md files, incl. doc/mod/ (cherry picked from commit 886cd67edba86906fea4c0d753b13b7c68c5e78b) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b07d27d..9f21255 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ TEMPLATE = $(wildcard *.template) CAPSMAN = $(TEMPLATE:.template=.capsman) LOCAL = $(TEMPLATE:.template=.local) -MARKDOWN = $(wildcard *.md) $(wildcard doc/*.md) +MARKDOWN = $(wildcard *.md doc/*.md doc/mod/*.md) HTML = $(MARKDOWN:.md=.html) all: $(CAPSMAN) $(LOCAL) $(HTML) From cd1de8145b9000f0adec87c1a991007043ef5171 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 16 Nov 2021 16:03:43 +0100 Subject: [PATCH 26/86] add doc/mod/notification-telegram (cherry picked from commit e6a686187c3d3c981b7ab86b4cbce46fc6466da4) --- README.md | 1 + doc/backup-cloud.md | 3 +- doc/backup-upload.md | 3 +- doc/check-certificates.md | 2 +- doc/check-health.md | 3 +- doc/check-lte-firmware-upgrade.md | 3 +- doc/check-routeros-update.md | 3 +- doc/collect-wireless-mac.md | 3 +- doc/daily-psk.md | 3 +- doc/log-forward.md | 3 +- doc/mod/notification-telegram.d/newbot.avif | Bin 0 -> 35870 bytes doc/mod/notification-telegram.md | 58 ++++++++++++++++++++ doc/netwatch-notify.md | 3 +- doc/sms-forward.md | 5 +- 14 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 doc/mod/notification-telegram.d/newbot.avif create mode 100644 doc/mod/notification-telegram.md diff --git a/README.md b/README.md index fae49a7..eac6855 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,7 @@ Available modules * [Manage ports in bridge](doc/mod/bridge-port-to.md) * [Manage VLANs on bridge ports](doc/mod/bridge-port-vlan.md) +* [Send notifications via Telegram](doc/mod/notification-telegram.md) Contact ------- diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index 4df14fd..c768be1 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -30,7 +30,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `BackupPassword`: password to encrypt the backup with * `BackupRandomDelay`: delay up to amount of seconds when run from scheduler -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). Usage and invocation -------------------- diff --git a/doc/backup-upload.md b/doc/backup-upload.md index 1e17d62..cbda74e 100644 --- a/doc/backup-upload.md +++ b/doc/backup-upload.md @@ -36,7 +36,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `BackupUploadUser`: username for server authentication * `BackupUploadPass`: password for server authentication -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). ### Issues with SFTP client diff --git a/doc/check-certificates.md b/doc/check-certificates.md index f6a4d22..bddcd5a 100644 --- a/doc/check-certificates.md +++ b/doc/check-certificates.md @@ -27,7 +27,7 @@ Configuration ------------- The expiry notifications just require notification settings for e-mail, -matrix and/or telegram. +matrix and/or [telegram](mod/notification-telegram.md). For automatic download and renewal of certificates you need configuration in `global-config-overlay`, these are the parameters: diff --git a/doc/check-health.md b/doc/check-health.md index 778c080..81a9f75 100644 --- a/doc/check-health.md +++ b/doc/check-health.md @@ -56,7 +56,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `CheckHealthVoltageLow`: value (in volt*10) giving a hard lower limit * `CheckHealthVoltagePercent`: percentage value to trigger voltage jumps -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). --- [β—€ Go back to main README](../README.md) diff --git a/doc/check-lte-firmware-upgrade.md b/doc/check-lte-firmware-upgrade.md index a9da4a2..e5027a8 100644 --- a/doc/check-lte-firmware-upgrade.md +++ b/doc/check-lte-firmware-upgrade.md @@ -35,7 +35,8 @@ Just install the script: Configuration ------------- -Notification setting are required for e-mail, matrix and/or telegram. +Notification setting are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). See also -------- diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index da74639..b8f6183 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -47,7 +47,8 @@ safe versions from a web server. The configuration goes to * `SafeUpdateUrl`: url to check for safe update, the channel (`long-term`, `stable` or `testing`) is appended -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). Usage and invocation -------------------- diff --git a/doc/collect-wireless-mac.md b/doc/collect-wireless-mac.md index 3120749..4e629a5 100644 --- a/doc/collect-wireless-mac.md +++ b/doc/collect-wireless-mac.md @@ -40,7 +40,8 @@ On first run a disabled access list entry acting as marker (with comment "`--- collected above ---`") is added. Move this entry to define where new entries are to be added. -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). Usage and invocation -------------------- diff --git a/doc/daily-psk.md b/doc/daily-psk.md index 28baac0..0d6ddef 100644 --- a/doc/daily-psk.md +++ b/doc/daily-psk.md @@ -51,7 +51,8 @@ Then add an access list entry: / interface wireless access-list add comment="Daily PSK" interface=wl-daily private-pre-shared-key="ToBeChangedDaily"; -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). --- [β—€ Go back to main README](../README.md) diff --git a/doc/log-forward.md b/doc/log-forward.md index 3a0f3be..6ff652f 100644 --- a/doc/log-forward.md +++ b/doc/log-forward.md @@ -46,7 +46,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `LogForwardIncludeMessage`: define message text to be forwarded (even if filter matches) -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md)m. --- [β—€ Go back to main README](../README.md) diff --git a/doc/mod/notification-telegram.d/newbot.avif b/doc/mod/notification-telegram.d/newbot.avif new file mode 100644 index 0000000000000000000000000000000000000000..1fc7355fd56c8102d7f754be052dada52ce71790 GIT binary patch literal 35870 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

rb2y&J9R0rU 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 literal 0 HcmV?d00001 diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md new file mode 100644 index 0000000..511d9a2 --- /dev/null +++ b/doc/mod/notification-telegram.md @@ -0,0 +1,58 @@ +Send notifications via Telegram +=============================== + +[β—€ Go back to main README](../../README.md) + +> ℹ️️ **Info**: This module can not be used on its own but requires the base +> installation. See [main README](../../README.md) for details. + +Description +----------- + +This module adds support for sending notifications via +[Telegram](https://telegram.org/) via bot api. A queue is used to make sure +notifications are not lost on failure but sent later. + +Requirements and installation +----------------------------- + +Just install the module: + + $ScriptInstallUpdate mod/notification-telegram; + +Also install Telegram on at least one of your mobile and/or desktop devices +and create an account. + +Configuration +------------- + +Open Telegram, then start a chat with [BotFather](https://t.me/BotFather) and +create your own bot: + +![create new bot](notification-telegram.d/newbot.avif) + +Now open a chat with your bot and start it by clicking the `START` button. + +Open just another chat with [GetIDs Bot](https://t.me/getidsbot), again start +with the `START` button. It will send you some information, including the +`id`, just below `You`. + +Finally edit `global-config-overlay`, add `TelegramTokenId` with the token +from *BotFather* and `TelegramChatId` with your id from *GetIDs Bot*. Then +reload the configuration. + +### Notifications to a group + +Sending notifications to a group is possible as well. Add your bot and the +*GetIDs Bot* to a group, then use the group's id (which starts with a dash) +for `TelegramChatId`. Then remove *GetIDs Bot* from group. + +Usage and invocation +-------------------- + +There's nothing special to do. Every script or function sending a notification +will now send it to your Telegram account. + +--- +[β—€ Go back to main README](../../README.md) +[β–² Go back to top](#top) diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index c9917cb..47fa5f3 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -88,7 +88,8 @@ powered off, but accessibility is of interest. Go and get your coffee β˜•οΈ before sending the print job. -Also notification settings are required for e-mail, matrix and/or telegram. +Also notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). Tips & Tricks ------------- diff --git a/doc/sms-forward.md b/doc/sms-forward.md index 417f462..9028045 100644 --- a/doc/sms-forward.md +++ b/doc/sms-forward.md @@ -31,8 +31,9 @@ Just install the script: Configuration ------------- -Notification settings are required for e-mail, matrix and/or telegram. Also -you have to enable receiving of SMS: +Notification settings are required for e-mail, matrix and/or +[telegram](mod/notification-telegram.md). Also you have to enable receiving +of SMS: / tool sms set receive-enabled=yes; From 10bb0a9f52a9dbd4a92c72f444ed5b831c91e4df Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 16 Nov 2021 16:03:25 +0100 Subject: [PATCH 27/86] add doc/mod/notification-matrix (cherry picked from commit 07fc5c898ad36debad96d06e3a65fa06ccdadde8) --- README.md | 1 + doc/backup-cloud.md | 3 ++- doc/backup-upload.md | 3 ++- doc/check-certificates.md | 3 ++- doc/check-health.md | 3 ++- doc/check-lte-firmware-upgrade.md | 3 ++- doc/check-routeros-update.md | 3 ++- doc/collect-wireless-mac.md | 3 ++- doc/daily-psk.md | 3 ++- doc/log-forward.md | 3 ++- doc/mod/notification-matrix.md | 45 +++++++++++++++++++++++++++++++ doc/mod/notification-telegram.md | 5 ++++ doc/netwatch-notify.md | 3 ++- doc/sms-forward.md | 3 ++- 14 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 doc/mod/notification-matrix.md diff --git a/README.md b/README.md index eac6855..732afd9 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,7 @@ Available modules * [Manage ports in bridge](doc/mod/bridge-port-to.md) * [Manage VLANs on bridge ports](doc/mod/bridge-port-vlan.md) +* [Send notifications via Matrix](doc/mod/notification-matrix.md) * [Send notifications via Telegram](doc/mod/notification-telegram.md) Contact diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index c768be1..0761982 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -30,7 +30,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `BackupPassword`: password to encrypt the backup with * `BackupRandomDelay`: delay up to amount of seconds when run from scheduler -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). Usage and invocation diff --git a/doc/backup-upload.md b/doc/backup-upload.md index cbda74e..72781ba 100644 --- a/doc/backup-upload.md +++ b/doc/backup-upload.md @@ -36,7 +36,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `BackupUploadUser`: username for server authentication * `BackupUploadPass`: password for server authentication -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). ### Issues with SFTP client diff --git a/doc/check-certificates.md b/doc/check-certificates.md index bddcd5a..a553e6a 100644 --- a/doc/check-certificates.md +++ b/doc/check-certificates.md @@ -27,7 +27,8 @@ Configuration ------------- The expiry notifications just require notification settings for e-mail, -matrix and/or [telegram](mod/notification-telegram.md). +[matrix](mod/notification-matrix.md) and/or +[telegram](mod/notification-telegram.md). For automatic download and renewal of certificates you need configuration in `global-config-overlay`, these are the parameters: diff --git a/doc/check-health.md b/doc/check-health.md index 81a9f75..f6900ce 100644 --- a/doc/check-health.md +++ b/doc/check-health.md @@ -56,7 +56,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `CheckHealthVoltageLow`: value (in volt*10) giving a hard lower limit * `CheckHealthVoltagePercent`: percentage value to trigger voltage jumps -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). --- diff --git a/doc/check-lte-firmware-upgrade.md b/doc/check-lte-firmware-upgrade.md index e5027a8..704a86b 100644 --- a/doc/check-lte-firmware-upgrade.md +++ b/doc/check-lte-firmware-upgrade.md @@ -35,7 +35,8 @@ Just install the script: Configuration ------------- -Notification setting are required for e-mail, matrix and/or +Notification setting are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). See also diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index b8f6183..cac1850 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -47,7 +47,8 @@ safe versions from a web server. The configuration goes to * `SafeUpdateUrl`: url to check for safe update, the channel (`long-term`, `stable` or `testing`) is appended -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). Usage and invocation diff --git a/doc/collect-wireless-mac.md b/doc/collect-wireless-mac.md index 4e629a5..5425f76 100644 --- a/doc/collect-wireless-mac.md +++ b/doc/collect-wireless-mac.md @@ -40,7 +40,8 @@ On first run a disabled access list entry acting as marker (with comment "`--- collected above ---`") is added. Move this entry to define where new entries are to be added. -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). Usage and invocation diff --git a/doc/daily-psk.md b/doc/daily-psk.md index 0d6ddef..d204691 100644 --- a/doc/daily-psk.md +++ b/doc/daily-psk.md @@ -51,7 +51,8 @@ Then add an access list entry: / interface wireless access-list add comment="Daily PSK" interface=wl-daily private-pre-shared-key="ToBeChangedDaily"; -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). --- diff --git a/doc/log-forward.md b/doc/log-forward.md index 6ff652f..1ac6a04 100644 --- a/doc/log-forward.md +++ b/doc/log-forward.md @@ -46,7 +46,8 @@ The configuration goes to `global-config-overlay`, these are the parameters: * `LogForwardIncludeMessage`: define message text to be forwarded (even if filter matches) -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md)m. --- diff --git a/doc/mod/notification-matrix.md b/doc/mod/notification-matrix.md new file mode 100644 index 0000000..e357b5b --- /dev/null +++ b/doc/mod/notification-matrix.md @@ -0,0 +1,45 @@ +Send notifications via Matrix +============================= + +[β—€ Go back to main README](../../README.md) + +> ℹ️️ **Info**: This module can not be used on its own but requires the base +> installation. See [main README](../../README.md) for details. + +Description +----------- + +This module adds support for sending notifications via +[Matrix](https://matrix.org/) via client server api. A queue is used to +make sure notifications are not lost on failure but sent later. + +Requirements and installation +----------------------------- + +Just install the module: + + $ScriptInstallUpdate mod/notification-matrix; + +Also install a Matrix client on at least one of your mobile and/or desktop +devices and create an account. + +Configuration +------------- + +Edit `global-config-overlay`, add `MatrixHomeServer`, `MatrixAccessToken` and +`MatrixRoom`. Then reload the configuration. + +Usage and invocation +-------------------- + +There's nothing special to do. Every script or function sending a notification +will now send it to your Matrix account. + +See also +-------- + +* [Send notifications via Telegram](notification-telegram.md) + +--- +[β—€ Go back to main README](../../README.md) +[β–² Go back to top](#top) diff --git a/doc/mod/notification-telegram.md b/doc/mod/notification-telegram.md index 511d9a2..435694e 100644 --- a/doc/mod/notification-telegram.md +++ b/doc/mod/notification-telegram.md @@ -53,6 +53,11 @@ Usage and invocation There's nothing special to do. Every script or function sending a notification will now send it to your Telegram account. +See also +-------- + +* [Send notifications via Matrix](notification-matrix.md) + --- [β—€ Go back to main README](../../README.md) [β–² Go back to top](#top) diff --git a/doc/netwatch-notify.md b/doc/netwatch-notify.md index 47fa5f3..b2f6dd0 100644 --- a/doc/netwatch-notify.md +++ b/doc/netwatch-notify.md @@ -88,7 +88,8 @@ powered off, but accessibility is of interest. Go and get your coffee β˜•οΈ before sending the print job. -Also notification settings are required for e-mail, matrix and/or +Also notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). Tips & Tricks diff --git a/doc/sms-forward.md b/doc/sms-forward.md index 9028045..9ebae69 100644 --- a/doc/sms-forward.md +++ b/doc/sms-forward.md @@ -31,7 +31,8 @@ Just install the script: Configuration ------------- -Notification settings are required for e-mail, matrix and/or +Notification settings are required for e-mail, +[matrix](mod/notification-matrix.md) and/or [telegram](mod/notification-telegram.md). Also you have to enable receiving of SMS: From d1c4eb2303fc4ea3c2acbafe5b31825ca07b56a9 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 16 Nov 2021 16:02:55 +0100 Subject: [PATCH 28/86] add doc/mod/inspectvar (cherry picked from commit 002315035c25b8569d2b6f232a6f8dfba37cf07b) --- README.md | 1 + doc/mod/inspectvar.d/inspectvar.avif | Bin 0 -> 2891 bytes doc/mod/inspectvar.md | 33 +++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 doc/mod/inspectvar.d/inspectvar.avif create mode 100644 doc/mod/inspectvar.md diff --git a/README.md b/README.md index 732afd9..80e4693 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,7 @@ Available modules * [Manage ports in bridge](doc/mod/bridge-port-to.md) * [Manage VLANs on bridge ports](doc/mod/bridge-port-vlan.md) +* [Inspect variables](doc/mod/inspectvar.md) * [Send notifications via Matrix](doc/mod/notification-matrix.md) * [Send notifications via Telegram](doc/mod/notification-telegram.md) diff --git a/doc/mod/inspectvar.d/inspectvar.avif b/doc/mod/inspectvar.d/inspectvar.avif new file mode 100644 index 0000000000000000000000000000000000000000..d4a745f2c26446eb02c053a96294bfe35219a984 GIT binary patch literal 2891 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 literal 0 HcmV?d00001 diff --git a/doc/mod/inspectvar.md b/doc/mod/inspectvar.md new file mode 100644 index 0000000..d3fb3b2 --- /dev/null +++ b/doc/mod/inspectvar.md @@ -0,0 +1,33 @@ +Inspect variables +================= + +[β—€ Go back to main README](../../README.md) + +> ℹ️️ **Info**: This module can not be used on its own but requires the base +> installation. See [main README](../../README.md) for details. + +Description +----------- + +RouterOS handles not just scalar variables, but also arrays - even nested. +This module adds a function to inspect variables. + +Requirements and installation +----------------------------- + +Just install the module: + + $ScriptInstallUpdate mod/inspectvar; + +Usage and invocation +-------------------- + +Call the function `$InspectVar` with a variable as parameter: + + $InspectVar $ModeButton + +![InspectVar](inspectvar.d/inspectvar.avif) + +--- +[β—€ Go back to main README](../../README.md) +[β–² Go back to top](#top) From 39871f22210d6b48775bef4f78c73a78626fa7ba Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 16 Nov 2021 16:03:10 +0100 Subject: [PATCH 29/86] add doc/mod/ipcalc (cherry picked from commit e9953c361267f10fd15d3280ccd985062c1dde28) --- README.md | 1 + doc/mod/ipcalc.d/ipcalc.avif | Bin 0 -> 1791 bytes doc/mod/ipcalc.d/ipcalcreturn.avif | Bin 0 -> 1283 bytes doc/mod/ipcalc.md | 53 +++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 doc/mod/ipcalc.d/ipcalc.avif create mode 100644 doc/mod/ipcalc.d/ipcalcreturn.avif create mode 100644 doc/mod/ipcalc.md diff --git a/README.md b/README.md index 80e4693..f9a4fb1 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,7 @@ Available modules * [Manage ports in bridge](doc/mod/bridge-port-to.md) * [Manage VLANs on bridge ports](doc/mod/bridge-port-vlan.md) * [Inspect variables](doc/mod/inspectvar.md) +* [IP address calculation](doc/mod/ipcalc.md) * [Send notifications via Matrix](doc/mod/notification-matrix.md) * [Send notifications via Telegram](doc/mod/notification-telegram.md) diff --git a/doc/mod/ipcalc.d/ipcalc.avif b/doc/mod/ipcalc.d/ipcalc.avif new file mode 100644 index 0000000000000000000000000000000000000000..022f325bc4637fbb9e4cee8a8d9ad66eab3ba49e GIT binary patch literal 1791 zcmXv|3p~>c8~&RSjTz}+iOmv~bJ|KLa&M?;Tg+XqL$)?sEaEE;$#MHIq@&1mIbY2E zk{q{`+i|}XK5RlR=V;TAYxp+b@4WBt_df6YJkRfaUjP6Q0nBiQPbfJ65QP|N=S^qz*vZ=WtuSKL*yv7%!Y|UxGXNf*x z45sGa1W9*6w8LBLRCefI@A%0vuLcxBSLgON+KC5=le}DCpgRBs?=qY?8gOr%EK82<+EcD0E-GkjOm|k<|dp56PhQ7PJHXpq3wB8^o2leDnK2k5d=6f4Y(KPN{ zXikb}as9KN`Jizw!BGEC)nCcy^RUxXWT>!skOXQ6(&(BuS zZB^j^$}!d2rJ&r^Fs{hwr;XG~+FNEex4c*OG?Cs5ijn=fZ^9dLIJQOHxy0lVa89P> zI=gNZl+fc?o!HTo6-G!2PGX!<^IlRkN1o@Uv)MhFN(G@`93td2V0u@vr2Na>IMif{ zj2RHKcEsW2>$gjWfjG7ua%t<>vQ%2n;Xih|z9QvTAJ z90*6xc;%s%qpJ2pS^hgHCP8~bYQsoPEdzZAXaD(l%uCNR!3%6MR%*Cfnv&h_N7+tx zzz{EUIS+;l_;73Qz9w_7hE_akLK@-JD%kXhtJ_=t{o(-+e|b46XtCT(2LxAhZF$ zBa-^H^KND%XSFUV$&lh!XQpUXrlJV-yO;R*EHsdRgxJ#&vW#LB{C2{sb-L`O9qc6K z=V}&}cs)6rbFi`1RVUYFgln$$vG0Q3YH;}ivc|ft^Mf^XCK~3?VW_ZP8yq4ow7A+XW3;3JbmIuqm`Xkond@VS*K(2K)Oz8@;_wILqxi%O{~ zzrOP*?YW*jTu=%bL6p(4y7`z#Beae}rz2*|LTT|PdWfx_SCKYc(gKNI8Sz@X6ku5Q_J(& zro0pU+9?+0)u+0|c+qwK1O!)C`p9tp5z-vESQbP>D?;59yg~af+Z(UvG z5x^Ym)s4PzJHk?pGYy(O>aFO4Wt_GO;Qj$FP!eUDxr#agRs$aDEoD`sJ)K!MuLx(%}dRt0uKApN5kshW3dQq4wZ z3|{JjY8lT_t@=*$y)COT7da^D;UC+;G*xU`T)^u2l7)KX)l&9*oAf!kt=7t+1#rKD4FAgS Oj1?32im|Lp#Qy*bWgj&F literal 0 HcmV?d00001 diff --git a/doc/mod/ipcalc.d/ipcalcreturn.avif b/doc/mod/ipcalc.d/ipcalcreturn.avif new file mode 100644 index 0000000000000000000000000000000000000000..d858bb12cd8b487f6d1dc8106f978304eae4f524 GIT binary patch literal 1283 zcmZQzU{FXasVqn=%S>Yc0uY^>nP!-qnV9D5Xy^zO`jnemk_eIm0*#E6oFWL5fuSHX zxdg@r(K(q(Fk|=%GD~v7a*RMyE;A=T8N_p8U|EXYj+$pHb-VJwVH%`8CEKIWz* zmIyI$aayPrS=?}Nc3fg~lilY8%bn(BD&gO!-N<|KGGNgpL6aqstR0KLlreOP^Kyjy zDa*f^=woKey#4LpoY{Fi+FCUV;ZH)B&x}?K;+`Amb$-#`laJWBX3Bo|o!KCNq~Kie z>F1LEt9J9J>e>Ezlb_r7-RkS3{rnbR5{(x&hqn8cFIWHmRxN1NqfS}9XV-;w7W~Qz z(B8^f*SspX*}6pX)|||rNtG{`N7(BNRJq(_u-Rs>`0{nwiLf(83#5*|>Nz88KmFOP z*`c1Vt=5%$-Pt;+=b7N_S94N$cS?zg?y5fZ_-|%*cHpggw_i!g?Dx}jx27Kd>n>wD zeO=pO$L4}RPhb2BT<|w%&5@LpGc)V+t=Xm>{g4~_!bFkvl6(5zzI`Suc^ccimRA|b z?l~{_tF2(p-zCSd+x+LXxlq{<{8s4fypTUo|ZC>&(|#oIU;NG@YbZXU{M3y7J^u_0Nc# zM>*=*jx()XBwwd5*}L?1nf;E8pXzMO|4p|4naZ{PqTv(kOm(dguH4+0Rev}H)idWu zAAWi1DAw%aX7-z9;VPNbK>y}Epj~iDu4ff zOK5pv8p+5r#X}`np#Jmk{g>}_RsZyPxch)KhgSmEHW?P>Yf{TEo{N2}$66zFRwrL; zWpMo|(Y2TEzghI`#9y~phpzn#$|^dywCJ_cIfuh~0UYZW@Hm`(@@#AOw`R>x{iRRz zublh&%I=u$Eil`*#5P9C&~5!( z=GD`FPiWc1Sr~cw-}?B>Fv@KiRH33D@k&9~^# z+PiC(*xIFfC*1`XEz`0nR+zBAq?9e~XJtjE?FXM8zU3t>!v4~n*BoOm%yfwhHtKJS zWdB;Q_+y>@C%ropF53AUu&PX3x?R9(ZWotlrkvx;Tw`D1thZd#d3 ℹ️️ **Info**: This module can not be used on its own but requires the base +> installation. See [main README](../../README.md) for details. + +Description +----------- + +This module adds functions for IP address calculation. + +Requirements and installation +----------------------------- + +Just install the module: + + $ScriptInstallUpdate mod/ipcalc; + +Usage and invocation +-------------------- + +### IPCalc + +The function `$IPCalc` prints information to terminal, including: + +* address +* netmask +* network in CIDR notation +* minimum host address +* maximum host address +* broadcast address + +It expects an IP address in CIDR notation as argument. + + $IPCalc 192.168.88.1/24; + +![IPCalc](ipcalc.d/ipcalc.avif) + +### IPCalcReturn + +The function `$IPCalcReturn` expects an IP address in CIDR notation as +argument as well. But it does not print to terminal, instead it returns +the information in a named array. + + :put ([ $IPCalcReturn 192.168.88.1/24 ]->"broadcast"); + +![IPCalcReturn](ipcalc.d/ipcalcreturn.avif) + +--- +[β—€ Go back to main README](../../README.md) +[β–² Go back to top](#top) From 9419e3407731eea0594c8fbdff27d9688e656397 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 16 Nov 2021 16:03:56 +0100 Subject: [PATCH 30/86] add doc/mod/scriptrunonce --- README.md | 1 + doc/mod/scriptrunonce.d/hello-world.rsc | 3 ++ doc/mod/scriptrunonce.d/scriptrunonce.avif | Bin 0 -> 2466 bytes doc/mod/scriptrunonce.md | 35 +++++++++++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 doc/mod/scriptrunonce.d/hello-world.rsc create mode 100644 doc/mod/scriptrunonce.d/scriptrunonce.avif create mode 100644 doc/mod/scriptrunonce.md diff --git a/README.md b/README.md index f9a4fb1..80657af 100644 --- a/README.md +++ b/README.md @@ -243,6 +243,7 @@ Available modules * [IP address calculation](doc/mod/ipcalc.md) * [Send notifications via Matrix](doc/mod/notification-matrix.md) * [Send notifications via Telegram](doc/mod/notification-telegram.md) +* [Download script and run it once](doc/mod/scriptrunonce.md) Contact ------- diff --git a/doc/mod/scriptrunonce.d/hello-world.rsc b/doc/mod/scriptrunonce.d/hello-world.rsc new file mode 100644 index 0000000..17ec575 --- /dev/null +++ b/doc/mod/scriptrunonce.d/hello-world.rsc @@ -0,0 +1,3 @@ +#!rsc by RouterOS + +:put ("Hello World from " . [ / system identity get name ] . "!"); diff --git a/doc/mod/scriptrunonce.d/scriptrunonce.avif b/doc/mod/scriptrunonce.d/scriptrunonce.avif new file mode 100644 index 0000000000000000000000000000000000000000..614c72c670ff87f31bbd59d11c73927d62630129 GIT binary patch literal 2466 zcmXw4c{mh$7oH(Y_9aPnV_&MtSYnv0V;PsR6(h{G%`lU(j}V5)I>{1|ExshXB(6qw zC1b0|mXPJMRTyLK8-33`=lPxYocBG?Ip@D0005Bk4h|=vL$TffhMgiF>kYG72xI(`H5wI`j(I$RFqbXQeNe5J+I~mRN#^KLgKU zg9u)yjQ{|%EF;)69v=Zq#QtH}+1VM$g$@N9#Y&wr06`CbT;OdF9FZ}Z8^9XFpoFmm zJo;2)7~`-rK&H4ejH@2tJ<-7e0FJZTat%5-De2JvBn$~hmr8p&q6!>t5;U-AJf6@G4cq~G$_cvz#i)P#X1pM+$1ViJ-T1MiW0 zc6ZIdtAc)PTxW8BO!8Pg*o!at#}AA#0Ot;Ib~r?C4+B?WO8G>aIuKJ^Muq z5?Nb0`UOHlV77b;?9(C=ILrv{6&IT0BnRgU$Dwq%DuTaHd8CJZOt!nHJ!%(PrP(On zxHMu(fuz)|EprfgEcsw%0cnLgevg&7YNA53#F93kC%`7#{z7JyY#3_l^PY0=0?0;V< z&X^_YAgH4;uDomDj}4?(KAS5}z1_Jts{=oE<(5JQeq#cLS}lTt?%0Y|7>f*}UTnwv z;%72Z(#eqCK$m|mH^VA!z_O#{ZYprp4~ct?r(EgHAEb-O>Lzf1>R#Fd#vGSu! z?s>%w#W)O-`%&Z`!xVG2BnE!+Lv(hAqOV~>{1 z4&^OnSMI=w+O6Z!&pVUyz-8Fd;ST%wnvG8zzlotLB55EC;$SS*xXnx|c6y zI4`6WsKBV_u8*3J|fHgn?@n-CzDsVeqHyr3J$rhY|6 zI+JQ=<=d(_559ztWFy^LrLQJABwuy8iqNt?7JIEV6&F`^BZ0j2o$WmO`-Sg4RmA>M zqRhm%t?n5|-pVUzgu?G7b{qY+jD6R{06-k%t~xF7=3q&49ud zC;t9U5!Fr_i{jgzkHdAxrsrB!jIS29>xRhC_lVWds6`vN4C`P4@3c<0=wIf zk#PTq<=XUxNT4cbNt=E1uF2lk{u_$p+_5Y3EvRYimn65Gp2)e761X);58DT-B!iP3 z+Q||U#MB|zeYW&~MoTAh&u&NdVpGOd{ByxMdvBh5PRce#nKsK&Bz=XcsMmHvXn1~Y zEfrz$?m9S-_PW%zu~;i9zl9&Y$oL%e%d5+~oG|-VNa<@a1NGuuSz+xZwYg6Amv8O2 z62$6wxhB?!b|oGnpJLJ`@x3P(4dFAnArUQy>7KA_X1HA{l;)F%k^6e`Xn}6LBjZwE zS`?$;Dcv^0W|FzpAZ*Tj#o#1inLecVZ66bkk}Z-AE@`2Ku(?^?{R>>ibnAib`&x?^ zUNL&nVX<64{q(v#Cb}NqeL=}YZ!o`7DYgB4&l#aM;A7NaE1TA_l6(#x`Gg5p`6<4% z#7*L+kysUiKsn;JW% z^_1hI>_v3s!>A^g^CBP0Mu|f5O-P)^YhzvTu~0i`@`c~&ZNDM; z&MMmmPz!yWn`WUs#Ho;bBzPZ=w} zSPNhF1O;U^oAxe>)aBM_SpoEmx;YD>IgZ;x&>*(j@a1<-A-eG**R=Jg6NGOoJ`Lvc zGk%jLyhkw`@Ij;(YzVIMG>gR3vf$I-A5F}<-kYM!e$bW?(g-_g{C3X3#246+H*TkA TP0`4OjfKTV!F_r)V0HfktQ2I! literal 0 HcmV?d00001 diff --git a/doc/mod/scriptrunonce.md b/doc/mod/scriptrunonce.md new file mode 100644 index 0000000..190ed03 --- /dev/null +++ b/doc/mod/scriptrunonce.md @@ -0,0 +1,35 @@ +Download script and run it once +=============================== + +[β—€ Go back to main README](../../README.md) + +> ℹ️️ **Info**: This module can not be used on its own but requires the base +> installation. See [main README](../../README.md) for details. + +Description +----------- + +This module adds a function that downloads a script, checks for syntax +validity and runs it once. + +Requirements and installation +----------------------------- + +Just install the module: + + $ScriptInstallUpdate mod/scriptrunonce; + +Usage and invocation +-------------------- + +The function `$ScriptRunOnce` expects an url pointing to a script as parameter. + + $ScriptRunOnce https://git.eworm.de/cgit/routeros-scripts/plain/doc/mod/scriptrunonce.d/hello-world.rsc + +![ScriptRunOnce](scriptrunonce.d/scriptrunonce.avif) + +Giving multiple scripts is possible, separated by comma. + +--- +[β—€ Go back to main README](../../README.md) +[β–² Go back to top](#top) From fed4757eaaf9468b488a07ecaa67b7f63c04bcee Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sun, 20 Feb 2022 23:17:16 +0100 Subject: [PATCH 31/86] doc/mod: notify about new documentation --- global-config | 2 +- global-config-overlay | 2 +- global-config.changes | 1 + global-functions | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/global-config b/global-config index 0554cdb..a664cb6 100644 --- a/global-config +++ b/global-config @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! -:global GlobalConfigVersion 77; +:global GlobalConfigVersion 78; # This is used for DNS and backup file. :global Domain "example.com"; diff --git a/global-config-overlay b/global-config-overlay index 9075df5..946559e 100644 --- a/global-config-overlay +++ b/global-config-overlay @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! # Comment or remove to disable news and change notifications. -:global GlobalConfigVersion 77; +:global GlobalConfigVersion 78; # Use branch routeros-v6 with RouterOS v6: :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; diff --git a/global-config.changes b/global-config.changes index d8cd39d..2764d78 100644 --- a/global-config.changes +++ b/global-config.changes @@ -81,6 +81,7 @@ 75="You are using the branch 'routeros-v6', well done."; 76="Added an option to suppress notifications on host down with 'netwatch-notify'."; 77="Introduced new script 'firmware-upgrade-reboot'. Handle with care!"; + 78="New documentation is online for notifications via Telegram & Matrix, variable inspection, ip address calculation and running scripts once."; }; # Migration steps to be applied on script updates diff --git a/global-functions b/global-functions index 9721b8b..ef7fa15 100644 --- a/global-functions +++ b/global-functions @@ -8,7 +8,7 @@ # https://git.eworm.de/cgit/routeros-scripts/about/ # expected configuration version -:global ExpectedConfigVersion 77; +:global ExpectedConfigVersion 78; # global variables not to be changed by user :global GlobalFunctionsReady false; From 82d45eca088d6fd42f3d8c6a667a7d7517878d63 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 22 Feb 2022 22:15:08 +0100 Subject: [PATCH 32/86] update list of contributors (cherry picked from commit 8e401bf498065814442c4c39e2fcc949f73bfc3b) --- CONTRIBUTIONS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md index ba4dfed..2210ea7 100644 --- a/CONTRIBUTIONS.md +++ b/CONTRIBUTIONS.md @@ -23,6 +23,7 @@ Add yourself to the list, * Andrew Cox * Christoph Boss (@Kampfwurst) * Devin Dean (@dd2594gh) +* Evaldo Gardenal * Klaus Michael RΓΌbsam * Linux-Schmie.de Michael Gisbers * Manuel Kuhn From 3f6b5595f39044cf26700b2ac9a88dde5fa4b8ac Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 22 Feb 2022 22:31:49 +0100 Subject: [PATCH 33/86] doc/mod/scriptrunonce: document optional configuration (cherry picked from commit d50f6ffb79c448b8ffef246a0e7ef90d51c8dadb) --- doc/mod/scriptrunonce.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/mod/scriptrunonce.md b/doc/mod/scriptrunonce.md index 190ed03..aaa64a9 100644 --- a/doc/mod/scriptrunonce.md +++ b/doc/mod/scriptrunonce.md @@ -19,10 +19,23 @@ Just install the module: $ScriptInstallUpdate mod/scriptrunonce; +Configuration +------------- + +The optional configuration goes to `global-config-overlay`. + +* `ScriptRunOnceBaseUrl`: base url, prepended to parameter +* `ScriptRunOnceUrlSuffix`: url suffix, appended to parameter + +If the parameter passed to the function is not a complete URL (starting +with protocol `ftp://`, `http://`, `https://` or `sftp://`) the values are +prepended and appended. + Usage and invocation -------------------- -The function `$ScriptRunOnce` expects an url pointing to a script as parameter. +The function `$ScriptRunOnce` expects an URL (or name if +`ScriptRunOnceBaseUrl` is given) pointing to a script as parameter. $ScriptRunOnce https://git.eworm.de/cgit/routeros-scripts/plain/doc/mod/scriptrunonce.d/hello-world.rsc From a45b8d7d8c2ddef51db4ffb25695f2b40ae3c1fb Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 22 Feb 2022 22:41:59 +0100 Subject: [PATCH 34/86] doc/log-forward: remove extra character Looks like copy'n'paste error... (cherry picked from commit c872c18d76553647ebeab613df4edc8cabef84f2) --- doc/log-forward.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/log-forward.md b/doc/log-forward.md index 1ac6a04..1f3eae5 100644 --- a/doc/log-forward.md +++ b/doc/log-forward.md @@ -48,7 +48,7 @@ The configuration goes to `global-config-overlay`, these are the parameters: Also notification settings are required for e-mail, [matrix](mod/notification-matrix.md) and/or -[telegram](mod/notification-telegram.md)m. +[telegram](mod/notification-telegram.md). --- [β—€ Go back to main README](../README.md) From a7da21e18583d8bf22b9669f5ce43c02ba66ccb9 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 23 Feb 2022 09:24:10 +0100 Subject: [PATCH 35/86] INITIAL-COMMANDS: give another delay before fetch (cherry picked from commit 0ab99fcdbb9b9210b3ebdfeb59b8185b4d760567) --- INITIAL-COMMANDS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 2cea9a9..66db40c 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -22,6 +22,7 @@ Then run the complete base installation: :error "Something is wrong with your certificates!"; }; / file remove "letsencrypt-R3.pem"; + :delay 1s; :foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={ / system script add name=$Script source=([ / tool fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . $ScriptUpdatesUrlSuffix) output=user as-value]->"data"); }; From d0699857c96295c4befa013bbe822c197d1b5817 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 23 Feb 2022 12:36:57 +0100 Subject: [PATCH 36/86] doc/backup-cloud: warn about possible issue (cherry picked from commit a78b2bfcdef7e7cc84fd777e7fe0f7aa4cb5fe0c) --- doc/backup-cloud.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index 0761982..2573a65 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -11,6 +11,11 @@ Description This script uploads [binary backup to Mikrotik cloud](https://wiki.mikrotik.com/wiki/Manual:IP/Cloud#Backup). +> ⚠️ **Warning**: The used command can hit errors that a script can not handle. +> This may result in script termination (where no notification is sent) or +> malfunction of fetch command (where all up- and downloads break) for some +> time. Failed notifications are queued then. + ### Sample notification ![backup-cloud notification](backup-cloud.d/notification.svg) From b11a83aac2789f7e385ccd62996705fec7163aac Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 23 Feb 2022 12:40:54 +0100 Subject: [PATCH 37/86] doc/backup-upload: warn about possible issue (cherry picked from commit a754932211d3cc87563a483302350e65a03ceba1) --- doc/backup-upload.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/backup-upload.md b/doc/backup-upload.md index 72781ba..6c12c82 100644 --- a/doc/backup-upload.md +++ b/doc/backup-upload.md @@ -12,6 +12,11 @@ Description This script uploads binary backup (`/ system backup save`) and complete configuration export (`/ export terse`) to external server. +> ⚠️ **Warning**: The used command can hit errors that a script can not handle. +> This may result in script termination (where no notification is sent) or +> malfunction of fetch command (where all up- and downloads break) for some +> time. Failed notifications are queued then. + ### Sample notification ![backup-upload notification](backup-upload.d/notification.svg) From bf6c7d27dfa08756800df15432e0ce5e518184cb Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 23 Feb 2022 23:31:29 +0100 Subject: [PATCH 38/86] doc/backup-cloud: break long line (cherry picked from commit c72702cc51a732242d96904d04dad41573439378) --- doc/backup-cloud.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index 2573a65..f3631ad 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -9,7 +9,8 @@ Upload backup to Mikrotik cloud Description ----------- -This script uploads [binary backup to Mikrotik cloud](https://wiki.mikrotik.com/wiki/Manual:IP/Cloud#Backup). +This script uploads +[binary backup to Mikrotik cloud](https://wiki.mikrotik.com/wiki/Manual:IP/Cloud#Backup). > ⚠️ **Warning**: The used command can hit errors that a script can not handle. > This may result in script termination (where no notification is sent) or From 184959bc77a5e39b795fdd97dea5ad97edac4af3 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 24 Feb 2022 11:58:22 +0100 Subject: [PATCH 39/86] global-functions: $DeviceInfo: firmware only if upgrade pending (cherry picked from commit a00e912bb5c556eaead42a4213c545a34c3959d9) --- global-functions | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/global-functions b/global-functions index ef7fa15..ffa5789 100644 --- a/global-functions +++ b/global-functions @@ -221,7 +221,8 @@ [ $IfThenElse ([ :typeof ($Update->"latest-version") ] != "nothing" && \ $Update->"installed-version" != $Update->"latest-version") \ ("\n Available: " . $Update->"latest-version") ] . \ - [ $IfThenElse ($RouterBoard->"routerboard" = true) \ + [ $IfThenElse ($RouterBoard->"routerboard" = true && \ + $RouterBoard->"current-firmware" != $RouterBoard->"upgrade-firmware") \ ("\n Firmware: " . $RouterBoard->"current-firmware") ] . \ "\nRouterOS-Scripts:" . \ "\n Current: " . $GlobalConfigVersion . \ From 6336da6bd702201ac7f74557cee6ce68677059d0 Mon Sep 17 00:00:00 2001 From: Michael Gisbers Date: Mon, 21 Feb 2022 18:21:26 +0100 Subject: [PATCH 40/86] doc/mod/notification-matrix: add verbose steps for setup Modified-by: Christian Hesse (cherry picked from commit c35485454c60ae489fd5b9fb7d0afde566cae645) --- .../notification-matrix.d/01-home-server.avif | Bin 0 -> 2402 bytes .../02-access-token.avif | Bin 0 -> 4278 bytes .../notification-matrix.d/03-join-room.avif | Bin 0 -> 3143 bytes doc/mod/notification-matrix.md | 59 +++++++++++++++++- 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 doc/mod/notification-matrix.d/01-home-server.avif create mode 100644 doc/mod/notification-matrix.d/02-access-token.avif create mode 100644 doc/mod/notification-matrix.d/03-join-room.avif diff --git a/doc/mod/notification-matrix.d/01-home-server.avif b/doc/mod/notification-matrix.d/01-home-server.avif new file mode 100644 index 0000000000000000000000000000000000000000..8a79ae6a1d304cc01e0f4c12021f9da3d0ee737f GIT binary patch literal 2402 zcmXw4c{~&T8{g1HIdf$*cTwafIh(VlIU_mR;aF|Vm?LttN~0;layCRH$@N8)J0vp1 zcOyhuF|iKCe$(&ueV*6nc|Xtl{k)#%`R@Y&02Bhkqw$CcOaOpqyNJUC=-@Dj07okw zD<1U?=O2#P)p&L+2#qEDKLr5r7*zOw`7UBH$p6L&<1yj5zZ#GiH^Lh{w+B(n>Y{=i0S1@=2p2wfV;87twJd6p$ z`|maa0Q@Sv;KqBRcuW-LFSCFDejXk~MCd>h6?Peb1S$ke2u5L}c#{tS_9pNsX$&5R z*wuK(J4^t`mn^`$$_a-?go^_N4;ZUHGr=k-7LVyRi^9-+41Fk)$$UYZDu&FjE&@l^ zlXRNMaQ;iHiEcwVjLAj%LH3TOb*yfKD&Y%G<#=a`QE<+%Iv+!H$Iybs9d+wvje>ry{hfyfFoPkM8Lwxj2cLZ| z$?+UtgT9aiTPjdz%r6PwYh|6OUv3>LWBTPMw&$^lTBTc1w<9=n*@SY}R^x~MmM7Zz zI9>*VSjt7Gr0bK1VneiarUo6F096|0qrp?n7K! z%BYx#&!VZHMEM zcCzBv6gsi36aVl*i{6PcnwTw$4>UI?R<5Hg;F7d%;w44BLGl$(#-wXk!5U(=;+?n_{;0d3)IdpWy^BJr>7q$BJ;e?-$E>%;J(}| zbL;(Uz4NWA)AML)yX(%qGvA^OU>F8jq~{CGL8?4eN~Y0DLdo3A^45~#&PlLJ8C3E~ z=4<8d_m-?`I5+H_!j|t^_C5!KrvisQ*KhEX(|I0_wfwo0ZGzN3I~!x)zepjPCKx>Q z>8T$7oSoZ2ZT;@xMzH?q5(wr$*`F?{DrG@rUpAAca#nVx*laBj6{>M9Lt zQ#~Y;*mTxg;B0Hi+r1^%=Z;;k<_zdtK!oeSsUDlfY|x&$bN-UMx&@BKHJ{b09JoAMlj+s9J=Q%5?Jj7r-4vL4 z*y$qDWt`Q17l>Fh3Z%q4+l+C)A;vWnmzN{ETjIFk@a2EwPG9Q}FSeMztV_Y%9c>*J z|JYB0mddMVsT`?mo{|W7+Podu2hgrMX!uBUq#HRC`8?XssOfQji;UQZaciX=gb8hgrVpU< zRJVxxE=kpAXlE?8T5~%-d5qO&T72q@db$1R62$Sqv(AJ(p^~ECJ;PGTJCwu` zu%0~yCArz=Xzm~4Qd7cNP|%{qOI%?-cO<9V?-S?CX}l<}cT{ z|LL2UaEdV`=w?l>kgeoR;2KU{7df1QWhK8@Sf~sUxy6A(E#8QiUV*>ju2H4MQ zs$}su^z;Q~HqslIrZIx&@SVc~`{lfA?HoTmkn2|byne+n%!BqICEpqzO#ZXOcjIXT zw+QGYzISo6B8jEv3|)3fSYJOexpt*g{;1GGPL!D~cFfC|eC{yj(?+4KR~J#$|M&)8^4d@s$x}w8j6YUi+0ZaKT4lpIQ1>(EW67x4FOMM; zsri|Ze*M*ZF9=g+qqAu{K`j~Eo251F$Q0OI#i`02#oR=;I;G>OzN^KGN1u>@=o$hu zPz&oV6kQT2sdY8!@Hh%SHDp>=eIbDOBOR1Mt^#SKNP*ffN9LMb zzUK^7>7M4uaIJQAwn#3}cYG#;N?J-Eos20nVQ~;HvZ~q9FgnA|SFBt-u!^g^42u8p zaOBOE3LE}X?v#DIwLfz~Q$lHh%#MW?M0%szHF8{%WhhA@em>6)IWL5VQ@(4)HnIp_ zh3e=+I{%jFQkYx%aV;?A-wS(`zK3Q;RUY{hOH}lE8KOllWX#tXT@(X_T`jaCNs9gt D0((xn literal 0 HcmV?d00001 diff --git a/doc/mod/notification-matrix.d/02-access-token.avif b/doc/mod/notification-matrix.d/02-access-token.avif new file mode 100644 index 0000000000000000000000000000000000000000..8a0b6473f5f241648545246ee7f3c6dbd6f8edbd GIT binary patch literal 4278 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 Date: Tue, 1 Mar 2022 12:47:23 +0100 Subject: [PATCH 41/86] global-functions: $FlushEmailQueue: delay if "in-progress"... Something else is sending a mail... Let's wait and hope the status is not confused. (cherry picked from commit c9b6cee83f686a532183016712c9441e77558917) --- global-functions | 1 + 1 file changed, 1 insertion(+) diff --git a/global-functions b/global-functions index ffa5789..6ae4549 100644 --- a/global-functions +++ b/global-functions @@ -358,6 +358,7 @@ :foreach Id,Message in=$EmailQueue do={ :if ([ :typeof $Message ] = "array" ) do={ :local Attach [ $EitherOr ($Message->"attach") "" ]; + :while ([ / tool e-mail get last-status ] = "in-progress") do={ :delay 1s; } / tool e-mail send to=($Message->"to") cc=($Message->"cc") subject=($Message->"subject") \ body=($Message->"body") file=$Attach; :local Wait true; From b35e39b0facb84b20efe62f7c53cbf3ffc06f887 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 4 Mar 2022 15:54:18 +0100 Subject: [PATCH 42/86] global-functions: update upgrade instruction The branch 'routeros-v7' will not exist forever... And the link is gone already. --- global-functions | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/global-functions b/global-functions index 6ae4549..3b88a2a 100644 --- a/global-functions +++ b/global-functions @@ -1270,8 +1270,7 @@ $RequiredRouterOS "global-functions" "6.47" true; # ... and give a hint on RouterOS v7. :if ([ $RequiredRouterOS "global-functions" "7.0" false ] = true) do={ - $LogPrintExit2 warning $0 ("RouterOS v7 brings some incompatible changes. Please switch to branch " . \ - "'routeros-v7', see https://git.eworm.de/cgit/routeros-scripts/about/#changes-for-routeros-v7") false; + $LogPrintExit2 warning $0 ("RouterOS v7 brings some incompatible changes. Please switch to main branch!") false; } # signal we are ready From e25250e27be6884cfbf4276207b05561ed594b9b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 7 Mar 2022 22:25:38 +0100 Subject: [PATCH 43/86] hotspot-to-wpa: initialize variables earlier (cherry picked from commit df0d826999f198c650d50585c72d92ef7eb6a4c3) --- hotspot-to-wpa | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/hotspot-to-wpa b/hotspot-to-wpa index c40e08a..b307a10 100644 --- a/hotspot-to-wpa +++ b/hotspot-to-wpa @@ -17,8 +17,11 @@ :local MacAddress $"mac-address"; :local UserName $username; :local Date [ / system clock get date ]; -:local Hotspot [ / ip hotspot host get [ find where mac-address=$MacAddress authorized ] server ]; :local UserVal [ / ip hotspot user get [ find where name=$UserName ] ]; +:local UserInfo [ $ParseKeyValueStore ($UserVal->"comment") ]; +:local Hotspot [ / ip hotspot host get [ find where mac-address=$MacAddress authorized ] server ]; +:local Template [ / caps-man access-list get ([ find where disabled \ + comment=("hotspot-to-wpa template " . $Hotspot) ]->0) ]; :if ([ :len [ / caps-man access-list find where comment="--- hotspot-to-wpa above ---" disabled ] ] = 0) do={ / caps-man access-list add comment="--- hotspot-to-wpa above ---" disabled=yes; @@ -28,16 +31,12 @@ $LogPrintExit2 info $0 ("Adding/updating accesslist entry for mac address " . $MacAddress . \ " (user " . $UserName . ").") false; - / caps-man access-list remove [ find where mac-address=$MacAddress comment~"^hotspot-to-wpa: " ]; / caps-man access-list add comment=("hotspot-to-wpa: " . $UserName . ", " . $MacAddress . ", " . $Date) \ mac-address=$MacAddress private-passphrase=($UserVal->"password") ssid-regexp="-wpa\$" place-before=$PlaceBefore; -:local Template [ / caps-man access-list get ([ find where comment=("hotspot-to-wpa template " . $Hotspot) disabled ]->0) ]; -:local UserInfo [ $ParseKeyValueStore ($UserVal->"comment") ]; :local Entry [ / caps-man access-list find where mac-address=$MacAddress \ comment=("hotspot-to-wpa: " . $UserName . ", " . $MacAddress . ", " . $Date) ]; - :local PrivatePassphrase [ $EitherOr ($UserInfo->"private-passphrase") ($Template->"private-passphrase") ]; :if ([ :len $PrivatePassphrase ] > 0) do={ :if ($PrivatePassphrase = "ignore") do={ From ddb181fbc2d04d04743253b018cac00ffeb70de4 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 7 Mar 2022 22:26:41 +0100 Subject: [PATCH 44/86] hotspot-to-wpa: support ignoring specific hotspot (cherry picked from commit c1fa0f3579573b75cadba585c1aeb7e68313645c) --- doc/hotspot-to-wpa.md | 1 + hotspot-to-wpa | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/doc/hotspot-to-wpa.md b/doc/hotspot-to-wpa.md index b410979..8733a7c 100644 --- a/doc/hotspot-to-wpa.md +++ b/doc/hotspot-to-wpa.md @@ -56,6 +56,7 @@ Create hotspot login credentials: Additionally templates can be created to give more options for access list: +* `action`: set to `reject` to ignore logins on that hotspot * `private-passphrase`: do **not** use passphrase from hotspot's user credentials, but given one - or unset (use default passphrase) with special word `ignore` diff --git a/hotspot-to-wpa b/hotspot-to-wpa index b307a10..6290eda 100644 --- a/hotspot-to-wpa +++ b/hotspot-to-wpa @@ -23,6 +23,10 @@ :local Template [ / caps-man access-list get ([ find where disabled \ comment=("hotspot-to-wpa template " . $Hotspot) ]->0) ]; +:if ($Template->"action" = "reject") do={ + $LogPrintExit2 info $0 ("Ignoring login for hotspot '" . $Hotspot . "'.") true; +} + :if ([ :len [ / caps-man access-list find where comment="--- hotspot-to-wpa above ---" disabled ] ] = 0) do={ / caps-man access-list add comment="--- hotspot-to-wpa above ---" disabled=yes; $LogPrintExit2 warning $0 ("Added disabled access-list entry with comment '--- hotspot-to-wpa above ---'.") false; From 98b08bcbd2e0bd131f3a8f8c53fed0c74198f630 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 8 Mar 2022 22:28:48 +0100 Subject: [PATCH 45/86] global-functions: (re-)introduce global $Read ... to interactively read input from user on terminal. (cherry picked from commit 07cc38e973a6037649083494332fbae1946b48b4) --- global-functions | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/global-functions b/global-functions index 3b88a2a..91297b4 100644 --- a/global-functions +++ b/global-functions @@ -38,6 +38,7 @@ :global ParseKeyValueStore; :global QuotedPrintable; :global RandomDelay; +:global Read; :global RequiredRouterOS; :global ScriptFromTerminal; :global ScriptInstallUpdate; @@ -640,6 +641,11 @@ :delay ([ $GetRandomNumber $1 ] . [ $EitherOr $2 "s" ]); } +# read input from user +:set Read do={ + :return; +} + # check for required RouterOS version :set RequiredRouterOS do={ :local Caller [ :tostr $1 ]; From fab05ecd7d56b1d70eeb541990dfcec8df482237 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 8 Mar 2022 22:30:01 +0100 Subject: [PATCH 46/86] accesslist-duplicates: use global $Read (cherry picked from commit cbb2f067e64d09d3d1443d9c2b17266fa56b2e99) --- accesslist-duplicates.capsman | 2 +- accesslist-duplicates.local | 2 +- accesslist-duplicates.template | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/accesslist-duplicates.capsman b/accesslist-duplicates.capsman index 6d2c896..74cf3b3 100644 --- a/accesslist-duplicates.capsman +++ b/accesslist-duplicates.capsman @@ -12,7 +12,7 @@ :global GlobalFunctionsReady; :while ($GlobalFunctionsReady != true) do={ :delay 500ms; } -:local Read do={ :return; } +:global Read; :local Seen [ :toarray "" ]; :local Shown [ :toarray "" ]; diff --git a/accesslist-duplicates.local b/accesslist-duplicates.local index 24c8e29..0aa946c 100644 --- a/accesslist-duplicates.local +++ b/accesslist-duplicates.local @@ -12,7 +12,7 @@ :global GlobalFunctionsReady; :while ($GlobalFunctionsReady != true) do={ :delay 500ms; } -:local Read do={ :return; } +:global Read; :local Seen [ :toarray "" ]; :local Shown [ :toarray "" ]; diff --git a/accesslist-duplicates.template b/accesslist-duplicates.template index f9f4494..f1862bb 100644 --- a/accesslist-duplicates.template +++ b/accesslist-duplicates.template @@ -13,7 +13,7 @@ :global GlobalFunctionsReady; :while ($GlobalFunctionsReady != true) do={ :delay 500ms; } -:local Read do={ :return; } +:global Read; :local Seen [ :toarray "" ]; :local Shown [ :toarray "" ]; From 0695c9931824bd9f1a1b858cce2e06934738d285 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 8 Mar 2022 22:47:26 +0100 Subject: [PATCH 47/86] firmware-upgrade-reboot: ignore firmware downgrade (cherry picked from commit 122f90b6930ba499f917887b6e25adae3109a513) --- firmware-upgrade-reboot | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/firmware-upgrade-reboot b/firmware-upgrade-reboot index a3a25db..ac2cb55 100644 --- a/firmware-upgrade-reboot +++ b/firmware-upgrade-reboot @@ -11,11 +11,15 @@ :while ($GlobalFunctionsReady != true) do={ :delay 500ms; } :global LogPrintExit2; +:global VersionToNum; :local RouterBoard [ / system routerboard get ]; :if ($RouterBoard->"current-firmware" = $RouterBoard->"upgrade-firmware") do={ $LogPrintExit2 info $0 ("Firmware is already up to date.") true; } +:if ([ $VersionToNum ($RouterBoard->"current-firmware") ] > [ $VersionToNum ($RouterBoard->"upgrade-firmware") ]) do={ + $LogPrintExit2 info $0 ("Different firmware version is available, but it is a downgrade. Ignoring.") true; +} :if ([ / system routerboard settings get auto-upgrade ] = false) do={ $LogPrintExit2 info $0 ("Firmware version " . $RouterBoard->"upgrade-firmware" . \ From d21cd2271f0032984d23e1c5b6cfe8f2ade59363 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 22 Mar 2022 22:33:46 +0100 Subject: [PATCH 48/86] capsman-download-packages: get info from log Relying on older packages in local storage may be problematic due to size constraints. Let's check the log for required packages. (cherry picked from commit c4a5f8787a57836bb3e8463cdda6cab6043b0169) --- capsman-download-packages | 19 +++++++++++++++++++ doc/capsman-download-packages.md | 15 +++------------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/capsman-download-packages b/capsman-download-packages index 333f01b..64b6304 100644 --- a/capsman-download-packages +++ b/capsman-download-packages @@ -53,6 +53,25 @@ $WaitFullyConnected; } } +:if ($Updated = false && [ / system resource get uptime ] < 2m) do={ + $LogPrintExit2 info $0 ("No packages downloaded, yet. Delaying for logs.") false; + :delay 2m; +} + +:foreach Log in=[ / log find where topics=({"caps", "error"}) \ + message~("upgrade status: failed, failed to download file '.*-" . $InstalledVersion . "-.*\\.npk', no such file") ] do={ + :local Message [ / log get $Log message ]; + :local Package [ :pick $Message \ + ([ :find $Message "'" ] + 1) \ + [ :find $Message ("-" . $InstalledVersion . "-") ] ]; + :local Arch [ :pick $Message \ + ([ :find $Message ("-" . $InstalledVersion . "-") ] + 2 + [ :len $InstalledVersion ]) \ + [ :find $Message ".npk" ] ]; + :if ([ $DownloadPackage $Package $InstalledVersion $Arch $PackagePath ] = true) do={ + :set Updated true; + } +} + :if ($Updated = true) do={ :if ([ :len [ / system script find where name="capsman-rolling-upgrade" ] ] > 0) do={ / system script run capsman-rolling-upgrade; diff --git a/doc/capsman-download-packages.md b/doc/capsman-download-packages.md index 9cee6e6..bac8a3c 100644 --- a/doc/capsman-download-packages.md +++ b/doc/capsman-download-packages.md @@ -26,18 +26,9 @@ Optionally add a scheduler to run after startup: / system scheduler add name=capsman-download-packages on-event="/ system script run capsman-download-packages;" start-time=startup; -Only packages available in older version are downloaded. For initial setup -place the required packages to CAPsMAN package path (see -`/ caps-man manager`). The packages can be downloaded from device with -function `$DownloadPackage`, use something like this to download latest -packages to directory `routeros`: - - $DownloadPackage system "" arm routeros; - $DownloadPackage security "" arm routeros; - [...] - $DownloadPackage system "" mipsbe routeros; - $DownloadPackage security "" mipsbe routeros; - [...] +Packages available in local storage in older version are downloaded +unconditionally. The script tries to download missing packages by guessing +from system log. Usage and invocation -------------------- From 5570258ce8418d03000c863403a25a184da4d13e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 28 Mar 2022 12:31:38 +0200 Subject: [PATCH 49/86] check-lte-firmware-upgrade: be more verbose (cherry picked from commit 5aecc9f1a316874f9c2935b6065347223927a299) --- check-lte-firmware-upgrade | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/check-lte-firmware-upgrade b/check-lte-firmware-upgrade index aef27fe..558afb2 100644 --- a/check-lte-firmware-upgrade +++ b/check-lte-firmware-upgrade @@ -15,6 +15,7 @@ :global CharacterReplace; :global LogPrintExit2; +:global ScriptFromTerminal; :global SendNotification2; :global SymbolForNotification; @@ -22,13 +23,15 @@ :local IntName [ / interface lte get $Interface name ]; :do { :local Firmware [ / interface lte firmware-upgrade $Interface once as-value ]; + :local Info [ / interface lte info $Interface once as-value ]; :if ($SentLteFirmwareUpgradeNotification = ($Firmware->"latest")) do={ $LogPrintExit2 debug $0 ("Already sent the LTE firmware upgrade notification for version " . \ ($Firmware->"latest") . ".") false; } else={ :if (($Firmware->"installed") != ($Firmware->"latest")) do={ - :local Info [ / interface lte info $Interface once as-value ]; + $LogPrintExit2 info $0 ("A new firmware version " . ($Firmware->"latest") . " is available for " . \ + "LTE interface " . $IntName . ".") false; $SendNotification2 ({ origin=$0; \ subject=([ $SymbolForNotification "sparkles" ] . "LTE firmware upgrade"); \ message=("A new firmware version " . ($Firmware->"latest") . " is available for " . \ @@ -37,6 +40,10 @@ "Installed: " . ($Firmware->"installed") . "\n" . \ "Available: " . ($Firmware->"latest")); silent=true }); :set SentLteFirmwareUpgradeNotification ($Firmware->"latest"); + } else={ + :if ([ $ScriptFromTerminal $0 ] = true) do={ + $LogPrintExit2 info $0 ("No firmware upgrade available for LTE interface " . $IntName . ".") false; + } } } } on-error={ From 1cddf5590de5f410a0b7ec00d5323bbfe25c47a1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 28 Mar 2022 12:37:58 +0200 Subject: [PATCH 50/86] check-lte-firmware-upgrade: support starting unattended firmware upgrade... ... from terminal if script is installed. (cherry picked from commit d952e7e6c703dcc949478de351e9bf622be9d319) --- check-lte-firmware-upgrade | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/check-lte-firmware-upgrade b/check-lte-firmware-upgrade index 558afb2..d861784 100644 --- a/check-lte-firmware-upgrade +++ b/check-lte-firmware-upgrade @@ -32,6 +32,18 @@ :if (($Firmware->"installed") != ($Firmware->"latest")) do={ $LogPrintExit2 info $0 ("A new firmware version " . ($Firmware->"latest") . " is available for " . \ "LTE interface " . $IntName . ".") false; + + :if ([ $ScriptFromTerminal $0 ] = true && \ + [ :len [ / system script find where name="unattended-lte-firmware-upgrade" ] ] > 0) do={ + :put ("Do you want to start unattended lte firmware upgrade for interface " . $IntName . "? [y/N]"); + :if (([ / terminal inkey timeout=60 ] % 32) = 25) do={ + / system script run unattended-lte-firmware-upgrade; + $LogPrintExit2 info $0 ("Scheduled lte firmware upgrade for interface " . $IntName . "...") true; + } else={ + :put "Canceled..."; + } + } + $SendNotification2 ({ origin=$0; \ subject=([ $SymbolForNotification "sparkles" ] . "LTE firmware upgrade"); \ message=("A new firmware version " . ($Firmware->"latest") . " is available for " . \ From 58f5a4fced9c35b4f3a5e25bebbac72e0a2c943a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 28 Mar 2022 13:36:11 +0200 Subject: [PATCH 51/86] check-lte-firmware-upgrade: rework code and its logic (cherry picked from commit 2aa93a06716350d5e29fff4cfd1e7deb338ab80c) --- check-lte-firmware-upgrade | 103 +++++++++++++++++++++---------------- 1 file changed, 60 insertions(+), 43 deletions(-) diff --git a/check-lte-firmware-upgrade b/check-lte-firmware-upgrade index d861784..5f6bb69 100644 --- a/check-lte-firmware-upgrade +++ b/check-lte-firmware-upgrade @@ -10,56 +10,73 @@ :global GlobalFunctionsReady; :while ($GlobalFunctionsReady != true) do={ :delay 500ms; } -:global Identity; :global SentLteFirmwareUpgradeNotification; -:global CharacterReplace; -:global LogPrintExit2; -:global ScriptFromTerminal; -:global SendNotification2; -:global SymbolForNotification; +:if ([ :typeof $SentLteFirmwareUpgradeNotification ] != "array") do={ + :global SentLteFirmwareUpgradeNotification [ :toarray "" ]; +} + +:local CheckInterface do={ + :local Interface $1; + + :global Identity; + :global SentLteFirmwareUpgradeNotification; + + :global CharacterReplace; + :global LogPrintExit2; + :global ScriptFromTerminal; + :global SendNotification2; + :global SymbolForNotification; -:foreach Interface in=[ / interface lte find ] do={ :local IntName [ / interface lte get $Interface name ]; + :local Firmware; + :local Info; :do { - :local Firmware [ / interface lte firmware-upgrade $Interface once as-value ]; - :local Info [ / interface lte info $Interface once as-value ]; - - :if ($SentLteFirmwareUpgradeNotification = ($Firmware->"latest")) do={ - $LogPrintExit2 debug $0 ("Already sent the LTE firmware upgrade notification for version " . \ - ($Firmware->"latest") . ".") false; - } else={ - :if (($Firmware->"installed") != ($Firmware->"latest")) do={ - $LogPrintExit2 info $0 ("A new firmware version " . ($Firmware->"latest") . " is available for " . \ - "LTE interface " . $IntName . ".") false; - - :if ([ $ScriptFromTerminal $0 ] = true && \ - [ :len [ / system script find where name="unattended-lte-firmware-upgrade" ] ] > 0) do={ - :put ("Do you want to start unattended lte firmware upgrade for interface " . $IntName . "? [y/N]"); - :if (([ / terminal inkey timeout=60 ] % 32) = 25) do={ - / system script run unattended-lte-firmware-upgrade; - $LogPrintExit2 info $0 ("Scheduled lte firmware upgrade for interface " . $IntName . "...") true; - } else={ - :put "Canceled..."; - } - } - - $SendNotification2 ({ origin=$0; \ - subject=([ $SymbolForNotification "sparkles" ] . "LTE firmware upgrade"); \ - message=("A new firmware version " . ($Firmware->"latest") . " is available for " . \ - "LTE interface " . $IntName . " on " . $Identity . ".\n\n" . \ - "Interface: " . [ $CharacterReplace ($Info->"manufacturer" . " " . $Info->"model") ("\"") "" ] . "\n" . \ - "Installed: " . ($Firmware->"installed") . "\n" . \ - "Available: " . ($Firmware->"latest")); silent=true }); - :set SentLteFirmwareUpgradeNotification ($Firmware->"latest"); - } else={ - :if ([ $ScriptFromTerminal $0 ] = true) do={ - $LogPrintExit2 info $0 ("No firmware upgrade available for LTE interface " . $IntName . ".") false; - } - } - } + :set Firmware [ / interface lte firmware-upgrade $Interface once as-value ]; + :set Info [ / interface lte info $Interface once as-value ]; } on-error={ $LogPrintExit2 debug $0 ("Could not get latest LTE firmware version for interface " . \ $IntName . ".") false; + :return false; } + + :if (($Firmware->"installed") = ($Firmware->"latest")) do={ + :if ([ $ScriptFromTerminal "check-lte-firmware-upgrade" ] = true) do={ + $LogPrintExit2 info $0 ("No firmware upgrade available for LTE interface " . $IntName . ".") false; + } + :return true; + } + + :if ([ $ScriptFromTerminal "check-lte-firmware-upgrade" ] = true && \ + [ :len [ / system script find where name="unattended-lte-firmware-upgrade" ] ] > 0) do={ + :put ("Do you want to start unattended lte firmware upgrade for interface " . $IntName . "? [y/N]"); + :if (([ / terminal inkey timeout=60 ] % 32) = 25) do={ + / system script run unattended-lte-firmware-upgrade; + $LogPrintExit2 info $0 ("Scheduled lte firmware upgrade for interface " . $IntName . "...") false; + :return true; + } else={ + :put "Canceled..."; + } + } + + :if (($SentLteFirmwareUpgradeNotification->$IntName) = ($Firmware->"latest")) do={ + $LogPrintExit2 debug $0 ("Already sent the LTE firmware upgrade notification for version " . \ + ($Firmware->"latest") . ".") false; + :return false; + } + + $LogPrintExit2 info $0 ("A new firmware version " . ($Firmware->"latest") . " is available for " . \ + "LTE interface " . $IntName . ".") false; + $SendNotification2 ({ origin=$0; \ + subject=([ $SymbolForNotification "sparkles" ] . "LTE firmware upgrade"); \ + message=("A new firmware version " . ($Firmware->"latest") . " is available for " . \ + "LTE interface " . $IntName . " on " . $Identity . ".\n\n" . \ + "Interface: " . [ $CharacterReplace ($Info->"manufacturer" . " " . $Info->"model") ("\"") "" ] . "\n" . \ + "Installed: " . ($Firmware->"installed") . "\n" . \ + "Available: " . ($Firmware->"latest")); silent=true }); + :set ($SentLteFirmwareUpgradeNotification->$IntName) ($Firmware->"latest"); +} + +:foreach Interface in=[ / interface lte find ] do={ + $CheckInterface $Interface; } From 82c0e1c44c07013f6bc8105489181152b46b126b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 30 Mar 2022 18:03:50 +0200 Subject: [PATCH 52/86] introduce backup-partition (cherry picked from commit 71b69fc1898babf490b7dc8e7b0769022d5a2f79) --- README.md | 1 + backup-partition | 36 +++++++++++++++++++++++++++++++++ doc/backup-cloud.md | 1 + doc/backup-email.md | 1 + doc/backup-partition.md | 45 +++++++++++++++++++++++++++++++++++++++++ doc/backup-upload.md | 3 ++- doc/packages-update.md | 1 + global-config | 2 +- global-config-overlay | 2 +- global-config.changes | 1 + global-functions | 2 +- 11 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 backup-partition create mode 100644 doc/backup-partition.md diff --git a/README.md b/README.md index 80657af..215274d 100644 --- a/README.md +++ b/README.md @@ -192,6 +192,7 @@ Available scripts * [Find and remove access list duplicates](doc/accesslist-duplicates.md) * [Upload backup to Mikrotik cloud](doc/backup-cloud.md) * [Send backup via e-mail](doc/backup-email.md) +* [Save configuration to fallback partition](doc/backup-partition.md) * [Upload backup to server](doc/backup-upload.md) * [Download packages for CAP upgrade from CAPsMAN](doc/capsman-download-packages.md) * [Run rolling CAP upgrades from CAPsMAN](doc/capsman-rolling-upgrade.md) diff --git a/backup-partition b/backup-partition new file mode 100644 index 0000000..c72c7f9 --- /dev/null +++ b/backup-partition @@ -0,0 +1,36 @@ +#!rsc by RouterOS +# RouterOS script: backup-partition +# Copyright (c) 2022 Christian Hesse +# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md +# +# provides: backup-script +# +# save configuration to fallback partition +# https://git.eworm.de/cgit/routeros-scripts/about/doc/backup-partition.md + +:local 0 "backup-partition"; +:global GlobalFunctionsReady; +:while ($GlobalFunctionsReady != true) do={ :delay 500ms; } + +:global LogPrintExit2; + +:if ([ :len [ / partitions find ] ] < 2) do={ + $LogPrintExit2 error $0 ("Device does not have a fallback partition.") true; +} + +:local ActiveRunning [ / partitions find where active running ]; + +:if ([ :len $ActiveRunning ] < 1) do={ + $LogPrintExit2 error $0 ("Device is not running from active partition.") true; +} + +:local ActiveRunningVar [ / partitions get $ActiveRunning ]; + +:do { + / partitions save-config-to ($ActiveRunningVar->"fallback-to"); + $LogPrintExit2 info $0 ("Saved configuration to partition '" . \ + ($ActiveRunningVar->"fallback-to") . "'.") false; +} on-error={ + $LogPrintExit2 error $0 ("Failed saving configuration to partition '" . \ + ($ActiveRunningVar->"fallback-to") . "'!") true; +} diff --git a/doc/backup-cloud.md b/doc/backup-cloud.md index f3631ad..6a15688 100644 --- a/doc/backup-cloud.md +++ b/doc/backup-cloud.md @@ -55,6 +55,7 @@ See also -------- * [Send backup via e-mail](backup-email.md) +* [Save configuration to fallback partition](doc/backup-partition.md) * [Upload backup to server](backup-upload.md) --- diff --git a/doc/backup-email.md b/doc/backup-email.md index e6bed51..9c2edb5 100644 --- a/doc/backup-email.md +++ b/doc/backup-email.md @@ -46,6 +46,7 @@ See also -------- * [Upload backup to Mikrotik cloud](backup-cloud.md) +* [Save configuration to fallback partition](doc/backup-partition.md) * [Upload backup to server](backup-upload.md) --- diff --git a/doc/backup-partition.md b/doc/backup-partition.md new file mode 100644 index 0000000..c31c780 --- /dev/null +++ b/doc/backup-partition.md @@ -0,0 +1,45 @@ +Save configuration to fallback partition +======================================== + +[β—€ Go back to main README](../README.md) + +> ℹ️ **Info**: This script can not be used on its own but requires the base +> installation. See [main README](../README.md) for details. + +Description +----------- + +This script saves the current configuration to fallback +[partition](https://wiki.mikrotik.com/wiki/Manual:Partitions). + +For this to work you need a device with sufficient flash storage that is +properly partitioned. + +Requirements and installation +----------------------------- + +Just install the script: + + $ScriptInstallUpdate backup-partition; + +Usage and invocation +-------------------- + +Just run the script: + + / system script run backup-partition; + +Creating a scheduler may be an option: + + / system scheduler add interval=1w name=backup-partition on-event="/ system script run backup-partition;" start-time=09:30:00; + +See also +-------- + +* [Upload backup to Mikrotik cloud](backup-cloud.md) +* [Send backup via e-mail](backup-email.md) +* [Upload backup to server](backup-upload.md) + +--- +[β—€ Go back to main README](../README.md) +[β–² Go back to top](#top) diff --git a/doc/backup-upload.md b/doc/backup-upload.md index 6c12c82..08d64b0 100644 --- a/doc/backup-upload.md +++ b/doc/backup-upload.md @@ -69,8 +69,9 @@ Creating a scheduler may be an option: See also -------- -* [Send backup via e-mail](backup-email.md) * [Upload backup to Mikrotik cloud](backup-cloud.md) +* [Send backup via e-mail](backup-email.md) +* [Save configuration to fallback partition](doc/backup-partition.md) --- [β—€ Go back to main README](../README.md) diff --git a/doc/packages-update.md b/doc/packages-update.md index 0007acc..243e72b 100644 --- a/doc/packages-update.md +++ b/doc/packages-update.md @@ -43,6 +43,7 @@ See also * [Notify on RouterOS update](check-routeros-update.md) * [Upload backup to Mikrotik cloud](backup-cloud.md) * [Send backup via e-mail](backup-email.md) +* [Save configuration to fallback partition](doc/backup-partition.md) * [Upload backup to server](backup-upload.md) * [Automatically upgrade firmware and reboot](firmware-upgrade-reboot.md) diff --git a/global-config b/global-config index a664cb6..d6509e0 100644 --- a/global-config +++ b/global-config @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! -:global GlobalConfigVersion 78; +:global GlobalConfigVersion 79; # This is used for DNS and backup file. :global Domain "example.com"; diff --git a/global-config-overlay b/global-config-overlay index 946559e..b5be658 100644 --- a/global-config-overlay +++ b/global-config-overlay @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! # Comment or remove to disable news and change notifications. -:global GlobalConfigVersion 78; +:global GlobalConfigVersion 79; # Use branch routeros-v6 with RouterOS v6: :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; diff --git a/global-config.changes b/global-config.changes index 2764d78..5f9ddcc 100644 --- a/global-config.changes +++ b/global-config.changes @@ -82,6 +82,7 @@ 76="Added an option to suppress notifications on host down with 'netwatch-notify'."; 77="Introduced new script 'firmware-upgrade-reboot'. Handle with care!"; 78="New documentation is online for notifications via Telegram & Matrix, variable inspection, ip address calculation and running scripts once."; + 79="Introduced new script 'backup-partition' to save configuration to fallback partition."; }; # Migration steps to be applied on script updates diff --git a/global-functions b/global-functions index 91297b4..05a111c 100644 --- a/global-functions +++ b/global-functions @@ -8,7 +8,7 @@ # https://git.eworm.de/cgit/routeros-scripts/about/ # expected configuration version -:global ExpectedConfigVersion 78; +:global ExpectedConfigVersion 79; # global variables not to be changed by user :global GlobalFunctionsReady false; From 2c2a3013f3d6170867a7416ad6533e4d31fc3dbe Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 31 Mar 2022 10:27:07 +0200 Subject: [PATCH 53/86] hotspot-to-wpa: allow login page to load Depending on configuration the VLAN is changed on the SSID currently serving the hotspot. So give the login page (with success status) a moment to load before kicking the device. (cherry picked from commit 0786111c5c5bd3085a52fec749fc68a1584c1a4c) --- hotspot-to-wpa | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hotspot-to-wpa b/hotspot-to-wpa index 6290eda..a08e3bc 100644 --- a/hotspot-to-wpa +++ b/hotspot-to-wpa @@ -33,6 +33,9 @@ } :local PlaceBefore ([ / caps-man access-list find where comment="--- hotspot-to-wpa above ---" disabled ]->0); +# allow login page to load +:delay 1s; + $LogPrintExit2 info $0 ("Adding/updating accesslist entry for mac address " . $MacAddress . \ " (user " . $UserName . ").") false; / caps-man access-list remove [ find where mac-address=$MacAddress comment~"^hotspot-to-wpa: " ]; From f5465d3e34a3cf668eff8a061b109743993c1dbf Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 6 Apr 2022 17:40:21 +0200 Subject: [PATCH 54/86] capsman-download-packages: try to warn about missing logs (cherry picked from commit 9dbc56457b1fb25099f7d487b8284a03b47ffbe4) --- capsman-download-packages | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/capsman-download-packages b/capsman-download-packages index 64b6304..fc7ecc7 100644 --- a/capsman-download-packages +++ b/capsman-download-packages @@ -53,9 +53,15 @@ $WaitFullyConnected; } } -:if ($Updated = false && [ / system resource get uptime ] < 2m) do={ - $LogPrintExit2 info $0 ("No packages downloaded, yet. Delaying for logs.") false; - :delay 2m; +:if ([ :len [ / system logging find where topics~"error" !(topics~"!error") \ + !(topics~"!caps") action=memory !disabled !invalid ] ] < 1) do={ + $LogPrintExit2 warning $0 ("Looks like error messages for 'caps' are not sent to memory. " . \ + "Probably can not download packages automatically.") false; +} else={ + :if ($Updated = false && [ / system resource get uptime ] < 2m) do={ + $LogPrintExit2 info $0 ("No packages downloaded, yet. Delaying for logs.") false; + :delay 2m; + } } :foreach Log in=[ / log find where topics=({"caps", "error"}) \ From e7481f3ca8db9a879a445db4b7f86f8e8f5b97e7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 7 Apr 2022 09:23:16 +0200 Subject: [PATCH 55/86] capsman-download-packages: break long lines (cherry picked from commit 57fab952908c9ad52e73a0103d0d5e422f8cdeda) --- capsman-download-packages | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/capsman-download-packages b/capsman-download-packages index fc7ecc7..0eae744 100644 --- a/capsman-download-packages +++ b/capsman-download-packages @@ -47,7 +47,8 @@ $WaitFullyConnected; :if ($File->"package-name" = "wireless@") do={ :set ($File->"package-name") "wireless"; } - :if ([ $DownloadPackage ($File->"package-name") $InstalledVersion ($File->"package-architecture") $PackagePath ] = true) do={ + :if ([ $DownloadPackage ($File->"package-name") $InstalledVersion \ + ($File->"package-architecture") $PackagePath ] = true) do={ :set Updated true; / file remove $Package; } @@ -65,7 +66,8 @@ $WaitFullyConnected; } :foreach Log in=[ / log find where topics=({"caps", "error"}) \ - message~("upgrade status: failed, failed to download file '.*-" . $InstalledVersion . "-.*\\.npk', no such file") ] do={ + message~("upgrade status: failed, failed to download file '.*-" . $InstalledVersion . \ + "-.*\\.npk', no such file") ] do={ :local Message [ / log get $Log message ]; :local Package [ :pick $Message \ ([ :find $Message "'" ] + 1) \ From 7a714ad182baf8e757b908d6298d6eec085029ab Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 26 Apr 2022 14:19:50 +0200 Subject: [PATCH 56/86] hotspot-to-wpa: move code for marker up (cherry picked from commit c132d2840843a5da40f30e5b66cb1495f5c02357) --- hotspot-to-wpa | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/hotspot-to-wpa b/hotspot-to-wpa index a08e3bc..9ffee91 100644 --- a/hotspot-to-wpa +++ b/hotspot-to-wpa @@ -20,12 +20,6 @@ :local UserVal [ / ip hotspot user get [ find where name=$UserName ] ]; :local UserInfo [ $ParseKeyValueStore ($UserVal->"comment") ]; :local Hotspot [ / ip hotspot host get [ find where mac-address=$MacAddress authorized ] server ]; -:local Template [ / caps-man access-list get ([ find where disabled \ - comment=("hotspot-to-wpa template " . $Hotspot) ]->0) ]; - -:if ($Template->"action" = "reject") do={ - $LogPrintExit2 info $0 ("Ignoring login for hotspot '" . $Hotspot . "'.") true; -} :if ([ :len [ / caps-man access-list find where comment="--- hotspot-to-wpa above ---" disabled ] ] = 0) do={ / caps-man access-list add comment="--- hotspot-to-wpa above ---" disabled=yes; @@ -33,6 +27,13 @@ } :local PlaceBefore ([ / caps-man access-list find where comment="--- hotspot-to-wpa above ---" disabled ]->0); +:local Template [ / caps-man access-list get ([ find where disabled \ + comment=("hotspot-to-wpa template " . $Hotspot) ]->0) ]; + +:if ($Template->"action" = "reject") do={ + $LogPrintExit2 info $0 ("Ignoring login for hotspot '" . $Hotspot . "'.") true; +} + # allow login page to load :delay 1s; From 2e8f457109ed2689866501137e93a7378654b195 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 26 Apr 2022 14:21:28 +0200 Subject: [PATCH 57/86] hotspot-to-wpa: create template if missing (cherry picked from commit 3f8d3acd60dab580c590a5a5e87f65cdcceb3433) --- hotspot-to-wpa | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hotspot-to-wpa b/hotspot-to-wpa index 9ffee91..628d748 100644 --- a/hotspot-to-wpa +++ b/hotspot-to-wpa @@ -27,8 +27,13 @@ } :local PlaceBefore ([ / caps-man access-list find where comment="--- hotspot-to-wpa above ---" disabled ]->0); -:local Template [ / caps-man access-list get ([ find where disabled \ - comment=("hotspot-to-wpa template " . $Hotspot) ]->0) ]; +:if ([ :len [ / caps-man access-list find where \ + comment=("hotspot-to-wpa template " . $Hotspot) disabled ] ] = 0) do={ + / caps-man access-list add comment=("hotspot-to-wpa template " . $Hotspot) disabled=yes place-before=$PlaceBefore; + $LogPrintExit2 warning $0 ("Added template in access-list for hotspot '" . $Hotspot . "'.") false; +} +:local Template [ / caps-man access-list get ([ find where \ + comment=("hotspot-to-wpa template " . $Hotspot) disabled ]->0) ]; :if ($Template->"action" = "reject") do={ $LogPrintExit2 info $0 ("Ignoring login for hotspot '" . $Hotspot . "'.") true; From d9c4e1e8d5cdc1beb447cfbc2d7c6fc2c672d082 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 26 Apr 2022 14:29:46 +0200 Subject: [PATCH 58/86] global-functions: $ScriptInstallUpdate: support giving comment... ... for new scripts. This allows to have extra settings from the beginning, for example: $ScriptInstallUpdate script1,script2 "base-url=https://example.com/your/custom/repository/" (cherry picked from commit a058c9e1edd8dc4895a64881ee1b495e86fe7510) --- global-functions | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/global-functions b/global-functions index 05a111c..65646ad 100644 --- a/global-functions +++ b/global-functions @@ -688,7 +688,8 @@ # install new scripts, update existing scripts :set ScriptInstallUpdate do={ - :local Scripts [ :toarray $1 ]; + :local Scripts [ :toarray $1 ]; + :local NewComment [ :tostr $2 ]; :global ExpectedConfigVersion; :global GlobalConfigVersion; @@ -715,7 +716,7 @@ :foreach Script in=$Scripts do={ :if ([ :len [ / system script find where name=$Script ] ] = 0) do={ $LogPrintExit2 info $0 ("Adding new script: " . $Script) false; - / system script add name=$Script source="#!rsc by RouterOS\n"; + / system script add name=$Script owner=$Script source="#!rsc by RouterOS\n" comment=$NewComment; } } From 006e054517954b4bf97f11f9d9a5061bf32d3a3e Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 28 Apr 2022 10:11:00 +0200 Subject: [PATCH 59/86] global-functions: set $0 with script name Now that we have some active code at the bottom... (cherry picked from commit 9bc2123ee5bd7af4a8e1ca47696a3f3379d5a028) --- global-functions | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/global-functions b/global-functions index 65646ad..a86c1ea 100644 --- a/global-functions +++ b/global-functions @@ -7,6 +7,8 @@ # global functions # https://git.eworm.de/cgit/routeros-scripts/about/ +:local 0 "global-functions"; + # expected configuration version :global ExpectedConfigVersion 79; @@ -1273,10 +1275,10 @@ } # check for required RouterOS version -$RequiredRouterOS "global-functions" "6.47" true; +$RequiredRouterOS $0 "6.47" true; # ... and give a hint on RouterOS v7. -:if ([ $RequiredRouterOS "global-functions" "7.0" false ] = true) do={ +:if ([ $RequiredRouterOS $0 "7.0" false ] = true) do={ $LogPrintExit2 warning $0 ("RouterOS v7 brings some incompatible changes. Please switch to main branch!") false; } From 4cda1281f1d83208bf6a6c704cbf67b7e7e83b8a Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 28 Apr 2022 09:34:12 +0200 Subject: [PATCH 60/86] global-functions: validate syntax of modules (cherry picked from commit 7c8e230521f1a936da034dfc05197fe9434926ed) --- global-functions | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/global-functions b/global-functions index a86c1ea..89234f9 100644 --- a/global-functions +++ b/global-functions @@ -1271,7 +1271,12 @@ # load modules :foreach Script in=[ / system script find where name ~ "^mod/." ] do={ - / system script run $Script; + :local ScriptVal [ / system script get $Script ]; + :if ([ $ValidateSyntax ($ScriptVal->"source") ] = true) do={ + / system script run $Script; + } else={ + $LogPrintExit2 error $0 ("Module '" . $ScriptVal->"name" . "' failed syntax validation, skipping.") false; + } } # check for required RouterOS version From 0479f59aa43bb706abed42c233cde000c7f86ffc Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 28 Apr 2022 09:55:28 +0200 Subject: [PATCH 61/86] global-functions: catch runtime error when loading modules (cherry picked from commit e74bec7e5b62e54d10b1f3ba058868536b35fdc6) --- global-functions | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/global-functions b/global-functions index 89234f9..f212759 100644 --- a/global-functions +++ b/global-functions @@ -1273,7 +1273,11 @@ :foreach Script in=[ / system script find where name ~ "^mod/." ] do={ :local ScriptVal [ / system script get $Script ]; :if ([ $ValidateSyntax ($ScriptVal->"source") ] = true) do={ - / system script run $Script; + :do { + / system script run $Script; + } on-error={ + $LogPrintExit2 error $0 ("Module '" . $ScriptVal->"name" . "' failed to run.") false; + } } else={ $LogPrintExit2 error $0 ("Module '" . $ScriptVal->"name" . "' failed syntax validation, skipping.") false; } From 2b647bef80b014e0d3d751506fbf6bfc54871293 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 28 Apr 2022 11:01:57 +0200 Subject: [PATCH 62/86] global-functions: $LogPrintExit2: handle empty name (cherry picked from commit f417bcbcd4ab7458f1d0b4265ccda2854ba96b4f) --- global-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global-functions b/global-functions index f212759..038f149 100644 --- a/global-functions +++ b/global-functions @@ -485,7 +485,7 @@ :return ("\1B[" . $Color->$1 . "m" . $1 . "\1B[0m"); } - :local Log ($Name . ": " . $Message); + :local Log ([ $EitherOr $Name "" ] . ": " . $Message); :if ($Severity ~ ("^(debug|error|info)\$")) do={ :if ($Severity = "debug") do={ :log debug $Log; } :if ($Severity = "error") do={ :log error $Log; } From 087e7bc3b7cf46054c17bf91558c69a1802dc043 Mon Sep 17 00:00:00 2001 From: PackElend Date: Sat, 30 Apr 2022 00:20:19 +0200 Subject: [PATCH 63/86] doc/lease-script: reflect actual action of the script (cherry picked from commit 56c5da8ed4097018300c1cf284ce7308acd7ece4) --- doc/lease-script.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/doc/lease-script.md b/doc/lease-script.md index 0ad67fb..16fc73e 100644 --- a/doc/lease-script.md +++ b/doc/lease-script.md @@ -9,13 +9,19 @@ Run other scripts on DHCP lease Description ----------- -This script is supposed to run from dhcp server as lease script. Currently -it does: +This script is supposed to run from dhcp server as lease script. On a dhcp +lease it runs each script containing the following line, where `##` is a +decimal number for ordering: -* run [collect-wireless-mac](collect-wireless-mac.md) -* run [dhcp-lease-comment](dhcp-lease-comment.md) -* run [dhcp-to-dns](dhcp-to-dns.md) -* run [hotspot-to-wpa](hotspot-to-wpa.md) + # provides: lease-script, order=## + +Currently it runs if available, in order: + +* [dhcp-to-dns](dhcp-to-dns.md) +* [collect-wireless-mac](collect-wireless-mac.md) +* [dhcp-lease-comment](dhcp-lease-comment.md) +* `hotspot-to-wpa-cleanup`, which is an optional cleanup script + of [hotspot-to-wpa](hotspot-to-wpa.md) Requirements and installation ----------------------------- From c84017de2c1b45866e04a03fea587bab2d9e077c Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 2 May 2022 12:05:11 +0200 Subject: [PATCH 64/86] update list of contributors (cherry picked from commit e9575ead7ab16b1af0ce1407db7706b6e3f805b2) --- CONTRIBUTIONS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md index 2210ea7..a427aed 100644 --- a/CONTRIBUTIONS.md +++ b/CONTRIBUTIONS.md @@ -7,12 +7,14 @@ Thanks a lot for your contributions! ## Patches -These persons contributed code. See the git history for details! +These persons contributed code or documentation. See the git history +for details! * [Ben Harris](mailto:mail@bharr.is) (@bharrisau) * [Daniel Ziegenberg](mailto:daniel@ziegenberg.at) (@ziegenberg) * [Michael Gisbers](mailto:michael@gisbers.de) (@mgisbers) * [netztrip](mailto:dave-tvg@netztrip.de) (@netztrip) +* [Stefan MΓΌller](mailto:stefan.mueller.83@gmail.com) (@PackElend) ## Donations From af589df82cfcdbedfbab7d3d8e62b5238d318bb6 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 4 May 2022 21:11:26 +0200 Subject: [PATCH 65/86] global-wait: do not claim to be a backup script... Probalby a copy and paste issue? (cherry picked from commit 7189a3bbe5320a80d1cfbcbf940c1a2d57c45b73) --- global-wait | 2 -- 1 file changed, 2 deletions(-) diff --git a/global-wait b/global-wait index 9f3d438..43cc5cc 100644 --- a/global-wait +++ b/global-wait @@ -3,8 +3,6 @@ # Copyright (c) 2020-2022 Christian Hesse # https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md # -# provides: backup-script -# # wait for global-functions to finish # https://git.eworm.de/cgit/routeros-scripts/about/doc/global-wait.md From 357618a1a545ced696ffbfb87bb72a45b73913f8 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 4 May 2022 22:23:17 +0200 Subject: [PATCH 66/86] README: installing custom scripts & modules (cherry picked from commit ecde864263f8572503eeaba2ad7c806847adb594) --- README.d/12-install-custom-script.avif | Bin 0 -> 2349 bytes README.d/hello-world.rsc | 3 +++ README.md | 23 +++++++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 README.d/12-install-custom-script.avif create mode 100644 README.d/hello-world.rsc diff --git a/README.d/12-install-custom-script.avif b/README.d/12-install-custom-script.avif new file mode 100644 index 0000000000000000000000000000000000000000..fb536061f7d59c1f3c52ebd75b418962e929f9d3 GIT binary patch literal 2349 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 Date: Fri, 6 May 2022 08:20:34 +0200 Subject: [PATCH 67/86] doc/check-routeros-update: mention neighbor discovery (cherry picked from commit a4ebc18af7973c5263adc6bea01af4c971a57922) --- doc/check-routeros-update.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index cac1850..f045352 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -14,7 +14,8 @@ The primary use of this script is to notify about RouterOS updates. Run from a terminal you can start the update process or schedule it. Centrally managing update process of several devices is possibly by -specifying versions safe to be updated on a web server. +specifying versions safe to be updated on a web server. Versions seen +in neighbor discovery can be specified to be safe as well. Also installing patch updates (where just last digit is increased) automatically is supported. From 58f77824779f0fb0f968a5105984cc44c8c27175 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 6 May 2022 08:20:53 +0200 Subject: [PATCH 68/86] doc/check-routeros-update: give warning about possible breakage (cherry picked from commit c4008b91cd1eaea7789b2c4b40b590e5eb2f8ed6) --- doc/check-routeros-update.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index f045352..d53ae18 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -20,6 +20,11 @@ in neighbor discovery can be specified to be safe as well. Also installing patch updates (where just last digit is increased) automatically is supported. +> ⚠️ **Warning**: Installing updates is important from a security point +> of view. At the same time it can be source of serve breakage. So test +> versions in lab and read forum before deploying to your production +> environment! Automatic updates should be handled with care! + ### Sample notification ![check-routeros-update notification](check-routeros-update.d/notification.svg) From 1b5f261f3dec01e12809652755fcf179f044c2e1 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 6 May 2022 08:26:00 +0200 Subject: [PATCH 69/86] doc/check-routeros-update: link changelog and forum (cherry picked from commit 6784f82593c1af6b9db7cef39ba0326292fe654e) --- doc/check-routeros-update.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/check-routeros-update.md b/doc/check-routeros-update.md index d53ae18..0710b76 100644 --- a/doc/check-routeros-update.md +++ b/doc/check-routeros-update.md @@ -22,8 +22,11 @@ automatically is supported. > ⚠️ **Warning**: Installing updates is important from a security point > of view. At the same time it can be source of serve breakage. So test -> versions in lab and read forum before deploying to your production -> environment! Automatic updates should be handled with care! +> versions in lab and read +> [changelog](https://mikrotik.com/download/changelogs/) and +> [forum](https://forum.mikrotik.com/viewforum.php?f=21) before deploying +> to your production environment! Automatic updates should be handled +> with care! ### Sample notification From 5f0a7efe1e7919951d6f5ee61801797cc2851ca4 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 6 Jan 2022 10:44:55 +0100 Subject: [PATCH 70/86] cleanup dummy scripts from backup scripts renames (cherry picked from commit 93ec9afe558ef6eba5d513fab359bb5f6618666d) --- cloud-backup | 2 -- email-backup | 2 -- upload-backup | 2 -- 3 files changed, 6 deletions(-) delete mode 100644 cloud-backup delete mode 100644 email-backup delete mode 100644 upload-backup diff --git a/cloud-backup b/cloud-backup deleted file mode 100644 index 2c48f07..0000000 --- a/cloud-backup +++ /dev/null @@ -1,2 +0,0 @@ -#!rsc by RouterOS -# dummy for migration diff --git a/email-backup b/email-backup deleted file mode 100644 index 2c48f07..0000000 --- a/email-backup +++ /dev/null @@ -1,2 +0,0 @@ -#!rsc by RouterOS -# dummy for migration diff --git a/upload-backup b/upload-backup deleted file mode 100644 index 2c48f07..0000000 --- a/upload-backup +++ /dev/null @@ -1,2 +0,0 @@ -#!rsc by RouterOS -# dummy for migration From a5c233b28cf1bf23712fe839ed417bf47cb01e16 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 11 May 2022 18:56:44 +0200 Subject: [PATCH 71/86] README: hardcode url suffix, update info --- README.md | 24 +++++------------------- global-config | 5 +---- global-config.changes | 4 ++-- 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 97cf318..7b01c54 100644 --- a/README.md +++ b/README.md @@ -82,14 +82,9 @@ All following commands will verify the server certificate. For validity the certificate's lifetime is checked with local time, so make sure the device's date and time is set correctly! -One extra step is required if you run RouterOS v6: - - :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; - Now let's download the main scripts and add them in configuration on the fly. - :global ScriptUpdatesUrlSuffix; - :foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={ / system script add name=$Script source=([ / tool fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . $ScriptUpdatesUrlSuffix) output=user as-value]->"data"); }; + :foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={ / system script add name=$Script source=([ / tool fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . "\?h=routeros-v6") output=user as-value]->"data"); }; ![screenshot: import scripts](README.d/04-import-scripts.avif) @@ -118,10 +113,8 @@ to be updated automatically! ### Changes for RouterOS v6 -RouterOS v6 will become deprecated at some time in the future, but to date -it is still the default for these scripts (in branch `main`). This will -change however, so if you want to stay with RouterOS v6 for some time add -these lines to your `global-config-overlay`, if missing: +Let's consider RouterOS v6 being legacy. If you want to stay with RouterOS +v6 for some time add these lines to your `global-config-overlay`, if missing: # Use branch routeros-v6 with RouterOS v6: :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; @@ -130,15 +123,8 @@ Then reload the configuration. ### Changes for RouterOS v7 -RouterOS v7 is developed in paralled to RouterOS v6. The former brings some -shiny new features, the latter provides proven stability. - -The changes require incompatible changes to scripts, so these changes go to -a separate branch. If you decide to run RouterOS v7 please switch to branch -`routeros-v7` by adding these lines to your `global-config-overlay`: - - # Use branch routeros-v7 with RouterOS v7: - :global ScriptUpdatesUrlSuffix "\?h=routeros-v7"; +RouterOS v7 is the future, and default branch `main` expects it. Just drop +`$ScriptUpdatesUrlSuffix` from your `global-config-overlay` to use that. Then reload the configuration and continue below to update scripts. diff --git a/global-config b/global-config index d6509e0..ea5176e 100644 --- a/global-config +++ b/global-config @@ -159,14 +159,11 @@ # alternative urls - main: stable code - next: currently in development #:global ScriptUpdatesBaseUrl "https://raw.githubusercontent.com/eworm-de/routeros-scripts/main/"; #:global ScriptUpdatesBaseUrl "https://raw.githubusercontent.com/eworm-de/routeros-scripts/next/"; -#:global ScriptUpdatesBaseUrl "https://raw.githubusercontent.com/eworm-de/routeros-scripts/routeros-v7/"; #:global ScriptUpdatesBaseUrl "https://gitlab.com/eworm-de/routeros-scripts/raw/main/"; #:global ScriptUpdatesBaseUrl "https://gitlab.com/eworm-de/routeros-scripts/raw/next/"; -#:global ScriptUpdatesBaseUrl "https://gitlab.com/eworm-de/routeros-scripts/raw/routeros-v7/"; :global ScriptUpdatesUrlSuffix ""; -# use next or routeros-v7 branch with default url (git.eworm.de) +# use next branch with default url (git.eworm.de) #:global ScriptUpdatesUrlSuffix "\?h=next"; -#:global ScriptUpdatesUrlSuffix "\?h=routeros-v7"; # Use this for defaults with $ScriptRunOnce # Install module with: diff --git a/global-config.changes b/global-config.changes index 5f9ddcc..e82f242 100644 --- a/global-config.changes +++ b/global-config.changes @@ -73,8 +73,8 @@ 67="Moved modules to directory with shorter name."; 68="Reintroduced 'global-wait' for functions in scheduler."; 69="Support hard lower limit for voltage in 'check-health'."; - 70="MikroTik started pushing RouterOS v7. Changes are required if you run it, see https://git.eworm.de/cgit/routeros-scripts/about/#changes-for-routeros-v7"; - 71="MikroTik is pushing RouterOS v7 even more, in parallel branches. If you want to keep RouterOS v6 for some time see https://git.eworm.de/cgit/routeros-scripts/about/#changes-for-routeros-v6"; + 70="MikroTik started pushing RouterOS v7. Changes are required if you run it, see https://git.eworm.de/cgit/routeros-scripts/about/#requirements"; + 71="MikroTik is pushing RouterOS v7 even more, in parallel branches. If you want to keep RouterOS v6 for some time see https://git.eworm.de/cgit/routeros-scripts/about/#requirements"; 72="Introduced new script 'netwatch-dns' to manage DNS and DoH servers from netwatch."; 73="Renamed backup scripts ('cloud-backup' -> 'backup-cloud', 'email-backup' -> 'backup-email', 'upload-backup' -> 'backup-upload')."; 74="Extended 'hotspot-to-wpa', it can now read additional configuration from templates and hotspot users."; From 1b3f2620a7e521ef33a7e2273b57e1ec0d69dda7 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 11 May 2022 18:57:17 +0200 Subject: [PATCH 72/86] INITIAL-COMMANDS: hardcode url suffix --- INITIAL-COMMANDS.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 66db40c..33e424a 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -3,18 +3,13 @@ Initial commands [β—€ Go back to main README](README.md) -> ⚠️ **Warning**: These command are inteneded for initial setup. If you are +> ⚠️ **Warning**: These commands are inteneded for initial setup. If you are > not aware of the procedure please follow > [the long way in detail](README.md#the-long-way-in-detail). -One extra step is required if you run RouterOS v6: - - :global ScriptUpdatesUrlSuffix "\?h=routeros-v6"; - -Then run the complete base installation: +Run the complete base installation: { - :global ScriptUpdatesUrlSuffix; / tool fetch "https://git.eworm.de/cgit/routeros-scripts/plain/certs/R3.pem" dst-path="letsencrypt-R3.pem" as-value; :delay 1s; / certificate import file-name=letsencrypt-R3.pem passphrase=""; @@ -24,7 +19,7 @@ Then run the complete base installation: / file remove "letsencrypt-R3.pem"; :delay 1s; :foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={ - / system script add name=$Script source=([ / tool fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . $ScriptUpdatesUrlSuffix) output=user as-value]->"data"); + / system script add name=$Script source=([ / tool fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . "\?h=routeros-v6") output=user as-value]->"data"); }; / system script { run global-config; run global-functions; }; / system scheduler add name="global-scripts" start-time=startup on-event="/ system script { run global-config; run global-functions; }"; From cdb698acbf9c30cd6eb8345e79b4be8799d814ff Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 11 May 2022 18:46:03 +0200 Subject: [PATCH 73/86] notify about freeze of routeros-v6 branch --- global-config | 2 +- global-config.changes | 1 + global-functions | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/global-config b/global-config index ea5176e..d428da5 100644 --- a/global-config +++ b/global-config @@ -8,7 +8,7 @@ # Make sure all configuration properties are up to date and this # value is in sync with value in script 'global-functions'! -:global GlobalConfigVersion 79; +:global GlobalConfigVersion 80; # This is used for DNS and backup file. :global Domain "example.com"; diff --git a/global-config.changes b/global-config.changes index e82f242..19630e9 100644 --- a/global-config.changes +++ b/global-config.changes @@ -83,6 +83,7 @@ 77="Introduced new script 'firmware-upgrade-reboot'. Handle with care!"; 78="New documentation is online for notifications via Telegram & Matrix, variable inspection, ip address calculation and running scripts once."; 79="Introduced new script 'backup-partition' to save configuration to fallback partition."; + 80="The 'routeros-v6' branch entered soft freeze state and will receive important updates only. Happy to welcome you in 'main' branch once moving to RouterOS v7!"; }; # Migration steps to be applied on script updates diff --git a/global-functions b/global-functions index 038f149..e40e384 100644 --- a/global-functions +++ b/global-functions @@ -10,7 +10,7 @@ :local 0 "global-functions"; # expected configuration version -:global ExpectedConfigVersion 79; +:global ExpectedConfigVersion 80; # global variables not to be changed by user :global GlobalFunctionsReady false; From 27f7ef169f11d0be54c044843be311737069020f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 15 Aug 2022 17:13:56 +0200 Subject: [PATCH 74/86] logo: optimize the svg file (cherry picked from commit 83372d8b074194c011151f6c7cfc8bb2702731ec) --- logo.svg | 143 +++++++++---------------------------------------------- 1 file changed, 22 insertions(+), 121 deletions(-) diff --git a/logo.svg b/logo.svg index f0923fd..f572033 100644 --- a/logo.svg +++ b/logo.svg @@ -1,122 +1,23 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - + + + + + + image/svg+xml + + + + + + + + + + + + + + + + From 68fdcaf25949d9ca960d5d76c2decc5a7091d744 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 3 Mar 2023 17:18:23 +0100 Subject: [PATCH 75/86] use a new logo (cherry picked from commit 154a036c64a0dc5961ef4de0f0d931617ed95d4c) --- logo.avif | Bin 2607 -> 2001 bytes logo.png | Bin 3807 -> 4428 bytes logo.svg | 46 ++++++++++++++++++++++++++-------------------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/logo.avif b/logo.avif index d118cc314250c762a2a328d71f42e14b7d35e78e..399a2f5ad184fabd7e8127b1e2f1bd994ac7a6b4 100644 GIT binary patch delta 1614 zcmV-U2C@0C6wwcmdK3eO000C_00IC2009610kr@C0nxFJApw5|ByD72bP@mx1{fKy z-(gTP!~;YC0NqNr!~%rchQ<7C_gm=G(E-~6%Iv7n{wQ^9`(%3tH$y{UL2-whDf+PTBdBt(eDqSo^hFgbp(q)#zr2WYWtTbv|w z_sz`3(xK`HZ^Wld@#0fDAk(E3KqjJVz@p4**S2B5Axq>5d?~(DcWcfn@0Gs-wjg(j zH~rSuRt;kgdOR8IFNG#knQ0V1TZ3~i{TlO|tkVnTj)H$$Qb#lavhGSviyk4IJ- zg^UwjH~xR7&7SpHW^fe`YmIBX?2Aqru8_1h^hG$GGy=y`3LIlI`rBGbwh2kd13ji1 z;2ei$0-%3QjMe@bt5xL|t${H^4RE-QpG%uN7Z!`MfEbi_9^@tGJyxq8x;(wr1VJtc z5nJr#OzwsX=}tN(;LpDRJjy5|ddREvd?KC`i%f&ZEB@53jF z>xS7PGIhwR^WsjIbz?1&6{mN7I%wfigPX1g(71lQB;%4*RNI;~C&6JF z{Wk$FfWSTViST#=W^jMK1qH+d%X{fNywEJi-hBe#3VqB?IaRFgtXETaT4F>mn|hx7 zw<7{-BQN1&3FFs0Kl@yHuR%Chw2Sca*zK>>B~)|(({<8GPwmuTHD=)!_S`$IDFeBgILNNy`?V3!{a z_-ZLE)ENN|;XrIa4+6KQuG@bpT72tU>`T>Q_&G*8wnOB3n$Vtk$O;>jnfpVk4uYJC z1`ybqCTwj9j%eokJd16-AAGyvf5>8(x}XHH0ojbEb>sG~+Qhk)u)7ZSbwFFzU%y+| z`0B!hVQwka$v43IL8jX}fc4q}mi;=R4D)fmS17@Gglpg(#QOaK4? delta 2225 zcmV;i2u}CW53dxEdK3np000A#00IC2009610kr@C1nIGkApw5~f^B4BbP@mx1{fKy z-(gTP+zAi>0NpDpp42!s3T7$W3Mnc>$yqhHt<;~yKk_(7-o8E)lo+ctkg0n|EcH3f zO?OA&&9#6?&&uibYf)EBUFz*XtXztOzjm{3qrCtL@#6OSJiYjnZ>`m*`ht%z0DV6$ zKytPrWg837MqB`Ou=B~t#|uKJ+-SO;DH&!Gvu>Lk2-dw5a@@Q)^A$*p*PRKBaTpJb zCQvbz`$B)K8B(w{v`N&HhOl4ClQ4nw9sY<`872jg6HuA6!>xt9IWF`pqE3OlYRqmg zNqkf{7mLHG?l=BC*9S-L$UL)QW>qNy^S%bp4l46*0z?CMkijX@cEda}SEKpM+!@TU z{YqUj6D5p|!?LZNSO`ca=IXt|e-`l&QdGm|lU#q7xxvQF(O(YiazJ5lX*ba-zw_fL zJRX(7LP2VREN%kJ(%nog7RQ+uJd-F9S< zf7X8>e5%3`h_?8Zq(0)@+53JM@Hoxe$sAuD{44(lYSyMlpBRVmrgIBlL`AXk;1L*j zgzXVYLY=!&II^=@f1nVx$LH}@Z7Ix=qG{w{tub!7dFVWz8Xa3CinZScry`lZB1U5J=u0)9M1Nl3T;8gMoy_`iV5DzmT#{aX497O|K7M-egFU5T3T9t|Nq=tegw1%2$IBSSf_?o z6|A=Vx(EIQDx@7$IcmRb%}FIU)eX)$?p!z|e1a>eXNEO3U;+ZwC-%lwd-TtiQ)X6A z@3sEN@>L}5@+J5Z0162>8LxleVF3*WkTQV>L}UPAh8R%WaTfj~Vv9Ey7P+;n%kA03 z7jR}Ye>(n2>g{edcJbRAaAc*58c)$;(3;OMiZ18R#-XTFf)sv9dD3xpkbYy~q11A0 z1PuK+FU#qI~p6TVt5MjB_BB*oj8fTNyx7B#_9@#a7JPCgagZj$O-lA)G z0r6a63OES(5<6FH!St$a%{nc**{{C1octF%0Mx1f`(4 zm}507JMlTGH9nH06z_{7v%k`3X3ElZl#craS^o)%a{n_ZdW)`?%wi7>*^_C#kYawH zTPML+x-SU@6II=aJw1QdHf(&kKWAENfHD%;w1lNH*3sVDs(t`m$1_33YZ&20vFEJ> z-fVJds>IZ)h0TCo-DSD(s&g&Pf@t*;=>C$SZ(xp9SEeIsG;`a+ZI}}#c@i&h3xC;z zPeGTGh#$#zfCZ5yG%3!R`Ff?f67|QbmZLP;M;tMhZ0(tt6bye%3LYr1BxvsQfCj0& zj2`W(U3c6U>)e;FvRmtvBK}8^)LGj5RqZTJ!siJF_Ro=iq4;3bPV$?JOgi^y-DN_* ztk^?bK?|tsHPBsAD%vVA1;4jsa(ccu-8(Vn-(EG?i7>c<+ij$vjLyokyx-_FUKRl+gR* z_$7hmQGT$t2GBqD2bGh4p;L$(9$W{ZwUna;=acoXvRNum)FS<_J)#9Toe=$Lt5tQ* z23c^}RuAv;hEp`~S-kWE(~NxcR;L4i-VUe7EYevC*sXtYAA?I^Ut0P-$_reKpzB(2 zH!7M18cHZ_cUrcXq}qi8At*0sQqbhx!Pyd9Q7h-*TL=3*Uh1}z2J(SV?R{&jPvD9VMeTPA7AuRk$zK`^58;lN(bZdVcCTOh?{B0B)9je#Ipr=B1KGu5`ng;dc z!!*B9V*dO}wxNnTWoyG-gk|JLhV@(5AL^aqb0n`GkelvYAT9fZXiVYK^G=E(^S5!h zJa6mx@Ya_BlEx2rmz)}Wc*zb1zh^ofap&J+EcX#Jn)sSG+pt9VAnEfhGyA3>2L3^b diff --git a/logo.png b/logo.png index 142e9186fb149f5508d2942e93aca9db90ee7276..d97b75dc7d39e2c9e6ff6339d47711e97d6be1f0 100644 GIT binary patch literal 4428 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 - - - - - image/svg+xml - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + From 23ba2ce67af2d580c2e042f0cdddcf59881b755f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 23 May 2023 11:25:43 +0200 Subject: [PATCH 76/86] logo: rename SVG ids (cherry picked from commit c2e7567c13bba80190ad5c2dd7c6ad7b025619e3) --- logo.svg | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/logo.svg b/logo.svg index 4812897..a30e04e 100644 --- a/logo.svg +++ b/logo.svg @@ -1,14 +1,14 @@ - - + + - - + + - - + + From ef437367a7c66709880485c15c808e1ca0f42e75 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 20 Mar 2023 16:32:34 +0100 Subject: [PATCH 77/86] README: badge in style flat and with color (cherry picked from commit 524c1fc032db7e4c361b90fe912fef036f1f59e2) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7b01c54..166ec97 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ RouterOS Scripts ================ -[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?style=social)](https://github.com/eworm-de/routeros-scripts/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?style=social)](https://github.com/eworm-de/routeros-scripts/network) -[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?style=social)](https://github.com/eworm-de/routeros-scripts/watchers) +[![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network) +[![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) ![RouterOS Scripts Logo](logo.svg) From 06bd3a96b5b056c458307127d3aa298452d3cd43 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Thu, 6 Apr 2023 13:53:04 +0200 Subject: [PATCH 78/86] README: add badge to hint required RouterOS version (cherry picked from commit f585b6ee32a6c7a4e860f17e4f9d332021f856aa) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 166ec97..8f40eab 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ RouterOS Scripts [![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers) [![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network) [![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) +![required RouterOS version](https://img.shields.io/badge/RouterOS-6.49-yellow?style=flat) ![RouterOS Scripts Logo](logo.svg) From 79665d29ce738540c9994ade3f8ae357e6e4c5ad Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Sun, 16 Apr 2023 22:04:20 +0200 Subject: [PATCH 79/86] README: add badge to link Telegram group (cherry picked from commit f1c634b984c5ae25bab1abee296f59e9bb74c6c7) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8f40eab..879e55b 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ RouterOS Scripts [![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network) [![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) ![required RouterOS version](https://img.shields.io/badge/RouterOS-6.49-yellow?style=flat) +[![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts) ![RouterOS Scripts Logo](logo.svg) From eaf972d61850920dac3bd2f7de77b800bfdbe65b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Apr 2023 18:23:41 +0200 Subject: [PATCH 80/86] README: generate a donate buttom from shields.io (cherry picked from commit 5324bffd840fd4201d231044f28e7f30e876d6d7) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 879e55b..82e9931 100644 --- a/README.md +++ b/README.md @@ -284,7 +284,7 @@ for you. If you like the scripts and think this is of value for you or your business please consider to [donate with PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J). -[![donate with PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) +[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=for-the-badge)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) Thanks a lot for your support! From 646a7f8c117a651714d5f381e9100934a7c8bc43 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Apr 2023 21:59:47 +0200 Subject: [PATCH 81/86] README: add a donate button to badges (cherry picked from commit f7eb123f3d35b0bad19e94ee74f6252865743b89) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 82e9931..2d0c7ab 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ RouterOS Scripts [![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) ![required RouterOS version](https://img.shields.io/badge/RouterOS-6.49-yellow?style=flat) [![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts) +[![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) ![RouterOS Scripts Logo](logo.svg) From fe7543cef512dc93ecb371f4be4a5c426315351f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 18 Apr 2023 22:00:39 +0200 Subject: [PATCH 82/86] README: make the Telegram QR code a link (cherry picked from commit 69ea231efcbfcb967cbcbfecf802ca00b130a931) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d0c7ab..6b025ad 100644 --- a/README.md +++ b/README.md @@ -263,7 +263,7 @@ Contact We have a Telegram Group [RouterOS-Scripts](https://t.me/routeros_scripts)! -![RouterOS Scripts Telegram Group](README.d/telegram-group.avif) +[![RouterOS Scripts Telegram Group](README.d/telegram-group.avif)](https://t.me/routeros_scripts) Get help, give feedback or just chat - but do not expect free professional support! From c6adece2714098f46ae7364864c05d25227aa0ff Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 27 Jun 2023 16:24:25 +0200 Subject: [PATCH 83/86] README: link the RouterOS button to changelog (cherry picked from commit 4e411728e676050c4c53efafc3fdde1b2547f52e) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6b025ad..b14359a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ RouterOS Scripts [![GitHub stars](https://img.shields.io/github/stars/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=red)](https://github.com/eworm-de/routeros-scripts/stargazers) [![GitHub forks](https://img.shields.io/github/forks/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=green)](https://github.com/eworm-de/routeros-scripts/network) [![GitHub watchers](https://img.shields.io/github/watchers/eworm-de/routeros-scripts?logo=GitHub&style=flat&color=blue)](https://github.com/eworm-de/routeros-scripts/watchers) -![required RouterOS version](https://img.shields.io/badge/RouterOS-6.49-yellow?style=flat) +[![required RouterOS version](https://img.shields.io/badge/RouterOS-6.49-yellow?style=flat)](https://mikrotik.com/download/changelogs/) [![Telegram group @routeros_scripts](https://img.shields.io/badge/Telegram-%40routeros__scripts-%2326A5E4?logo=telegram&style=flat)](https://t.me/routeros_scripts) [![donate with PayPal](https://img.shields.io/badge/Like_it%3F-Donate!-orange?logo=githubsponsors&logoColor=orange&style=flat)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=A4ZXBD6YS2W8J) From d4305b53bf4872a14c2edd5eb1d5bd5bb26dc50b Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 15 Mar 2024 11:26:44 +0100 Subject: [PATCH 84/86] README: add QR code with (shortened) upstream url (cherry picked from commit 2cf4f333d4ab3a0db2742965a430a5d5836c588b) --- README.d/upstream.png | Bin 0 -> 207 bytes README.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 README.d/upstream.png diff --git a/README.d/upstream.png b/README.d/upstream.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5e877c7ba42c3475e2ccb0bcacb0d71748b968 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^F(Ayy3?y$VI!FU4&H|6fVg?3oArNM~bhqvgP>?Oa zC&cyt|NlT{=%LGXKq}wU#WAGf*4!(Gj4X}kj|hKN)Y?_<3AZsk#ibn!(f6&t;ucLK6VSvPZ)J literal 0 HcmV?d00001 diff --git a/README.md b/README.md index b14359a..75173cb 100644 --- a/README.md +++ b/README.md @@ -305,6 +305,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Upstream -------- +![upstream](README.d/upstream.png) + URL: [GitHub.com](https://github.com/eworm-de/routeros-scripts#routeros-scripts) From 2ef06e4533677594b68dd2734dcfd3ccbd6c1145 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 19 Aug 2024 10:35:18 +0200 Subject: [PATCH 85/86] README: make the QR code a link (cherry picked from commit c28574b8f4484463e326e895fcac110d805efa01) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 75173cb..0dcb909 100644 --- a/README.md +++ b/README.md @@ -305,7 +305,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Upstream -------- -![upstream](README.d/upstream.png) +[![upstream](README.d/upstream.png)](https://rsc.eworm.de/) URL: [GitHub.com](https://github.com/eworm-de/routeros-scripts#routeros-scripts) From 2cda1e9c4c3dd16c72c457e7ad2061da4992941f Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Mon, 19 Aug 2024 14:42:29 +0200 Subject: [PATCH 86/86] adopt all required certificate changes --- INITIAL-COMMANDS.md | 11 +- README.md | 16 +- certs/Cloudflare Inc ECC CA-3.pem | 166 ------------ certs/DigiCert Global Root CA.pem | 29 +++ certs/DigiCert Global Root G2.pem | 29 +++ ...igiCert TLS Hybrid ECC SHA384 2020 CA1.pem | 174 ------------- certs/E1.pem | 243 ------------------ certs/GTS CA 1C3.pem | 242 ----------------- certs/GTS Root R1.pem | 38 +++ certs/GTS Root R4.pem | 20 ++ ... Daddy Root Certificate Authority - G2.pem | 30 +++ ...addy Secure Certificate Authority - G2.pem | 178 ------------- certs/ISRG Root X1.pem | 38 +++ certs/ISRG Root X2.pem | 21 ++ certs/R3.pem | 237 ----------------- ...rfield Root Certificate Authority - G2.pem | 30 +++ ...ield Secure Certificate Authority - G2.pem | 179 ------------- global-functions | 6 +- mod/notification-telegram | 2 +- update-tunnelbroker | 2 +- 20 files changed, 252 insertions(+), 1439 deletions(-) delete mode 100644 certs/Cloudflare Inc ECC CA-3.pem create mode 100644 certs/DigiCert Global Root CA.pem create mode 100644 certs/DigiCert Global Root G2.pem delete mode 100644 certs/DigiCert TLS Hybrid ECC SHA384 2020 CA1.pem delete mode 100644 certs/E1.pem delete mode 100644 certs/GTS CA 1C3.pem create mode 100644 certs/GTS Root R1.pem create mode 100644 certs/GTS Root R4.pem create mode 100644 certs/Go Daddy Root Certificate Authority - G2.pem delete mode 100644 certs/Go Daddy Secure Certificate Authority - G2.pem create mode 100644 certs/ISRG Root X1.pem create mode 100644 certs/ISRG Root X2.pem delete mode 100644 certs/R3.pem create mode 100644 certs/Starfield Root Certificate Authority - G2.pem delete mode 100644 certs/Starfield Secure Certificate Authority - G2.pem diff --git a/INITIAL-COMMANDS.md b/INITIAL-COMMANDS.md index 33e424a..212e8be 100644 --- a/INITIAL-COMMANDS.md +++ b/INITIAL-COMMANDS.md @@ -10,13 +10,13 @@ Initial commands Run the complete base installation: { - / tool fetch "https://git.eworm.de/cgit/routeros-scripts/plain/certs/R3.pem" dst-path="letsencrypt-R3.pem" as-value; + / tool fetch "https://git.eworm.de/cgit/routeros-scripts/plain/certs/ISRG-Root-X2.pem" dst-path="isrg-root-x2.pem" as-value; :delay 1s; - / certificate import file-name=letsencrypt-R3.pem passphrase=""; - :if ([ :len [ / certificate find where fingerprint="67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd" or fingerprint="96bcec06264976f37460779acf28c5a7cfe8a3c0aae11a8ffcee05c0bddf08c6" ] ] != 2) do={ + / certificate import file-name=isrg-root-x2.pem passphrase=""; + :if ([ :len [ / certificate find where fingerprint="69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470" ] ] != 1) do={ :error "Something is wrong with your certificates!"; }; - / file remove "letsencrypt-R3.pem"; + / file remove "isrg-root-x2.pem"; :delay 1s; :foreach Script in={ "global-config"; "global-config-overlay"; "global-functions" } do={ / system script add name=$Script source=([ / tool fetch check-certificate=yes-without-crl ("https://git.eworm.de/cgit/routeros-scripts/plain/" . $Script . "\?h=routeros-v6") output=user as-value]->"data"); @@ -24,8 +24,7 @@ Run the complete base installation: / system script { run global-config; run global-functions; }; / system scheduler add name="global-scripts" start-time=startup on-event="/ system script { run global-config; run global-functions; }"; :global CertificateNameByCN; - $CertificateNameByCN "R3"; - $CertificateNameByCN "ISRG Root X1"; + $CertificateNameByCN "ISRG Root X2"; } Optional to update the scripts automatically: diff --git a/README.md b/README.md index 0dcb909..ebc406b 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ download the certificates. If you intend to download the scripts from a different location (for example from github.com) install the corresponding certificate chain. - / tool fetch "https://git.eworm.de/cgit/routeros-scripts/plain/certs/R3.pem" dst-path="letsencrypt-R3.pem"; + / tool fetch "https://git.eworm.de/cgit/routeros-scripts/plain/certs/ISRG-Root-X2.pem" dst-path="isrg-root-x2.pem"; ![screenshot: download certs](README.d/01-download-certs.avif) @@ -61,21 +61,19 @@ Note that the commands above do *not* verify server certificate, so if you want to be safe download with your workstations's browser and transfer the files to your MikroTik device. -* [ISRG Root X1](https://letsencrypt.org/certs/isrgrootx1.pem) -* Let's Encrypt [R3](https://letsencrypt.org/certs/lets-encrypt-r3.pem) +* [ISRG Root X2](https://letsencrypt.org/certs/isrg-root-x2.pem) Then we import the certificates. - / certificate import file-name=letsencrypt-R3.pem passphrase=""; + / certificate import file-name=isrg-root-x2.pem passphrase=""; ![screenshot: import certs](README.d/02-import-certs.avif) -For basic verification we rename the certificates and print their count. Make -sure the certificate count is **two**. +For basic verification we rename the certificate and print the count. Make +sure the certificate count is **one**. - / certificate set name="R3" [ find where fingerprint="67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd" ]; - / certificate set name="ISRG-Root-X1" [ find where fingerprint="96bcec06264976f37460779acf28c5a7cfe8a3c0aae11a8ffcee05c0bddf08c6" ]; - / certificate print count-only where fingerprint="67add1166b020ae61b8f5fc96813c04c2aa589960796865572a3c7e737613dfd" or fingerprint="96bcec06264976f37460779acf28c5a7cfe8a3c0aae11a8ffcee05c0bddf08c6"; + / certificate set name="ISRG-Root-X2" [ find where common-name="ISRG Root X2" ]; + / certificate print count-only where fingerprint="69729b8e15a86efc177a57afb7171dfc64add28c2fca8cf1507e34453ccb1470"; ![screenshot: check certs](README.d/03-check-certs.avif) diff --git a/certs/Cloudflare Inc ECC CA-3.pem b/certs/Cloudflare Inc ECC CA-3.pem deleted file mode 100644 index e2de16a..0000000 --- a/certs/Cloudflare Inc ECC CA-3.pem +++ /dev/null @@ -1,166 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 0a:37:87:64:5e:5f:b4:8c:22:4e:fd:1b:ed:14:0c:3c - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root - Validity - Not Before: Jan 27 12:48:08 2020 GMT - Not After : Dec 31 23:59:59 2024 GMT - Subject: C = US, O = "Cloudflare, Inc.", CN = Cloudflare Inc ECC CA-3 - Subject Public Key Info: - Public Key Algorithm: id-ecPublicKey - Public-Key: (256 bit) - pub: - 04:b9:ad:4d:66:99:14:0b:46:ec:1f:81:d1:2a:50: - 1e:9d:03:15:2f:34:12:7d:2d:96:b8:88:38:9b:85: - 5f:8f:bf:bb:4d:ef:61:46:c4:c9:73:d4:24:4f:e0: - ee:1c:ce:6c:b3:51:71:2f:6a:ee:4c:05:09:77:d3: - 72:62:a4:9b:d7 - ASN1 OID: prime256v1 - NIST CURVE: P-256 - X509v3 extensions: - X509v3 Subject Key Identifier: - A5:CE:37:EA:EB:B0:75:0E:94:67:88:B4:45:FA:D9:24:10:87:96:1F - X509v3 Authority Key Identifier: - keyid:E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 - - X509v3 Key Usage: critical - Digital Signature, Certificate Sign, CRL Sign - X509v3 Extended Key Usage: - TLS Web Server Authentication, TLS Web Client Authentication - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:0 - Authority Information Access: - OCSP - URI:http://ocsp.digicert.com - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://crl3.digicert.com/Omniroot2025.crl - - X509v3 Certificate Policies: - Policy: 2.16.840.1.114412.1.1 - CPS: https://www.digicert.com/CPS - Policy: 2.16.840.1.114412.1.2 - Policy: 2.23.140.1.2.1 - Policy: 2.23.140.1.2.2 - Policy: 2.23.140.1.2.3 - - Signature Algorithm: sha256WithRSAEncryption - 05:24:1d:dd:1b:b0:2a:eb:98:d6:85:e3:39:4d:5e:6b:57:9d: - 82:57:fc:eb:e8:31:a2:57:90:65:05:be:16:44:38:5a:77:02: - b9:cf:10:42:c6:e1:92:a4:e3:45:27:f8:00:47:2c:68:a8:56: - 99:53:54:8f:ad:9e:40:c1:d0:0f:b6:d7:0d:0b:38:48:6c:50: - 2c:49:90:06:5b:64:1d:8b:cc:48:30:2e:de:08:e2:9b:49:22: - c0:92:0c:11:5e:96:92:94:d5:fc:20:dc:56:6c:e5:92:93:bf: - 7a:1c:c0:37:e3:85:49:15:fa:2b:e1:74:39:18:0f:b7:da:f3: - a2:57:58:60:4f:cc:8e:94:00:fc:46:7b:34:31:3e:4d:47:82: - 81:3a:cb:f4:89:5d:0e:ef:4d:0d:6e:9c:1b:82:24:dd:32:25: - 5d:11:78:51:10:3d:a0:35:23:04:2f:65:6f:9c:c1:d1:43:d7: - d0:1e:f3:31:67:59:27:dd:6b:d2:75:09:93:11:24:24:14:cf: - 29:be:e6:23:c3:b8:8f:72:3f:e9:07:c8:24:44:53:7a:b3:b9: - 61:65:a1:4c:0e:c6:48:00:c9:75:63:05:87:70:45:52:83:d3: - 95:9d:45:ea:f0:e8:31:1d:7e:09:1f:0a:fe:3e:dd:aa:3c:5e: - 74:d2:ac:b1 ------BEGIN CERTIFICATE----- -MIIDzTCCArWgAwIBAgIQCjeHZF5ftIwiTv0b7RQMPDANBgkqhkiG9w0BAQsFADBa -MQswCQYDVQQGEwJJRTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJl -clRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTIw -MDEyNzEyNDgwOFoXDTI0MTIzMTIzNTk1OVowSjELMAkGA1UEBhMCVVMxGTAXBgNV -BAoTEENsb3VkZmxhcmUsIEluYy4xIDAeBgNVBAMTF0Nsb3VkZmxhcmUgSW5jIEVD -QyBDQS0zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEua1NZpkUC0bsH4HRKlAe -nQMVLzQSfS2WuIg4m4Vfj7+7Te9hRsTJc9QkT+DuHM5ss1FxL2ruTAUJd9NyYqSb -16OCAWgwggFkMB0GA1UdDgQWBBSlzjfq67B1DpRniLRF+tkkEIeWHzAfBgNVHSME -GDAWgBTlnVkwgkdYzKz6CFQ2hns6tQRN8DAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0l -BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYI -KwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5j -b20wOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL09t -bmlyb290MjAyNS5jcmwwbQYDVR0gBGYwZDA3BglghkgBhv1sAQEwKjAoBggrBgEF -BQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzALBglghkgBhv1sAQIw -CAYGZ4EMAQIBMAgGBmeBDAECAjAIBgZngQwBAgMwDQYJKoZIhvcNAQELBQADggEB -AAUkHd0bsCrrmNaF4zlNXmtXnYJX/OvoMaJXkGUFvhZEOFp3ArnPEELG4ZKk40Un -+ABHLGioVplTVI+tnkDB0A+21w0LOEhsUCxJkAZbZB2LzEgwLt4I4ptJIsCSDBFe -lpKU1fwg3FZs5ZKTv3ocwDfjhUkV+ivhdDkYD7fa86JXWGBPzI6UAPxGezQxPk1H -goE6y/SJXQ7vTQ1unBuCJN0yJV0ReFEQPaA1IwQvZW+cwdFD19Ae8zFnWSfda9J1 -CZMRJCQUzym+5iPDuI9yP+kHyCREU3qzuWFloUwOxkgAyXVjBYdwRVKD05WdRerw -6DEdfgkfCv4+3ao8XnTSrLE= ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 33554617 (0x20000b9) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root - Validity - Not Before: May 12 18:46:00 2000 GMT - Not After : May 12 23:59:00 2025 GMT - Subject: C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Root - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:a3:04:bb:22:ab:98:3d:57:e8:26:72:9a:b5:79: - d4:29:e2:e1:e8:95:80:b1:b0:e3:5b:8e:2b:29:9a: - 64:df:a1:5d:ed:b0:09:05:6d:db:28:2e:ce:62:a2: - 62:fe:b4:88:da:12:eb:38:eb:21:9d:c0:41:2b:01: - 52:7b:88:77:d3:1c:8f:c7:ba:b9:88:b5:6a:09:e7: - 73:e8:11:40:a7:d1:cc:ca:62:8d:2d:e5:8f:0b:a6: - 50:d2:a8:50:c3:28:ea:f5:ab:25:87:8a:9a:96:1c: - a9:67:b8:3f:0c:d5:f7:f9:52:13:2f:c2:1b:d5:70: - 70:f0:8f:c0:12:ca:06:cb:9a:e1:d9:ca:33:7a:77: - d6:f8:ec:b9:f1:68:44:42:48:13:d2:c0:c2:a4:ae: - 5e:60:fe:b6:a6:05:fc:b4:dd:07:59:02:d4:59:18: - 98:63:f5:a5:63:e0:90:0c:7d:5d:b2:06:7a:f3:85: - ea:eb:d4:03:ae:5e:84:3e:5f:ff:15:ed:69:bc:f9: - 39:36:72:75:cf:77:52:4d:f3:c9:90:2c:b9:3d:e5: - c9:23:53:3f:1f:24:98:21:5c:07:99:29:bd:c6:3a: - ec:e7:6e:86:3a:6b:97:74:63:33:bd:68:18:31:f0: - 78:8d:76:bf:fc:9e:8e:5d:2a:86:a7:4d:90:dc:27: - 1a:39 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - E5:9D:59:30:82:47:58:CC:AC:FA:08:54:36:86:7B:3A:B5:04:4D:F0 - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:3 - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - Signature Algorithm: sha1WithRSAEncryption - 85:0c:5d:8e:e4:6f:51:68:42:05:a0:dd:bb:4f:27:25:84:03: - bd:f7:64:fd:2d:d7:30:e3:a4:10:17:eb:da:29:29:b6:79:3f: - 76:f6:19:13:23:b8:10:0a:f9:58:a4:d4:61:70:bd:04:61:6a: - 12:8a:17:d5:0a:bd:c5:bc:30:7c:d6:e9:0c:25:8d:86:40:4f: - ec:cc:a3:7e:38:c6:37:11:4f:ed:dd:68:31:8e:4c:d2:b3:01: - 74:ee:be:75:5e:07:48:1a:7f:70:ff:16:5c:84:c0:79:85:b8: - 05:fd:7f:be:65:11:a3:0f:c0:02:b4:f8:52:37:39:04:d5:a9: - 31:7a:18:bf:a0:2a:f4:12:99:f7:a3:45:82:e3:3c:5e:f5:9d: - 9e:b5:c8:9e:7c:2e:c8:a4:9e:4e:08:14:4b:6d:fd:70:6d:6b: - 1a:63:bd:64:e6:1f:b7:ce:f0:f2:9f:2e:bb:1b:b7:f2:50:88: - 73:92:c2:e2:e3:16:8d:9a:32:02:ab:8e:18:dd:e9:10:11:ee: - 7e:35:ab:90:af:3e:30:94:7a:d0:33:3d:a7:65:0f:f5:fc:8e: - 9e:62:cf:47:44:2c:01:5d:bb:1d:b5:32:d2:47:d2:38:2e:d0: - fe:81:dc:32:6a:1e:b5:ee:3c:d5:fc:e7:81:1d:19:c3:24:42: - ea:63:39:a9 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- diff --git a/certs/DigiCert Global Root CA.pem b/certs/DigiCert Global Root CA.pem new file mode 100644 index 0000000..b0f0013 --- /dev/null +++ b/certs/DigiCert Global Root CA.pem @@ -0,0 +1,29 @@ +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- diff --git a/certs/DigiCert Global Root G2.pem b/certs/DigiCert Global Root G2.pem new file mode 100644 index 0000000..8af6c7a --- /dev/null +++ b/certs/DigiCert Global Root G2.pem @@ -0,0 +1,29 @@ +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- diff --git a/certs/DigiCert TLS Hybrid ECC SHA384 2020 CA1.pem b/certs/DigiCert TLS Hybrid ECC SHA384 2020 CA1.pem deleted file mode 100644 index 446f56f..0000000 --- a/certs/DigiCert TLS Hybrid ECC SHA384 2020 CA1.pem +++ /dev/null @@ -1,174 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 07:f2:f3:5c:87:a8:77:af:7a:ef:e9:47:99:35:25:bd - Signature Algorithm: sha384WithRSAEncryption - Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA - Validity - Not Before: Apr 14 00:00:00 2021 GMT - Not After : Apr 13 23:59:59 2031 GMT - Subject: C = US, O = DigiCert Inc, CN = DigiCert TLS Hybrid ECC SHA384 2020 CA1 - Subject Public Key Info: - Public Key Algorithm: id-ecPublicKey - Public-Key: (384 bit) - pub: - 04:c1:1b:c6:9a:5b:98:d9:a4:29:a0:e9:d4:04:b5: - db:eb:a6:b2:6c:55:c0:ff:ed:98:c6:49:2f:06:27: - 51:cb:bf:70:c1:05:7a:c3:b1:9d:87:89:ba:ad:b4: - 13:17:c9:a8:b4:83:c8:b8:90:d1:cc:74:35:36:3c: - 83:72:b0:b5:d0:f7:22:69:c8:f1:80:c4:7b:40:8f: - cf:68:87:26:5c:39:89:f1:4d:91:4d:da:89:8b:e4: - 03:c3:43:e5:bf:2f:73 - ASN1 OID: secp384r1 - NIST CURVE: P-384 - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:0 - X509v3 Subject Key Identifier: - 0A:BC:08:29:17:8C:A5:39:6D:7A:0E:CE:33:C7:2E:B3:ED:FB:C3:7A - X509v3 Authority Key Identifier: - keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 - - X509v3 Key Usage: critical - Digital Signature, Certificate Sign, CRL Sign - X509v3 Extended Key Usage: - TLS Web Server Authentication, TLS Web Client Authentication - Authority Information Access: - OCSP - URI:http://ocsp.digicert.com - CA Issuers - URI:http://cacerts.digicert.com/DigiCertGlobalRootCA.crt - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://crl3.digicert.com/DigiCertGlobalRootCA.crl - - X509v3 Certificate Policies: - Policy: 2.16.840.1.114412.2.1 - Policy: 2.23.140.1.1 - Policy: 2.23.140.1.2.1 - Policy: 2.23.140.1.2.2 - Policy: 2.23.140.1.2.3 - - Signature Algorithm: sha384WithRSAEncryption - 47:59:81:7f:d4:1b:1f:b0:71:f6:98:5d:18:ba:98:47:98:b0: - 7e:76:2b:ea:ff:1a:8b:ac:26:b3:42:8d:31:e6:4a:e8:19:d0: - ef:da:14:e7:d7:14:92:a1:92:f2:a7:2e:2d:af:fb:1d:f6:fb: - 53:b0:8a:3f:fc:d8:16:0a:e9:b0:2e:b6:a5:0b:18:90:35:26: - a2:da:f6:a8:b7:32:fc:95:23:4b:c6:45:b9:c4:cf:e4:7c:ee: - e6:c9:f8:90:bd:72:e3:99:c3:1d:0b:05:7c:6a:97:6d:b2:ab: - 02:36:d8:c2:bc:2c:01:92:3f:04:a3:8b:75:11:c7:b9:29:bc: - 11:d0:86:ba:92:bc:26:f9:65:c8:37:cd:26:f6:86:13:0c:04: - aa:89:e5:78:b1:c1:4e:79:bc:76:a3:0b:51:e4:c5:d0:9e:6a: - fe:1a:2c:56:ae:06:36:27:a3:73:1c:08:7d:93:32:d0:c2:44: - 19:da:8d:f4:0e:7b:1d:28:03:2b:09:8a:76:ca:77:dc:87:7a: - ac:7b:52:26:55:a7:72:0f:9d:d2:88:4f:fe:b1:21:c5:1a:a1: - aa:39:f5:56:db:c2:84:c4:35:1f:70:da:bb:46:f0:86:bf:64: - 00:c4:3e:f7:9f:46:1b:9d:23:05:b9:7d:b3:4f:0f:a9:45:3a: - e3:74:30:98 ------BEGIN CERTIFICATE----- -MIIEFzCCAv+gAwIBAgIQB/LzXIeod6967+lHmTUlvTANBgkqhkiG9w0BAQwFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0yMTA0MTQwMDAwMDBaFw0zMTA0MTMyMzU5NTlaMFYxCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxMDAuBgNVBAMTJ0RpZ2lDZXJ0IFRMUyBI -eWJyaWQgRUNDIFNIQTM4NCAyMDIwIENBMTB2MBAGByqGSM49AgEGBSuBBAAiA2IA -BMEbxppbmNmkKaDp1AS12+umsmxVwP/tmMZJLwYnUcu/cMEFesOxnYeJuq20ExfJ -qLSDyLiQ0cx0NTY8g3KwtdD3ImnI8YDEe0CPz2iHJlw5ifFNkU3aiYvkA8ND5b8v -c6OCAYIwggF+MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAq8CCkXjKU5 -bXoOzjPHLrPt+8N6MB8GA1UdIwQYMBaAFAPeUDVW0Uy7ZvCj4hsbw5eyPdFVMA4G -A1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdgYI -KwYBBQUHAQEEajBoMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5j -b20wQAYIKwYBBQUHMAKGNGh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdp -Q2VydEdsb2JhbFJvb3RDQS5jcnQwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2Ny -bDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDA9BgNVHSAE -NjA0MAsGCWCGSAGG/WwCATAHBgVngQwBATAIBgZngQwBAgEwCAYGZ4EMAQICMAgG -BmeBDAECAzANBgkqhkiG9w0BAQwFAAOCAQEAR1mBf9QbH7Bx9phdGLqYR5iwfnYr -6v8ai6wms0KNMeZK6BnQ79oU59cUkqGS8qcuLa/7Hfb7U7CKP/zYFgrpsC62pQsY -kDUmotr2qLcy/JUjS8ZFucTP5Hzu5sn4kL1y45nDHQsFfGqXbbKrAjbYwrwsAZI/ -BKOLdRHHuSm8EdCGupK8JvllyDfNJvaGEwwEqonleLHBTnm8dqMLUeTF0J5q/hos -Vq4GNiejcxwIfZMy0MJEGdqN9A57HSgDKwmKdsp33Id6rHtSJlWncg+d0ohP/rEh -xRqhqjn1VtvChMQ1H3Dau0bwhr9kAMQ+959GG50jBbl9s08PqUU643QwmA== ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 08:3b:e0:56:90:42:46:b1:a1:75:6a:c9:59:91:c7:4a - Signature Algorithm: sha1WithRSAEncryption - Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA - Validity - Not Before: Nov 10 00:00:00 2006 GMT - Not After : Nov 10 00:00:00 2031 GMT - Subject: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:e2:3b:e1:11:72:de:a8:a4:d3:a3:57:aa:50:a2: - 8f:0b:77:90:c9:a2:a5:ee:12:ce:96:5b:01:09:20: - cc:01:93:a7:4e:30:b7:53:f7:43:c4:69:00:57:9d: - e2:8d:22:dd:87:06:40:00:81:09:ce:ce:1b:83:bf: - df:cd:3b:71:46:e2:d6:66:c7:05:b3:76:27:16:8f: - 7b:9e:1e:95:7d:ee:b7:48:a3:08:da:d6:af:7a:0c: - 39:06:65:7f:4a:5d:1f:bc:17:f8:ab:be:ee:28:d7: - 74:7f:7a:78:99:59:85:68:6e:5c:23:32:4b:bf:4e: - c0:e8:5a:6d:e3:70:bf:77:10:bf:fc:01:f6:85:d9: - a8:44:10:58:32:a9:75:18:d5:d1:a2:be:47:e2:27: - 6a:f4:9a:33:f8:49:08:60:8b:d4:5f:b4:3a:84:bf: - a1:aa:4a:4c:7d:3e:cf:4f:5f:6c:76:5e:a0:4b:37: - 91:9e:dc:22:e6:6d:ce:14:1a:8e:6a:cb:fe:cd:b3: - 14:64:17:c7:5b:29:9e:32:bf:f2:ee:fa:d3:0b:42: - d4:ab:b7:41:32:da:0c:d4:ef:f8:81:d5:bb:8d:58: - 3f:b5:1b:e8:49:28:a2:70:da:31:04:dd:f7:b2:16: - f2:4c:0a:4e:07:a8:ed:4a:3d:5e:b5:7f:a3:90:c3: - af:27 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Digital Signature, Certificate Sign, CRL Sign - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Subject Key Identifier: - 03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 - X509v3 Authority Key Identifier: - keyid:03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55 - - Signature Algorithm: sha1WithRSAEncryption - cb:9c:37:aa:48:13:12:0a:fa:dd:44:9c:4f:52:b0:f4:df:ae: - 04:f5:79:79:08:a3:24:18:fc:4b:2b:84:c0:2d:b9:d5:c7:fe: - f4:c1:1f:58:cb:b8:6d:9c:7a:74:e7:98:29:ab:11:b5:e3:70: - a0:a1:cd:4c:88:99:93:8c:91:70:e2:ab:0f:1c:be:93:a9:ff: - 63:d5:e4:07:60:d3:a3:bf:9d:5b:09:f1:d5:8e:e3:53:f4:8e: - 63:fa:3f:a7:db:b4:66:df:62:66:d6:d1:6e:41:8d:f2:2d:b5: - ea:77:4a:9f:9d:58:e2:2b:59:c0:40:23:ed:2d:28:82:45:3e: - 79:54:92:26:98:e0:80:48:a8:37:ef:f0:d6:79:60:16:de:ac: - e8:0e:cd:6e:ac:44:17:38:2f:49:da:e1:45:3e:2a:b9:36:53: - cf:3a:50:06:f7:2e:e8:c4:57:49:6c:61:21:18:d5:04:ad:78: - 3c:2c:3a:80:6b:a7:eb:af:15:14:e9:d8:89:c1:b9:38:6c:e2: - 91:6c:8a:ff:64:b9:77:25:57:30:c0:1b:24:a3:e1:dc:e9:df: - 47:7c:b5:b4:24:08:05:30:ec:2d:bd:0b:bf:45:bf:50:b9:a9: - f3:eb:98:01:12:ad:c8:88:c6:98:34:5f:8d:0a:3c:c6:e9:d5: - 95:95:6d:de ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- diff --git a/certs/E1.pem b/certs/E1.pem deleted file mode 100644 index 4c3c212..0000000 --- a/certs/E1.pem +++ /dev/null @@ -1,243 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - b3:bd:df:f8:a7:84:5b:bc:e9:03:a0:41:35:b3:4a:45 - Signature Algorithm: ecdsa-with-SHA384 - Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X2 - Validity - Not Before: Sep 4 00:00:00 2020 GMT - Not After : Sep 15 16:00:00 2025 GMT - Subject: C = US, O = Let's Encrypt, CN = E1 - Subject Public Key Info: - Public Key Algorithm: id-ecPublicKey - Public-Key: (384 bit) - pub: - 04:24:5c:2d:a2:2a:fd:1c:4b:a6:5d:97:73:27:31: - ac:b2:a0:69:62:ef:65:e8:a6:b0:f0:ac:4b:9f:ff: - 1c:0b:70:0f:d3:98:2f:4d:fc:0f:00:9b:37:f0:74: - 05:57:32:97:2e:05:ef:2a:43:25:a3:fb:6e:34:27: - 13:f6:4f:7e:69:d3:02:99:5e:eb:24:47:92:c1:24: - 9b:e6:b1:21:8f:c1:24:81:fc:68:cc:1f:69:ba:58: - f5:19:22:f7:74:c6:16 - ASN1 OID: secp384r1 - NIST CURVE: P-384 - X509v3 extensions: - X509v3 Key Usage: critical - Digital Signature, Certificate Sign, CRL Sign - X509v3 Extended Key Usage: - TLS Web Client Authentication, TLS Web Server Authentication - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:0 - X509v3 Subject Key Identifier: - 5A:F3:ED:2B:FC:36:C2:37:79:B9:52:30:EA:54:6F:CF:55:CB:2E:AC - X509v3 Authority Key Identifier: - keyid:7C:42:96:AE:DE:4B:48:3B:FA:92:F8:9E:8C:CF:6D:8B:A9:72:37:95 - - Authority Information Access: - CA Issuers - URI:http://x2.i.lencr.org/ - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://x2.c.lencr.org/ - - X509v3 Certificate Policies: - Policy: 2.23.140.1.2.1 - Policy: 1.3.6.1.4.1.44947.1.1.1 - - Signature Algorithm: ecdsa-with-SHA384 - 30:64:02:30:7b:74:d5:52:13:8d:61:fe:0d:ba:3f:03:00:9d: - f3:d7:98:84:d9:57:2e:bd:e9:0f:9c:5c:48:04:21:f2:cb:b3: - 60:72:8e:97:d6:12:4f:ca:44:f6:42:c9:d3:7b:86:a9:02:30: - 5a:b1:b1:b4:ed:ea:60:99:20:b1:38:03:ca:3d:a0:26:b8:ee: - 6e:2d:4a:f6:c6:66:1f:33:9a:db:92:4a:d5:f5:29:13:c6:70: - 62:28:ba:23:8c:cf:3d:2f:cb:82:e9:7f ------BEGIN CERTIFICATE----- -MIICxjCCAk2gAwIBAgIRALO93/inhFu86QOgQTWzSkUwCgYIKoZIzj0EAwMwTzEL -MAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNo -IEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDIwHhcNMjAwOTA0MDAwMDAwWhcN -MjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3MgRW5j -cnlwdDELMAkGA1UEAxMCRTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQkXC2iKv0c -S6Zdl3MnMayyoGli72XoprDwrEuf/xwLcA/TmC9N/A8AmzfwdAVXMpcuBe8qQyWj -+240JxP2T35p0wKZXuskR5LBJJvmsSGPwSSB/GjMH2m6WPUZIvd0xhajggEIMIIB -BDAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB -MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFrz7Sv8NsI3eblSMOpUb89V -yy6sMB8GA1UdIwQYMBaAFHxClq7eS0g7+pL4nozPbYupcjeVMDIGCCsGAQUFBwEB -BCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3gyLmkubGVuY3Iub3JnLzAnBgNVHR8E -IDAeMBygGqAYhhZodHRwOi8veDIuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYG -Z4EMAQIBMA0GCysGAQQBgt8TAQEBMAoGCCqGSM49BAMDA2cAMGQCMHt01VITjWH+ -Dbo/AwCd89eYhNlXLr3pD5xcSAQh8suzYHKOl9YST8pE9kLJ03uGqQIwWrGxtO3q -YJkgsTgDyj2gJrjubi1K9sZmHzOa25JK1fUpE8ZwYii6I4zPPS/Lgul/ ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 41:d2:9d:d1:72:ea:ee:a7:80:c1:2c:6c:e9:2f:87:52 - Signature Algorithm: ecdsa-with-SHA384 - Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X2 - Validity - Not Before: Sep 4 00:00:00 2020 GMT - Not After : Sep 17 16:00:00 2040 GMT - Subject: C = US, O = Internet Security Research Group, CN = ISRG Root X2 - Subject Public Key Info: - Public Key Algorithm: id-ecPublicKey - Public-Key: (384 bit) - pub: - 04:cd:9b:d5:9f:80:83:0a:ec:09:4a:f3:16:4a:3e: - 5c:cf:77:ac:de:67:05:0d:1d:07:b6:dc:16:fb:5a: - 8b:14:db:e2:71:60:c4:ba:45:95:11:89:8e:ea:06: - df:f7:2a:16:1c:a4:b9:c5:c5:32:e0:03:e0:1e:82: - 18:38:8b:d7:45:d8:0a:6a:6e:e6:00:77:fb:02:51: - 7d:22:d8:0a:6e:9a:5b:77:df:f0:fa:41:ec:39:dc: - 75:ca:68:07:0c:1f:ea - ASN1 OID: secp384r1 - NIST CURVE: P-384 - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Subject Key Identifier: - 7C:42:96:AE:DE:4B:48:3B:FA:92:F8:9E:8C:CF:6D:8B:A9:72:37:95 - Signature Algorithm: ecdsa-with-SHA384 - 30:65:02:30:7b:79:4e:46:50:84:c2:44:87:46:1b:45:70:ff: - 58:99:de:f4:fd:a4:d2:55:a6:20:2d:74:d6:34:bc:41:a3:50: - 5f:01:27:56:b4:be:27:75:06:af:12:2e:75:98:8d:fc:02:31: - 00:8b:f5:77:6c:d4:c8:65:aa:e0:0b:2c:ee:14:9d:27:37:a4: - f9:53:a5:51:e4:29:83:d7:f8:90:31:5b:42:9f:0a:f5:fe:ae: - 00:68:e7:8c:49:0f:b6:6f:5b:5b:15:f2:e7 ------BEGIN CERTIFICATE----- -MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw -CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg -R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 -MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT -ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw -EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW -+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 -ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI -zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW -tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 -/q4AaOeMSQ+2b1tbFfLn ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 82:10:cf:b0:d2:40:e3:59:44:63:e0:bb:63:82:8b:00 - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1 - Validity - Not Before: Jun 4 11:04:38 2015 GMT - Not After : Jun 4 11:04:38 2035 GMT - Subject: C = US, O = Internet Security Research Group, CN = ISRG Root X1 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (4096 bit) - Modulus: - 00:ad:e8:24:73:f4:14:37:f3:9b:9e:2b:57:28:1c: - 87:be:dc:b7:df:38:90:8c:6e:3c:e6:57:a0:78:f7: - 75:c2:a2:fe:f5:6a:6e:f6:00:4f:28:db:de:68:86: - 6c:44:93:b6:b1:63:fd:14:12:6b:bf:1f:d2:ea:31: - 9b:21:7e:d1:33:3c:ba:48:f5:dd:79:df:b3:b8:ff: - 12:f1:21:9a:4b:c1:8a:86:71:69:4a:66:66:6c:8f: - 7e:3c:70:bf:ad:29:22:06:f3:e4:c0:e6:80:ae:e2: - 4b:8f:b7:99:7e:94:03:9f:d3:47:97:7c:99:48:23: - 53:e8:38:ae:4f:0a:6f:83:2e:d1:49:57:8c:80:74: - b6:da:2f:d0:38:8d:7b:03:70:21:1b:75:f2:30:3c: - fa:8f:ae:dd:da:63:ab:eb:16:4f:c2:8e:11:4b:7e: - cf:0b:e8:ff:b5:77:2e:f4:b2:7b:4a:e0:4c:12:25: - 0c:70:8d:03:29:a0:e1:53:24:ec:13:d9:ee:19:bf: - 10:b3:4a:8c:3f:89:a3:61:51:de:ac:87:07:94:f4: - 63:71:ec:2e:e2:6f:5b:98:81:e1:89:5c:34:79:6c: - 76:ef:3b:90:62:79:e6:db:a4:9a:2f:26:c5:d0:10: - e1:0e:de:d9:10:8e:16:fb:b7:f7:a8:f7:c7:e5:02: - 07:98:8f:36:08:95:e7:e2:37:96:0d:36:75:9e:fb: - 0e:72:b1:1d:9b:bc:03:f9:49:05:d8:81:dd:05:b4: - 2a:d6:41:e9:ac:01:76:95:0a:0f:d8:df:d5:bd:12: - 1f:35:2f:28:17:6c:d2:98:c1:a8:09:64:77:6e:47: - 37:ba:ce:ac:59:5e:68:9d:7f:72:d6:89:c5:06:41: - 29:3e:59:3e:dd:26:f5:24:c9:11:a7:5a:a3:4c:40: - 1f:46:a1:99:b5:a7:3a:51:6e:86:3b:9e:7d:72:a7: - 12:05:78:59:ed:3e:51:78:15:0b:03:8f:8d:d0:2f: - 05:b2:3e:7b:4a:1c:4b:73:05:12:fc:c6:ea:e0:50: - 13:7c:43:93:74:b3:ca:74:e7:8e:1f:01:08:d0:30: - d4:5b:71:36:b4:07:ba:c1:30:30:5c:48:b7:82:3b: - 98:a6:7d:60:8a:a2:a3:29:82:cc:ba:bd:83:04:1b: - a2:83:03:41:a1:d6:05:f1:1b:c2:b6:f0:a8:7c:86: - 3b:46:a8:48:2a:88:dc:76:9a:76:bf:1f:6a:a5:3d: - 19:8f:eb:38:f3:64:de:c8:2b:0d:0a:28:ff:f7:db: - e2:15:42:d4:22:d0:27:5d:e1:79:fe:18:e7:70:88: - ad:4e:e6:d9:8b:3a:c6:dd:27:51:6e:ff:bc:64:f5: - 33:43:4f - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Subject Key Identifier: - 79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E - Signature Algorithm: sha256WithRSAEncryption - 55:1f:58:a9:bc:b2:a8:50:d0:0c:b1:d8:1a:69:20:27:29:08: - ac:61:75:5c:8a:6e:f8:82:e5:69:2f:d5:f6:56:4b:b9:b8:73: - 10:59:d3:21:97:7e:e7:4c:71:fb:b2:d2:60:ad:39:a8:0b:ea: - 17:21:56:85:f1:50:0e:59:eb:ce:e0:59:e9:ba:c9:15:ef:86: - 9d:8f:84:80:f6:e4:e9:91:90:dc:17:9b:62:1b:45:f0:66:95: - d2:7c:6f:c2:ea:3b:ef:1f:cf:cb:d6:ae:27:f1:a9:b0:c8:ae: - fd:7d:7e:9a:fa:22:04:eb:ff:d9:7f:ea:91:2b:22:b1:17:0e: - 8f:f2:8a:34:5b:58:d8:fc:01:c9:54:b9:b8:26:cc:8a:88:33: - 89:4c:2d:84:3c:82:df:ee:96:57:05:ba:2c:bb:f7:c4:b7:c7: - 4e:3b:82:be:31:c8:22:73:73:92:d1:c2:80:a4:39:39:10:33: - 23:82:4c:3c:9f:86:b2:55:98:1d:be:29:86:8c:22:9b:9e:e2: - 6b:3b:57:3a:82:70:4d:dc:09:c7:89:cb:0a:07:4d:6c:e8:5d: - 8e:c9:ef:ce:ab:c7:bb:b5:2b:4e:45:d6:4a:d0:26:cc:e5:72: - ca:08:6a:a5:95:e3:15:a1:f7:a4:ed:c9:2c:5f:a5:fb:ff:ac: - 28:02:2e:be:d7:7b:bb:e3:71:7b:90:16:d3:07:5e:46:53:7c: - 37:07:42:8c:d3:c4:96:9c:d5:99:b5:2a:e0:95:1a:80:48:ae: - 4c:39:07:ce:cc:47:a4:52:95:2b:ba:b8:fb:ad:d2:33:53:7d: - e5:1d:4d:6d:d5:a1:b1:c7:42:6f:e6:40:27:35:5c:a3:28:b7: - 07:8d:e7:8d:33:90:e7:23:9f:fb:50:9c:79:6c:46:d5:b4:15: - b3:96:6e:7e:9b:0c:96:3a:b8:52:2d:3f:d6:5b:e1:fb:08:c2: - 84:fe:24:a8:a3:89:da:ac:6a:e1:18:2a:b1:a8:43:61:5b:d3: - 1f:dc:3b:8d:76:f2:2d:e8:8d:75:df:17:33:6c:3d:53:fb:7b: - cb:41:5f:ff:dc:a2:d0:61:38:e1:96:b8:ac:5d:8b:37:d7:75: - d5:33:c0:99:11:ae:9d:41:c1:72:75:84:be:02:41:42:5f:67: - 24:48:94:d1:9b:27:be:07:3f:b9:b8:4f:81:74:51:e1:7a:b7: - ed:9d:23:e2:be:e0:d5:28:04:13:3c:31:03:9e:dd:7a:6c:8f: - c6:07:18:c6:7f:de:47:8e:3f:28:9e:04:06:cf:a5:54:34:77: - bd:ec:89:9b:e9:17:43:df:5b:db:5f:fe:8e:1e:57:a2:cd:40: - 9d:7e:62:22:da:de:18:27 ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 -WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu -ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc -h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ -0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U -A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW -T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH -B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC -B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv -KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn -OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn -jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw -qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI -rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq -hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ -3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK -NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 -ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur -TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC -jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc -oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq -4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA -mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d -emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- diff --git a/certs/GTS CA 1C3.pem b/certs/GTS CA 1C3.pem deleted file mode 100644 index a8432d2..0000000 --- a/certs/GTS CA 1C3.pem +++ /dev/null @@ -1,242 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 02:03:bc:53:59:6b:34:c7:18:f5:01:50:66 - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R1 - Validity - Not Before: Aug 13 00:00:42 2020 GMT - Not After : Sep 30 00:00:42 2027 GMT - Subject: C = US, O = Google Trust Services LLC, CN = GTS CA 1C3 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:f5:88:df:e7:62:8c:1e:37:f8:37:42:90:7f:6c: - 87:d0:fb:65:82:25:fd:e8:cb:6b:a4:ff:6d:e9:5a: - 23:e2:99:f6:1c:e9:92:03:99:13:7c:09:0a:8a:fa: - 42:d6:5e:56:24:aa:7a:33:84:1f:d1:e9:69:bb:b9: - 74:ec:57:4c:66:68:93:77:37:55:53:fe:39:10:4d: - b7:34:bb:5f:25:77:37:3b:17:94:ea:3c:e5:9d:d5: - bc:c3:b4:43:eb:2e:a7:47:ef:b0:44:11:63:d8:b4: - 41:85:dd:41:30:48:93:1b:bf:b7:f6:e0:45:02:21: - e0:96:42:17:cf:d9:2b:65:56:34:07:26:04:0d:a8: - fd:7d:ca:2e:ef:ea:48:7c:37:4d:3f:00:9f:83:df: - ef:75:84:2e:79:57:5c:fc:57:6e:1a:96:ff:fc:8c: - 9a:a6:99:be:25:d9:7f:96:2c:06:f7:11:2a:02:80: - 80:eb:63:18:3c:50:49:87:e5:8a:ca:5f:19:2b:59: - 96:81:00:a0:fb:51:db:ca:77:0b:0b:c9:96:4f:ef: - 70:49:c7:5c:6d:20:fd:99:b4:b4:e2:ca:2e:77:fd: - 2d:dc:0b:b6:6b:13:0c:8c:19:2b:17:96:98:b9:f0: - 8b:f6:a0:27:bb:b6:e3:8d:51:8f:bd:ae:c7:9b:b1: - 89:9d - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Digital Signature, Certificate Sign, CRL Sign - X509v3 Extended Key Usage: - TLS Web Server Authentication, TLS Web Client Authentication - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:0 - X509v3 Subject Key Identifier: - 8A:74:7F:AF:85:CD:EE:95:CD:3D:9C:D0:E2:46:14:F3:71:35:1D:27 - X509v3 Authority Key Identifier: - keyid:E4:AF:2B:26:71:1A:2B:48:27:85:2F:52:66:2C:EF:F0:89:13:71:3E - - Authority Information Access: - OCSP - URI:http://ocsp.pki.goog/gtsr1 - CA Issuers - URI:http://pki.goog/repo/certs/gtsr1.der - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://crl.pki.goog/gtsr1/gtsr1.crl - - X509v3 Certificate Policies: - Policy: 1.3.6.1.4.1.11129.2.5.3 - CPS: https://pki.goog/repository/ - Policy: 2.23.140.1.2.1 - Policy: 2.23.140.1.2.2 - - Signature Algorithm: sha256WithRSAEncryption - 89:7d:ac:20:5c:0c:3c:be:9a:a8:57:95:1b:b4:ae:fa:ab:a5: - 72:71:b4:36:95:fd:df:40:11:03:4c:c2:46:14:bb:14:24:ab: - f0:50:71:22:db:ad:c4:6e:7f:cf:f1:6a:6f:c8:83:1b:d8:ce: - 89:5f:87:6c:87:b8:a9:0c:a3:9b:a1:62:94:93:95:df:5b:ae: - 66:19:0b:02:96:9e:fc:b5:e7:10:69:3e:7a:cb:46:49:5f:46: - e1:41:b1:d7:98:4d:65:34:00:80:1a:3f:4f:9f:6c:7f:49:00: - 81:53:41:a4:92:21:82:82:1a:f1:a3:44:5b:2a:50:12:13:4d: - c1:53:36:f3:42:08:af:54:fa:8e:77:53:1b:64:38:27:17:09: - bd:58:c9:1b:7c:39:2d:5b:f3:ce:d4:ed:97:db:14:03:bf:09: - 53:24:1f:c2:0c:04:79:98:26:f2:61:f1:53:52:fd:42:8c:1b: - 66:2b:3f:15:a1:bb:ff:f6:9b:e3:81:9a:01:06:71:89:35:28: - 24:dd:e1:bd:eb:19:2d:e1:48:cb:3d:59:83:51:b4:74:c6:9d: - 7c:c6:b1:86:5b:af:cc:34:c4:d3:cc:d4:81:11:95:00:a1:f4: - 12:22:01:fa:b4:83:71:af:8c:b7:8c:73:24:ac:37:53:c2:00: - 90:3f:11:fe:5c:ed:36:94:10:3b:bd:29:ae:e2:c7:3a:62:3b: - 6c:63:d9:80:bf:59:71:ac:63:27:b9:4c:17:a0:da:f6:73:15: - bf:2a:de:8f:f3:a5:6c:32:81:33:03:d0:86:51:71:99:34:ba: - 93:8d:5d:b5:51:58:f7:b2:93:e8:01:f6:59:be:71:9b:fd:4d: - 28:ce:cf:6d:c7:16:dc:f7:d1:d6:46:9b:a7:ca:6b:e9:77:0f: - fd:a0:b6:1b:23:83:1d:10:1a:d9:09:00:84:e0:44:d3:a2:75: - 23:b3:34:86:f6:20:b0:a4:5e:10:1d:e0:52:46:00:9d:b1:0f: - 1f:21:70:51:f5:9a:dd:06:fc:55:f4:2b:0e:33:77:c3:4b:42: - c2:f1:77:13:fc:73:80:94:eb:1f:bb:37:3f:ce:02:2a:66:b0: - 73:1d:32:a5:32:6c:32:b0:8e:e0:c4:23:ff:5b:7d:4d:65:70: - ac:2b:9b:3d:ce:db:e0:6d:8e:32:80:be:96:9f:92:63:bc:97: - bb:5d:b9:f4:e1:71:5e:2a:e4:ef:03:22:b1:8a:65:3a:8f:c0: - 93:65:d4:85:cd:0f:0f:5b:83:59:16:47:16:2d:9c:24:3a:c8: - 80:a6:26:14:85:9b:f6:37:9b:ac:6f:f9:c5:c3:06:51:f3:e2: - 7f:c5:b1:10:ba:51:f4:dd ------BEGIN CERTIFICATE----- -MIIFljCCA36gAwIBAgINAgO8U1lrNMcY9QFQZjANBgkqhkiG9w0BAQsFADBHMQsw -CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU -MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMjAwODEzMDAwMDQyWhcNMjcwOTMwMDAw -MDQyWjBGMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp -Y2VzIExMQzETMBEGA1UEAxMKR1RTIENBIDFDMzCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAPWI3+dijB43+DdCkH9sh9D7ZYIl/ejLa6T/belaI+KZ9hzp -kgOZE3wJCor6QtZeViSqejOEH9Hpabu5dOxXTGZok3c3VVP+ORBNtzS7XyV3NzsX -lOo85Z3VvMO0Q+sup0fvsEQRY9i0QYXdQTBIkxu/t/bgRQIh4JZCF8/ZK2VWNAcm -BA2o/X3KLu/qSHw3TT8An4Pf73WELnlXXPxXbhqW//yMmqaZviXZf5YsBvcRKgKA -gOtjGDxQSYflispfGStZloEAoPtR28p3CwvJlk/vcEnHXG0g/Zm0tOLKLnf9LdwL -tmsTDIwZKxeWmLnwi/agJ7u2441Rj72ux5uxiZ0CAwEAAaOCAYAwggF8MA4GA1Ud -DwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEgYDVR0T -AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUinR/r4XN7pXNPZzQ4kYU83E1HScwHwYD -VR0jBBgwFoAU5K8rJnEaK0gnhS9SZizv8IkTcT4waAYIKwYBBQUHAQEEXDBaMCYG -CCsGAQUFBzABhhpodHRwOi8vb2NzcC5wa2kuZ29vZy9ndHNyMTAwBggrBgEFBQcw -AoYkaHR0cDovL3BraS5nb29nL3JlcG8vY2VydHMvZ3RzcjEuZGVyMDQGA1UdHwQt -MCswKaAnoCWGI2h0dHA6Ly9jcmwucGtpLmdvb2cvZ3RzcjEvZ3RzcjEuY3JsMFcG -A1UdIARQME4wOAYKKwYBBAHWeQIFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3Br -aS5nb29nL3JlcG9zaXRvcnkvMAgGBmeBDAECATAIBgZngQwBAgIwDQYJKoZIhvcN -AQELBQADggIBAIl9rCBcDDy+mqhXlRu0rvqrpXJxtDaV/d9AEQNMwkYUuxQkq/BQ -cSLbrcRuf8/xam/IgxvYzolfh2yHuKkMo5uhYpSTld9brmYZCwKWnvy15xBpPnrL -RklfRuFBsdeYTWU0AIAaP0+fbH9JAIFTQaSSIYKCGvGjRFsqUBITTcFTNvNCCK9U -+o53UxtkOCcXCb1YyRt8OS1b887U7ZfbFAO/CVMkH8IMBHmYJvJh8VNS/UKMG2Yr -PxWhu//2m+OBmgEGcYk1KCTd4b3rGS3hSMs9WYNRtHTGnXzGsYZbr8w0xNPM1IER -lQCh9BIiAfq0g3GvjLeMcySsN1PCAJA/Ef5c7TaUEDu9Ka7ixzpiO2xj2YC/WXGs -Yye5TBeg2vZzFb8q3o/zpWwygTMD0IZRcZk0upONXbVRWPeyk+gB9lm+cZv9TSjO -z23HFtz30dZGm6fKa+l3D/2gthsjgx0QGtkJAITgRNOidSOzNIb2ILCkXhAd4FJG -AJ2xDx8hcFH1mt0G/FX0Kw4zd8NLQsLxdxP8c4CU6x+7Nz/OAipmsHMdMqUybDKw -juDEI/9bfU1lcKwrmz3O2+BtjjKAvpafkmO8l7tdufThcV4q5O8DIrGKZTqPwJNl -1IXNDw9bg1kWRxYtnCQ6yICmJhSFm/Y3m6xv+cXDBlHz4n/FsRC6UfTd ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 6e:47:a9:c5:4b:47:0c:0d:ec:33:d0:89:b9:1c:f4:e1 - Signature Algorithm: sha384WithRSAEncryption - Issuer: C = US, O = Google Trust Services LLC, CN = GTS Root R1 - Validity - Not Before: Jun 22 00:00:00 2016 GMT - Not After : Jun 22 00:00:00 2036 GMT - Subject: C = US, O = Google Trust Services LLC, CN = GTS Root R1 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (4096 bit) - Modulus: - 00:b6:11:02:8b:1e:e3:a1:77:9b:3b:dc:bf:94:3e: - b7:95:a7:40:3c:a1:fd:82:f9:7d:32:06:82:71:f6: - f6:8c:7f:fb:e8:db:bc:6a:2e:97:97:a3:8c:4b:f9: - 2b:f6:b1:f9:ce:84:1d:b1:f9:c5:97:de:ef:b9:f2: - a3:e9:bc:12:89:5e:a7:aa:52:ab:f8:23:27:cb:a4: - b1:9c:63:db:d7:99:7e:f0:0a:5e:eb:68:a6:f4:c6: - 5a:47:0d:4d:10:33:e3:4e:b1:13:a3:c8:18:6c:4b: - ec:fc:09:90:df:9d:64:29:25:23:07:a1:b4:d2:3d: - 2e:60:e0:cf:d2:09:87:bb:cd:48:f0:4d:c2:c2:7a: - 88:8a:bb:ba:cf:59:19:d6:af:8f:b0:07:b0:9e:31: - f1:82:c1:c0:df:2e:a6:6d:6c:19:0e:b5:d8:7e:26: - 1a:45:03:3d:b0:79:a4:94:28:ad:0f:7f:26:e5:a8: - 08:fe:96:e8:3c:68:94:53:ee:83:3a:88:2b:15:96: - 09:b2:e0:7a:8c:2e:75:d6:9c:eb:a7:56:64:8f:96: - 4f:68:ae:3d:97:c2:84:8f:c0:bc:40:c0:0b:5c:bd: - f6:87:b3:35:6c:ac:18:50:7f:84:e0:4c:cd:92:d3: - 20:e9:33:bc:52:99:af:32:b5:29:b3:25:2a:b4:48: - f9:72:e1:ca:64:f7:e6:82:10:8d:e8:9d:c2:8a:88: - fa:38:66:8a:fc:63:f9:01:f9:78:fd:7b:5c:77:fa: - 76:87:fa:ec:df:b1:0e:79:95:57:b4:bd:26:ef:d6: - 01:d1:eb:16:0a:bb:8e:0b:b5:c5:c5:8a:55:ab:d3: - ac:ea:91:4b:29:cc:19:a4:32:25:4e:2a:f1:65:44: - d0:02:ce:aa:ce:49:b4:ea:9f:7c:83:b0:40:7b:e7: - 43:ab:a7:6c:a3:8f:7d:89:81:fa:4c:a5:ff:d5:8e: - c3:ce:4b:e0:b5:d8:b3:8e:45:cf:76:c0:ed:40:2b: - fd:53:0f:b0:a7:d5:3b:0d:b1:8a:a2:03:de:31:ad: - cc:77:ea:6f:7b:3e:d6:df:91:22:12:e6:be:fa:d8: - 32:fc:10:63:14:51:72:de:5d:d6:16:93:bd:29:68: - 33:ef:3a:66:ec:07:8a:26:df:13:d7:57:65:78:27: - de:5e:49:14:00:a2:00:7f:9a:a8:21:b6:a9:b1:95: - b0:a5:b9:0d:16:11:da:c7:6c:48:3c:40:e0:7e:0d: - 5a:cd:56:3c:d1:97:05:b9:cb:4b:ed:39:4b:9c:c4: - 3f:d2:55:13:6e:24:b0:d6:71:fa:f4:c1:ba:cc:ed: - 1b:f5:fe:81:41:d8:00:98:3d:3a:c8:ae:7a:98:37: - 18:05:95 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Subject Key Identifier: - E4:AF:2B:26:71:1A:2B:48:27:85:2F:52:66:2C:EF:F0:89:13:71:3E - Signature Algorithm: sha384WithRSAEncryption - 38:96:0a:ee:3d:b4:96:1e:5f:ef:9d:9c:0b:33:9f:2b:e0:ca: - fd:d2:8e:0a:1f:41:74:a5:7c:aa:84:d4:e5:f2:1e:e6:37:52: - 32:9c:0b:d1:61:1d:bf:28:c1:b6:44:29:35:75:77:98:b2:7c: - d9:bd:74:ac:8a:68:e3:a9:31:09:29:01:60:73:e3:47:7c:53: - a8:90:4a:27:ef:4b:d7:9f:93:e7:82:36:ce:9a:68:0c:82:e7: - cf:d4:10:16:6f:5f:0e:99:5c:f6:1f:71:7d:ef:ef:7b:2f:7e: - ea:36:d6:97:70:0b:15:ee:d7:5c:56:6a:33:a5:e3:49:38:0c: - b8:7d:fb:8d:85:a4:b1:59:5e:f4:6a:e1:dd:a1:f6:64:44:ae: - e6:51:83:21:66:c6:11:3e:f3:ce:47:ee:9c:28:1f:25:da:ff: - ac:66:95:dd:35:0f:5c:ef:20:2c:62:fd:91:ba:a9:cc:fc:5a: - 9c:93:81:83:29:97:4a:7c:5a:72:b4:39:d0:b7:77:cb:79:fd: - 69:3a:92:37:ed:6e:38:65:46:7e:e9:60:bd:79:88:97:5f:38: - 12:f4:ee:af:5b:82:c8:86:d5:e1:99:6d:8c:04:f2:76:ba:49: - f6:6e:e9:6d:1e:5f:a0:ef:27:82:76:40:f8:a6:d3:58:5c:0f: - 2c:42:da:42:c6:7b:88:34:c7:c1:d8:45:9b:c1:3e:c5:61:1d: - d9:63:50:49:f6:34:85:6a:e0:18:c5:6e:47:ab:41:42:29:9b: - f6:60:0d:d2:31:d3:63:98:23:93:5a:00:81:48:b4:ef:cd:8a: - cd:c9:cf:99:ee:d9:9e:aa:36:e1:68:4b:71:49:14:36:28:3a: - 3d:1d:ce:9a:8f:25:e6:80:71:61:2b:b5:7b:cc:f9:25:16:81: - e1:31:5f:a1:a3:7e:16:a4:9c:16:6a:97:18:bd:76:72:a5:0b: - 9e:1d:36:e6:2f:a1:2f:be:70:91:0f:a8:e6:da:f8:c4:92:40: - 6c:25:7e:7b:b3:09:dc:b2:17:ad:80:44:f0:68:a5:8f:94:75: - ff:74:5a:e8:a8:02:7c:0c:09:e2:a9:4b:0b:a0:85:0b:62:b9: - ef:a1:31:92:fb:ef:f6:51:04:89:6c:e8:a9:74:a1:bb:17:b3: - b5:fd:49:0f:7c:3c:ec:83:18:20:43:4e:d5:93:ba:b4:34:b1: - 1f:16:36:1f:0c:e6:64:39:16:4c:dc:e0:fe:1d:c8:a9:62:3d: - 40:ea:ca:c5:34:02:b4:ae:89:88:33:35:dc:2c:13:73:d8:27: - f1:d0:72:ee:75:3b:22:de:98:68:66:5b:f1:c6:63:47:55:1c: - ba:a5:08:51:75:a6:48:25 ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH -MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM -QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy -MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl -cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB -AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM -f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX -mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7 -zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P -fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc -vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4 -Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp -zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO -Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW -k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+ -DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF -lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW -Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1 -d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z -XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR -gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3 -d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv -J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg -DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM -+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy -F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9 -SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws -E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl ------END CERTIFICATE----- diff --git a/certs/GTS Root R1.pem b/certs/GTS Root R1.pem new file mode 100644 index 0000000..a6095d2 --- /dev/null +++ b/certs/GTS Root R1.pem @@ -0,0 +1,38 @@ +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 159662320309726417404178440727 +# MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 +# SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a +# SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo +27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w +Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw +TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl +qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH +szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 +Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk +MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p +aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN +VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb +C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy +h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 +7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J +ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef +MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ +Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT +6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ +0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm +2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb +bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c +-----END CERTIFICATE----- diff --git a/certs/GTS Root R4.pem b/certs/GTS Root R4.pem new file mode 100644 index 0000000..16a1c36 --- /dev/null +++ b/certs/GTS Root R4.pem @@ -0,0 +1,20 @@ +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 159662532700760215368942768210 +# MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 +# SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 +# SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi +QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR +HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D +9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 +p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD +-----END CERTIFICATE----- diff --git a/certs/Go Daddy Root Certificate Authority - G2.pem b/certs/Go Daddy Root Certificate Authority - G2.pem new file mode 100644 index 0000000..c61f300 --- /dev/null +++ b/certs/Go Daddy Root Certificate Authority - G2.pem @@ -0,0 +1,30 @@ +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- diff --git a/certs/Go Daddy Secure Certificate Authority - G2.pem b/certs/Go Daddy Secure Certificate Authority - G2.pem deleted file mode 100644 index 4faba90..0000000 --- a/certs/Go Daddy Secure Certificate Authority - G2.pem +++ /dev/null @@ -1,178 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 7 (0x7) - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2 - Validity - Not Before: May 3 07:00:00 2011 GMT - Not After : May 3 07:00:00 2031 GMT - Subject: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:b9:e0:cb:10:d4:af:76:bd:d4:93:62:eb:30:64: - b8:81:08:6c:c3:04:d9:62:17:8e:2f:ff:3e:65:cf: - 8f:ce:62:e6:3c:52:1c:da:16:45:4b:55:ab:78:6b: - 63:83:62:90:ce:0f:69:6c:99:c8:1a:14:8b:4c:cc: - 45:33:ea:88:dc:9e:a3:af:2b:fe:80:61:9d:79:57: - c4:cf:2e:f4:3f:30:3c:5d:47:fc:9a:16:bc:c3:37: - 96:41:51:8e:11:4b:54:f8:28:be:d0:8c:be:f0:30: - 38:1e:f3:b0:26:f8:66:47:63:6d:de:71:26:47:8f: - 38:47:53:d1:46:1d:b4:e3:dc:00:ea:45:ac:bd:bc: - 71:d9:aa:6f:00:db:db:cd:30:3a:79:4f:5f:4c:47: - f8:1d:ef:5b:c2:c4:9d:60:3b:b1:b2:43:91:d8:a4: - 33:4e:ea:b3:d6:27:4f:ad:25:8a:a5:c6:f4:d5:d0: - a6:ae:74:05:64:57:88:b5:44:55:d4:2d:2a:3a:3e: - f8:b8:bd:e9:32:0a:02:94:64:c4:16:3a:50:f1:4a: - ae:e7:79:33:af:0c:20:07:7f:e8:df:04:39:c2:69: - 02:6c:63:52:fa:77:c1:1b:c8:74:87:c8:b9:93:18: - 50:54:35:4b:69:4e:bc:3b:d3:49:2e:1f:dc:c1:d2: - 52:fb - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 40:C2:BD:27:8E:CC:34:83:30:A2:33:D7:FB:6C:B3:F0:B4:2C:80:CE - X509v3 Authority Key Identifier: - keyid:3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE - - Authority Information Access: - OCSP - URI:http://ocsp.godaddy.com/ - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://crl.godaddy.com/gdroot-g2.crl - - X509v3 Certificate Policies: - Policy: X509v3 Any Policy - CPS: https://certs.godaddy.com/repository/ - - Signature Algorithm: sha256WithRSAEncryption - 08:7e:6c:93:10:c8:38:b8:96:a9:90:4b:ff:a1:5f:4f:04:ef: - 6c:3e:9c:88:06:c9:50:8f:a6:73:f7:57:31:1b:be:bc:e4:2f: - db:f8:ba:d3:5b:e0:b4:e7:e6:79:62:0e:0c:a2:d7:6a:63:73: - 31:b5:f5:a8:48:a4:3b:08:2d:a2:5d:90:d7:b4:7c:25:4f:11: - 56:30:c4:b6:44:9d:7b:2c:9d:e5:5e:e6:ef:0c:61:aa:bf:e4: - 2a:1b:ee:84:9e:b8:83:7d:c1:43:ce:44:a7:13:70:0d:91:1f: - f4:c8:13:ad:83:60:d9:d8:72:a8:73:24:1e:b5:ac:22:0e:ca: - 17:89:62:58:44:1b:ab:89:25:01:00:0f:cd:c4:1b:62:db:51: - b4:d3:0f:51:2a:9b:f4:bc:73:fc:76:ce:36:a4:cd:d9:d8:2c: - ea:ae:9b:f5:2a:b2:90:d1:4d:75:18:8a:3f:8a:41:90:23:7d: - 5b:4b:fe:a4:03:58:9b:46:b2:c3:60:60:83:f8:7d:50:41:ce: - c2:a1:90:c3:bb:ef:02:2f:d2:15:54:ee:44:15:d9:0a:ae:a7: - 8a:33:ed:b1:2d:76:36:26:dc:04:eb:9f:f7:61:1f:15:dc:87: - 6f:ee:46:96:28:ad:a1:26:7d:0a:09:a7:2e:04:a3:8d:bc:f8: - bc:04:30:01 ------BEGIN CERTIFICATE----- -MIIE0DCCA7igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT -EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp -ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMxMDUwMzA3 -MDAwMFowgbQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH -EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjEtMCsGA1UE -CxMkaHR0cDovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkvMTMwMQYDVQQD -EypHbyBEYWRkeSBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC54MsQ1K92vdSTYuswZLiBCGzD -BNliF44v/z5lz4/OYuY8UhzaFkVLVat4a2ODYpDOD2lsmcgaFItMzEUz6ojcnqOv -K/6AYZ15V8TPLvQ/MDxdR/yaFrzDN5ZBUY4RS1T4KL7QjL7wMDge87Am+GZHY23e -cSZHjzhHU9FGHbTj3ADqRay9vHHZqm8A29vNMDp5T19MR/gd71vCxJ1gO7GyQ5HY -pDNO6rPWJ0+tJYqlxvTV0KaudAVkV4i1RFXULSo6Pvi4vekyCgKUZMQWOlDxSq7n -eTOvDCAHf+jfBDnCaQJsY1L6d8EbyHSHyLmTGFBUNUtpTrw700kuH9zB0lL7AgMB -AAGjggEaMIIBFjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV -HQ4EFgQUQMK9J47MNIMwojPX+2yz8LQsgM4wHwYDVR0jBBgwFoAUOpqFBxBnKLbv -9r0FQW4gwZTaD94wNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8v -b2NzcC5nb2RhZGR5LmNvbS8wNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2NybC5n -b2RhZGR5LmNvbS9nZHJvb3QtZzIuY3JsMEYGA1UdIAQ/MD0wOwYEVR0gADAzMDEG -CCsGAQUFBwIBFiVodHRwczovL2NlcnRzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkv -MA0GCSqGSIb3DQEBCwUAA4IBAQAIfmyTEMg4uJapkEv/oV9PBO9sPpyIBslQj6Zz -91cxG7685C/b+LrTW+C05+Z5Yg4MotdqY3MxtfWoSKQ7CC2iXZDXtHwlTxFWMMS2 -RJ17LJ3lXubvDGGqv+QqG+6EnriDfcFDzkSnE3ANkR/0yBOtg2DZ2HKocyQetawi -DsoXiWJYRBuriSUBAA/NxBti21G00w9RKpv0vHP8ds42pM3Z2Czqrpv1KrKQ0U11 -GIo/ikGQI31bS/6kA1ibRrLDYGCD+H1QQc7CoZDDu+8CL9IVVO5EFdkKrqeKM+2x -LXY2JtwE65/3YR8V3Idv7kaWKK2hJn0KCacuBKONvPi8BDAB ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2 - Validity - Not Before: Sep 1 00:00:00 2009 GMT - Not After : Dec 31 23:59:59 2037 GMT - Subject: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:bf:71:62:08:f1:fa:59:34:f7:1b:c9:18:a3:f7: - 80:49:58:e9:22:83:13:a6:c5:20:43:01:3b:84:f1: - e6:85:49:9f:27:ea:f6:84:1b:4e:a0:b4:db:70:98: - c7:32:01:b1:05:3e:07:4e:ee:f4:fa:4f:2f:59:30: - 22:e7:ab:19:56:6b:e2:80:07:fc:f3:16:75:80:39: - 51:7b:e5:f9:35:b6:74:4e:a9:8d:82:13:e4:b6:3f: - a9:03:83:fa:a2:be:8a:15:6a:7f:de:0b:c3:b6:19: - 14:05:ca:ea:c3:a8:04:94:3b:46:7c:32:0d:f3:00: - 66:22:c8:8d:69:6d:36:8c:11:18:b7:d3:b2:1c:60: - b4:38:fa:02:8c:ce:d3:dd:46:07:de:0a:3e:eb:5d: - 7c:c8:7c:fb:b0:2b:53:a4:92:62:69:51:25:05:61: - 1a:44:81:8c:2c:a9:43:96:23:df:ac:3a:81:9a:0e: - 29:c5:1c:a9:e9:5d:1e:b6:9e:9e:30:0a:39:ce:f1: - 88:80:fb:4b:5d:cc:32:ec:85:62:43:25:34:02:56: - 27:01:91:b4:3b:70:2a:3f:6e:b1:e8:9c:88:01:7d: - 9f:d4:f9:db:53:6d:60:9d:bf:2c:e7:58:ab:b8:5f: - 46:fc:ce:c4:1b:03:3c:09:eb:49:31:5c:69:46:b3: - e0:47 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 3A:9A:85:07:10:67:28:B6:EF:F6:BD:05:41:6E:20:C1:94:DA:0F:DE - Signature Algorithm: sha256WithRSAEncryption - 99:db:5d:79:d5:f9:97:59:67:03:61:f1:7e:3b:06:31:75:2d: - a1:20:8e:4f:65:87:b4:f7:a6:9c:bc:d8:e9:2f:d0:db:5a:ee: - cf:74:8c:73:b4:38:42:da:05:7b:f8:02:75:b8:fd:a5:b1:d7: - ae:f6:d7:de:13:cb:53:10:7e:8a:46:d1:97:fa:b7:2e:2b:11: - ab:90:b0:27:80:f9:e8:9f:5a:e9:37:9f:ab:e4:df:6c:b3:85: - 17:9d:3d:d9:24:4f:79:91:35:d6:5f:04:eb:80:83:ab:9a:02: - 2d:b5:10:f4:d8:90:c7:04:73:40:ed:72:25:a0:a9:9f:ec:9e: - ab:68:12:99:57:c6:8f:12:3a:09:a4:bd:44:fd:06:15:37:c1: - 9b:e4:32:a3:ed:38:e8:d8:64:f3:2c:7e:14:fc:02:ea:9f:cd: - ff:07:68:17:db:22:90:38:2d:7a:8d:d1:54:f1:69:e3:5f:33: - ca:7a:3d:7b:0a:e3:ca:7f:5f:39:e5:e2:75:ba:c5:76:18:33: - ce:2c:f0:2f:4c:ad:f7:b1:e7:ce:4f:a8:c4:9b:4a:54:06:c5: - 7f:7d:d5:08:0f:e2:1c:fe:7e:17:b8:ac:5e:f6:d4:16:b2:43: - 09:0c:4d:f6:a7:6b:b4:99:84:65:ca:7a:88:e2:e2:44:be:5c: - f7:ea:1c:f5 ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT -EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp -ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz -NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH -EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE -AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD -E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH -/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy -DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh -GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR -tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA -AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX -WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu -9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr -gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo -2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI -4uJEvlz36hz1 ------END CERTIFICATE----- diff --git a/certs/ISRG Root X1.pem b/certs/ISRG Root X1.pem new file mode 100644 index 0000000..995c95d --- /dev/null +++ b/certs/ISRG Root X1.pem @@ -0,0 +1,38 @@ +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- diff --git a/certs/ISRG Root X2.pem b/certs/ISRG Root X2.pem new file mode 100644 index 0000000..9cca880 --- /dev/null +++ b/certs/ISRG Root X2.pem @@ -0,0 +1,21 @@ +# Issuer: CN=ISRG Root X2 O=Internet Security Research Group +# Subject: CN=ISRG Root X2 O=Internet Security Research Group +# Label: "ISRG Root X2" +# Serial: 87493402998870891108772069816698636114 +# MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 +# SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af +# SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw +CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg +R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 +MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT +ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW ++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 +ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI +zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW +tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 +/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- diff --git a/certs/R3.pem b/certs/R3.pem deleted file mode 100644 index 837b709..0000000 --- a/certs/R3.pem +++ /dev/null @@ -1,237 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 91:2b:08:4a:cf:0c:18:a7:53:f6:d6:2e:25:a7:5f:5a - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1 - Validity - Not Before: Sep 4 00:00:00 2020 GMT - Not After : Sep 15 16:00:00 2025 GMT - Subject: C = US, O = Let's Encrypt, CN = R3 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:bb:02:15:28:cc:f6:a0:94:d3:0f:12:ec:8d:55: - 92:c3:f8:82:f1:99:a6:7a:42:88:a7:5d:26:aa:b5: - 2b:b9:c5:4c:b1:af:8e:6b:f9:75:c8:a3:d7:0f:47: - 94:14:55:35:57:8c:9e:a8:a2:39:19:f5:82:3c:42: - a9:4e:6e:f5:3b:c3:2e:db:8d:c0:b0:5c:f3:59:38: - e7:ed:cf:69:f0:5a:0b:1b:be:c0:94:24:25:87:fa: - 37:71:b3:13:e7:1c:ac:e1:9b:ef:db:e4:3b:45:52: - 45:96:a9:c1:53:ce:34:c8:52:ee:b5:ae:ed:8f:de: - 60:70:e2:a5:54:ab:b6:6d:0e:97:a5:40:34:6b:2b: - d3:bc:66:eb:66:34:7c:fa:6b:8b:8f:57:29:99:f8: - 30:17:5d:ba:72:6f:fb:81:c5:ad:d2:86:58:3d:17: - c7:e7:09:bb:f1:2b:f7:86:dc:c1:da:71:5d:d4:46: - e3:cc:ad:25:c1:88:bc:60:67:75:66:b3:f1:18:f7: - a2:5c:e6:53:ff:3a:88:b6:47:a5:ff:13:18:ea:98: - 09:77:3f:9d:53:f9:cf:01:e5:f5:a6:70:17:14:af: - 63:a4:ff:99:b3:93:9d:dc:53:a7:06:fe:48:85:1d: - a1:69:ae:25:75:bb:13:cc:52:03:f5:ed:51:a1:8b: - db:15 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Digital Signature, Certificate Sign, CRL Sign - X509v3 Extended Key Usage: - TLS Web Client Authentication, TLS Web Server Authentication - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:0 - X509v3 Subject Key Identifier: - 14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6 - X509v3 Authority Key Identifier: - keyid:79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E - - Authority Information Access: - CA Issuers - URI:http://x1.i.lencr.org/ - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://x1.c.lencr.org/ - - X509v3 Certificate Policies: - Policy: 2.23.140.1.2.1 - Policy: 1.3.6.1.4.1.44947.1.1.1 - - Signature Algorithm: sha256WithRSAEncryption - 85:ca:4e:47:3e:a3:f7:85:44:85:bc:d5:67:78:b2:98:63:ad: - 75:4d:1e:96:3d:33:65:72:54:2d:81:a0:ea:c3:ed:f8:20:bf: - 5f:cc:b7:70:00:b7:6e:3b:f6:5e:94:de:e4:20:9f:a6:ef:8b: - b2:03:e7:a2:b5:16:3c:91:ce:b4:ed:39:02:e7:7c:25:8a:47: - e6:65:6e:3f:46:f4:d9:f0:ce:94:2b:ee:54:ce:12:bc:8c:27: - 4b:b8:c1:98:2f:a2:af:cd:71:91:4a:08:b7:c8:b8:23:7b:04: - 2d:08:f9:08:57:3e:83:d9:04:33:0a:47:21:78:09:82:27:c3: - 2a:c8:9b:b9:ce:5c:f2:64:c8:c0:be:79:c0:4f:8e:6d:44:0c: - 5e:92:bb:2e:f7:8b:10:e1:e8:1d:44:29:db:59:20:ed:63:b9: - 21:f8:12:26:94:93:57:a0:1d:65:04:c1:0a:22:ae:10:0d:43: - 97:a1:18:1f:7e:e0:e0:86:37:b5:5a:b1:bd:30:bf:87:6e:2b: - 2a:ff:21:4e:1b:05:c3:f5:18:97:f0:5e:ac:c3:a5:b8:6a:f0: - 2e:bc:3b:33:b9:ee:4b:de:cc:fc:e4:af:84:0b:86:3f:c0:55: - 43:36:f6:68:e1:36:17:6a:8e:99:d1:ff:a5:40:a7:34:b7:c0: - d0:63:39:35:39:75:6e:f2:ba:76:c8:93:02:e9:a9:4b:6c:17: - ce:0c:02:d9:bd:81:fb:9f:b7:68:d4:06:65:b3:82:3d:77:53: - f8:8e:79:03:ad:0a:31:07:75:2a:43:d8:55:97:72:c4:29:0e: - f7:c4:5d:4e:c8:ae:46:84:30:d7:f2:85:5f:18:a1:79:bb:e7: - 5e:70:8b:07:e1:86:93:c3:b9:8f:dc:61:71:25:2a:af:df:ed: - 25:50:52:68:8b:92:dc:e5:d6:b5:e3:da:7d:d0:87:6c:84:21: - 31:ae:82:f5:fb:b9:ab:c8:89:17:3d:e1:4c:e5:38:0e:f6:bd: - 2b:bd:96:81:14:eb:d5:db:3d:20:a7:7e:59:d3:e2:f8:58:f9: - 5b:b8:48:cd:fe:5c:4f:16:29:fe:1e:55:23:af:c8:11:b0:8d: - ea:7c:93:90:17:2f:fd:ac:a2:09:47:46:3f:f0:e9:b0:b7:ff: - 28:4d:68:32:d6:67:5e:1e:69:a3:93:b8:f5:9d:8b:2f:0b:d2: - 52:43:a6:6f:32:57:65:4d:32:81:df:38:53:85:5d:7e:5d:66: - 29:ea:b8:dd:e4:95:b5:cd:b5:56:12:42:cd:c4:4e:c6:25:38: - 44:50:6d:ec:ce:00:55:18:fe:e9:49:64:d4:4e:ca:97:9c:b4: - 5b:c0:73:a8:ab:b8:47:c2 ------BEGIN CERTIFICATE----- -MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw -WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg -RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP -R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx -sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm -NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg -Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG -/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC -AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB -Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA -FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw -AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw -Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB -gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W -PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl -ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz -CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm -lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 -avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 -yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O -yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids -hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ -HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv -MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX -nLRbwHOoq7hHwg== ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 82:10:cf:b0:d2:40:e3:59:44:63:e0:bb:63:82:8b:00 - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1 - Validity - Not Before: Jun 4 11:04:38 2015 GMT - Not After : Jun 4 11:04:38 2035 GMT - Subject: C = US, O = Internet Security Research Group, CN = ISRG Root X1 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (4096 bit) - Modulus: - 00:ad:e8:24:73:f4:14:37:f3:9b:9e:2b:57:28:1c: - 87:be:dc:b7:df:38:90:8c:6e:3c:e6:57:a0:78:f7: - 75:c2:a2:fe:f5:6a:6e:f6:00:4f:28:db:de:68:86: - 6c:44:93:b6:b1:63:fd:14:12:6b:bf:1f:d2:ea:31: - 9b:21:7e:d1:33:3c:ba:48:f5:dd:79:df:b3:b8:ff: - 12:f1:21:9a:4b:c1:8a:86:71:69:4a:66:66:6c:8f: - 7e:3c:70:bf:ad:29:22:06:f3:e4:c0:e6:80:ae:e2: - 4b:8f:b7:99:7e:94:03:9f:d3:47:97:7c:99:48:23: - 53:e8:38:ae:4f:0a:6f:83:2e:d1:49:57:8c:80:74: - b6:da:2f:d0:38:8d:7b:03:70:21:1b:75:f2:30:3c: - fa:8f:ae:dd:da:63:ab:eb:16:4f:c2:8e:11:4b:7e: - cf:0b:e8:ff:b5:77:2e:f4:b2:7b:4a:e0:4c:12:25: - 0c:70:8d:03:29:a0:e1:53:24:ec:13:d9:ee:19:bf: - 10:b3:4a:8c:3f:89:a3:61:51:de:ac:87:07:94:f4: - 63:71:ec:2e:e2:6f:5b:98:81:e1:89:5c:34:79:6c: - 76:ef:3b:90:62:79:e6:db:a4:9a:2f:26:c5:d0:10: - e1:0e:de:d9:10:8e:16:fb:b7:f7:a8:f7:c7:e5:02: - 07:98:8f:36:08:95:e7:e2:37:96:0d:36:75:9e:fb: - 0e:72:b1:1d:9b:bc:03:f9:49:05:d8:81:dd:05:b4: - 2a:d6:41:e9:ac:01:76:95:0a:0f:d8:df:d5:bd:12: - 1f:35:2f:28:17:6c:d2:98:c1:a8:09:64:77:6e:47: - 37:ba:ce:ac:59:5e:68:9d:7f:72:d6:89:c5:06:41: - 29:3e:59:3e:dd:26:f5:24:c9:11:a7:5a:a3:4c:40: - 1f:46:a1:99:b5:a7:3a:51:6e:86:3b:9e:7d:72:a7: - 12:05:78:59:ed:3e:51:78:15:0b:03:8f:8d:d0:2f: - 05:b2:3e:7b:4a:1c:4b:73:05:12:fc:c6:ea:e0:50: - 13:7c:43:93:74:b3:ca:74:e7:8e:1f:01:08:d0:30: - d4:5b:71:36:b4:07:ba:c1:30:30:5c:48:b7:82:3b: - 98:a6:7d:60:8a:a2:a3:29:82:cc:ba:bd:83:04:1b: - a2:83:03:41:a1:d6:05:f1:1b:c2:b6:f0:a8:7c:86: - 3b:46:a8:48:2a:88:dc:76:9a:76:bf:1f:6a:a5:3d: - 19:8f:eb:38:f3:64:de:c8:2b:0d:0a:28:ff:f7:db: - e2:15:42:d4:22:d0:27:5d:e1:79:fe:18:e7:70:88: - ad:4e:e6:d9:8b:3a:c6:dd:27:51:6e:ff:bc:64:f5: - 33:43:4f - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Subject Key Identifier: - 79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E - Signature Algorithm: sha256WithRSAEncryption - 55:1f:58:a9:bc:b2:a8:50:d0:0c:b1:d8:1a:69:20:27:29:08: - ac:61:75:5c:8a:6e:f8:82:e5:69:2f:d5:f6:56:4b:b9:b8:73: - 10:59:d3:21:97:7e:e7:4c:71:fb:b2:d2:60:ad:39:a8:0b:ea: - 17:21:56:85:f1:50:0e:59:eb:ce:e0:59:e9:ba:c9:15:ef:86: - 9d:8f:84:80:f6:e4:e9:91:90:dc:17:9b:62:1b:45:f0:66:95: - d2:7c:6f:c2:ea:3b:ef:1f:cf:cb:d6:ae:27:f1:a9:b0:c8:ae: - fd:7d:7e:9a:fa:22:04:eb:ff:d9:7f:ea:91:2b:22:b1:17:0e: - 8f:f2:8a:34:5b:58:d8:fc:01:c9:54:b9:b8:26:cc:8a:88:33: - 89:4c:2d:84:3c:82:df:ee:96:57:05:ba:2c:bb:f7:c4:b7:c7: - 4e:3b:82:be:31:c8:22:73:73:92:d1:c2:80:a4:39:39:10:33: - 23:82:4c:3c:9f:86:b2:55:98:1d:be:29:86:8c:22:9b:9e:e2: - 6b:3b:57:3a:82:70:4d:dc:09:c7:89:cb:0a:07:4d:6c:e8:5d: - 8e:c9:ef:ce:ab:c7:bb:b5:2b:4e:45:d6:4a:d0:26:cc:e5:72: - ca:08:6a:a5:95:e3:15:a1:f7:a4:ed:c9:2c:5f:a5:fb:ff:ac: - 28:02:2e:be:d7:7b:bb:e3:71:7b:90:16:d3:07:5e:46:53:7c: - 37:07:42:8c:d3:c4:96:9c:d5:99:b5:2a:e0:95:1a:80:48:ae: - 4c:39:07:ce:cc:47:a4:52:95:2b:ba:b8:fb:ad:d2:33:53:7d: - e5:1d:4d:6d:d5:a1:b1:c7:42:6f:e6:40:27:35:5c:a3:28:b7: - 07:8d:e7:8d:33:90:e7:23:9f:fb:50:9c:79:6c:46:d5:b4:15: - b3:96:6e:7e:9b:0c:96:3a:b8:52:2d:3f:d6:5b:e1:fb:08:c2: - 84:fe:24:a8:a3:89:da:ac:6a:e1:18:2a:b1:a8:43:61:5b:d3: - 1f:dc:3b:8d:76:f2:2d:e8:8d:75:df:17:33:6c:3d:53:fb:7b: - cb:41:5f:ff:dc:a2:d0:61:38:e1:96:b8:ac:5d:8b:37:d7:75: - d5:33:c0:99:11:ae:9d:41:c1:72:75:84:be:02:41:42:5f:67: - 24:48:94:d1:9b:27:be:07:3f:b9:b8:4f:81:74:51:e1:7a:b7: - ed:9d:23:e2:be:e0:d5:28:04:13:3c:31:03:9e:dd:7a:6c:8f: - c6:07:18:c6:7f:de:47:8e:3f:28:9e:04:06:cf:a5:54:34:77: - bd:ec:89:9b:e9:17:43:df:5b:db:5f:fe:8e:1e:57:a2:cd:40: - 9d:7e:62:22:da:de:18:27 ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 -WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu -ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc -h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ -0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U -A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW -T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH -B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC -B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv -KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn -OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn -jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw -qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI -rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq -hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ -3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK -NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 -ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur -TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC -jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc -oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq -4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA -mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d -emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- diff --git a/certs/Starfield Root Certificate Authority - G2.pem b/certs/Starfield Root Certificate Authority - G2.pem new file mode 100644 index 0000000..4e6774d --- /dev/null +++ b/certs/Starfield Root Certificate Authority - G2.pem @@ -0,0 +1,30 @@ +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- diff --git a/certs/Starfield Secure Certificate Authority - G2.pem b/certs/Starfield Secure Certificate Authority - G2.pem deleted file mode 100644 index 7772e6b..0000000 --- a/certs/Starfield Secure Certificate Authority - G2.pem +++ /dev/null @@ -1,179 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 7 (0x7) - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Root Certificate Authority - G2 - Validity - Not Before: May 3 07:00:00 2011 GMT - Not After : May 3 07:00:00 2031 GMT - Subject: C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", OU = http://certs.starfieldtech.com/repository/, CN = Starfield Secure Certificate Authority - G2 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:e5:90:66:4b:ec:f9:46:71:a9:20:83:be:e9:6c: - bf:4a:c9:48:69:81:75:4e:6d:24:f6:cb:17:13:f8: - b0:71:59:84:7a:6b:2b:85:a4:34:b5:16:e5:cb:cc: - e9:41:70:2c:a4:2e:d6:fa:32:7d:e1:a8:de:94:10: - ac:31:c1:c0:d8:6a:ff:59:27:ab:76:d6:fc:0b:74: - 6b:b8:a7:ae:3f:c4:54:f4:b4:31:44:dd:93:56:8c: - a4:4c:5e:9b:89:cb:24:83:9b:e2:57:7d:b7:d8:12: - 1f:c9:85:6d:f4:d1:80:f1:50:9b:87:ae:d4:0b:10: - 05:fb:27:ba:28:6d:17:e9:0e:d6:4d:b9:39:55:06: - ff:0a:24:05:7e:2f:c6:1d:72:6c:d4:8b:29:8c:57: - 7d:da:d9:eb:66:1a:d3:4f:a7:df:7f:52:c4:30:c5: - a5:c9:0e:02:c5:53:bf:77:38:68:06:24:c3:66:c8: - 37:7e:30:1e:45:71:23:35:ff:90:d8:2a:9d:8d:e7: - b0:92:4d:3c:7f:2a:0a:93:dc:cd:16:46:65:f7:60: - 84:8b:76:4b:91:27:73:14:92:e0:ea:ee:8f:16:ea: - 8d:0e:3e:76:17:bf:7d:89:80:80:44:43:e7:2d:e0: - 43:09:75:da:36:e8:ad:db:89:3a:f5:5d:12:8e:23: - 04:83 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 25:45:81:68:50:26:38:3D:3B:2D:2C:BE:CD:6A:D9:B6:3D:B3:66:63 - X509v3 Authority Key Identifier: - keyid:7C:0C:32:1F:A7:D9:30:7F:C4:7D:68:A3:62:A8:A1:CE:AB:07:5B:27 - - Authority Information Access: - OCSP - URI:http://ocsp.starfieldtech.com/ - - X509v3 CRL Distribution Points: - - Full Name: - URI:http://crl.starfieldtech.com/sfroot-g2.crl - - X509v3 Certificate Policies: - Policy: X509v3 Any Policy - CPS: https://certs.starfieldtech.com/repository/ - - Signature Algorithm: sha256WithRSAEncryption - 56:65:ca:fe:f3:3f:0a:a8:93:8b:18:c7:de:43:69:13:34:20: - be:4e:5f:78:a8:6b:9c:db:6a:4d:41:db:c1:13:ec:dc:31:00: - 22:5e:f7:00:9e:0c:e0:34:65:34:f9:b1:3a:4e:48:c8:12:81: - 88:5c:5b:3e:08:53:7a:f7:1a:64:df:b8:50:61:cc:53:51:40: - 29:4b:c2:f4:ae:3a:5f:e4:ca:ad:26:cc:4e:61:43:e5:fd:57: - a6:37:70:ce:43:2b:b0:94:c3:92:e9:e1:5f:aa:10:49:b7:69: - e4:e0:d0:1f:64:a4:2b:cd:1f:6f:a0:f8:84:24:18:ce:79:3d: - a9:91:bf:54:18:13:89:99:54:11:0d:55:c5:26:0b:79:4f:5a: - 1c:6e:f9:63:db:14:80:a4:07:ab:fa:b2:a5:b9:88:dd:91:fe: - 65:3b:a4:a3:79:be:89:4d:e1:d0:b0:f4:c8:17:0c:0a:96:14: - 7c:09:b7:6c:e1:c2:d8:55:d4:18:a0:aa:41:69:70:24:a3:b9: - ef:e9:5a:dc:3e:eb:94:4a:f0:b7:de:5f:0e:76:fa:fb:fb:69: - 03:45:40:50:ee:72:0c:a4:12:86:81:cd:13:d1:4e:c4:3c:ca: - 4e:0d:d2:26:f1:00:b7:b4:a6:a2:e1:6e:7a:81:fd:30:ac:7a: - 1f:c7:59:7b ------BEGIN CERTIFICATE----- -MIIFADCCA+igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs -ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAw -MFoXDTMxMDUwMzA3MDAwMFowgcYxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj -aG5vbG9naWVzLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydHMuc3RhcmZpZWxk -dGVjaC5jb20vcmVwb3NpdG9yeS8xNDAyBgNVBAMTK1N0YXJmaWVsZCBTZWN1cmUg -Q2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDlkGZL7PlGcakgg77pbL9KyUhpgXVObST2yxcT+LBxWYR6ayuF -pDS1FuXLzOlBcCykLtb6Mn3hqN6UEKwxwcDYav9ZJ6t21vwLdGu4p64/xFT0tDFE -3ZNWjKRMXpuJyySDm+JXfbfYEh/JhW300YDxUJuHrtQLEAX7J7oobRfpDtZNuTlV -Bv8KJAV+L8YdcmzUiymMV33a2etmGtNPp99/UsQwxaXJDgLFU793OGgGJMNmyDd+ -MB5FcSM1/5DYKp2N57CSTTx/KgqT3M0WRmX3YISLdkuRJ3MUkuDq7o8W6o0OPnYX -v32JgIBEQ+ct4EMJddo26K3biTr1XRKOIwSDAgMBAAGjggEsMIIBKDAPBgNVHRMB -Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUJUWBaFAmOD07LSy+ -zWrZtj2zZmMwHwYDVR0jBBgwFoAUfAwyH6fZMH/EfWijYqihzqsHWycwOgYIKwYB -BQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0ZWNo -LmNvbS8wOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5zdGFyZmllbGR0ZWNo -LmNvbS9zZnJvb3QtZzIuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUF -BwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkv -MA0GCSqGSIb3DQEBCwUAA4IBAQBWZcr+8z8KqJOLGMfeQ2kTNCC+Tl94qGuc22pN -QdvBE+zcMQAiXvcAngzgNGU0+bE6TkjIEoGIXFs+CFN69xpk37hQYcxTUUApS8L0 -rjpf5MqtJsxOYUPl/VemN3DOQyuwlMOS6eFfqhBJt2nk4NAfZKQrzR9voPiEJBjO -eT2pkb9UGBOJmVQRDVXFJgt5T1ocbvlj2xSApAer+rKluYjdkf5lO6Sjeb6JTeHQ -sPTIFwwKlhR8Cbds4cLYVdQYoKpBaXAko7nv6VrcPuuUSvC33l8Odvr7+2kDRUBQ -7nIMpBKGgc0T0U7EPMpODdIm8QC3tKai4W56gf0wrHofx1l7 ------END CERTIFICATE----- -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: sha256WithRSAEncryption - Issuer: C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Root Certificate Authority - G2 - Validity - Not Before: Sep 1 00:00:00 2009 GMT - Not After : Dec 31 23:59:59 2037 GMT - Subject: C = US, ST = Arizona, L = Scottsdale, O = "Starfield Technologies, Inc.", CN = Starfield Root Certificate Authority - G2 - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public-Key: (2048 bit) - Modulus: - 00:bd:ed:c1:03:fc:f6:8f:fc:02:b1:6f:5b:9f:48: - d9:9d:79:e2:a2:b7:03:61:56:18:c3:47:b6:d7:ca: - 3d:35:2e:89:43:f7:a1:69:9b:de:8a:1a:fd:13:20: - 9c:b4:49:77:32:29:56:fd:b9:ec:8c:dd:22:fa:72: - dc:27:61:97:ee:f6:5a:84:ec:6e:19:b9:89:2c:dc: - 84:5b:d5:74:fb:6b:5f:c5:89:a5:10:52:89:46:55: - f4:b8:75:1c:e6:7f:e4:54:ae:4b:f8:55:72:57:02: - 19:f8:17:71:59:eb:1e:28:07:74:c5:9d:48:be:6c: - b4:f4:a4:b0:f3:64:37:79:92:c0:ec:46:5e:7f:e1: - 6d:53:4c:62:af:cd:1f:0b:63:bb:3a:9d:fb:fc:79: - 00:98:61:74:cf:26:82:40:63:f3:b2:72:6a:19:0d: - 99:ca:d4:0e:75:cc:37:fb:8b:89:c1:59:f1:62:7f: - 5f:b3:5f:65:30:f8:a7:b7:4d:76:5a:1e:76:5e:34: - c0:e8:96:56:99:8a:b3:f0:7f:a4:cd:bd:dc:32:31: - 7c:91:cf:e0:5f:11:f8:6b:aa:49:5c:d1:99:94:d1: - a2:e3:63:5b:09:76:b5:56:62:e1:4b:74:1d:96:d4: - 26:d4:08:04:59:d0:98:0e:0e:e6:de:fc:c3:ec:1f: - 90:f1 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 7C:0C:32:1F:A7:D9:30:7F:C4:7D:68:A3:62:A8:A1:CE:AB:07:5B:27 - Signature Algorithm: sha256WithRSAEncryption - 11:59:fa:25:4f:03:6f:94:99:3b:9a:1f:82:85:39:d4:76:05: - 94:5e:e1:28:93:6d:62:5d:09:c2:a0:a8:d4:b0:75:38:f1:34: - 6a:9d:e4:9f:8a:86:26:51:e6:2c:d1:c6:2d:6e:95:20:4a:92: - 01:ec:b8:8a:67:7b:31:e2:67:2e:8c:95:03:26:2e:43:9d:4a: - 31:f6:0e:b5:0c:bb:b7:e2:37:7f:22:ba:00:a3:0e:7b:52:fb: - 6b:bb:3b:c4:d3:79:51:4e:cd:90:f4:67:07:19:c8:3c:46:7a: - 0d:01:7d:c5:58:e7:6d:e6:85:30:17:9a:24:c4:10:e0:04:f7: - e0:f2:7f:d4:aa:0a:ff:42:1d:37:ed:94:e5:64:59:12:20:77: - 38:d3:32:3e:38:81:75:96:73:fa:68:8f:b1:cb:ce:1f:c5:ec: - fa:9c:7e:cf:7e:b1:f1:07:2d:b6:fc:bf:ca:a4:bf:d0:97:05: - 4a:bc:ea:18:28:02:90:bd:54:78:09:21:71:d3:d1:7d:1d:d9: - 16:b0:a9:61:3d:d0:0a:00:22:fc:c7:7b:cb:09:64:45:0b:3b: - 40:81:f7:7d:7c:32:f5:98:ca:58:8e:7d:2a:ee:90:59:73:64: - f9:36:74:5e:25:a1:f5:66:05:2e:7f:39:15:a9:2a:fb:50:8b: - 8e:85:69:f4 ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs -ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw -MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj -aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp -Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg -nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 -HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N -Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN -dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 -HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G -CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU -sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 -4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg -8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 -mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- diff --git a/global-functions b/global-functions index e40e384..172173e 100644 --- a/global-functions +++ b/global-functions @@ -282,7 +282,7 @@ :return true; } - :if ([ $CertificateAvailable "R3" ] = false) do={ + :if ([ $CertificateAvailable "ISRG Root X1" ] = false) do={ $LogPrintExit2 error $0 ("Downloading required certificate failed.") true; } @@ -401,7 +401,7 @@ :global LogPrintExit2; :do { - :if ([ $CertificateAvailable "Cloudflare Inc ECC CA-3" ] = false) do={ + :if ([ $CertificateAvailable "GTS Root R4" ] = false) do={ $LogPrintExit2 warning $0 ("Downloading required certificate failed.") true; } :local Vendor ([ / tool fetch check-certificate=yes-without-crl \ @@ -711,7 +711,7 @@ :global SymbolForNotification; :global ValidateSyntax; - :if ([ $CertificateAvailable "R3" ] = false) do={ + :if ([ $CertificateAvailable "ISRG Root X2" ] = false) do={ $LogPrintExit2 warning $0 ("Downloading certificate failed, trying without.") false; } diff --git a/mod/notification-telegram b/mod/notification-telegram index d42d459..d50f6d7 100644 --- a/mod/notification-telegram +++ b/mod/notification-telegram @@ -122,7 +122,7 @@ :local ParseMode [ $IfThenElse ($TelegramFixedWidthFont = true) "MarkdownV2" "" ]; :do { - :if ([ $CertificateAvailable "Go Daddy Secure Certificate Authority - G2" ] = false) do={ + :if ([ $CertificateAvailable "Go Daddy Root Certificate Authority - G2" ] = false) do={ $LogPrintExit2 warning $0 ("Downloading required certificate failed.") true; } / tool fetch check-certificate=yes-without-crl output=none http-method=post \ diff --git a/update-tunnelbroker b/update-tunnelbroker index d454cd7..53b0edd 100644 --- a/update-tunnelbroker +++ b/update-tunnelbroker @@ -34,7 +34,7 @@ :if ($PublicAddress != $InterfaceVal->"local-address") do={ :local Comment [ $ParseKeyValueStore ($InterfaceVal->"comment") ]; - :if ([ $CertificateAvailable "Starfield Secure Certificate Authority - G2" ] = false) do={ + :if ([ $CertificateAvailable "Starfield Root Certificate Authority - G2" ] = false) do={ $LogPrintExit2 error $0 ("Downloading required certificate failed.") true; } $LogPrintExit2 info $0 ("Local address changed, sending UPDATE to tunnelbroker! New address: " . $PublicAddress) false;