class LanDeleteIpForm(FlaskForm): ipstart = StringField('Начальный IP', default='0.0.0.0', validators=[ IPAddress(ipv4=True, ipv6=False, message='Неверный IP адрес'), ]) ipend = StringField('Конечный IP', default='0.0.0.0', validators=[ IPAddress(ipv4=True, ipv6=False, message='Неверный IP адрес'), ]) def validate_ipstart(self, ip): if ip.data == '0.0.0.0': raise ValidationError('Неверный IP адрес') def validate_ipend(self, ip): if ip.data == '0.0.0.0': raise ValidationError('Неверный IP адрес') submit = SubmitField('Сохранить')
class ServerInputs(Inputs): """ Validation class for inputs """ json = { 'name': [ DataRequired('Server name is required.'), Regexp('^[a-zA-Z0-9_.-]+$', 0, 'Only alphabets, numbers, _ and . are allowed.') ], 'hostname': [ DataRequired('Host name is required.'), Regexp('^[a-zA-Z0-9_.-]+$', 0, 'Only alphabets, numbers, _ and . are allowed.') ], 'enabled': [ Optional(), ], 'admin-listener': [Optional(), Validation.port_validation], 'internal-listener': [Optional(), Validation.port_validation], 'http-listener': [Optional(), Validation.port_validation], 'zookeeper-listener': [Optional(), Validation.port_validation], 'replication-listener': [Optional(), Validation.port_validation], 'client-listener': [Optional(), Validation.port_validation], 'internal-interface': [Optional(), IPAddress('Invalid IP address.')], 'external-interface': [Optional(), IPAddress('Invalid IP address.')], 'public-interface': [Optional(), IPAddress('Invalid IP address.')], }
class ConfigForm(Form): router_id = StringField('Router-ID', validators=[Required(), IPAddress()]) asn = StringField('Local AS Number', validators=[Required(), Range(1, 65535)]) local_ip = StringField('Local IP Address', validators=[Required(), IPAddress()]) submit = SubmitField('Save Config')
class ReactForm(BaseReactForm): ''' Class that creates a CloudFlair Reaction form for the dashboard ''' email = TextField("Email", validators=[Email(message='Email address invalid')]) domain = TextField( "Domain", validators=[DataRequired(message='Domain is a required field')]) apikey = TextField( "APIKey", validators=[DataRequired(message='API Key is a required field')]) ip = TextField("IP", validators=[ IPAddress(message='Does not match IP address format'), DataRequired(message='IP is a required field') ]) replaceip = TextField( "ReplaceIP", validators=[ IPAddress(message='Does not match IP address format'), DataRequired(message='Replace IP is a required field') ]) failback = SelectField( "Failback", choices=[('manual', 'None'), ('automatic', 'Automatic')], validators=[ DataRequired(message='Failback Method is a required field') ])
class AddBadIP(FlaskForm): badIP = StringField("IP Address", validators=[DataRequired(), IPAddress()]) source = StringField("Detected by IP", validators=[DataRequired(), IPAddress()]) notes = StringField("Reason for ban", validators=[DataRequired()]) submit = SubmitField("Ban IP")
class MakeConfigForm2(FlaskForm): hostname = StringField('Hostname', validators=[CheckHostname()]) ipaddress = StringField( 'IPv4', validators=[IPAddress(message='Неверный формат ip-адреса')]) netmask = StringField('MASK', validators=[CheckNetmask()]) gateway = StringField('GW', validators=[ IPAddress('Неверный формат ip-адреса'), CheckIPConnectivity() ]) mng_vlan = StringField('MGMT_VLAN', validators=[CheckVlans()]) client_ports = StringField('Диапазон клиентских портов (например 1,3-24)', validators=[CheckPorts()]) vlan_character = RadioField( 'Характер вланов', choices=[('PCV', 'PCV'), ('single_vlan', 'Один влан на все порты')], validators=[DataRequired(message='Неоходимо выбрать')], default='PCV') PCV_group = SelectField('Диапазон вланов PCV', coerce=int) pppoe_single_vlan = StringField( 'Указать одиночный влан', validators=[ CheckSingleVlan(required_field=('vlan_character', 'single_vlan')) ]) reset_2 = SubmitField('Начать заново') submit2 = SubmitField('Следующий шаг') def __init__(self, PCV_group_choices, *args, **kwargs): super().__init__(*args, **kwargs) self.PCV_group.choices = PCV_group_choices
class PeeringForm(FlaskForm): peering = SelectField('peering', coerce=int, choices=[(1, 'SIX'), (2, 'NIX.CZ'), (3, 'NIX.SK'), (4, 'AMS-IX')]) description = StringField('description', validators=[DataRequired()]) asn = IntegerField('asn', validators=[Optional()]) ipv4 = StringField('ipv4', validators=[ DataRequired(), IPAddress(ipv4=True, ipv6=False, message=None) ]) ipv6 = StringField('ipv6', validators=[ DataRequired(), IPAddress(ipv4=False, ipv6=True, message=None) ]) prefixlimipv4 = IntegerField('prefixlimipv4', validators=[ DataRequired(), NumberRange(min=1, max=None, message=None) ]) prefixlimipv6 = IntegerField('prefixlimipv6', validators=[ DataRequired(), NumberRange(min=1, max=None, message=None) ])
class EditHostForm(Form): '''admin edit host information''' hostname = StringField(u'主机名', validators=[Required(), Length(1, 64)]) ip = StringField(u'IP', validators=[Required(), Length(0, 64), IPAddress()]) eip = StringField(u'公网IP', validators=[Length(0, 64), IPAddress(), Optional()]) system = StringField(u'系统', validators=[Required(), Length(1, 64)]) cpu = IntegerField(u'CPU', validators=[Required(), NumberRange(min=1, max=50)]) mem = IntegerField(u'内存', validators=[Required(), NumberRange(min=1, max=100)]) disk = IntegerField(u'磁盘', validators=[NumberRange(min=0, max=5000)]) groups = SelectField(u'所属项目组', coerce=int) idc = SelectField(u'所属机房', coerce=int) submit = SubmitField(u'更新') def __init__(self, host, *args, **kwargs): super(EditHostForm, self).__init__(*args, **kwargs) self.groups.choices = [(groups.id, groups.name) for groups in Groups.query.order_by(Groups.name).all()] self.idc.choices = [(idc.id, idc.name) for idc in IDC.query.order_by(IDC.name).all()] self.host = host def validate_ip(self, field): if field.data != self.host.ip and \ Hosts.query.filter_by(ip=field.data).first(): raise ValidationError('IP already exist.') def validate_eip(self, field): if field.data != self.host.eip and \ Hosts.query.filter_by(eip=field.data).first(): raise ValidationError('IP already bind to host.')
class EditorIp(FlaskForm): name_inter = SelectField('Name interface', coerce=str) new_addr = StringField('New ip', validators=[IPAddress('Should be ip address'), DataRequired('Please input ip address')]) mask = StringField('New netmask', validators=[IPAddress('Should be netmask'), DataRequired('Please input mask address')]) password = PasswordField('Password', validators=[DataRequired()]) submit = SubmitField('Edit')
class IPsAndTimezonesForm(FlaskForm): ip_master = StringField('IP address of the master host', validators=[IPAddress()]) ip_repo = StringField('IP address of the repo host', validators=[IPAddress()]) timezone = StringField('Timezone', validators=[DataRequired()], default="Europe/Madrid") submit = SubmitField('Next')
class LanCreateForm(FlaskForm): name = StringField('Название сети', default='Сеть 1', validators=[ Length(min=5, max=50), ]) svlan = IntegerField( 'S-Vlan', default=1, validators=[ NumberRange( min=1, max=3999, message=u'Вне диапазона доступных VLAN (1-3999)', ), ]) netlan_ipv4 = StringField( 'Сеть', default='192.168.0.0', validators=[ IPAddress(ipv4=True, ipv6=False, message='Неверный IP адрес'), ], ) netmask = SelectField(u'Маска', default=24, coerce=int, choices=[ (24, u'/24 (255.255.255.0) - 254 Хоста'), (23, u'/23 (255.255.254.0) - 510 Хостов'), (22, u'/22 (255.255.252.0) - 1022 Хоста'), (21, u'/21 (255.255.248.0) - 2046 Хоста'), (20, u'/20 (255.255.240.0) - 4094 Хоста'), ]) gateway_ipv4 = StringField('Шлюз', default='192.168.0.1', validators=[ IPAddress(ipv4=True, ipv6=False, message='Неверный IP адрес'), ]) dns_ipv4 = StringField('DNS', default='192.168.0.1', validators=[ IPAddress(ipv4=True, ipv6=False, message='Неверный IP адрес'), ]) submit = SubmitField('Сохранить')
class LANConfiguration(FlaskForm): my_choices = [('1', 'Static IP'), ('2', 'Dynamic IP (DHCP)')] ip_mode = SelectField('IP Mode',choices = my_choices) ip_address = StringField(u'IP Address', validators=[IPAddress()]) subnet_mask = StringField(u'Subnet Mask', validators=[IPAddress()]) #default_gateway_address = StringField(u'Default Gateway Address', validators=[IPAddress(),Optional()]) #primary_dns_ip_address = StringField(u'Primary DNS IP Address', validators=[IPAddress(),Optional()]) #secondary_dns_ip_address = StringField(u'Secondary DNS IP Address', validators=[IPAddress(),Optional()]) default_gateway_address = StringField(u'Default Gateway Address', validators=[IPAddress()]) primary_dns_ip_address = StringField(u'Primary DNS IP Address', validators=[IPAddress()]) secondary_dns_ip_address = StringField(u'Secondary DNS IP Address', validators=[IPAddress()]) submit = SubmitField('Update')
class ServiceWork(FlaskForm): region = QuerySelectField(query_factory=choice_region, allow_blank=True, blank_text="Выбирите регион") ip_addr_1 = StringField('IP address', validators=[DataRequired(), IPAddress()]) ip_addr_2 = StringField('IP address', validators=[Optional(), IPAddress()]) reg_id = StringField('RegID', validators=[DataRequired()]) serial_num = StringField('Serial number', validators=[DataRequired()]) setup = BooleanField('Настроить') submit = SubmitField('Добавить')
class EthernetConfigureForm(Form): ethernet_device = HiddenField() connection_type = RadioField(u'Connection Type', choices=[('static', 'Static'), ('dhcp', 'DHCP')], default='dhcp', coerce=str) ip_address = TextField('IP Address', [IPAddress('Invalid IP Address')]) gateway = TextField('Default Gateway', [IPAddress('Invalid Gateway IP Format')]) netmask = TextField('Subnet Mask', [IPAddress('Invalid Subnet IP Format')]) submit = SubmitField(u'Save') cancel = ButtonField(u'Cancel', onclick="location.href='/settings/host'")
def add_hosts(): '''Add Hosts Page''' form = AddHostsForm() if request.method == 'GET': return render_template('addHosts.html', form=form) elif request.method == 'POST': if form.validate_on_submit(): pool = ThreadPool(config['Max_Threads']) threads = [] for ip_address in form.ip_address.data.split('\n'): ip_address = ip_address.strip() validator = IPAddress(ipv4=True) if not validator.check_ipv4(ip_address): flash('{} Is not a valid IP address'.format(ip_address), 'danger') continue if Hosts.query.filter_by(ip_address=ip_address).first(): flash('IP Address {} already exists.'.format(ip_address), 'danger') continue threads.append( pool.apply_async(_add_hosts_threaded, (ip_address, ))) pool.close() pool.join() for thread in threads: new_host = thread.get() try: # add the new host to the database db.session.add(new_host) flash( u'Successfully added {} ({})'.format( new_host.ip_address, new_host.hostname), 'success') except Exception as exc: flash(u'Failed to add {}'.format(new_host.ip_address), 'danger') log.error( 'Failed to add {} to database. Exception: {}'.format( new_host, exc)) continue db.session.commit() else: for dummy, errors in form.errors.items(): for error in errors: flash(error, 'danger') return redirect(url_for('hosts.add_hosts'))
class IpPoolForm(Form): start_ip = StringField(u'起始IP', validators=[ Required(message=u'起始IP不能为空'), IPAddress(message=u'起始IP应该是一个IP格式') ]) end_ip = StringField( u'结束IP', validators=[Regexp(re_ip_one, message=u'结束IP应为0-255')]) netmask = StringField(u'子网掩码', validators=[ Required(message=u'子网掩码不能为空'), IPAddress(message=u'子网掩码应该是一个IP格式') ]) gateway = StringField(u'网关地址', validators=[ Required(message=u'网关地址不能为空'), IPAddress(message=u'网关地址应该是一个IP格式') ]) subnet = StringField(u'IP子网', validators=[ Required(message=u'IP子网不能为空'), IPAddress(message=u'ip子网应该是一个IP格式') ]) site = StringField(u'所属机房', validators=[ Required(message=u'所属机房不能为空'), Length(1, 64, message=u'机房名为1-64个字符') ]) client = StringField(u'使用用户', validators=[Length(0, 64, message=u'使用用户最大为64个字符')]) remark = StringField(u'备注', validators=[Length(0, 64, message=u'备注最大64个字符')]) def validate_end_ip(self, field): start_ip = self.start_ip.data if int(start_ip.split('.')[-1]) > int(field.data): raise ValidationError(u'添加失败 结束IP应该大于起始IP') def validate_subnet(self, field): if not IpSubnet.query.filter_by(subnet=field.data).first(): raise ValidationError(u'添加失败 这个子网不存在') def validate_site(self, field): if not Site.query.filter_by(site=field.data).first(): raise ValidationError(u'添加失败 这个机房不存在') def validate_client(self, field): if field.data: if not Client.query.filter_by(username=field.data).first(): raise ValidationError(u'添加失败 这个客户不存在')
class DeviceForm(FlaskForm): id = HiddenField() # deviceType = SelectField(u'设备类型', coerce=int) # deviceTypeId = SelectField(u'设备信息', coerce=int) serialNo = StringField(u'序列号', validators=[Length(max=64)]) designedPower = StringField(u'功率', validators=[Length(max=64)]) purchaseDate = DateField(u'购买日期') warrantyTime = DateField(u'保修时间') ip = StringField(u'ipv4 ip', validators=[IPAddress(ipv4=True)]) ip2 = StringField(u'ipv4 ip2', validators=[IPAddress(ipv4=True)]) position = StringField(u'位置', validators=[Length(max=32)]) carbinet_id = SelectField(u'机柜', coerce=int) comment = StringField(u'备注', validators=[Length(max=1024)]) submit = SubmitField(u'提交')
def __call__(self, form, field): try: try_mac = MacAddress(message=self.message) try_mac(form, field) except ValidationError: try_ip = IPAddress(message=self.message) try_ip(form, field)
class SnatForm(Form): source = TextField(u'需转换的源IP(或网段)', validators=[Required(message=u'这是一个必选项!'), IPorNet(message=u"无效的IP 或网段!")]) gateway = TextField(u'转换后的IP', validators=[Required(message=u'这是一个必选项!'), IPAddress(message=u'无效的IP 地址!')])
class UnAssignFloatingIP(Form): floatingip = StringField( 'Floating IP', validators=[Required(), Length(1, 128), IPAddress()]) server = StringField('Server') submit = SubmitField()
class SyncPoolForm(ConfigForm): legend = 'Sync Pool' config = ykval_config attrs = { 'sync_pool': { 'rows': 5, 'class': 'input-xxlarge' }, 'allowed_sync_pool': { 'rows': 5, 'class': 'input-xxlarge' } } sync_pool = ListField('Sync Pool URLs', [URL()], description=""" List of URLs to other servers in the sync pool. Example: <code>http://example.com/wsapi/2.0/sync</code> """) allowed_sync_pool = ListField('Allowed Sync IPs', [IPAddress()], description=""" List of IP-addresses of other servers that are allowed to sync with this server. Example: <code>10.0.0.1</code> """) def save(self): super(SyncPoolForm, self).save() if is_daemon_running(): invoke_rc_d('ykval-queue', 'restart')
class BGPPeer(Form): ip_address = StringField('IP Address', validators=[Required(), IPAddress()]) asn = StringField('AS Number', validators=[Required(), Range(1, 65535)]) enabled = BooleanField('Enabled') submit = SubmitField('Save') submit = SubmitField('Save')
class DevicesConfigStaticRoute(FlaskForm): id = StringField('ID') ip_destino = StringField('IP Destino', validators=[IPAddress( ipv4=True, ipv6=False, message='IP Destino: IP invalida')]) mascara = StringField('Mascara', validators=[DataRequired(message='Si o Si debe ingresar un numero de AS'), Length( min=7, max=15, message='Mascara: debe tener un minimo de 5 y un maximo de 15 caracteres')]) next_hop = StringField('Next Hop', validators=[InputRequired(message='Ingrese IP correcta!')])
class RouterNewForm(FormPro): cityid = SelectFieldPro(u'所属地市', choices=lambda: area_choices(1, u'请选择地市')) town = SelectFieldPro(u'', choices=lambda: area_choices(2, u'请选择区县')) area_id = SelectFieldPro(u'所属区域', validators=[required(message=u'必填')], choices=lambda: area_choices(4, u'请选择接入点')) name = TextField(u'路由器名称', validators=[required(message=u'必填')]) alias = TextField(u'路由器别名', validators=[required(message=u'必填')]) addr = TextField(u'IP 地址', validators=[ required(message=u'必填'), IPAddress(message=u'IP地址格式不正确'), NoneOf(['0.0.0.0', '255.255.255.255'], message=u'IP地址格式不正确') ]) snmp_comm = TextField(u'读团体名', validators=[required(message=u'必填')]) snmp_wcomm = TextField(u'写团体名', validators=[required(message=u'必填')]) snmp_ver = RadioField(u'SNMP版本', default=SNMP_VER_DICT.keys()[0], validators=[required(message=u'必填')], choices=[(value, label) for value, label in SNMP_VER_DICT.items()]) mask = TextField(u'子网掩码') location = TextField(u'位置') remark = TextAreaField(u'备注信息')
class ConfigForm(FlaskForm): ssid = StringField('Network Name', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired()]) email = EmailField('Email address', validators=[DataRequired(), Email()]) ip_address = StringField('Server IP address', validators=[Optional(), IPAddress()]) submit = SubmitField('Submit')
class DeviceAddForm(FlaskForm): designation = StringField('Designation', validators=[DataRequired(), Length(max=50)], render_kw={"placeholder": "Designation"}) description = TextAreaField('Description', validators=[Length(max=200)], render_kw={ "placeholder": "Desription", "cols": "50", "rows": "3" }) src_ip = StringField('Source IP address', validators=[DataRequired(), IPAddress()], render_kw={"placeholder": "IP address"}) src_port = IntegerField( 'Source IP port', validators=[DataRequired(), NumberRange(min=1, max=65535)], render_kw={"placeholder": "IP port"}) dest_uri = StringField('Destination URL', validators=[DataRequired(), URL()], render_kw={"placeholder": "Destination URL"}) dest_format = StringField('Destination format', render_kw={"placeholder": "Format"}) rdg_interval = IntegerField('Reading interval', validators=[DataRequired()], render_kw={"placeholder": "Interval [min]"})
class ConfigIp(FlaskForm): action = SelectField('操作参数', choices=(['get', 'get'], ['set', 'set'], ['delete', 'del'], ['save', 'save'], ['add', 'add'])) ip = StringField('IP地址', default='0.0.0.0', validators=[IPAddress()]) valid_time = IntegerField('生效时长(s)') value = SelectField('Waf_Action', choices=(['deny', 'deny'], ['allow', 'allow']))
class TodoForm(Form): style = RadioField(u'Lable', choices=[('realtime', u"实时构建(较耗时)"), ('notrealtime', u'缓存构建(分支、版本号不可修改)')], default='notrealtime', validators=[DataRequired()]) choice = StringField('''fiber_fault: -> a data_cvt: -> b data_mgt: -> c ui_int: -> d hadoop: -> e aabd -> k spark -> l model_mgt -> m omc_alarm -> n capacity_prediction_mgt -> o''', validators=[DataRequired(), Regexp("\w*")]) hosts = StringField( u'目标ip:', validators=[IPAddress(ipv4=True, message=u"格式错误"), DataRequired()]) version = StringField(u'版本号:(0.0.x格式)', validators=[DataRequired()], default='0.0.%s' % time.strftime("%Y%m%d", time.localtime())) branch = StringField(u'Git分支:', validators=[DataRequired()], default='dev') submit = SubmitField('Submit')
class QueryLogsForm(Form): date1 = My_DateField(u'开始日期') date2 = My_DateField(u'结束日期') user_operation = StringField(u'操作员') loginip = StringField(u'登陆IP', validators=[IPAddress(message=u'IP地址格式不对,请检查')]) operration_type = SelectField(u'操作类型', coerce=str) remarks = StringField(u'备注') # 备注 submit = SubmitField(u'查询') def __init__(self, *args, **kwargs): super(QueryLogsForm, self).__init__(*args, **kwargs) log_ = [('', '全部')] log1_ = () logtype = LogType.__dict__ # 获取日志类型字典 for logs in dir(LogType): # 清除系统类型的属性 if '__' in logs: logtype.pop(logs) else: log1_ = (logtype[logs], ' ›' + logtype[logs] ) # 将类型字典转换成列表元组,只取字典的值作为2个参数 log_.append(log1_) logtype = log_ self.operration_type.choices = logtype pass def validate_date1(self, field): if self.date2.data < field.data: raise ValidationError(u'结束日期不能小于开始日期,请检查日期!')
class CredentialsForm(Form): ipaddr = StringField('APIC IP Address:', validators=[Required(), IPAddress()]) secure = BooleanField('Use secure connection', validators=[]) username = StringField('APIC Username:'******'APIC Password:'******'Save')