-
Notifications
You must be signed in to change notification settings - Fork 0
/
mikrotik-script
41 lines (33 loc) · 2.05 KB
/
mikrotik-script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/ip firewall filter
add chain=forward action=log log-prefix="new-connection:" log=yes
/system script
add name=sendData policy=read,write source="
:local logMessages [/log find where message~\"new-connection:\"]
:foreach i in=\$logMessages do={
:local message [/log get \$i message]
:local time [/log get \$i time]
:if ([:find \$message \"new-connection:\"] != -1) do={
:local details [:pick \$message 17 [:len \$message]]
:local ip [:pick \$details 0 [:find \$details \" \" -1]]
:local mac [:pick \$details ([:find \$details \" \" -1] + 1) [:len \$details]]
# Mengambil username dari hotspot atau user
:local username [/ip hotspot active get [find where mac-address=\$mac] user]
# Mengambil statistik upload dan download dari interface
:local interface ([/interface find where running and ([get name] ~ \"ether\")] -> [:pick -1]) # Menemukan interface yang sedang berjalan
:local upload ([/interface monitor-traffic interface=\$interface once as-value] -> [:pick -1] -> [:find \$mac] -> get value1)
:local download ([/interface monitor-traffic interface=\$interface once as-value] -> [:pick -1] -> [:find \$mac] -> get value2)
# Menghitung durasi berdasarkan waktu koneksi
:local duration ([:totime \$time] - [:totime [/ip hotspot active get [find where mac-address=\$mac] login-time]])
# Status koneksi
:local status ([/interface monitor-traffic interface=\$interface once as-value] -> [:pick -1] -> [:find \$mac] -> get status)
# Pengiriman data menggunakan tool fetch dengan header dan body yang sesuai
/tool fetch url=\"https://yourdomain/wp-json/mikrotik/v1/data\" \
http-method=post \
http-header-field=\"Content-Type: application/x-www-form-urlencoded\" \
http-data=\"username=\$username&ip=\$ip&mac=\$mac&upload=\$upload&download=\$download&duration=\$duration&interface=\$interface&status=\$status&token=yourtoken\"
}
/log remove \$i
}
"
/system scheduler
add name=scheduleSendData interval=10m on-event=sendData