Skip to content

Commit

Permalink
Merge pull request #3 from furaihan/modified
Browse files Browse the repository at this point in the history
- mengeluarkan setiap script ke dalam versi teks agar bisa dibaca langsung tanpa harus melakukan import ke mikrotik
- menambah fungsi lowercase `func_lowercase`
- modifikasi perintah hotspot, menambahkan fungsi lowercase supaya jika ada parameter yang menggunakan huruf kapital tetap bisa terbaca (misalkan ada user yang mengetikkan `/hotspot SesSion CoUnT` maka akan bisa terbaca dan bot akan mengirimkan balasan)
- menghapus `tg_cmd_start` dan `tg_cmd_hi` (penjelasan ada dibawah)
- menambah alternative command pada tg_getUpdates, apabila user mengetikkan: `/hi`, `/start`, `/hai`, `/halo`, `/hello`, `/bantuan`. Maka, akan menjalankan script `tg_cmd_help`. Dengan kata lain `tg_cmd_help` juga menangani perintah perintah tersebut
- berlaku juga pada `/hotspot`. Apabila user mengetikkan `/hs` maka akan diarahkan ke `tg_cmd_hotspot`
- modifikasi tg_cmd_dhcp agar menggunakan fungsi lowercase dan menghapus parameter yang tidak perlu
  • Loading branch information
dwichan0905 authored Oct 6, 2020
2 parents 0af5276 + 0fda7bc commit 2abbe17
Show file tree
Hide file tree
Showing 20 changed files with 894 additions and 176 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ _Script_ ini digunakan untuk mengontrol MikroTik Anda hanya dengan menggunakan s
_Script_ ini bersifat _open-source_. Anda dapat memodifikasi, menambah, ataupun mengurangi isi dari _script_ ini selama tidak melanggar ketentuan yang berlaku dalam lisensi _MIT_. _Script_ ini **TIDAK ADA GARANSI** selama Anda menggunakannya.

# Kontribusi
Kontribusi pada _repository_ ini hanya terbatas pada MikroTik Script dan Dokumentasi saja. Anda dapat berkontribusi dengan cara _Fork repository ini_, membuat _branch_ baru, lakukan perubahan, dan lakukan _Pull Request_ ke _repository_ ini. Deskripsikan apa saja yang Anda tambahkan dan apa yang Anda ubah di dalam _repository_ ini. Jangan lupa untuk menuliskan script bantuan di ```tg_cmd_start```, ```tg_cmd_help```, dan ```tg_cmd_hi``` untuk membantu apabila pengguna script ini lupa dengan perintah yang harus ia tuliskan..
Kontribusi pada _repository_ ini hanya terbatas pada MikroTik Script dan Dokumentasi saja. Anda dapat berkontribusi dengan cara _Fork repository ini_, membuat _branch_ baru, lakukan perubahan, dan lakukan _Pull Request_ ke _repository_ ini. Deskripsikan apa saja yang Anda tambahkan dan apa yang Anda ubah di dalam _repository_ ini. Jangan lupa untuk menuliskan script bantuan di ```tg_cmd_help``` untuk membantu apabila pengguna script ini lupa dengan perintah yang harus ia tuliskan..

# Riwayat Versi
#### 1.2 (11 Agustus 2019)
Expand Down Expand Up @@ -64,6 +64,7 @@ Ketikkan perintah berikut pada kolom _chatting_ Anda dengan _bot_ Telegram Anda.
| ``/dhcp`` | ``lease`` | menampilkan seluruh detail pada DHCP Lease| ``/dhcp lease`` |
| ``/interface`` | ``show`` | Menampilkan status terhubungnya antar port Ethernet di MikroTik | ``/interface show`` |
| ``/interface`` | ``show all`` | Menampilkan status terhubungnya seluruh interface di MikroTik | ``/interface show all`` |
| ``/hotspot`` | ``help`` | Menampilkan detail bantuan untuk perintah `/hotspot` | ``/hotspot help`` |
| ``/hotspot`` | ``session count`` | Menampilkan jumlah user yang sedang aktif | ``/hotspot session count`` |
| ``/hotspot`` | ``session showall`` | Menampilkan seluruh detail user yang sedang aktif mulai dari Username sampai Uptime (kecuali password) | ``/hotspot session showall`` |
| ``/hotspot`` | ``session deauth-by-user <username>`` | Mencabut _session_ perangkat berdasarkan Username | ``/hotspot session deauth-by-user telecomadmin`` |
Expand Down
63 changes: 63 additions & 0 deletions script text/func_fetch
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#########################################################
# Wrapper for /tools fetch
# Input:
# mode
# upload=yes/no
# user
# password
# address
# host
# httpdata
# httpmethod
# check-certificate
# src-path
# dst-path
# ascii=yes/no
# url
# resfile

