From 684eb6411de75b750e5e8cde7cc3ab3ef22681e7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 20:01:05 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 20:01:05. --- .../20260509/20260509200001-Binary.backup | Bin 0 -> 300002 bytes .../20260509/20260509200001-Config.rsc | 4643 +++++++++++++++++ .../20260509/20260509200001-Diff-Config.rsc | 46 + 3 files changed, 4689 insertions(+) create mode 100644 MikroMaster/20260509/20260509200001-Binary.backup create mode 100644 MikroMaster/20260509/20260509200001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509200001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509200001-Binary.backup b/MikroMaster/20260509/20260509200001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..44c23d7bf781a422796cf8cf9f4f880e3ca8926a GIT binary patch literal 300002 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/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

LK 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

!s9+4d<&eZ;h`r=9 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 pO4StZR9-3Rf{J* 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

+y%kp^L->k%pE?A%rIyYr%`VO3!GI*N>o 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

I6T+kOuBh&Y;xVON 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

n*r<)j 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 K-7?WObJertO%Z4S literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509200001-Config.rsc b/MikroMaster/20260509/20260509200001-Config.rsc new file mode 100644 index 0000000..a92699b --- /dev/null +++ b/MikroMaster/20260509/20260509200001-Config.rsc @@ -0,0 +1,4643 @@ +# 2026-05-09 20:00:07 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509200001-Diff-Config.rsc b/MikroMaster/history/20260509/20260509200001-Diff-Config.rsc new file mode 100644 index 0000000..18ece10 --- /dev/null +++ b/MikroMaster/history/20260509/20260509200001-Diff-Config.rsc @@ -0,0 +1,46 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4293c4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4294a4294 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4332c4332 +< connection-state=established,related,new disabled=yes +--- +> connection-state=established,related,new +4404,4405c4404,4405 +< add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ +< 1380 out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ +--- +> add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ +> out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ +4408,4410c4408,4410 +< "Mark VPN connections to exclude from FastTrack" disabled=yes \ +< in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ +< VPN_No_FastTrack passthrough=no +--- +> "Mark VPN connections to exclude from FastTrack" in-interface=WG \ +> log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ +> no +4412,4413c4412,4413 +< 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ +< src-address=10.30.30.0/24 +--- +> 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ +> 10.30.30.0/24 +4420,4421d4419 +< add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ +< out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +4423a4422,4423 +> add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ +> out,none out-interface="ether1 - Unet" routing-mark=!To-VPN -- 2.52.0