diff --git a/abonapp/views.py b/abonapp/views.py index 244ee60..5b3a6ad 100644 --- a/abonapp/views.py +++ b/abonapp/views.py @@ -27,6 +27,7 @@ from group_app.models import Group from guardian.shortcuts import get_objects_for_user, assign_perm from guardian.decorators import permission_required_or_403 as permission_required from djing.global_base_views import OrderingMixin, BaseListWithFiltering +from djing import ping PAGINATION_ITEMS_PER_PAGE = getattr(settings, 'PAGINATION_ITEMS_PER_PAGE', 10) @@ -696,7 +697,7 @@ def abon_ping(request): tm = Transmitter() ping_result = tm.ping(ip) if ping_result is None: - if mydefs.ping(ip, 10): + if ping(ip, 10): status = True text = ' %s' % _('ping ok') else: diff --git a/agent/mod_mikrotik.py b/agent/mod_mikrotik.py index a432c93..55abc9f 100644 --- a/agent/mod_mikrotik.py +++ b/agent/mod_mikrotik.py @@ -1,15 +1,16 @@ # -*- coding: utf-8 -*- +import re import socket import binascii from abc import ABCMeta from hashlib import md5 from typing import List, Iterable, Optional, Tuple from .core import BaseTransmitter, NasFailedResult, NasNetworkError -from mydefs import ping, singleton +from mydefs import singleton from .structs import TariffStruct, AbonStruct, IpStruct, VectorAbon, VectorTariff from . import settings as local_settings from django.conf import settings -import re +from djing import ping DEBUG = getattr(settings, 'DEBUG', False) diff --git a/djing/__init__.py b/djing/__init__.py index 978be02..d278339 100644 --- a/djing/__init__.py +++ b/djing/__init__.py @@ -1,3 +1,5 @@ +import os +import re import importlib from netaddr import mac_unix, mac_eui48 @@ -41,3 +43,11 @@ else: __version__ = _dist.version VERSION = __version__ # synonym default_app_config = 'abonapp.apps.AbonappConfig' + + +def ping(ip_addr: str, count=1): + if re.match(IP_ADDR_REGEX, ip_addr): + response = os.system("`which ping` -4Anq -c%d -W1 %s > /dev/null" % (count, ip_addr)) + return True if response == 0 else False + else: + return False diff --git a/mydefs.py b/mydefs.py index 92d6b6d..a70d3c9 100644 --- a/mydefs.py +++ b/mydefs.py @@ -4,7 +4,6 @@ from json import dumps import socket import struct from collections import Iterator -import os from functools import wraps from django.http import HttpResponse, Http404, HttpResponseRedirect from django.shortcuts import redirect @@ -118,11 +117,6 @@ def only_admins(fn): return wrapped -def ping(hostname: str, count=1): - response = os.system("`which ping` -4Anq -c%d -W1 %s > /dev/null" % (count, hostname)) - return True if response == 0 else False - - # Русифицированный вывод timedelta class RuTimedelta(timedelta): def __new__(cls, tm):