From 27a100228650dd3eab64d000daa9a5ce73b44c62 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 15 Jun 2026 13:20:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 15 13:20:39. --- .../20260615/20260615132002-Binary.backup | Bin 0 -> 267630 bytes .../20260615/20260615132002-Config.rsc | 3601 +++++++++++++++++ .../20260615/20260615132002-Diff-Config.rsc | 45 + 3 files changed, 3646 insertions(+) create mode 100644 MikroMaster/20260615/20260615132002-Binary.backup create mode 100644 MikroMaster/20260615/20260615132002-Config.rsc create mode 100644 MikroMaster/history/20260615/20260615132002-Diff-Config.rsc diff --git a/MikroMaster/20260615/20260615132002-Binary.backup b/MikroMaster/20260615/20260615132002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6dd901f361749b60978bff4b9ff72d865df877c5 GIT binary patch literal 267630 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

@IJP3;2XP|#;JhNxhR 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π(5M5 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%0Dt#q}f9S zNT9RxCH~~b)ttu{U_a-0Yg(und{EAJt9d`MUuu$gE}=Y=9YYH$v}W>ve!$D!uudlf zJ|GsN1lKxqMgB%fT+n1pszr;nM}+Kj^ygjd4UHQx!$&Gtbam%0mv7)eYOX*Z5nbTf zoMg$|Ow6DrWeDgB1PI>2`g3v5%gGg|b6^!+Khwmy{R&?tYH66M$k9;BvHk^yCJ~qb zO^QT}AEY_&Fp=k*6({CDCl@6wrpnx6CW_QuJT%q5Z_C7ltjY-LHv zWdp9jk+py?=HW1kc5!8v3irxi#A2|F9U{7=U2||Xb1uPlmj{+ted&z2xf{l1(*u#` zg6}$)W4E8wdTbMTzQ8*IpFWf%!F{KNjZ`>8LygMDzxRx$`)Ul>siU9$Vm>en460#( zeR4_a5NULA>!xfFw~X(uO^e;$=&?@j$k*_%)1=FjyD_baWX^klu!R2}b`G{ZW5q3A z{7@#}_*cfhKw9{mFE>!wC_nSsK=0t}J?T_r41VP8PK%$8Bd@FubEX)DINwfQQtxDp z^dU6T;H`Dbz2tugyDYhoeh{v^dfV)A?fH9$Y3jS02XL{0?r^D<$y)W=on2LryFNBxT`hGPDmU{kop{ zmGp(&>vtC=OY^O2nC)ri#VUX1zC?(IB%kNr#@-;pf9hYK4?(C`6aO{7GFRi0`(hUu zELM^*(TO55fJwS7GC0{ZmOf>D{lqy4DN92VlMpITu?$}eCz&s`cz=*m5Hx;b2auYS zTcXuX(>ni-8@ZFtl=SIpZ7b+SZz}`JXSAk)ZrjN4pe34);q3W)Hz=yu2`fzZZxcnm zIZjudG!xQ(-0tuK;-huh>|agRmEon{D?-(KmV{>3-chGtEDUDVI{zuu$!YUvSctP$E7?|oqt63%dL zW*N{G+ZZok=jrk+_`>KIG1!09<6oVN4+|dnS)!-v3vo7y_i%MKPP8A8@nds509~_} ztc>f;es(BaP_};j+4vB&R^(GXEuJtP0$gSR((U#}rLpG(HN-t&0Iz2$7NfSXCiFQv zhTnotPnHH+tbB2$)$jr4oJ(_-S;&f~-nL}FNr6)rQUze>6?`9O%g$}|@L7W?{0b+s zmtLP|x8arZt~MndCGOxLYsN_woLKfZ|J3oJ_HQ?@Bq(BbtxtB&TA}W@5KU?w(6sX? zxltt^RP;w4?!;Sh8u$BAvtl1`+x7S@DPqCOe_;6IJ?xKjdtShvy!i%sFAjnU|4u0S zh8#@Q+6=tab2YlhKL7^rlC36;CZQv6Y77Jwlzr`awtc7>B^iOpRUKf|mIDr5apyS} z8GecIPfB3La$x5?^s4!N=d9nUPejg8nD4tFb+a((IyYP+sge(G zC#ZNT9eN`R?Llw*$G=e!P~-YJH(@blAa=TAuP1MqELzvjpiMvTqVfxg)pC#lxrJ;r zOI0SG6TnMr#PZN@^h0)`Fi8E2LBS-~?6E)d2I!$+V8S!yNLJgrvw5NN<%;55ZY{hE zau_BJf`0o+z1D|b2r3ggb%trO*t|Ls)yDjdpDLPkrlKLw*EIMV`=x){Rwip{c8#gy zJuzpNPx~K;&`pMk2G^7W>f2cU^XTQC@9lEsRFjC&U%pq)84@m1Hbdh368T z_H&bh#B8p_cw&6A5Xo3To?_qB)0VKXjmAl+x)y+-vmaEuyXKVOArwMN@5wrGAq?7F zGAq50C9&pHMi zB~kL|{ZF)|PifP~9_V6Jrph{d0M+XAo2BABT^MY?Z!1)Al2fuy$@u%L(Z=&{2=;ep zGWRM6cx0a2UG8#gg>l&$^U*4n!>=-E7Zr^4|MDYyR}Sib{-F81rilsRk~|yU3(3mU zA(^QD$INVKC53kM*V^@=fuUS_!paUv;VB6Q@?lcV)W($UR*z`K3sqDGo? zB`F1lPHuafXWry_Nvbe{%C}>~b?lY60}Al?excRn5B#-1^+c_iL z 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˷g=2AJyon+( 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 YJvu?Nop-m*|BK|DS=Rsw({Kqt3f(Sk)Bpeg literal 0 HcmV?d00001 diff --git a/MikroMaster/20260615/20260615132002-Config.rsc b/MikroMaster/20260615/20260615132002-Config.rsc new file mode 100644 index 0000000..752a231 --- /dev/null +++ b/MikroMaster/20260615/20260615132002-Config.rsc @@ -0,0 +1,3601 @@ +# 2026-06-15 13:20:03 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add dhcpv6-agent-circuit-id="\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id=\ + "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add dns-servers=10.30.30.81 name=reg.vados.ru 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 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 smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-client option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=DUID value=0x00030001488f5a8e1abc +add code=61 name=clientid +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=CLIENT_DUID +add code=61 name=CLIENT_MAC +/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=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/692/cf80d9c2\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 05:40:03 15.06.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 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=\ + "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 \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\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 :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\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 :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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:30: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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \n}" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted-dhcpv6=yes trusted-ra=yes +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=Internet internet-interface-list=Internet \ + 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 wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=109.107.177.79 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=20s 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 interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/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-broadcast=never use-peer-dns=no \ + use-peer-ntp=no +/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.8.8,8.8.4.4 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" 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 match-subdomain=yes name=mikrots.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=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage 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=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=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=amster disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +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!!!" 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=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +add address=10.30.30.33 comment="Direct connet to DNS servers" list=\ + Direct-DNS +add address=wg.vados.ru list=VPN-Server +/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="ether1 - Unet" protocol=\ + udp 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="ether1 - Unet" protocol=tcp 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 \ + in-interface="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=udp +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=tcp \ + src-address=10.30.30.0/24 +add action=accept chain=input comment="udp Accept input DNS queries" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=udp \ + src-address=10.30.30.0/24 +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 WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes 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=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes 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 in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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="udp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=udp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=tcp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=dst-nat chain=dstnat disabled=yes dst-port=44333 in-interface=\ + "ether1 - Unet" protocol=udp src-address=!10.30.30.0/24 to-addresses=\ + 10.30.30.33 to-ports=44333 +add action=dst-nat chain=dstnat dst-port=44333 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=44333 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +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=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +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=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=\ + 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=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/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 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 check-gateway=ping 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 certificate=Root-YE 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 forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 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 package update +set check-certificate=yes-without-crl +/system scheduler +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" disabled=yes 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 certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260615/20260615132002-Diff-Config.rsc b/MikroMaster/history/20260615/20260615132002-Diff-Config.rsc new file mode 100644 index 0000000..167abbc --- /dev/null +++ b/MikroMaster/history/20260615/20260615132002-Diff-Config.rsc @@ -0,0 +1,45 @@ +2596a2597,2601 +> add allowed-address=0.0.0.0/0 client-address=10.8.0.2/24 \ +> client-allowed-address=0.0.0.0/0 client-dns=8.8.8.8 client-endpoint=\ +> 146.120.64.211 client-keepalive=10s client-listen-port=33821 disabled=yes \ +> interface=WG name=GitHub persistent-keepalive=10s public-key=\ +> "HTofQ0KtUsZij7zFn0F72r8oatxGn/el6bzLhM9El1g=" responder=yes +3252d3256 +< add address=wg.vados.ru list=VPN-Server +3322c3326 +< "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ +--- +> "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ +3326c3330 +< "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ +--- +> "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ +3339,3340c3343,3344 +< new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ +< src-address-list=NoWG +--- +> disabled=yes new-routing-mark=main passthrough=no src-address=\ +> 10.30.30.0/24 src-address-list=NoWG +3342c3346,3347 +< new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG +3344,3351c3349,3356 +< "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ +< VPN_No_FastTrack +< add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ +< out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ +< 1381-65535 +< 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 +--- +> "Mark VPN connections to exclude from FastTrack" disabled=yes \ +> new-connection-mark=VPN_No_FastTrack +> add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ +> 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ +> tcp-mss=1381-65535 +> add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ +> 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 -- 2.52.0