Example #1
0
 def ping(self, count=None):
     "ping host"
     if count is None:
         count = 5
     if DOM_RE.match(self.host):
         ipaddr = get_ipaddr(self.host)
     if (IPV4_RE.match(self.host) or 'ipaddr' in locals()
         and ipaddr and IPV4_RE.match(ipaddr)):
         if 'ipaddr' not in locals():
             ipaddr = self.host
         ping_bin = 'ping'
     else:
         ipaddr = self.host
         ping_bin = 'ping6'
     if ipaddr:
         ping_cmd = [ping_bin, '-c', str(count), ipaddr]
         pipe = subprocess.Popen(ping_cmd,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.PIPE)
         _, stderr = pipe.communicate()
         pipe.wait(timeout=10)
         if pipe.returncode == 0:
             return True
         else:
             self.errors.append(stderr)
             return False
     self.errors.append('Unable to resolve hostname')
     return False
Example #2
0
 def ping(self, count=None):
     "ping host"
     if count is None:
         count = 5
     if DOM_RE.match(self.host):
         ipaddr = get_ipaddr(self.host)
     if (IPV4_RE.match(self.host) or 'ipaddr' in locals()
         and IPV4_RE.match(ipaddr)):
         if not 'ipaddr' in locals():
             ipaddr = self.host
         ping_bin = 'ping'
     else:
         ipaddr = self.host
         ping_bin = 'ping6'
     if ipaddr:
         ping_cmd = [ping_bin, '-c', str(count), ipaddr]
         pipe = subprocess.Popen(ping_cmd,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.PIPE)
         stdout, stderr = pipe.communicate()
         pipe.wait(timeout=10)
         if pipe.returncode == 0:
             return True
         else:
             self.errors.append(stderr)
             return False
     self.errors.append('Unable to resolve hostname')
     return False
Example #3
0
 def validate_address(self, field):
     if self.username.data == '' and field.data == '':
         raise validators.ValidationError(
         _('Provide either a hostname or username & password'))
     if (field.data != '' and not DOM_RE.match(field.data) and
         not ipaddr_is_valid(field.data)):
         raise validators.ValidationError(
         _('Provide a valid hostname or IP address'))
Example #4
0
 def validate_address(self, field):
     if self.username.data == '' and field.data == '':
         raise validators.ValidationError(
         _('Provide either a hostname or username & password'))
     if (field.data != '' and not DOM_RE.match(field.data) and
         not ipaddr_is_valid(field.data)):
         raise validators.ValidationError(
         _('Provide a valid hostname or IP address'))
Example #5
0
def from_addr_check(form, field):
    "Check from address"
    if (not EMAIL_RE.match(field.data) and not DOM_RE.match(field.data)
            and not IPV4_RE.match(field.data) and not
            IPV4_NET_OR_RANGE_RE.match(field.data) and not
            ipaddr_is_valid(field.data)):
        raise validators.ValidationError(
            _('Provide either a valid IP, email,'
            ' Domain address, or IP network or range'))
Example #6
0
def from_addr_check(form, field):
    "Check from address"
    if (not EMAIL_RE.match(field.data) and not DOM_RE.match(field.data)
            and not IPV4_RE.match(field.data)
            and not IPV4_NET_OR_RANGE_RE.match(field.data)
            and not ipaddr_is_valid(field.data)):
        raise validators.ValidationError(
            _('Provide either a valid IP, email,'
              ' Domain address, or IP network or range'))
Example #7
0
 def validate_address(self, field):
     "validate address"
     if self.username.data == '' and field.data == '':
         msg = _('Provide either a hostname or username & password')
         raise validators.ValidationError(msg)
     if (field.data != '' and not DOM_RE.match(field.data) and
         not IPV4_RE.match(field.data) and not ipaddr_is_valid(field.data)):
         msg = _('Provide a valid hostname, IP address or IP network')
         raise validators.ValidationError(msg)
