From 8b732d777f1f2065408609174e20e3ea053744c3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 06:00:31 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 06:00:31. --- .../20260504/20260504060002-Binary.backup | Bin 0 -> 266808 bytes .../20260504/20260504060002-Config.rsc | 4405 +++++++++++++++++ .../20260504/20260504060002-Diff-Config.rsc | 8 + 3 files changed, 4413 insertions(+) create mode 100644 MikroMaster/20260504/20260504060002-Binary.backup create mode 100644 MikroMaster/20260504/20260504060002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504060002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504060002-Binary.backup b/MikroMaster/20260504/20260504060002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b83e025d1d31160a18d58373501ba83e1f615eec GIT binary patch literal 266808 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�~h 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≪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

8k*12?r0v*<7v8%_GP3Rv1KYb({);@1%ANDy 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

lhO`?fD^y0dF8qYt4mz3US@$pZ6Jdr#cNjy*yW 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%0A(&cY-x)Hut`2%6 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 #38YnUYlqSA?^c-mbo7;v9tYh5*X-*zDq!%WE zMwxIA)k|WH=q_cgpt&)OJZ^-AEQv_6faIelH|!V;;DpeX5?}#{`yXDIw-rb}qI8?Efz1moOkp|S zLXa$4nNuRQpbt~^7FDM>8f%6O4p*!fji<&$P)61Q6muxo=huc-am&cApd{C9^)H(7 z7-op^-R)22CY2ASLCY4L$xX`WIq7r)4$8=^Z(!y|x-u8TWE;Gqbk^1Q@$pe2`WP#M zvMdpSshH@&jQMLT4j?NPc(zD!7s;4s4uC76SS65($<&@Pd8;Y_vT7S64gQr6`aT4O z>~Go<%rMowIu|?m9`Je{fgV9 zD&*tsoL=dPLOmOLY!j`k$M8>3{Y3@hpEwT&ygy*I53o8>w?_kT`Jsg_1W>C0MSUsE z>*LXkeImDVTKB)>*i!XCo0h*+8jffIGlQ!v`0$mt?~TS5tNQs0!#0mcHTQ=#>%(() z|1ZEBWEs=N3cA)TfLbFNImTs{kV1w(MPCQd>#6Fq%e&|nebPVH=eYlyAtEJNf4p3* zE*OK_FQr5cgg91_@4ey`(mQL_R_;aNlbOF;?_-g}AV06ZqIyE3bYjGAPGwTT_DtH1 z_&k@N?E{C3A9LWMy>G*(;}>Jor5RJAE$St86ZAM<=Ress=DHbu*5PZAA@E1avk)swx^c>B|qez+qPd~@R2l-*vPW9v80A$lt-Fco@ zEax1p)l};;;zE3V*Oso~LT`+H;5713bNYOo%2hQC8U|PV1A59W6A^6iXP!eYr1}9bd0;$0m3=GB3M~ zyLNm}j!x7IvJw}!+;_y~5lzk6s#g+Upmn0E{r*^OE@ zTPw>dQ4HgCj4N2;>wc$?evJBEm^T5ov?yAhrN+X|1wkC6+j00c=)wo7G6TulOzN3o z3;s6MKKG553iO64BSU7$Um?#OpEnOPGo#a2kAZ)cymt9@r3L&2X!>@_D1N@P7_q4b z3VV}!9J^P|c+Zf=r7?nFEv;9{hjR;JG5m>0Mc|7bcJZ4h{7v~xOlne*BoVZ%wIFC% zlwxQpo1RYEG?#+E=5CTjUED@3h%MCwY`)BJB4G9rWgwdra-0c&=jbvTG*#g*7H1Ry zeg5;1i#6b4Qlomd@0hB>I!F)j`R3N`n_EMy+1xq8UmiH4ngbs&+D#Nb1^Q1{|vdh$?p7rRi9>; zsC&1(-e%jQSu}(A!YTOZ7&|SzfZf>^N&o;3YsOr9p1{pmrpu)v%DFlw!OE_&?B5)}kRCYfAggmCP6JHRmNHG~A(Pb0lr(2A zH!6!v-XfA`M{IYV%ge2prcsfNjqKjDDY6ZYK@i*aUWbx%l94X#AfyUIXX{~TYyRX< zr_5A$5}1ymF5EFN>c);mp0Bf*fTd)C5I#rVX+KjgTy@1tAPaPpU37peo2OD&s~T)M z#kD1;s-w@UR^&Pr8yY@`#@0rN`PhLsSJYBH!fQ#`2xNKD_ueSr9^PCjU@1@@%JkKP zF?r1EDlhTzqaO?^Zi~|gE`$|@98_|uCP^0|Zb#U@Hbb~8KMP%sxq!Ew-v%}|hNk_* zfhNKSAGF--r7h-B!vT;%7PL7f@DuT~b?T+-8**=s!V7IYv1n&&Op2>c8`GpAlOhp3aNGik36GgyD9)n*cZ9N?T%db34UwwDm;GsE+UoUkDG~=;-QE- zOK2elpxOi7?q$uUyyjeE8;vGvg#1JeeY^p`Qf`*SjAyh4x*|1gQXiH4yMl#sw{q(i z$xVXPsUKs=S3rI&bU?{ifhbqIE7pLHKq2}kP`5$rhf@q#0Y<34B6a-Y;66T-h_0gT z_UxlP8vQs%BZ27CBeX3;tbHZXr30qVSH2U*xwKhBJZ1G$2r}*mt!U4=hDD^xiMiDB zN%tEN($+k?3DEx=H^Nf7RtB`_OCeam%Pi z&N#9^0JZR?t+bq$1#ERd`i#4c4a<{Mc$D!RW`_Rwf=%_G(2_lIbC}S~U~T$Sk!P1v zPKgq(H>-Q>BzySC9r%u=&VR3S?_iuIsJXm`)OjEfCjgj*JBL8aUTQTA$Kn&wPEpu7 z^U%iCQj|7NRE~nCVC`8#=+SfB09w7l$rdD0D>@;@%Y%$QsX;n;ZqdHpbv@c4|1hFb zO$(nKgoyTJ^<~hMw02@GoW_}E?&s!@-*#9JW*F%b4_1w2D@lbP*S4na#nU5(s@;q4 z*^^_@euEYeUA0F!_ez+!-e28)tgk)zOVY%?0rn{EwbEYFN(YtdqAilee_G%gmy~w# zQBP0mq9nwQw=i!vCc_4IGA%mrt4$-*u*`Bn2V zfpQRw@(R!%oiJ~-u5w_tQRKQLR0QU_L36p3HLtZ@f_8dFl)BJEx97Rp5vIMBSSRuv z#OoRZSLC>F^O#i;8ygzQ7C7#PCfXOax|TwdD2C?1!ndvl@hasem_!rRVItq9+abBt zzImLqh_qB{jDAwkTamUyE=>XaLyrj=CiB%_VKI1JN%RGaf@tVHKGJ0NG1UGzBbs*s z%wBx(Dq#>+Bn}SK2+YH6_y@4kG2!ka5J1)nm1q-=D=jf4XO?hP&D`oUl>YOcq9_8J z|DyOu@z2jlr{*<=2^YRQgL2$WGk)|}Dv^^(kSXMAa_!o}p)K?}TmohvP41gK=vmTw zBSoN%U7J04hrog|ErGs(PCo_v>|I=-31yyrepWPz#?D_~$fgJ&t$1b*G}N93aRHT1 zo%iyNwv6cnT|t^959d9oy>Yemza*kK-Z4#QQ;&eqDL4B))5aHQ^Q;@3q+wnf>AxdE zl~mfANZr##09h9~x^IUI7||bB?&WUeTX3d9!5#1(YMluK@nCa8(m-=wc;y3CUYaou zrgktzh$VkIdro>Ksq|UJ^V}oDjr@@V5IF5&Ykr_4hEKwEGi?Ji8PhvPgb4%c_kmYd z+^Rk{M@1aC{1@z=$_@VFBU-3fZ)i2bsnQ{hToR?$GESP=al3~Q1OnBL#*#=gYtR_z zZTnK(bH^j55|**!cJY6SA7F!^MHyXe)?fyO!1t<1I+Zt9WgZw+3CPn_Gqa`rSG+Xa z3PSE#|2t@L@r15=r?oqoGVqi+d-+B?d?tPXYNeeHJ1f^Oirmu&eb`sDXtXH8vD@&A zPCSF5SL;^Ei^f=DT&5bcTeGA&(vn}Cl6dp-cUJDp2j8@8>%PynxTN(@@X4lbbBm54 zA$=EiS`u&8Jb`-X?d-A*hxJW1UFIkb;(|yHC5~$YpeKUFQN4*qFP62PoWBnhfLoHM z(pGANFTj%sqRUJA#v{hiW<2 zl6+JW%tT5H!l!%AUI^dof1h@)hVWKj+G=35<9J?XQl|hN+!evFu}B7F@H^G?kU7uv zwWssBZR?o}ha`Pm(gbFSTn+GQlIz4&@rdAJN3K0qOE_$AA7=Wl(8}4rQWY8$5tpz) z8n0a-E+r9L>AZsF$%e}Vdwavr@#w+G2c=g106pF#IEy5KIDyolz5>SA0RBsUwSpqW zEKOk4BA=*a2svaBGGRC}c!sOYM4db|We64G4A_}HsgF#03+(P&z4dxl>qz&6{~>+k zmn&d_gK-yWRuuSlCF!c-*)j?8w>y*VMsSAIg_@6+ZG7gDSmSwLhw zs*jKD*bX%_4=wziauxtLLlt0Z)qaYVDlJIgkoOZ=pQ_xxT6=)czo7M0&n-D+iqzvA z$wBXfe?+H!>srv;F>Luwdx-)%AbMJD*}^VYE;~5*2^ZB?ehO^+11hkp|3WcVRO)S& zuZXguI}=upxm1IQX4TfX#=Rtc2jdp4e8JOm^K%NLtihZ6F>As3>4=uJd zq|1!7@_Yb%fpxp*)vk-oCV>(bvuOi0 z75vA>sr`h3r>?jl{1~Co2Hz=cVwY%)J4l)_O6QSuLvoGIT!BMcB&vjX`GcGLkp62t8*&5(r3FN2}3 zum6o@7H{<2gUkV~AAJRNq>*y|1u1BMeSvWNdgv@3R>q#@@ww>FH#=h|;kS}PwSh!6 z64kqqF6pE)!PdlaKm|9h|NlFVjscI5zO6%v!ZXIZfzw13T{M?^%`Mo2+paWKlC{OD zd=HNiIF;bΞ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 i\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs true;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n \r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [ /system identity get name ];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/368/b69ddb1c\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 09:35:02 01.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\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# check and download required certificate\r\ + \n# Usage: \$CertificateAvailable \"Common Name\" \"intended use for certi\ + ficate (e.g. \"fetch\", \"tls\", \"all\", \"undefined\")\"\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# download and import certificate\r\ + \n# Usage: \$CertificateDownload \"Common Name\"\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 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 http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 warning (\$0 . \" Failed downloading certificate with CommonN\ + ame '\" . \$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# name a certificate by its common-name\r\ + \n# Usage: \$CertificateNameByCN \"Common Name\"\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local FwAddrListsUrl (\$GlobalScriptsUrl . \"fw-addr-lists.d/\");\r\ + \n :local FwAddrListsIndexUrl (\$FwAddrListsUrl . \"index\");\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHuge;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=([ :len \$1 ] - 1) do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick \$1 \$I ] ] ] != \"num\ + \") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local FwAddrListsIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$FwAddrListsIndex = false) do={\r\ + \n :set FwAddrListsIndex [ :tolf [ \$FetchHuge \$ScriptName \$FwAddrL\ + istsIndexUrl false ] ];\r\ + \n :if (\$FwAddrListsIndex = false && \$I < 5) do={\r\ + \n :log debug (\$ScriptName . \" Failed downloading address-list in\ + dex, \" . \$I . \". try from: \" . \$FwAddrListsIndexUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$FwAddrListsIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$FwAddrListsIndexUrl);\r\ + \n :set FwAddrListsIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach FwListFile in=[ :deserialize \$FwAddrListsIndex delimiter=\"\ + \\n\" from=dsv options=dsv.plain ] do={\r\ + \n :local FwListName (\$FwListFile->0);\r\ + \n :local Delim [ \$FindDelim \$FwListName ];\r\ + \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] > 0) do={ :set FwListName [ :pick \$FwLis\ + tName 0 \$Delim ]; }\r\ + \n\r\ + \n :local FwListUrl (\$FwAddrListsUrl . \$FwListName);\r\ + \n :if ([ :len \$FwListName ] > 0) do={\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$FwAddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHuge \$ScriptName \$FwListUrl false ]\ + \_];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$FwListName . \"' from: \" . \$FwListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Delim [ \$FindDelim \$Line ];\r\ + \n :if (\$Delim = 0) do={ :set Line \"\"; };\r\ + \n :if ([ :len \$Line ] = 0) do={ :set Line \"#\"; }\r\ + \n :if ([ :pick \$Line 0 1 ] != \"#\") do={\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address [ :pick \$Line 0 [ \$FindDelim \$Line ] ];\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address: \ + \" . \$Line->0);}\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName .\".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \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" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" 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" name=dns.quad9.net \ + type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +/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 +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 +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="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=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +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 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="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Setup Global Environment for scripts" 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="Windows Update script" disabled=yes interval=2d5m name=\ + WU-script-run-schedule on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" disabled=yes interval=1d name="DNS Cache Flush" \ + on-event=DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" disabled=yes name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260504/20260504060002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504060002-Diff-Config.rsc new file mode 100644 index 0000000..a5b360b --- /dev/null +++ b/MikroMaster/history/20260504/20260504060002-Diff-Config.rsc @@ -0,0 +1,8 @@ +3261c3261 +< # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +--- +> # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +3275c3275 +< # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +--- +> # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding -- 2.52.0