:local res "fetchresult.txt"
:if ([:len $resfile]>0) do={:set res $resfile}
#:put $res

:local cmd "/tool fetch"
:if ([:len $mode]>0) do={:set cmd "$cmd mode=$mode"}
:if ([:len $upload]>0) do={:set cmd "$cmd upload=$upload"}
:if ([:len $user]>0) do={:set cmd "$cmd user=\"$user\""}
:if ([:len $password]>0) do={:set cmd "$cmd password=\"$password\""}
:if ([:len $address]>0) do={:set cmd "$cmd address=\"$address\""}
:if ([:len $host]>0) do={:set cmd "$cmd host=\"$host\""}
:if ([:len $"http-data"]>0) do={:set cmd "$cmd http-data=\"$"http-data"\""}
:if ([:len $"http-method"]>0) do={:set cmd "$cmd http-method=\"$"http-method"\""}
:if ([:len $"check-certificate"]>0) do={:set cmd "$cmd check-certificate=\"$"check-certificate"\""}
:if ([:len $"src-path"]>0) do={:set cmd "$cmd src-path=\"$"src-path"\""}
:if ([:len $"dst-path"]>0) do={:set cmd "$cmd dst-path=\"$"dst-path"\""}
:if ([:len $ascii]>0) do={:set cmd "$cmd ascii=\"$ascii\""}
:if ([:len $url]>0) do={:set cmd "$cmd url=\"$url\""}

:put ">> $cmd"

:global FETCHRESULT
:set FETCHRESULT "none"

:local script "\
:global FETCHRESULT;\
:do {\
$cmd;\
:set FETCHRESULT \"success\";\
} on-error={\
:set FETCHRESULT \"failed\";\
}\
"
:execute script=$script file=$res
:local cnt 0
#:put "$cnt -> $FETCHRESULT"
:while ($cnt<100 and $FETCHRESULT="none") do={
:delay 1s
:set $cnt ($cnt+1)
#:put "$cnt -> $FETCHRESULT"
}
:local content [/file get [find name=$res] content]
#:put $content
if ($content~"finished") do={:return "success"}
:return $FETCHRESULT
10 changes: 10 additions & 0 deletions script text/func_lowercase
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
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
40 changes: 40 additions & 0 deletions script text/reboot-report
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
:local send [:parse [/system script get tg_sendMessage source]]
:put $params
:put $chatid
:put $from

:local reportBody ""

:local deviceName [/system identity get name]
:local deviceDate [/system clock get date]
:local deviceTime [/system clock get time]
:local hwModel [/system routerboard get model]
:local rosVersion [/system package get system version]
:local currentFirmware [/system routerboard get current-firmware]
:local upgradeFirmware [/system routerboard get upgrade-firmware]


:set reportBody ($reportBody . "Router Reboot Report for $deviceName%0A")
:set reportBody ($reportBody . "Report generated on $deviceDate at $deviceTime%0A%0A")

:set reportBody ($reportBody . "Hardware Model: $hwModel%0A")
:set reportBody ($reportBody . "RouterOS Version: $rosVersion%0A")
:set reportBody ($reportBody . "Current Firmware: $currentFirmware%0A")
:set reportBody ($reportBody . "Upgrade Firmware: $upgradeFirmware")
if ( $currentFirmware < $upgradeFirmware) do={
:set reportBody ($reportBody . "NOTE: You should upgrade the RouterBOARD firmware!%0A")
}

:set reportBody ($reportBody . "%0A%0A=== Critical Log Events ===%0A" )

:local x
:local ts
:local msg
foreach i in=([/log find where topics~"critical"]) do={
:set $ts [/log get $i time]
:set $msg [/log get $i message]
:set $reportBody ($reportBody . $ts . " " . $msg . "%0A" )
}

:set reportBody ($reportBody . "%0A=== end of report ===%0A")
$send chat=$chatid text=$reportBody mode="Markdown"
14 changes: 14 additions & 0 deletions script text/tg_cmd_cpu
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
:local send [:parse [/system script get tg_sendMessage source]]
:local hotspot [:len [/ip hotspot active find]]

:put $params
:put $chatid
:put $from

