netdef.Engines package¶
Abstract baseclass¶
Expressions¶
Expression¶
-
class
netdef.Engines.expression.Expression.Argument(source_instance, instigator, frozen_value=None)[source]¶ Bases:
objectA wrapper for source instances.
Parameters: - source_instance (BaseSource) – An source instance
- instigator (boolean) – True if given source instance triggered the execution
-
controller¶ Returns the controller attribute from source instance
-
create_interface(value=None)[source]¶ Wrap given value into the source interface. (See
interfaceattr ofnetdef.Sources.BaseSource.BaseSource)Parameters: value (object) – value to be wrapped Returns: An interface instance Return type: netdef.Interfaces.DefaultInterface
-
get¶ Returns the value from source instance. NB! this is not a frozen copy of the value. It may change if the controller updates the value.
-
instance¶ reference to the source instance
-
key¶ Returns the key attribute from source instance
-
new¶ Returns True if source triggered the expression and this is the first value. (StatusCode.INITIAL)
-
set¶ Write a new value to the source. This will trigger a WRITE_SOURCE message to the controller.
-
status_ok¶ Returns True if value is StatusCode.GOOD or StatusCode.INITIAL
-
update¶ Returns True if source triggered the expression. (StatusCode.GOOD or INVALID)
-
value¶ a frozen copy of the value in self.instance.get
-
class
netdef.Engines.expression.Expression.Expression(expression, filename)[source]¶ Bases:
objectA class containing a reference to the expression-function and references to the source-instances that will become arguments to the expression function
Parameters: - expression (callable) – A reference to the actual function
- filename (str) – Filename of the module where the function is found
-
add_kwarg(keyword, arg)[source]¶ This could be anything. This function exist for you to extend arguments for the expressions. netdef itself do not use this
-
disable()[source]¶ If there is problems with the expression it can be automaticly disabled by calling this function
Collector¶
-
class
netdef.Engines.expression.Collector.Collector(fn, wait, mode)[source]¶ Bases:
objectTakes a function but does not call it right away. After the given wait time has elapsed the function is called based on the given mode.
Parameters: - fn (callable) – a function or callable
- wait (float) – seconds to wait
- mode (Mode) – how to call the callable
-
class
netdef.Engines.expression.Collector.Mode[source]¶ Bases:
enum.Enumcollector modes
-
FIRST= 1¶ Use arguments from the first call
-
FIRST_WITH_EVENT= 4¶ Use arguments from the first call and an additional argument called event
-
LAST= 2¶ Use arguments from the last call
-
LAST_WITH_EVENT= 5¶ Use arguments from the last call and an additional argument called event
-
LIST_ALL= 3¶ Convert arguments to lists with every call
-
Built-in engine modules¶
ThreadedEngine¶
ThreadedWebGuiEngine¶
-
class
netdef.Engines.ThreadedWebGuiEngine.ThreadedWebGuiEngine(shared)[source]¶ Bases:
netdef.Engines.ThreadedEngine.ThreadedEngineIntegrates a simple werkzeug webserver to serve flask_admin webpages
-
get_flask_app()[source]¶ Returns the main flask app.
Common use case is to integrate an existing flask app.
main.py Example:
def init_app(app): @app.route('/') def hello_world(): return 'Hello, World!' return app def main(): ... engine = ThreadedWebGuiEngine.ThreadedWebGuiEngine(shared) # here we go init_app(engine.get_flask_app()) engine.add_controller_classes(controllers) engine.add_source_classes(sources) engine.add_rule_classes(rules) engine.load([__package__, 'netdef']) engine.init() engine.start() engine.block() # until ctrl-c or SIG_TERM engine.stop() ...
-
NginxWebGuiReverseProxy¶
-
class
netdef.Engines.NginxWebGuiReverseProxy.NginxReverseProxy(shared)[source]¶ Bases:
netdef.Engines.ThreadedWebGuiEngine.ThreadedWebGuiEngine
Webadmin¶
AdminIndex¶
-
class
netdef.Engines.webadmin.AdminIndex.LoginForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
wtforms.form.Form-
login= <UnboundField(StringField, (), {'validators': [<wtforms.validators.Required object>]})>¶
-
password= <UnboundField(PasswordField, (), {'validators': [<wtforms.validators.Required object>]})>¶
-
-
class
netdef.Engines.webadmin.AdminIndex.MyAdminIndexView(name=None, category=None, endpoint=None, url=None, template='admin/index.html', menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶ Bases:
flask_admin.base.AdminIndexView-
restarting= 0¶
-
shuttingdown= 0¶
-
ExpressionsView¶
-
class
netdef.Engines.webadmin.ExpressionsView.ExpressionsModel(expression)[source]¶ Bases:
object-
function_arguments¶
-
function_name¶
-
module_filename¶
-
-
class
netdef.Engines.webadmin.ExpressionsView.ExpressionsModelForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
wtforms.form.Form-
function_arguments= <UnboundField(StringField, ('function_arguments',), {})>¶
-
function_name= <UnboundField(StringField, ('function_name',), {})>¶
-
module_filename= <UnboundField(StringField, ('module_filename',), {})>¶
-
-
class
netdef.Engines.webadmin.ExpressionsView.ExpressionsModelView(model, name=None, category=None, endpoint=None, url=None, static_folder=None, menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶ Bases:
netdef.Engines.webadmin.MyBaseView.MyBaseView,flask_admin.model.base.BaseModelView-
action_view()¶ Mass-model action view.
-
ajax_lookup()¶
-
ajax_update()¶ Edits a single column of a record in list view.
-
can_create= False¶
-
can_delete= False¶
-
can_edit= False¶
-
column_list= ('module_filename', 'function_name', 'function_arguments')¶
-
column_searchable_list= ('module_filename', 'function_name', 'function_arguments')¶
-
column_sortable_list= ()¶
-
create_view()¶ Create model view
-
delete_view()¶ Delete model view. Only POST method is allowed.
-
details_view()¶ Details model view
-
edit_view()¶ Edit model view
-
export(export_type)¶
-
form¶ alias of
ExpressionsModelForm
-
get_list(page, sort_field, sort_desc, search, filters, page_size=None)[source]¶ Return a paginated and sorted list of models from the data source.
Must be implemented in the child class.
Parameters: - page – Page number, 0 based. Can be set to None if it is first page.
- sort_field – Sort column name or None.
- sort_desc – If set to True, sorting is in descending order.
- search – Search query
- filters – List of filter tuples. First value in a tuple is a search index, second value is a search value.
- page_size – Number of results. Defaults to ModelView’s page_size. Can be overriden to change the page_size limit. Removing the page_size limit requires setting page_size to 0 or False.
-
index_view()¶ List view
-
init_search()[source]¶ Initialize search. If data provider does not support search,
init_searchwill returnFalse.
-
FileModel¶
-
class
netdef.Engines.webadmin.FileModel.Files(base_path, *args, **kwargs)[source]¶ Bases:
netdef.Engines.webadmin.MyBaseView.MyBaseView,flask_admin.contrib.fileadmin.FileAdmin-
action_view()¶
-
allowed_extensions= ('txt', 'conf', 'csv', 'der', 'pam', 'key', 'zip', 'gz', '7z', 'py', 'ini', 'yaml')¶
-
can_download= True¶
-
delete()¶ Delete view method
-
download(path=None)¶ Download view method.
Parameters: path – File path.
-
edit()¶ Edit view method
-
edit_template= 'admin/fileedit.html'¶
-
editable_extensions= ('txt', 'conf', 'csv', 'py', 'ini', 'yaml')¶
-
get_edit_form()[source]¶ Create form class for file editing view.
Override to implement customized behavior.
-
index(path=None)¶
-
index_view(path=None)¶ Index view method
Parameters: path – Optional directory path. If not provided, will use the base directory
-
is_accessible()[source]¶ Override this method to add permission checks.
Flask-Admin does not make any assumptions about the authentication system used in your application, so it is up to you to implement it.
By default, it will allow access for everyone.
-
is_accessible_path(path)[source]¶ Verify if the provided path is accessible for the current user.
Override to customize behavior.
Parameters: path – Relative path to the root
-
list_template= 'admin/filelist.html'¶
-
mkdir(path=None)¶ Directory creation view method
Parameters: path – Optional directory path. If not provided, will use the base directory
-
rename()¶ Rename view method
-
upload(path=None)¶ Upload view method
Parameters: path – Optional directory path. If not provided, will use the base directory
-
-
class
netdef.Engines.webadmin.FileModel.InstallationRepo(base_path, *args, **kwargs)[source]¶ Bases:
netdef.Engines.webadmin.MyBaseView.MyBaseView,flask_admin.contrib.fileadmin.FileAdmin-
action_view()¶
-
allowed_extensions= ('zip', 'whl', 'gz')¶
-
can_download= True¶
-
can_rename= False¶
-
delete()¶ Delete view method
-
download(path=None)¶ Download view method.
Parameters: path – File path.
-
edit()¶ Edit view method
-
index(path=None)¶
-
index_view(path=None)¶ Index view method
Parameters: path – Optional directory path. If not provided, will use the base directory
-
is_accessible()[source]¶ Override this method to add permission checks.
Flask-Admin does not make any assumptions about the authentication system used in your application, so it is up to you to implement it.
By default, it will allow access for everyone.
-
list_template= 'admin/filelist.html'¶
-
mkdir(path=None)¶ Directory creation view method
Parameters: path – Optional directory path. If not provided, will use the base directory
-
rename()¶ Rename view method
-
upload(path=None)¶ Upload view method
Parameters: path – Optional directory path. If not provided, will use the base directory
-
MyBaseView¶
-
class
netdef.Engines.webadmin.MyBaseView.MyBaseView(name=None, category=None, endpoint=None, url=None, static_folder=None, static_url_path=None, menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶ Bases:
flask_admin.base.BaseView
SettingsModel¶
-
class
netdef.Engines.webadmin.SettingsModel.SettingsModel(section, key, value)[source]¶ Bases:
object-
key¶
-
section¶
-
value¶
-
-
class
netdef.Engines.webadmin.SettingsModel.SettingsModelForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
wtforms.form.Form-
key= <UnboundField(StringField, ('key',), {})>¶
-
section= <UnboundField(StringField, ('section',), {})>¶
-
value= <UnboundField(StringField, ('value',), {})>¶
-
-
class
netdef.Engines.webadmin.SettingsModel.SettingsModelView(model, name=None, category=None, endpoint=None, url=None, static_folder=None, menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶ Bases:
netdef.Engines.webadmin.MyBaseView.MyBaseView,flask_admin.model.base.BaseModelView-
action_view()¶ Mass-model action view.
-
ajax_lookup()¶
-
ajax_update()¶ Edits a single column of a record in list view.
-
can_create= False¶
-
can_delete= False¶
-
can_edit= False¶
-
column_list= ('section', 'key', 'value')¶
-
column_searchable_list= 'key'¶
-
column_sortable_list= ()¶
-
create_view()¶ Create model view
-
delete_view()¶ Delete model view. Only POST method is allowed.
-
details_view()¶ Details model view
-
edit_view()¶ Edit model view
-
export(export_type)¶
-
form¶ alias of
SettingsModelForm
-
get_list(page, sort_field, sort_desc, search, filters, page_size=None)[source]¶ Return a paginated and sorted list of models from the data source.
Must be implemented in the child class.
Parameters: - page – Page number, 0 based. Can be set to None if it is first page.
- sort_field – Sort column name or None.
- sort_desc – If set to True, sorting is in descending order.
- search – Search query
- filters – List of filter tuples. First value in a tuple is a search index, second value is a search value.
- page_size – Number of results. Defaults to ModelView’s page_size. Can be overriden to change the page_size limit. Removing the page_size limit requires setting page_size to 0 or False.
-
index_view()¶ List view
-
init_search()[source]¶ Initialize search. If data provider does not support search,
init_searchwill returnFalse.
-
SourcesModel¶
-
class
netdef.Engines.webadmin.SourcesModel.SourcesModelForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
wtforms.form.Form-
key= <UnboundField(StringField, ('key',), {'render_kw': {'readonly': True}})>¶
-
process(*args, **kwargs)[source]¶ Take form, object data, and keyword arg input and have the fields process them.
Parameters: - formdata – Used to pass data coming from the enduser, usually
request.POSTor equivalent. - obj – If
formdatais empty or not provided, this object is checked for attributes matching form field names, which will be used for field values. - data – If provided, must be a dictionary of data. This is only used if
formdatais empty or not provided andobjdoes not contain an attribute named the same as the field. - **kwargs – If
formdatais empty or not provided andobjdoes not contain an attribute named the same as a field, form will assign the value of a matching keyword argument to the field, if one exists.
- formdata – Used to pass data coming from the enduser, usually
-
set_origin= <UnboundField(StringField, ('set_origin',), {'render_kw': {'readonly': True}})>¶
-
set_source_time= <UnboundField(StringField, ('set_source_time',), {'render_kw': {'readonly': True}})>¶
-
set_status_code= <UnboundField(StringField, ('set_status_code',), {'render_kw': {'readonly': True}})>¶
-
set_value= <UnboundField(StringField, ('set_value',), {'render_kw': {'readonly': True}})>¶
-
source= <UnboundField(StringField, ('source',), {'render_kw': {'readonly': True}})>¶
-
source_datatype= <UnboundField(StringField, ('source_datatype',), {'render_kw': {'readonly': True}})>¶
-
-
class
netdef.Engines.webadmin.SourcesModel.SourcesModelView(model, name=None, category=None, endpoint=None, url=None, static_folder=None, menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶ Bases:
netdef.Engines.webadmin.MyBaseView.MyBaseView,flask_admin.model.base.BaseModelView-
action_view()¶ Mass-model action view.
-
ajax_lookup()¶
-
ajax_update()¶ Edits a single column of a record in list view.
-
can_create= False¶
-
can_delete= False¶
-
can_edit= True¶
-
can_view_details= True¶
-
column_details_list= ('key', 'rule', 'source', 'controller', 'value_as_string', 'status_code', 'source_time', 'source_datatype', 'get_value', 'get_source_time', 'get_status_code', 'get_origin', 'set_value', 'set_source_time', 'set_status_code', 'set_origin')¶
-
column_list= ('key', 'rule', 'source', 'controller', 'value_as_string', 'status_code', 'source_time')¶
-
column_searchable_list= ('key', 'rule', 'source', 'controller', 'value')¶
-
column_sortable_list= ()¶
-
create_view()¶ Create model view
-
delete_view()¶ Delete model view. Only POST method is allowed.
-
details_view()¶ Details model view
-
edit_view()¶ Edit model view
-
export(export_type)¶
-
form¶ alias of
SourcesModelForm
-
get_list(page, sort_field, sort_desc, search, filters, page_size=None)[source]¶ Return a paginated and sorted list of models from the data source.
Must be implemented in the child class.
Parameters: - page – Page number, 0 based. Can be set to None if it is first page.
- sort_field – Sort column name or None.
- sort_desc – If set to True, sorting is in descending order.
- search – Search query
- filters – List of filter tuples. First value in a tuple is a search index, second value is a search value.
- page_size – Number of results. Defaults to ModelView’s page_size. Can be overriden to change the page_size limit. Removing the page_size limit requires setting page_size to 0 or False.
-
get_one(ref)[source]¶ Return one model by its id.
Must be implemented in the child class.
Parameters: id – Model id
-
index_view()¶ List view
-
init_search()[source]¶ Initialize search. If data provider does not support search,
init_searchwill returnFalse.
-
StatisticsModel¶
-
class
netdef.Engines.webadmin.StatisticsModel.StatisticsModel(key, value)[source]¶ Bases:
object-
key¶
-
value¶
-
-
class
netdef.Engines.webadmin.StatisticsModel.StatisticsModelForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
wtforms.form.Form-
key= <UnboundField(StringField, ('key',), {})>¶
-
value= <UnboundField(StringField, ('value',), {})>¶
-
-
class
netdef.Engines.webadmin.StatisticsModel.StatisticsModelView(model, name=None, category=None, endpoint=None, url=None, static_folder=None, menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶ Bases:
netdef.Engines.webadmin.SourcesModel.SourcesModelView-
action_view()¶ Mass-model action view.
-
ajax_lookup()¶
-
ajax_update()¶ Edits a single column of a record in list view.
-
can_create= False¶
-
can_delete= False¶
-
can_edit= False¶
-
can_view_details= False¶
-
column_list= ('key', 'value')¶
-
column_searchable_list= 'key'¶
-
column_sortable_list= ()¶
-
create_view()¶ Create model view
-
delete_view()¶ Delete model view. Only POST method is allowed.
-
details_view()¶ Details model view
-
edit_view()¶ Edit model view
-
export(export_type)¶
-
form¶ alias of
StatisticsModelForm
-
get_list(page, sort_field, sort_desc, search, filters, page_size=None)[source]¶ Return a paginated and sorted list of models from the data source.
Must be implemented in the child class.
Parameters: - page – Page number, 0 based. Can be set to None if it is first page.
- sort_field – Sort column name or None.
- sort_desc – If set to True, sorting is in descending order.
- search – Search query
- filters – List of filter tuples. First value in a tuple is a search index, second value is a search value.
- page_size – Number of results. Defaults to ModelView’s page_size. Can be overriden to change the page_size limit. Removing the page_size limit requires setting page_size to 0 or False.
-
index_view()¶ List view
-
Tools¶
-
class
netdef.Engines.webadmin.Tools.Tools(name=None, category=None, endpoint=None, url=None, static_folder=None, static_url_path=None, menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶
SecurityWebadminView¶
-
class
netdef.Engines.webadmin.SecurityWebadminView.BasicSecurityForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
netdef.Engines.webadmin.SecurityWebadminView.SecurityForm-
new_flask_secret= <UnboundField(SelectField, ('Renew session cookie',), {'choices': [('yes', 'Yes'), ('no', 'No')]})>¶
-
old_password= None¶
-
validate_password= None¶
-
-
class
netdef.Engines.webadmin.SecurityWebadminView.SecurityForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
wtforms.form.Form-
confirm= <UnboundField(PasswordField, ('Repeat Password',), {})>¶
-
login= <UnboundField(StringField, ('Login', [<wtforms.validators.Required object>]), {'default': functools.partial(<bound method RawConfigParser.get of <configparser.ConfigParser object>>, 'webadmin', 'users.admin.user', fallback='admin')})>¶
-
new_flask_secret= <UnboundField(SelectField, ('Renew session cookie',), {'choices': [('no', 'No'), ('yes', 'Yes')]})>¶
-
old_password= <UnboundField(PasswordField, ('Current password',), {})>¶
-
password= <UnboundField(PasswordField, ('New Password',), {})>¶
-
ssl_certificate= <UnboundField(SelectField, ('SSL Certificate',), {'default': functools.partial(<bound method RawConfigParser.get of <configparser.ConfigParser object>>, 'webadmin', 'ssl_certificate', fallback=''), 'choices': []})>¶
-
ssl_certificate_key= <UnboundField(SelectField, ('SSL Key',), {'default': functools.partial(<bound method RawConfigParser.get of <configparser.ConfigParser object>>, 'webadmin', 'ssl_certificate_key', fallback=''), 'choices': []})>¶
-
ssl_on= <UnboundField(SelectField, ('HTTPS On',), {'default': functools.partial(<bound method RawConfigParser.get of <configparser.ConfigParser object>>, 'webadmin', 'ssl_on', fallback='0'), 'choices': [('0', 'Off'), ('1', 'On')]})>¶
-
update_on= <UnboundField(SelectField, ('Package upgrade',), {'default': functools.partial(<bound method RawConfigParser.get of <configparser.ConfigParser object>>, 'auto_update', 'on', fallback=0), 'choices': [('0', 'Disable'), ('1', 'Enable')]})>¶
-
update_pre_release= <UnboundField(SelectField, ('Accept pre-releases',), {'default': functools.partial(<bound method RawConfigParser.get of <configparser.ConfigParser object>>, 'auto_update', 'pre_release', fallback=0), 'choices': [('0', 'No'), ('1', 'Yes')]})>¶
-
-
class
netdef.Engines.webadmin.SecurityWebadminView.SecurityWebadminView(name=None, category=None, endpoint=None, url=None, static_folder=None, static_url_path=None, menu_class_name=None, menu_icon_type=None, menu_icon_value=None)[source]¶ Bases:
netdef.Engines.webadmin.MyBaseView.MyBaseView-
choices_crts= [('', 'None')]¶
-
choices_keys= [('', 'None')]¶
-
SecurityCertificatesView¶
-
class
netdef.Engines.webadmin.SecurityCertificatesView.SecurityCertificatesForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)[source]¶ Bases:
wtforms.form.Form-
basicConstraints= <UnboundField(StringField, ('basicConstraints',), {'default': 'CA:TRUE', 'validators': [<wtforms.validators.Regexp object>]})>¶
-
cn= <UnboundField(StringField, ('Common name',), {'default': 'build-14281606-project-477358-netdef', 'validators': [<wtforms.validators.Regexp object>], 'render_kw': {'placeholder': 'Hostname, DNS, IP-address or leave it blank'}})>¶
-
current_password= <UnboundField(PasswordField, ('Current password',), {})>¶
-
days= <UnboundField(IntegerField, ('Days valid',), {'default': 7300})>¶
-
dns_1= <UnboundField(StringField, ('DNS.1',), {'default': 'build-14281606-project-477358-netdef', 'validators': [<wtforms.validators.Regexp object>]})>¶
-
dns_2= <UnboundField(StringField, ('DNS.2',), {'default': '', 'validators': [<wtforms.validators.Regexp object>]})>¶
-
dns_3= <UnboundField(StringField, ('DNS.3',), {'default': '', 'validators': [<wtforms.validators.Regexp object>]})>¶
-
extendedKeyUsage= <UnboundField(StringField, ('extendedKeyUsage',), {'default': 'critical, serverAuth', 'validators': [<wtforms.validators.Regexp object>]})>¶
-
form_opts= <flask_admin.form.FormOpts object>¶
-
gen_opcua= <UnboundField(SelectField, ('OpcUa certificate',), {'default': '1', 'choices': [('0', 'No change'), ('1', 'Generate new')], 'description': 'Following files will be overwritten:<ul><li>ssl/certs/opcua_certificate.pem</li><li>ssl/private/opcua_certificate.pem.key</li><li>ssl/certs/opcua_certificate.der</li><li>ssl/private/opcua_certificate.der.key</li></ul>'})>¶
-
gen_webadmin= <UnboundField(SelectField, ('Webadmin certificate',), {'default': '1', 'choices': [('0', 'No change'), ('1', 'Generate new')], 'description': 'Following files will be overwritten:<ul><li>ssl/certs/webadmin_certificate.pem</li><li>ssl/private/webadmin_certificate.pem.key</li><li>ssl/certs/webadmin_certificate.der</li><li>ssl/private/webadmin_certificate.der.key</li></ul>'})>¶
-
ip_1= <UnboundField(StringField, ('IP.1',), {'default': '127.0.0.1', 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.IPAddress object>]})>¶
-
ip_2= <UnboundField(StringField, ('IP.2',), {'default': '172.17.0.2', 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.IPAddress object>]})>¶
-
ip_3= <UnboundField(StringField, ('IP.3',), {'default': '', 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.IPAddress object>]})>¶
-
ip_4= <UnboundField(StringField, ('IP.4',), {'default': '', 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.IPAddress object>]})>¶
-
ip_5= <UnboundField(StringField, ('IP.5',), {'default': '', 'validators': [<wtforms.validators.Optional object>, <wtforms.validators.IPAddress object>]})>¶
-
keyUsage= <UnboundField(StringField, ('keyUsage',), {'default': 'critical, cRLSign, digitalSignature, keyCertSign', 'validators': [<wtforms.validators.Regexp object>]})>¶
-
subjectAltName= <UnboundField(HiddenField, ('subjectAltName:',), {})>¶
-
uri_1= <UnboundField(StringField, ('URI.1',), {'default': <function get_uri>, 'validators': [<wtforms.validators.Regexp object>]})>¶
-
uri_2= <UnboundField(StringField, ('URI.2',), {'default': '', 'validators': [<wtforms.validators.Regexp object>]})>¶
-
uri_3= <UnboundField(StringField, ('URI.3',), {'default': '', 'validators': [<wtforms.validators.Regexp object>]})>¶
-