Compare commits

...

6 commits

Author SHA1 Message Date
Zain Arbani 9162f13b80
Merge 361933b2c0 into b286cb6803 2024-02-19 14:16:59 -07:00
Christian Hesse b286cb6803 netwatch-notify: do not update with record in cache
Using `:resolve` we have just one address, but chances are several
records do exist. These end up in cache, so we are happy to find them
there - no need to update then.
2024-02-19 11:03:17 +01:00
Christian Hesse 872abbea7d doc/unattended-lte-firmware-upgrade: more devices supported... 2024-02-08 21:02:06 +01:00
Christian Hesse 860acffbdb unattended-lte-firmware-upgrade: add error handling 2024-02-08 21:02:06 +01:00
Christian Hesse e83154c9c3 check-lte-firmware-upgrade: give more detailed infos on modem 2024-02-08 20:54:02 +01:00
zainarbani 361933b2c0 mod: Introduce dns-adblock
Signed-off-by: zainarbani <zaintsyariev@gmail.com>
2022-04-12 05:06:33 +07:00
5 changed files with 142 additions and 10 deletions

View file

@ -29,8 +29,8 @@ $ScriptLock $0;
:global Identity; :global Identity;
:global SentLteFirmwareUpgradeNotification; :global SentLteFirmwareUpgradeNotification;
:global CharacterReplace;
:global FormatLine; :global FormatLine;
:global IfThenElse;
:global LogPrintExit2; :global LogPrintExit2;
:global ScriptFromTerminal; :global ScriptFromTerminal;
:global SendNotification2; :global SendNotification2;
@ -84,7 +84,9 @@ $ScriptLock $0;
subject=([ $SymbolForNotification "sparkles" ] . "LTE firmware upgrade"); \ subject=([ $SymbolForNotification "sparkles" ] . "LTE firmware upgrade"); \
message=("A new firmware version " . ($Firmware->"latest") . " is available for " . \ message=("A new firmware version " . ($Firmware->"latest") . " is available for " . \
"LTE interface " . $IntName . " on " . $Identity . ".\n\n" . \ "LTE interface " . $IntName . " on " . $Identity . ".\n\n" . \
[ $FormatLine "Interface" [ $CharacterReplace ($Info->"manufacturer" . " " . $Info->"model") ("\"") "" ] ] . "\n" . \ [ $IfThenElse ([ :len ($Info->"manufacturer") ] > 0) ([ $FormatLine "Manufacturer" ($Info->"manufacturer") ] . "\n") ] . \
[ $IfThenElse ([ :len ($Info->"model") ] > 0) ([ $FormatLine "Model" ($Info->"model") ] . "\n") ] . \
[ $IfThenElse ([ :len ($Info->"revision") ] > 0) ([ $FormatLine "Revision" ($Info->"revision") ] . "\n") ] . \
"Firmware version:\n" . \ "Firmware version:\n" . \
[ $FormatLine " Installed" ($Firmware->"installed") ] . "\n" . \ [ $FormatLine " Installed" ($Firmware->"installed") ] . "\n" . \
[ $FormatLine " Available" ($Firmware->"latest") ]); silent=true }); [ $FormatLine " Available" ($Firmware->"latest") ]); silent=true });

View file

@ -12,6 +12,7 @@ This script upgrades LTE firmware on compatible devices:
* R11e-LTE-US * R11e-LTE-US
* R11e-4G * R11e-4G
* R11e-LTE6 * R11e-LTE6
* ... and more - probably what ever Mikrotik builds into their devices
A temporary scheduler is created to be independent from terminal. Thus A temporary scheduler is created to be independent from terminal. Thus
starting the upgrade process over the broadband connection is supported. starting the upgrade process over the broadband connection is supported.

124
mod/dns-adblock Normal file
View file