Example #8
0
def _set_type(obj):
    "Set type of object"
    if EMAIL_RE.match(obj.from_address):
        obj.from_addr_type = 1
        return
    if DOM_RE.match(obj.from_address):
        obj.from_addr_type = 2
        return
    if IPV4_NET_OR_RANGE_RE.match(obj.from_address):
        obj.from_addr_type = 3
        return
    if ipaddr_is_valid(obj.from_address):
        obj.from_addr_type = 4
        return
Example #9
0
def admin_toaddr_check(form, field):
    "Admin check to field"
    if field.data != '':
        #email
        if EMAIL_RE.match(field.data) or DOM_RE.match(field.data):
            if '@' in field.data:
                domain = field.data.split('@')[1]
            else:
                domain = field.data
            try:
                Session.query(Domain.name).filter(Domain.name == domain).one()
            except NoResultFound:
                raise validators.ValidationError(
                _('The domain %(dom)s is not local') % dict(dom=domain))
        elif field.data != 'any':
            raise validators.ValidationError(
            _('Provide either a valid email or domain address'))
Example #10
0
def admin_toaddr_check(form, field):
    "Admin check to field"
    if field.data != '':
        #email
        if EMAIL_RE.match(field.data) or DOM_RE.match(field.data):
            if '@' in field.data:
                domain = field.data.split('@')[1]
            else:
                domain = field.data
            try:
                Session.query(Domain.name).filter(Domain.name == domain).one()
            except NoResultFound:
                raise validators.ValidationError(
                    _('The domain %(dom)s is not local') % dict(dom=domain))
        elif field.data != 'any':
            raise validators.ValidationError(
                _('Provide either a valid email or domain address'))
Example #11
0
def check_server_addr(form, field):
    "check server address"
    if not DOM_RE.match(field.data) and not ipaddr_is_valid(field.data):
        raise validators.ValidationError(
        _('Invalid Domain name or IP address'))
Example #12
0
def check_form(form, field):
    filteredby = dict(FILTER_BY)
    filteritems = dict(FILTER_ITEMS)
    # field <-> filter checks
    if ((field.data in BOOL_FIELDS and int(form.filtered_by.data)
        not in BOOL_FILTER) or (field.data in TEXT_FIELDS and
        int(form.filtered_by.data) not in TEXT_FILTER) or
        (field.data in TIME_FIELDS and int(form.filtered_by.data)
        not in TIME_FILTER) or (field.data in NUM_FIELDS and
        int(form.filtered_by.data) not in NUM_FILTER)):
        raise validators.ValidationError(
        _('%(field)s does not support the "%(filt)s" filter') %
        dict(field=filteritems[field.data],
        filt=filteredby[form.filtered_by.data]))
    # time
    if ((field.data in TEXT_FIELDS or field.data in TIME_FIELDS
        or field.data in NUM_FIELDS) and form.filtered_value.data in
        EMPTY_VALUES):
        raise validators.ValidationError(_('Please supply a value to query'))
    # numerics
    if field.data in NUM_FIELDS and not isnumeric(form.filtered_value.data):
        raise validators.ValidationError(_('The value has to be numeric'))
    # emails
    if (field.data in TEXT_FIELDS and int(form.filtered_by.data) in [1, 2]
        and field.data in EMAIL_FIELDS):
        if not ADDRESS_RE.match(form.filtered_value.data):
            raise validators.ValidationError(
            _('%(email)s is not a valid e-mail address.') %
            dict(email=escape(form.filtered_value.data)))
    # domains
    if (field.data in TEXT_FIELDS and int(form.filtered_by.data) in [1, 2]
        and field.data in DOMAIN_FIELDS):
        if not DOM_RE.match(form.filtered_value.data):
            raise validators.ValidationError(
            _('%(dom)s is not a valid domain address.') %
            dict(dom=escape(form.filtered_value.data)))
    # regex on text fields
    if field.data in TEXT_FIELDS and int(form.filtered_by.data) in [7, 8]:
        try:
            re.compile(form.filtered_value.data)
        except re.error:
            raise validators.ValidationError(_('Invalid regex supplied'))
    if field.data in TEXT_FIELDS:
        # ip
        if field.data == 'clientip':
            if not IPV4_RE.match(form.filtered_value.data):
                raise validators.ValidationError(
                _('Please provide a valid ipv4 address'))
        # hostname
        if field.data == 'hostname':
            if (not IPV4_RE.match(form.filtered_value.data) and
                not DOM_RE.match(form.filtered_value.data)):
                raise validators.ValidationError(
                _("Please provide a valid hostname or ipv4 address"))
    if field.data in TIME_FIELDS:
        if field.data == 'date':
            try:
                datetime.date(
                *time.strptime(form.filtered_value.data, '%Y-%m-%d')[:3])
            except ValueError:
                raise validators.ValidationError(
                    _('Please provide a valid date in YYYY-MM-DD format'))
        if field.data == 'time':
            try:
                datetime.time(
                *time.strptime(form.filtered_value.data, '%H:%M')[3:6])
            except ValueError:
                raise validators.ValidationError(
                    _('Please provide valid time in HH:MM format'))