:local text "Router ID:* $[/system identity get name] * %0A\
Uptime: _$[/system resource get uptime]_%0A\
CPU Load: _$[/system resource get cpu-load]%_%0A\
RAM: _$(([/system resource get total-memory]-[/system resource get free-memory])/(1024*1024))M/$([/system resource get total-memory]/(1024*1024))M_"

$send chat=$chatid text=$text mode="Markdown"
:return true
45 changes: 45 additions & 0 deletions script text/tg_cmd_dhcp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
:local send [:parse [/system script get tg_sendMessage source]]
:local tolower [:parse [/system script get func_lowercase source]]


:put $params
:put $chatid
:put $from

:local paramsLower [$tolower $params]
:put $paramsLower

:local getVendor false
:if ($paramsLower = "lease") do={
local GetMacVendor do={
:do {
return ([/tool fetch mode=https http-method=get url=("https://api.macvendors.com/".[:pick [:tostr $1] 0 8 ]) as-value output=user ]->"data")
} on-error={
return "unknown vendor"
}
}
:local text
:local number (0)
:set text ("Router ID: $[/system identity get value-name=name]")
:foreach lease in=[/ip dhcp-server lease find] do={
:set number ($number + 1)
set text ($text."====== \F0\9F\97\82 DHCP LEASE ($number) \F0\9F\97\82 ======%0A")
:local addr [/ip dhcp-server lease get value-name=address $lease]
:set text ($text."IP Address: $addr%0A")
:local mac [/ip dhcp-server lease get value-name=mac-address $lease]
:set text ($text."Mac Address: $mac%0A")
:if ($getVendor = "true") do={
:local macvendor [$GetMacVendor $mac]
:set text ($text."Mac Vendor: $macvendor%0A")
}
:local host [/ip dhcp-server lease get value-name=host-name $lease]
:if ([:typeof $host] = "nil") do={set host ("Unknown Hostname")}
:set text ($text."Hostname: $$host%0A")
:local lastseen [/ip dhcp-server lease get value-name=last-seen $lease]
:set text ($text."Uptime: $lastseen%0A")
:local server [/ip dhcp-server lease get value-name=server $lease]
:set text ($text."Server: $server%0A")
}
:set text ($text."=========== END REPORT ===========%0A")
$send chat=$chatid text=("$text") mode="Markdown"
}
10 changes: 10 additions & 0 deletions script text/tg_cmd_disablehotspot
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
:local send [:parse [/system script get tg_sendMessage source]]
:put $params
:put $chatid
:put $from

:local text "All hotspots disabled"

$send chat=$chatid text=$text mode="Markdown"
/ip hotspot disable lantai1
/ip hotspot disable lantai2
10 changes: 10 additions & 0 deletions script text/tg_cmd_enablehotspot
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
:local send [:parse [/system script get tg_sendMessage source]]
:put $params
:put $chatid
:put $from

:local text "All hotspots enabled"

$send chat=$chatid text=$text mode="Markdown"
/ip hotspot enable lantai1
/ip hotspot enable lantai2
9 changes: 9 additions & 0 deletions script text/tg_cmd_forceupdateddns
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
:local send [:parse [/system script get tg_sendMessage source]]
:put $params
:put $chatid
:put $from

:local text "Force Update DDNS"

$send chat=$chatid text=$text mode="Markdown"
/ip cloud force-update
37 changes: 37 additions & 0 deletions script text/tg_cmd_help
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
:local send [:parse [/system script get tg_sendMessage source]]

:put $params
:put $chatid
:put $from

:local text "Router ID:* $[/system identity get name] * %0A\
==================%0A\
MENU TERSEDIA%0A\
==================%0A\
/help%0A\
/start%0A\
/cpu%0A\
/interface%0A\
- show%0A\
/hotspot%0A\
- session%0A\
> count%0A\
> showall%0A\
> deauth-by-user <username>%0A\
> deauth-by-mac <mac address>%0A\
> deauth-by-ip <ip>%0A\
- add <username> <password>%0A\
- delete <username>%0A\
- disable <username>%0A\
- enable <username>%0A\
- setprofile <username> <profile>%0A\
- change-password <username> <password>%0A\
/ping to <ip>%0A\
/public%0A\
/enablehotspot%0A\
/disablehotspot%0A\
/forceupdateddns%0A\
/reboot"

$send chat=$chatid text=$text mode="Markdown"
:return true
Loading

0 comments on commit 2abbe17

Please sign in to comment.