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
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
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'))
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)
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 IPV4_RE.match(obj.from_address): obj.from_addr_type = 4 return
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'))
def check_server_addr(form, field): "check server address" if not DOM_RE.match(field.data) and not IPV4_RE.match(field.data): raise validators.ValidationError( _('Invalid Domain name or IP address'))
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'))