Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This project was derived from free version of Pythonix2 Mikrotik billing. Original version of pythonix2 is freely available in internet as vbox image: [http://asp24.com.ua/asp24/billing-dlja-mikrotik-routerboard/]. This is a webservice which provide billing and allows to manage Mikrotik users. It also give for end users ability to change their tariff in web ui. The updated web service engine:

  • Has no limits for users count, which are settled on many Mikrotik devices;
  • tested with 4.11 - 5.25 versions of Mikrotik.
  • synchronizes settings between Mikrotik and Pythonix at the action moment in web ui;
  • supports two auth methods for end Mikrotik users: ARP, and VPN. VPN mode is optional and ARP is required;
  • expects that Miktorik itself will shutdown internet for users by using script provided below, previously added from web ui ;
  • web service db schema provided in pythonix-db.backup and has a little differences comparing to unmodified pythonix version.
  • Can do automatic backup of pythonix db by saving it to the github repository "turbo-backup" :)

The both original and derived version of web interface are using russian language, so probably it will be useless for english speakers.

cron settings for nightly backups: crontab -e -u tram 58 23 * * * cd ~/git/turbo-backup/ && ./backup_run.sh pythonix2 > /tmp/bckp1 && logger -f /tmp/bckp1

Mikrotik settings:

/system scheduler
add comment="" disabled=no interval=1d name="BILLING MIDNIGTH EVENT" \
    on-event=BILLING policy=read,write,policy,test,sniff,sensitive \
    start-date=apr/08/2015 start-time=23:59:00
/system script
add name=BILLING policy=\
    ftp,reboot,read,write,policy,test,winbox,sniff,sensitive source=":local cd\
    ate [/system clock get date]\r\
    \n:local runinfoaddress (\"Locate ADDRESSES in address-list with exact day\
    \_in comment as TODAY \". \$cdate)\r\
    \n/log info message=\$runinfoaddress\r\
    \n\r\
    \n#For each address in the address-list\r\
    \n:foreach i in=[/ip firewall address-list find comment =\$cdate ] do={\r\
    \n    :local addrdisabled [/ip firewall address-list get \$i disabled]\r\
    \n    :if ( addrdisabled = false ) do={ \r\
    \n        :local ipaddr [/ip firewall address-list get \$i address]\r\
    \n        /ip firewall address-list set \$i disabled=yes\r\
    \n        :local addrnewcomment ( \$cdate .\" disabled: Date matched\")\r\
    \n        /ip firewall address-list set \$i comment= \$addrnewcomment\r\
    \n        :local printing (\"!!!!!!!!!!!!!! '\". \$ipaddr.\"' Account stop\
    ed, Address disabled!\")\r\
    \n        /log info message=\$printing\r\
    \n    } \r\
    \n}\r\
    \n"
    ```

/ip firewall filter add action=accept chain=input comment=api disabled=no dst-port=8728 protocol=tcp
/ip service set api address=0.0.0.0/0 disabled=no port=8728

/queue type add kind=pcq name="UploadTarif0" pcq-rate=4M 
add kind=pcq name="Download Tarif0" pcq-rate=4M
add kind=pcq name="Upload Tarif1" pcq-rate=10M
add kind=pcq name="Download Tarif1" pcq-rate=30M
add kind=pcq name="Upload Tarif2" pcq-rate=50M
add kind=pcq name="Download Tarif2" pcq-rate=50M
add kind=pcq name="Download Tarif3" pcq-rate=100M 
add kind=pcq name="Upload Tarif3" pcq-rate=40M

Схема работы с учетными записями клиентов:

  • Когда клиент добавляется, то :
    • в arp заносится запись, тем самым мы разрешаем доступ к локальной сети, при удалении клиента запись из arp удаляется;
    • в dhcp-leases добавляется локальный ip адрес;
    • в queue добавляется очередь с указанием локального ip адреса, скорость будет резаться для интернета и для локального трафика сети;
    • в ppp secrets добавляется login & password с указанием vpn ip адреса;
    • в ip firewall address-list добавляется vpn ip адрес и локальный ip адрес и в комментарии к нему последний день интернета.
    • Только адресам в этом списке разрешен доступ в интернет;
  • Когда клиент удаляется, то :
    • удаляются записи из arp, dhcp-leases, ip firewall address-list (удаляется и локальный и vpn адрес), queue, ppp secrets;
  • Когда происходит отключение клиента, то :
    • arp остается без изменений, тем самым оставляет возможность клиенту подключиться и оплатить услуги в будущем;
    • в ip firewall address-list деактивируется адрес, так отключается интернет;
  • Когда клиент включается, то :
    • arp, dhcp-leases остаются без изменений.
    • в ip firewall address-list активируется адрес, и указывается в комментарии дата последнего проплаченного дня, так включается интернет;

Скрипт BILLING запускается каждые сутки для отключения пользователей точно по дате. Проблема: Если микротик будет недоступен в момент запуска скрипта т.е. ночью в 11:59, то пользователь не будет отключен вообще.

About

Modification of pythonix2 Mikrotik billing

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages