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 SentLteFirmwareUpgradeNotification;
:global CharacterReplace;
:global FormatLine;
:global IfThenElse;
:global LogPrintExit2;
:global ScriptFromTerminal;
:global SendNotification2;
@ -84,7 +84,9 @@ $ScriptLock $0;
subject=([ $SymbolForNotification "sparkles" ] . "LTE firmware upgrade"); \
message=("A new firmware version " . ($Firmware->"latest") . " is available for " . \
"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" . \
[ $FormatLine " Installed" ($Firmware->"installed") ] . "\n" . \
[ $FormatLine " Available" ($Firmware->"latest") ]); silent=true });

View file

@ -12,6 +12,7 @@ This script upgrades LTE firmware on compatible devices:
* R11e-LTE-US
* R11e-4G
* R11e-LTE6
* ... and more - probably what ever Mikrotik builds into their devices
A temporary scheduler is created to be independent from terminal. Thus
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={
:do {
: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 \
($HostInfo->"resolve" != $HostInfo->"name") ("' for " . $Type . " '" . \
$HostInfo->"name") "" ] . "' resolves to different address " . $Resolve . \

View file

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