diff --git a/cpu-monitoring b/cpu-monitoring index 39692e1..ca5527f 100644 --- a/cpu-monitoring +++ b/cpu-monitoring @@ -1,36 +1,24 @@ -local cpuarray -local rebootIfHigh false -set cpuarray ([/system resource get value-name=cpu-load]) -#Change the value below to change the number of CPU load sample to average -local cpusample 20 -for i from=1 to=[$cpusample -1] do={ - delay 950ms; +:local cpuarray +:set cpuarray ([/system resource get value-name=cpu-load]) +:local rebootIfHigh true +:local cpusample 40 +:for i from=1 to=[$cpusample -1] do={ + delay 500ms; set cpuarray ([/system resource get value-name=cpu-load],$cpuarray) } -put $cpuarray -local totalcpuarray 0 -#calculating the average -foreach value in=$cpuarray do={ set totalcpuarray ($totalcpuarray + $value)} -:put $totalcpuarray +:local totalcpuarray 0 +:foreach value in=$cpuarray do={ set totalcpuarray ($totalcpuarray + $value)} local avgcpu ($totalcpuarray / [:len $cpuarray]) -if ($avgcpu > 65) do={ - :global ConnectionAvailable - $ConnectionAvailable - if ($ConnectionAvailable=true) do={ - global CHATID - global BOTID - local maxcpu ($cpuarray->0) - local mincpu ($cpuarray->0) - foreach i in=$cpuarray do={ - if ($i > $maxcpu) do={ set maxcpu $i} - if ($i < $mincpu) do={ set mincpu $i} - } - local sendToTelegram ("Mikrotik ".[/system resource get value-name=board-name]."(".[/sy id get value-name=name].") :%0A\E2\9A\A0 \E2\9A\A0 CPU Load Report%0AMax: $maxcpu%0AMin: $mincpu%0AAverage: $avgcpu%25%0ACPU Samples: $cpusample%0AReboot if CPU sample show highload: $rebootIfHigh") - /tool fetch url="https://api.telegram.org/bot$BOTID/sendMessage\?chat_id=$CHATID&text=$sendToTelegram&parse_mode=html" keep-result=no; - } else={ - log warning message="Cannot send message to telegram. is internet connected?" - } +if ($avgcpu > 68) do={ + :global telegram + :local maxcpu ($cpuarray->0) + :local mincpu ($cpuarray->0) + :foreach i in=$cpuarray do={ + if ($i > $maxcpu) do={ set maxcpu $i} + if ($i < $mincpu) do={ set mincpu $i} + } + :local sendToTelegram ("Mikrotik ".[/system resource get value-name=board-name]."(".[/sy id get value-name=name].") :%0A\E2\9A\A0 \E2\9A\A0 CPU Tinggi Gan!!\ + %0AMax: $maxcpu%0AMin: $mincpu%0ARata-Rata: $avgcpu%25%0AJumlah Data: $cpusample%0AReboot if CPU sample show highload: $rebootIfHigh") + $telegram type=message text=$sendToTelegram mode=html if ($rebootIfHigh = true) do={/system reboot} -} else={ - nothing -} +} \ No newline at end of file diff --git a/firewall-raw-video-stream.rsc b/firewall-raw-video-stream.rsc new file mode 100644 index 0000000..ca2394e --- /dev/null +++ b/firewall-raw-video-stream.rsc @@ -0,0 +1,68 @@ +/ip firewall raw +add action=add-dst-to-address-list address-list=VIDEO-STREAMING \ + address-list-timeout=5d chain=prerouting comment=TWITCH content=\ + .twitchcdn.com disabled=no !dscp !dst-address !dst-address-list \ + !dst-address-type !dst-limit !dst-port !fragment !hotspot !icmp-options \ + !in-interface !in-interface-list !ingress-priority !ipsec-policy \ + !ipv4-options !limit log=no log-prefix="" !nth !out-interface \ + !out-interface-list !packet-size !per-connection-classifier !port \ + !priority !protocol !psd !random !src-address !src-address-list \ + !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \ + !tls-host !ttl +add action=add-dst-to-address-list address-list=VIDEO-STREAMING \ + address-list-timeout=5d chain=prerouting comment=TIKTOK content=\ + .tiktokcdn.com disabled=yes !dscp !dst-address !dst-address-list \ + !dst-address-type !dst-limit !dst-port !fragment !hotspot !icmp-options \ + !in-interface !in-interface-list !ingress-priority !ipsec-policy \ + !ipv4-options !limit log=no log-prefix="" !nth !out-interface \ + !out-interface-list !packet-size !per-connection-classifier !port \ + !priority !protocol !psd !random !src-address !src-address-list \ + !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \ + !tls-host !ttl +add action=add-dst-to-address-list address-list=VIDEO-STREAMING \ + address-list-timeout=5d chain=prerouting comment=YOUTUBE content=\ + .googlevideo.com disabled=yes !dscp !dst-address !dst-address-list \ + !dst-address-type !dst-limit !dst-port !fragment !hotspot !icmp-options \ + !in-interface !in-interface-list !ingress-priority !ipsec-policy \ + !ipv4-options !limit log=no log-prefix="" !nth !out-interface \ + !out-interface-list !packet-size !per-connection-classifier !port \ + !priority !protocol !psd !random !src-address !src-address-list \ + !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \ + !tls-host !ttl +add action=add-dst-to-address-list address-list=VIDEO-STREAMING \ + address-list-timeout=5d chain=prerouting comment="NIMO TV" content=\ + .nimo.tv disabled=no !dscp !dst-address !dst-address-list \ + !dst-address-type !dst-limit !dst-port !fragment !hotspot !icmp-options \ + !in-interface !in-interface-list !ingress-priority !ipsec-policy \ + !ipv4-options !limit log=no log-prefix="" !nth !out-interface \ + !out-interface-list !packet-size !per-connection-classifier !port \ + !priority !protocol !psd !random !src-address !src-address-list \ + !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \ + !tls-host !ttl +add action=jump chain=prerouting comment="GO TO VIDEO CHAIN" content=video \ + disabled=no !dscp !dst-address !dst-address-list !dst-address-type \ + !dst-limit !dst-port !fragment !hotspot !icmp-options !in-interface \ + !in-interface-list !ingress-priority !ipsec-policy !ipv4-options \ + jump-target=video !limit log=no log-prefix="" !nth !out-interface \ + !out-interface-list !packet-size !per-connection-classifier !port \ + !priority !protocol !psd !random !src-address !src-address-list \ + !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \ + !tls-host !ttl +add action=add-dst-to-address-list address-list=VIDEO-STREAMING \ + address-list-timeout=5d chain=video comment="FACEBOOK VIDEO" content=\ + .fbcdn.net disabled=no !dscp !dst-address !dst-address-list \ + !dst-address-type !dst-limit !dst-port !fragment !hotspot !icmp-options \ + !in-interface !in-interface-list !ingress-priority !ipsec-policy \ + !ipv4-options !limit log=no log-prefix="" !nth !out-interface \ + !out-interface-list !packet-size !per-connection-classifier !port \ + !priority !protocol !psd !random !src-address !src-address-list \ + !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \ + !tls-host !ttl +add action=return chain=video comment="RETURN TO BEFORE VIDEO CHAIN" !content \ + disabled=no !dscp !dst-address !dst-address-list !dst-address-type \ + !dst-limit !dst-port !fragment !hotspot !icmp-options !in-interface \ + !in-interface-list !ingress-priority !ipsec-policy !ipv4-options !limit \ + log=no log-prefix="" !nth !out-interface !out-interface-list !packet-size \ + !per-connection-classifier !port !priority !protocol !psd !random \ + !src-address !src-address-list !src-address-type !src-mac-address \ + !src-port !tcp-flags !tcp-mss !time !tls-host !ttl diff --git a/first-setup b/first-setup index 77155af..096b8a6 100644 --- a/first-setup +++ b/first-setup @@ -11,30 +11,40 @@ } } #source: https://s.id/q4f-O -:global ConvertLowerCase do={ - :local alphabet {"A"="a";"B"="b";"C"="c";"D"="d";"E"="e";"F"="f";"G"="g";"H"="h";"I"="i";"J"="j";"K"="k";"L"="l";"M"="m";"N"="n";"O"="o";"P"="p";"Q"="q";"R"="r";"S"="s";"T"="t";"U"="u";"V"="v";"X"="x";"Z"="z";"Y"="y";"W"="w"}; - :local result - :local character - :for strings from=0 to=([:len $1] - 1) do={ - :local single [:pick $1 $strings] - :set character ($alphabet->$single) - :if ([:typeof $character] = "str") do={set single $character} - :set result ($result.$single) - } - :return $result -} +:global convert do={ + :local Input + :if ([:len $text] > 0) do={:set Input [ :tostr $text ];} else={:set Input [ :tostr $2 ];} + :local Return ""; + :if ([ :len $Input ] > 0) do={ + :local Chars + :local Subs + :if (($target="urlencode") or ($1 = "urlencode")) do={ + :set Chars " !\"#\$%&'()*+,:;<=>\?@[\\]^`{|}~"; + :set Subs { "%20"; "%21"; "%22"; "%23"; "%24"; "%25"; "%26"; "%27"; "%28"; "%29"; "%2A"; "%2B"; "%2C"; "%3A"; "%3B"; "%3C"; "%3D"; "%3E"; "%3F"; "%40"; "%5B"; "%5C"; "%5D"; "%5E"; "%60"; "%7B"; "%7C"; "%7D"; "%7E" }; + } + :if (($target="uppercase") or ($1 = "uppercase")) do={ + :set Chars "fteklgxpzwqdchbraunomsiyvj" + :set Subs {"F";"T";"E";"K";"L";"G";"X";"P";"Z";"W";"Q";"D";"C";"H";"B";"R";"A";"U";"N";"O";"M";"S";"I";"Y";"V";"J"} + } else={ + :if (($target != "urlencode") and ($1 != "urlencode")) do={ + :set Chars "FTEKLGXPZWQDCHBRAUNOMSIYVJ" + :set Subs {"f";"t";"e";"k";"l";"g";"x";"p";"z";"w";"q";"d";"c";"h";"b";"r";"a";"u";"n";"o";"m";"s";"i";"y";"v";"j"} + } + } + :put $Chars + :put $Subs + :for I from=0 to=([ :len $Input ] - 1) do={ + :local Char [ :pick $Input $I ]; + :local Replace [ :find $Chars $Char ]; -:global ConvertUpperCase do={ - :local alphabet {"a"="A";"b"="B";"c"="C";"d"="D";"e"="E";"f"="F";"g"="G";"h"="H";"i"="I";"j"="J";"k"="K";"l"="L";"m"="M";"n"="N";"o"="O";"p"="P";"q"="Q";"r"="R";"s"="S";"t"="T";"u"="U";"v"="V";"x"="X";"z"="Z";"y"="Y";"w"="W"}; - :local result - :local character - :for strings from=0 to=([:len $1] - 1) do={ - :local single [:pick $1 $strings] - :set character ($alphabet->$single) - :if ([:typeof $character] = "str") do={set single $character} - :set result ($result.$single) - } - :return $result + :if ([ :len $Replace ] > 0) do={ + :set Char ($Subs->$Replace); + } + :set Return ($Return . $Char); + } + } + + :return $Return; } :global ConnectionAvailable do={ :local internet @@ -87,7 +97,7 @@ :local str1 ("fCnR70RysX1MLh8wsqtLqDKHVr0k3QB4vCO04w2tk67moaIyn3Vh5HiQw92c4xlK1VQiDQA0u336O3EMzl3Yde0rL8b5UWKEsBtM5Z3Y2657PWt22w2x584V21dh3zEKzqW6GvY22I1MRYxEv4Y8u8ENqFN5gE1W5kt1HdgeD88jttsNe89X4ZxEMiVAIZS3AW7N5K6gunQNk77gNssfoCuP23JYGE7iG5DS4Uy8ws8rKIO6K2NbBRcm6Mdvfq3PADah6SCBuExd2vHaOOf533royUpEMRJvlreJSUWK5wRPmmlx81iFI6Yr"); :local str2 ("mA4xx0DJ3EDETaVWfhImu8FU584XjUIttwA29HkmiOmvN2tGmn4GqBcpo0Qp6O838PFc9uZxFwXQ8OKC1aM4X2uojX8E4H555JhFDdYQ9ZsEG8PFXFbbszBAg10COP0Ku2d0tfwT72jXKDnFaDkWMyLUtnQ3l7VhV8eyuaFzVW8h3t55xWvFQrKgoFs842nE5T4qqiT7Ply6YFylrEToTZZNtvw0NkRs3Wcz4qAoEhsE0t6JvHV7e2Y7L7T9c7dZ5JkcF1VAIxpUJ7EQCy62JnxaH1AqSGB49nFI52bhf1UHC2b9UjgXo1VC"); :local str3 ("4Trr6EncZu6ssMJWe81z8PBpZcy2v58UXgg8m280JxeqGbykd3niaZvY24B3e65FXKkW3yBTTgfV1fII7b8uQURf4FFy7FASbdaEuHfmcpi5l44sb0FO7sQg06MA80LE0l8gJ2k1NzAPTUXJL24Ajvf0ZrvkbMv6VTjMO5lD0Mv5Ljw01w237fKioVn1f2O8eHUq19kMEk1zr5B0ASKLNpL3f0LA3rs18u5jPq7w7VESzhNB89AGFICY72F2ofCs85VDV667CkjmJ0aqg9984I2s5209uu73WXRVc8UMF2PMBEV2J94XFR7c"); - :local string + :local string :if (($secondx % 2) = 0) do={ set string $str1 } else={ @@ -124,5 +134,3 @@ global UrlEncode; } :return $Return; } - - diff --git a/telegram-func.rsc b/telegram-func.rsc index 42c5d7c..3b36e52 100644 --- a/telegram-func.rsc +++ b/telegram-func.rsc @@ -1,17 +1,13 @@ global telegram do={ - :local noParam $1 - :if ($noParam = "help") do-={ - - } - :local botToken ("xxxxxxxx:xxxxXXXxxxXxXXXxxxXXxXXxXx") - :local chatId 00000000 + :local botToken ("xxXXxxXXxxxxxXXXX") + :local chatId ("000000") :local url ("https://api.telegram.org/bot$botToken/") :local getid do={ :local cur 0 :local lkey [:len $key] :local res "" :local p - + :if ([:len $block]>0) do={ :set p [:find $text $block $cur] :if ([:type $p]="nil") do={ @@ -19,7 +15,7 @@ global telegram do={ } :set cur ($p+[:len $block]+2) } - + :set p [:find $text $key $cur] :if ([:type $p] != "nil") do={ :set cur ($p+lkey+2) @@ -41,43 +37,55 @@ global telegram do={ :if ($type = "message") do={ :set url ($url."sendMessage\?chat_id=$chatId&text=$text") :if ([:len $mode] > 0) do={set url ($url."&parse_mode=$mode")} - :put $url - /tool fetch url="$url" keep-result=no + :do { + /tool fetch url="$url" keep-result=no + } on-error={ + $logAndPut msg="Unknown Error Occured" + } } :if ($type = "audio") do={ :set url ($url."sendAudio\?chat_id=$chatId&audio=$mediaUrl") :if ([:len $text] > 0) do={:set url ($url."&caption=$text")} :if ([:len $mode] > 0) do={:set url ($url."&parse_mode=$mode")} - :put $url - /tool fetch url="$url" keep-result=no + :do { + /tool fetch url="$url" keep-result=no + } on-error={ + $logAndPut msg="Unknown Error Occured" + } + } :if (($type = "image") or ($type = "photo") or ($type = "picture")) do={ :set url ($url."sendPhoto\?chat_id=$chatId&photo=$mediaUrl") :if ([:len $text] > 0) do={:set url ($url."&caption=$text")} :if ([:len $mode] > 0) do={:set url ($url."&parse_mode=$mode")} - :put $url - /tool fetch url="$url" keep-result=no + :do { + /tool fetch url="$url" keep-result=no + } on-error={ + $logAndPut msg="Unknown Error Occured" + } } :if ($type = "editMessage") do={ :local toBeEdited [:toarray $edit] - :put $toBeEdited :set url ($url."sendMessage\?chat_id=$chatId&text=$text") - :put $url :local send ([/tool fetch mode=https http-method=get url=$url as-value output=user ]->"data") :local msgid [$getid key="message_id" text=$send] :if ([:len $delay] > 0) do={:delay $delay;} - :foreach index in=$toBeEdited do={ - :local editurl ("https://api.telegram.org/bot$botToken/editMessageText\?chat_id=$chatId&message_id=$msgid&text=$index") - :put $editurl - /tool fetch url=$editurl - :if ([:len $delay] > 0) do={:delay $delay;} + :do { + :for i from=0 to=([:len $toBeEdited] - 1) do={ + :local index [:pick $toBeEdited $i]; + :local editurl ("https://api.telegram.org/bot$botToken/editMessageText\?chat_id=$chatId&message_id=$msgid&text=$index"); + /tool fetch url=$editurl; + :if ([:len $delay] > 0) do={:delay $delay;} + } + } on-error={ + $logAndPut msg="Unknown Error Occured"; } + } } :if (([:len $type] < 1) and ([:len $text] > 0)) do={ - :set url ($url."sendMessage\?chat_id=$chatId&text=$text") - :if ([:len $mode] > 0) do={set url ($url."&parse_mode=$mode")} - :put $url - /tool fetch url="$url" keep-result=no + :set url ($url."sendMessage\?chat_id=$chatId&text=$text"); + :if ([:len $mode] > 0) do={set url ($url."&parse_mode=$mode")}; + /tool fetch url="$url" keep-result=no; } }