## Caps-Man auto access-list ##
## Written by: BrasDeutscher,PA,Brazil ##
## Works on RouterOS v6.37rc27 ##
{
# set min signal range here - options= -80..80 -70..70 -60..60 , only copy and paste #
:global rg "-80..80"
## !!-- DO NOT CHANGE ANY MORE BELOW --!! ##
:global sv0 "dhcp0"
:global sv1 "dhcp1"
:global del "100ms"
:global dl1
:global dl2
:global dl3
:global dl4
:global mac0
:global mac1
:global stat
:global statx
:global txt0 "$sv0"
:global txt1 "$sv1"
:global cap1
:global cap2
:global cap3
:global cap4
:global cap5
:global all
:foreach d in=[/ip dhcp-server lease find where server="$sv0" ! dynamic ! disabled ] do={
:set stat [/ip dhcp-server lease get $d status ];
:set statx [:len $stat ];
:if ("$statx" = "5" ) do={
:set mac0 [/ip dhcp-server lease get $d mac-address ];
:if ([/caps-man access-list find where mac-address="$mac0" comment="$txt0" ] = "" ) do={
:set all [/caps-man access-list add mac-address="$mac0" interface="all" signal-range="$rg" ssid-regexp="" \
action=accept comment="$txt0" ];
:log warning ("ACL->Server:$sv0 Comment:$txt0 Mac:$mac0 for all Caps");
}}}
:foreach e in=[/ip dhcp-server lease find where server="$sv1" ! dynamic ! disabled ] do={
:set stat [/ip dhcp-server lease get $e status ];
:set statx [:len $stat ];
:if ("$statx" = "5" ) do={
:set mac1 [/ip dhcp-server lease get $e mac-address ];
:if ([/caps-man access-list find where mac-address="$mac1" comment="$txt1" ] = "" ) do={
:set cap1 [/caps-man access-list add mac-address="$mac1" interface=cap1 signal-range="$rg" ssid-regexp="" \
action=accept comment="$txt1" ];
:set dl1 [:delay $del
:set cap2 [/caps-man access-list add mac-address="$mac1" interface=cap2 signal-range="$rg" ssid-regexp="" \
action=accept comment="$txt1" ]];
:set dl2 [:delay $del
:set cap3 [/caps-man access-list add mac-address="$mac1" interface=cap3 signal-range="$rg" ssid-regexp="" \
action=accept comment="$txt1" ]];
:set dl3 [:delay $del
:set cap4 [/caps-man access-list add mac-address="$mac1" interface=cap4 signal-range="$rg" ssid-regexp="" \
action=accept comment="$txt1" ]];
:set dl4 [:delay $del
:set cap5 [/caps-man access-list add mac-address="$mac1" interface=cap5 signal-range="$rg" ssid-regexp="" \
action=accept comment="$txt1" ]];
:log warning ("ACL->Server:$sv1 Comment:$txt1 Mac:$mac1 for Cap 1,2,3,4,5");
}}}}
## Caps-Man auto access-list Schedule Version with 2m Interval ##
## Written by: BrasDeutscher,PA,Brazil ##
## Works on RouterOS v6.37rc27 ##
/system scheduler
add comment="## Caps-Man auto access-list ##" interval=2m name=\
"## Caps-Man auto access-list ##" on-event="{\r\r\
\n# set min signal range here - options= -80..80 -70..70 -60..60 , only \
copy and paste # \r\r\
\n:global rg \"-80..80\"\r\r\
\n\r\r\
\n## !!-- DO NOT CHANGE ANY MORE BELOW --!! ##\r\r\
\n:global sv0 dhcp0\r\r\
\n:global sv1 dhcp1\r\r\
\n:global del 100ms\r\r\
\n:global dl1\r\r\
\n:global dl2\r\r\
\n:global dl3\r\r\
\n:global dl4\r\r\
\n:global mac0\r\r\
\n:global mac1\r\r\
\n:global stat\r\r\
\n:global statx\r\r\
\n:global txt0 \"\$sv0\"\r\r\
\n:global txt1 \"\$sv1\"\r\r\
\n:global cap1\r\r\
\n:global cap2\r\r\
\n:global cap3\r\r\
\n:global cap4\r\r\
\n:global cap5\r\r\
\n:global all\r\r\
\n:foreach d in=[/ip dhcp-server lease find where server=\"\$sv0\" dynamic\
=no disabled=no ] do={\r\r\
\n:set stat [/ip dhcp-server lease get \$d status ];\r\r\
\n:set statx [:len \$stat ];\r\r\
\n:if (\"\$statx\" = 5 ) do={\r\r\
\n:set mac0 [/ip dhcp-server lease get \$d mac-address ];\r\r\
\n:if ([/caps-man access-list find where mac-address=\$mac0 comment=\"\$tx\
t0\" ] = \"\" ) do={\r\r\
\n:set all [/caps-man access-list add mac-address=\$mac0 interface=all sig\
nal-range=\"\$rg\" ssid-regexp=\"\" \\\r\r\
\n action=accept comment=\"\$txt0\" ]; \r\r\
\n:log warning (\"ACL->Server:\$sv0 Comment:\$txt0 Mac:\$mac0 for all Caps\
\");\r\r\
\n}}}\r\r\
\n:foreach e in=[/ip dhcp-server lease find where server=\"\$sv1\" dynamic\
=no disabled=no ] do={\r\r\
\n:set stat [/ip dhcp-server lease get \$e status ];\r\r\
\n:set statx [:len \$stat ];\r\r\
\n:if (\"\$statx\" = 5 ) do={\r\r\
\n:set mac1 [/ip dhcp-server lease get \$e mac-address ];\r\r\
\n:if ([/caps-man access-list find where mac-address=\$mac1 comment=\"\$tx\
t1\" ] = \"\" ) do={\r\r\
\n:set cap1 [/caps-man access-list add mac-address=\$mac1 interface=cap1 s\
ignal-range=\"\$rg\" ssid-regexp=\"\" \\\r\r\
\n action=accept comment=\"\$txt1\" ];\r\r\
\n:set dl1 [:delay \$del \r\r\
\n:set cap2 [/caps-man access-list add mac-address=\$mac1 interface=cap2 s\
ignal-range=\"\$rg\" ssid-regexp=\"\" \\\r\r\
\n action=accept comment=\"\$txt1\" ]];\r\r\
\n:set dl2 [:delay \$del \r\r\
\n:set cap3 [/caps-man access-list add mac-address=\$mac1 interface=cap3 s\
ignal-range=\"\$rg\" ssid-regexp=\"\" \\\r\r\
\n action=accept comment=\"\$txt1\" ]]; \r\r\
\n:set dl3 [:delay \$del \r\r\
\n:set cap4 [/caps-man access-list add mac-address=\$mac1 interface=cap4 s\
ignal-range=\"\$rg\" ssid-regexp=\"\" \\\r\r\
\n action=accept comment=\"\$txt1\" ]]; \r\r\
\n:set dl4 [:delay \$del \r\r\
\n:set cap5 [/caps-man access-list add mac-address=\$mac1 interface=cap5 s\
ignal-range=\"\$rg\" ssid-regexp=\"\" \\\r\r\
\n action=accept comment=\"\$txt1\" ]]; \r\r\
\n:log warning (\"ACL->Server:\$sv1 Comment:\$txt1 Mac:\$mac1 for Cap 1,2,\
3,4,5\");\r\r\
\n}}}}" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive \
start-time=startup