diff --git a/agent/core.py b/agent/core.py index f9caf4a..756d68e 100644 --- a/agent/core.py +++ b/agent/core.py @@ -121,5 +121,12 @@ class BaseTransmitter(metaclass=ABCMeta): def sync_nas(self, users_from_db): list_for_add, list_for_del = self._diff_users(users_from_db) + print('FOR DELETE') + for ld in list_for_del: + print(ld) + print('FOR ADD') + for la in list_for_add: + print(la) self.remove_user_range( list_for_del ) self.add_user_range( list_for_add ) + diff --git a/agent/mod_mikrotik.py b/agent/mod_mikrotik.py index 2d17233..2e515c5 100644 --- a/agent/mod_mikrotik.py +++ b/agent/mod_mikrotik.py @@ -11,7 +11,7 @@ from djing.settings import DEBUG import re -#DEBUG=False +#DEBUG=True LIST_USERS_ALLOWED = 'DjingUsersAllowed' LIST_USERS_BLOCKED = 'DjingUsersBlocked' @@ -236,7 +236,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): assert isinstance(user, AbonStruct) q = self.find('uid%d' % user.uid) if q is not None: - return self._exec_cmd(['/queue/simple/remove', '=.id=*' + str(q.sid)]) + return self._exec_cmd(['/queue/simple/remove', '=.id=' + getattr(q, 'queue_id', '')]) def remove_range(self, q_ids): if q_ids is not None and len(q_ids) > 0: @@ -251,13 +251,13 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): # не нашли запись в шейпере об абоненте, добавим return self.add(user) else: - mk_id = queue.sid + mk_id = getattr(queue, 'queue_id', '') # обновляем шейпер абонента - return self._exec_cmd(['/queue/simple/set', '=.id=*' + mk_id, + return self._exec_cmd(['/queue/simple/set', '=.id=' + mk_id, '=name=uid%d' % user.uid, '=max-limit=%.3fM/%.3fM' % (user.tariff.speedOut, user.tariff.speedIn), # FIXME: тут в разных микротиках или =target-addresses или =target - '=target=%s' % user.ip.get_str(), + '=target=%s' % str(user.ip), '=queue=MikroBILL_SFQ/MikroBILL_SFQ', '=burst-time=1/1' ]) @@ -285,7 +285,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): self.add(user) return self.disable(user) else: - return self._exec_cmd(['/queue/simple/disable', '=.id=*' + q.sid]) + return self._exec_cmd(['/queue/simple/disable', '=.id=*' + getattr(q, 'queue_id', '')]) def enable(self, user): assert isinstance(user, AbonStruct) @@ -294,7 +294,7 @@ class QueueManager(TransmitterManager, metaclass=ABCMeta): self.add(user) self.enable(user) else: - return self._exec_cmd(['/queue/simple/enable', '=.id=*' + q.sid]) + return self._exec_cmd(['/queue/simple/enable', '=.id=*' + getattr(q, 'queue_id', '')]) class IpAddressListObj(IpStruct): @@ -390,8 +390,6 @@ class MikrotikTransmitter(QueueManager, IpAddressListManager): assert isinstance(user.ip, IpStruct) if user.tariff is None or not isinstance(user.tariff, TariffStruct): return - if not user.is_access(): - return QueueManager.add(self, user) IpAddressListManager.add(self, LIST_USERS_ALLOWED, user.ip, ip_timeout) # удаляем из списка заблокированных абонентов @@ -441,7 +439,7 @@ class MikrotikTransmitter(QueueManager, IpAddressListManager): if queue is None: QueueManager.add(self, user) return - if queue.abon != user: + if queue != user: QueueManager.update(self, user) def ping(self, host, count=10): diff --git a/chatbot/telebot.py b/chatbot/telebot.py index 9aecb83..e9c9a56 100755 --- a/chatbot/telebot.py +++ b/chatbot/telebot.py @@ -113,7 +113,7 @@ class DjingTelebot(helper.ChatHandler): # пингуем адрес def ping(self, ip=None): if ip is None: - self._question("Let's ping, write ip. It will be necessary to wait 10 seconds", self.ping) + self._question(_("Let's ping, write ip. It will be necessary to wait 10 seconds"), self.ping) return try: socket.inet_aton(ip) diff --git a/devapp/views.py b/devapp/views.py index 0bbc25f..6c65228 100644 --- a/devapp/views.py +++ b/devapp/views.py @@ -317,18 +317,21 @@ def toggle_port(request, did, portid, status=0): portid = int(portid) status = int(status) dev = get_object_or_404(Device, id=int(did)) - if ping(dev.ip_address): - if dev.man_passw: - manager = dev.get_manager_klass()(dev.ip_address, dev.man_passw) - ports = manager.get_ports() - if status: - ports[portid-1].enable() + try: + if ping(dev.ip_address): + if dev.man_passw: + manager = dev.get_manager_klass()(dev.ip_address, dev.man_passw) + ports = manager.get_ports() + if status: + ports[portid-1].enable() + else: + ports[portid-1].disable() else: - ports[portid-1].disable() + messages.warning(request, _('Not Set snmp device password')) else: - messages.warning(request, _('Not Set snmp device password')) - else: - messages.error(request, _('Dot was not pinged')) + messages.error(request, _('Dot was not pinged')) + except EasySNMPTimeoutError: + messages.error(request, _('wait for a reply from the SNMP Timeout')) return redirect('devapp:view', dev.user_group.pk if dev.user_group is not None else 0, did) diff --git a/dialing_app/views.py b/dialing_app/views.py index 2f5ff31..9125ccc 100644 --- a/dialing_app/views.py +++ b/dialing_app/views.py @@ -11,7 +11,7 @@ from .models import AsteriskCDR @login_required @only_admins def home(request): - logs = AsteriskCDR.objects.all() + logs = AsteriskCDR.objects.order_by('-calldate') logs = pag_mn(request, logs) return render(request, 'index.html', { 'logs': logs