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;
}
}