Example #13
0
def check_form(form, field):
    "validate the form"
    filteredby = dict(FILTER_BY)
    filteritems = dict(FILTER_ITEMS)
    # field <-> filter checks
    if ((field.data in BOOL_FIELDS
         and int(form.filtered_by.data) not in BOOL_FILTER)
            or (field.data in TEXT_FIELDS
                and int(form.filtered_by.data) not in TEXT_FILTER)
            or (field.data in TIME_FIELDS
                and int(form.filtered_by.data) not in TIME_FILTER)
            or (field.data in NUM_FIELDS
                and int(form.filtered_by.data) not in NUM_FILTER)):
        raise validators.ValidationError(
            _('%(field)s does not support the "%(filt)s" filter') %
            dict(field=filteritems[field.data],
                 filt=filteredby[form.filtered_by.data]))
    # time
    if ((field.data in TEXT_FIELDS or field.data in TIME_FIELDS
         or field.data in NUM_FIELDS)
            and form.filtered_value.data in EMPTY_VALUES):
        raise validators.ValidationError(_('Please supply a value to query'))
    # numerics
    if field.data in NUM_FIELDS and not isnumeric(form.filtered_value.data):
        raise validators.ValidationError(_('The value has to be numeric'))
    # emails
    if (field.data in TEXT_FIELDS and int(form.filtered_by.data) in [1, 2]
            and field.data in EMAIL_FIELDS):
        if not EMAIL_RE.match(form.filtered_value.data):
            raise validators.ValidationError(
                _('%(email)s is not a valid e-mail address.') %
                dict(email=escape(form.filtered_value.data)))
    # domains
    if (field.data in TEXT_FIELDS and int(form.filtered_by.data) in [1, 2]
            and field.data in DOMAIN_FIELDS):
        if not DOM_RE.match(form.filtered_value.data):
            raise validators.ValidationError(
                _('%(dom)s is not a valid domain address.') %
                dict(dom=escape(form.filtered_value.data)))
    # regex on text fields
    if field.data in TEXT_FIELDS and int(form.filtered_by.data) in [7, 8]:
        try:
            re.compile(form.filtered_value.data)
        except re.error:
            raise validators.ValidationError(_('Invalid regex supplied'))
    if field.data in TEXT_FIELDS:
        # ip
        if field.data == 'clientip':
            if not IPV4_RE.match(form.filtered_value.data):
                raise validators.ValidationError(
                    _('Please provide a valid ipv4 address'))
        # hostname
        if field.data == 'hostname':
            if (not IPV4_RE.match(form.filtered_value.data)
                    and not DOM_RE.match(form.filtered_value.data)):
                raise validators.ValidationError(
                    _("Please provide a valid hostname or ipv4 address"))
    if field.data in TIME_FIELDS:
        if field.data == 'date':
            try:
                datetime.date(
                    *time.strptime(form.filtered_value.data, '%Y-%m-%d')[:3])
            except ValueError:
                raise validators.ValidationError(
                    _('Please provide a valid date in YYYY-MM-DD format'))
        if field.data == 'time':
            try:
                datetime.time(
                    *time.strptime(form.filtered_value.data, '%H:%M')[3:6])
            except ValueError:
                raise validators.ValidationError(
                    _('Please provide valid time in HH:MM format'))