diff --git a/cron.py b/cron.py old mode 100644 new mode 100755 index 759ed93..b5dd2f1 --- a/cron.py +++ b/cron.py @@ -1,7 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- import os - import django @@ -9,8 +8,35 @@ if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") django.setup() from abonapp.models import Abon + from agent import Transmitter, AbonStruct, TariffStruct, NasFailedResult + tm = Transmitter() users = Abon.objects.all() - - for usr in users: - usr.activate_next_tariff() + for user in users: + if user.ip_address is None: + continue + cur_tar = user.active_tariff() + if cur_tar is None: + continue + ab = AbonStruct( + uid=user.id, + ip=user.ip_address.int_ip(), + tariff=TariffStruct( + tariff_id=cur_tar.id, + speedIn=cur_tar.speedIn, + speedOut=cur_tar.speedOut + ) + ) + # обновляем абонента на NAS + mikroid = tm._find_queue('uid%d' % user.id) + mikroid = mikroid['=.id'].replace('*', '') + try: + tm.update_user(ab) + except NasFailedResult: + tm.add_user(ab) + # если не активен то приостановим услугу + if user.is_active: + tm.start_user(mikroid) + else: + tm.pause_user(mikroid) + tm.update_user(ab)