@ -0,0 +1,124 @@
#!rsc by RouterOS
:global UpdateAdblock;
:global HelpAdblock;
:global ShowAdblockHost;
:global AddAdblockHost;
:global RemoveAdblockHost;
:global RunAdblockHost do={
# store hostlist as script
:if ([:len [/system script find where name=adblockhostlist]] = 0) do={
/system script add name=adblockhostlist source=":global AdblockHost"
}
:if ($1 = "update") do={
:global NewAdblockHost;
/system script set [find where name=adblockhostlist] source=(":global AdblockHost $NewAdblockHost");
}
/system script run adblockhostlist
}
:set $HelpAdblock do={
:local HelpAdblockList {\
"\$UpdateAdblock - Update static DNS entries";\
"\$ShowAdblockHost - Show current sources";\
"\$AddAdblockHost [URL] - Add new sources, eg: https://adaway.org/hosts.txt";\
"\$RemoveAdblockHost [Number] - Remove specified source, eg: 0"\
}
:foreach x in=$HelpAdblockList do={
:put $x
}
}
:set $ShowAdblockHost do={
:global AdblockHost;
:if ([:len $AdblockHost] = 0) do={
:error "No source found"
}
:foreach x,y in=$AdblockHost do={
:put ("$x $y")
}
}
:set $AddAdblockHost do={
:if ([:len $1] < 1) do={
:error "No URL specified!"
}
:global AdblockHost;
:global RunAdblockHost;
:global NewAdblockHost;
:local CurAdblockHost;
:if ([:len $AdblockHost] != 0) do={
:foreach x in=$AdblockHost do={
:set CurAdblockHost ("$CurAdblockHost\"$x\";")
}
:set NewAdblockHost ("{$CurAdblockHost\"$1\"}")
} else={
:set NewAdblockHost "{\"$1\"}"
}
$RunAdblockHost "update"
:put ("Added new source: $1")
}
:set $RemoveAdblockHost do={
:if ([:len $1] < 1) do={
:error "No number specified!"
}
:global AdblockHost;
:global RunAdblockHost;
:global NewAdblockHost;
:local CurAdblockHost;
:if ([:len $AdblockHost] = 0) do={
:error "No source found"
}
:foreach x,y in=$AdblockHost do={
:if ($x != $1) do={
:set CurAdblockHost ("$CurAdblockHost\"$y\";")
} else={
:put ("Removed source: $y")
}
}
:if ([:len $AdblockHost] <= 1) do={
:set AdblockHost ""
:set NewAdblockHost ""
} else={
:set NewAdblockHost ("{$CurAdblockHost}")
}
$RunAdblockHost "update"
}
:set $UpdateAdblock do={
:global AdblockHost;
:if ([:len $AdblockHost] = 0) do={
:error "Add source first!"
}
:local AdblockHostList;
:foreach x in=$AdblockHost do={
:set AdblockHostList ("$AdblockHostList$x,")
}
:set $AdblockHostList [:pick $AdblockHostList 0 ([:len $AdblockHostList]-1)]
# https://github.com/tarampampam/mikrotik-hosts-parser
:local parserVer "4.4.0";
:local adblockLimit "5000";
:local redirectTo "127.0.0.1";
:local excludedHost "localhost,localhost.localdomain,broadcasthost,local,ip6-localhost,ip6-loopback,ip6-localnet,ip6-mcastprefix,ip6-allnodes,ip6-allrouters,ip6-allhosts";
:local hostScriptUrl ("https://stopad.cgood.ru/script/source\?format=routeros&version=$parserVer&redirect_to=$redirectTo&limit=$adblockLimit&sources_urls=$AdblockHostList&excluded_hosts=$excludedHost");
:local scriptName "stop_ad.script";
do {
/tool fetch check-certificate=no mode=https url=$hostScriptUrl dst-path=$scriptName
:delay 3s;
} on-error={
:error "Fetch source failed"
}
:if ([:find [/file get $scriptName contents] "Script generation failed"]) do={
:error "Invalid/unsupported source"
} else={
/ip dns static remove [/ip dns static find comment=ADBlock]
/import file-name=$scriptName
/file remove $scriptName
:put "Static DNS entries updated successfully"
}
}
# Initialize adblockhostlist
$RunAdblockHost

View file

@ -79,7 +79,8 @@ $ScriptLock $0;
:if ([ $IsDNSResolving ] = true) do={ :if ([ $IsDNSResolving ] = true) do={
:do { :do {
:local Resolve [ :resolve ($HostInfo->"resolve") ]; :local Resolve [ :resolve ($HostInfo->"resolve") ];
:if ($Resolve != $HostVal->"host") do={ :if ($Resolve != $HostVal->"host" and \
[ :len [ /ip/dns/cache/find where name=($HostInfo->"resolve") data=[ :tostr ($HostVal->"host") ] ] ] = 0) do={
$LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse \ $LogPrintExit2 info $0 ("Name '" . $HostInfo->"resolve" . [ $IfThenElse \
($HostInfo->"resolve" != $HostInfo->"name") ("' for " . $Type . " '" . \ ($HostInfo->"resolve" != $HostInfo->"name") ("' for " . $Type . " '" . \
$HostInfo->"name") "" ] . "' resolves to different address " . $Resolve . \ $HostInfo->"name") "" ] . "' resolves to different address " . $Resolve . \

View file

@ -24,13 +24,17 @@
:set LTEFirmwareUpgrade; :set LTEFirmwareUpgrade;
/system/scheduler/remove ($1 . "-firmware-upgrade"); /system/scheduler/remove ($1 . "-firmware-upgrade");
/interface/lte/firmware-upgrade $1 upgrade=yes; :do {
:log info ("LTE firmware upgrade on '" . $1 . "' finished, waiting for reset."); /interface/lte/firmware-upgrade $1 upgrade=yes;
:delay 240s; :log info ("LTE firmware upgrade on '" . $1 . "' finished, waiting for reset.");
:local Firmware [ /interface/lte/firmware-upgrade $1 once as-value ]; :delay 240s;
:if (($Firmware->"installed") != ($Firmware->"latest")) do={ :local Firmware [ /interface/lte/firmware-upgrade $1 once as-value ];
:log warning ("LTE firmware versions still differ. Resetting again..."); :if (($Firmware->"installed") != ($Firmware->"latest")) do={
/interface/lte/at-chat $1 input="AT+RESET"; :log warning ("LTE firmware versions still differ. Resetting again...");
/interface/lte/at-chat $1 input="AT+RESET";
}
} on-error={
:log error ("LTE firmware upgrade on '" . $1 . "' failed.");
} }
} }