Community discussions

MikroTik App
 
User avatar
sdischer
Trainer
Trainer
Topic Author
Posts: 128
Joined: Wed Jan 26, 2005 4:58 pm

Script to Automatically Set Rates for Self Created Users

Thu Jan 06, 2011 5:06 pm

Usermanager is a great way to centralize AAA on your network. In addition, it also has facility to allow users to buy credits on your network through hotspot, however, the only limitation it can automatically create is a time limitation. You can create packages that allow access for a day, week, month, etc., but in order to set a rate limit for that customer and their package, you have to manually make that change to the user in Usermanager.

I needed a way to automatically accomplish this so I enlisted the help of my script guru, Andrew Cox. Although I have never met Andrew in person, I can tell you he is a bright guy who is one of the few people I know that truly speaks MikroTik's scripting language. As usual, Andrew rose to the challenge and wrote a few lines of code that function perfectly.

A few notes, first the script uses the user property "credit-price" to determine which package the customer purchased, therefore, you need to have unique prices for each rate limit. For example, if the Gold package is 128k/64k and costs $25, then users that buy the 64k/64k package that costs $25 will get the same rate limit. In this example, just change the price slightly on one of the packages and it will work correctly. For example, make the 128k/64k package $19.95 or something similar.

So, here is the code, past it into a new script item through Winbox, set the scheduler to run it once every minute or so and you will enjoy the benefits of automatic rate limits with self created user accounts.

-- Script---
#Script to add rate limit's to newly created user-manager accounts.
#Written by Andrew Cox | http://www.mikrotik-routeros.com

:local counter
:local check

#Loop through all users in user-manager
:foreach counter in=[/tool user-manager user find] do={

#Check to see if comment contains "RLA" (short for 'rate limit added'). If it doesn't, this account hasn't had a rate limit set yet.
#We only check the first 3 characters, this means you can continue to use the comment field for whatever you like so long as you leave the 'RLA' untouched (if present)
:set check [:pick [/tool user-manager user get $counter value=comment] 0 3]
:if ($check="RLA") do={

#Has RLA, rate limit is already set so ignore

} else={

#Doesn't have RLA Set rate-limit based on initial purchase pricing
:if ([/tool user-manager user get $counter credit-price] ="1000") do={/tool user-manager user set $counter rate-limit="256k/128k" comment="RLA"}
:if ([/tool user-manager user get $counter credit-price] ="2500") do={/tool user-manager user set $counter rate-limit="256k/128k" comment="RLA"}
:if ([/tool user-manager user get $counter credit-price] ="4500") do={/tool user-manager user set $counter rate-limit="96k/48k" comment="RLA"}
:if ([/tool user-manager user get $counter credit-price] ="6000") do={/tool user-manager user set $counter rate-limit="128k/64k" comment="RLA"}
:if ([/tool user-manager user get $counter credit-price] ="7500") do={/tool user-manager user set $counter rate-limit="256k/128k" comment="RLA"}

}

}
--- End of Script---
 
esantiago
just joined
Posts: 5
Joined: Wed Nov 06, 2013 9:40 pm

Re: Script to Automatically Set Rates for Self Created Users

Wed Dec 09, 2015 9:48 pm

Does this script work with user manager on ROs 6.33.3?
 
fesaca
just joined
Posts: 1
Joined: Sat Dec 26, 2015 6:25 am

Re: Script to Automatically Set Rates for Self Created Users

Sat Dec 26, 2015 6:58 am

Can you help me I have an issue I created a hotspot and the respective registration of users with user manager everything is ok , but not how to make a script to create me a file with information about the user data and send it to team owner by mail , so this is not going every day to the router.

I thank you in advance for your time and valuable assistance .

Who is online

Users browsing this forum: No registered users and 14 guests