## Part-1 Create automatic Static dhcp Leases ##
## Written by:BrasDeutscher,PA,Brazil ##
## Tested RouterOS v637rc27 ##
{
## If You not run Hotspot than You can set Your own FlatRate below example "1m/10m" ##
## If no leaf it in blanc, do nothing below ##
:global r ""
## Enter the dhcp server name here ##
:global sv "1"
## Enter your lease Validity Number here, after this the unused lease will be removed ##
:global l "6"
## Enter the Validity letter here, example m or h or d, my default set it 6h ##
:global lx "h"
## !!-- The Number in comments is the number of already assigned Leases --!! ##
## !!-- PLEASE CHANGE NOTHING MORE BELOW --!! ##
:global ip 0.0.0.1
:global ipx
:global ipy
:global mac F1:F1:F1:F1:F1:F1
:global macx
:global lt 10m1s
:global gc
:global cc
:global sc
:global mks
:global a
:global a1
:global date [/system clock get date ]
:global la ("$l" . "$lx")
:global laf
:global lafx
:set mks [/ip dhcp-server lease make-static [find where server="$sv" dynamic ]];
:if ([/ip dhcp-server lease find where server="$sv" address=$ip ! disabled ] = "" ) do={
/ip dhcp-server lease add block-access=yes mac-address=$mac address=$ip server="$sv" rate-limit="$r" comment=0;
}
## Part-2 Create automatic Static dhcp Leases ##
:foreach s in=[/ip dhcp-server lease find where server="$sv" ! dynamic ! disabled ] do={
:if ([/ip dhcp-server lease get $s comment ] = "" ) do={
:set macx [/ip dhcp-server lease get $s mac-address ];
:set ipx [/ip dhcp-server lease get $s address ];
:set gc [/ip dhcp-server lease get [find where address=$ip ] comment ];
:set cc ("$gc"+"1" );
:set a [/ip dhcp-server lease set [find where server="$sv" mac-address=$macx address=$ipx ] use-src-mac=yes rate-limit="$r" \
lease-time="$lt" address-lists="$date" comment="$cc" ];
:set sc [/ip dhcp-server lease set [find where address=$ip ] comment=$cc ];
:log warning ("Make Static Mac:$macx IP:$ipx on Server:$sv Rate-Limit:$r # $cc");
} else={
## Part-3 Removing unused Leases ##
:set laf [/ip dhcp-server lease get $s last-seen ];
:set lafx [:len $laf ];
:if ("$lafx" > 5 ) do={
:if ("$laf" > "$la" ) do={
:set ipy [/ip dhcp-server lease get $s address ];
:set a1 [/ip dhcp-server lease remove [find where address=$ipy ]];
:log warning ("Liberate IP:$ipy nach $laf");
}}}}}