added firewall raw video stream

This commit is contained in:
furaihan 2021-05-11 14:34:40 +07:00
parent 381e8cc1ac
commit 8745549c15
4 changed files with 155 additions and 83 deletions

View file

@ -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 <b>CPU Load Report</b>%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 <b>CPU Tinggi Gan!!</b>\
%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
}
}

View file

@ -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

View file

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

View file

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