示例#1
0
 def _create_user_list_entry(self, index):
     g = formalutils.CollapsibleGroup(str(index), label='')
     g.setCollapsed(False)
     g.add(
         formalutils.Field('username',
                           formal.String(required=True),
                           label='Username'))
     g.add(
         formalutils.Field('password',
                           formal.String(required=False),
                           formal.widgetFactory(
                               formalutils.SemiHiddenPassword),
                           label='Set password'))
     g.add(
         formalutils.Field('fixed_ip',
                           dt.FormIPv4Address(required=False),
                           label='Fixed IP address'))
     g.add(
         formalutils.Field('admin_rights',
                           formal.Boolean(required=True),
                           label='Allow VPNease administration'))
     g.add(
         formalutils.Field('vpn_rights',
                           formal.Boolean(required=True),
                           label='Allow VPN access'))
     return g
示例#2
0
 def _create_port_forward_list_entry(index):
     g = formalutils.CollapsibleGroup(str(index), label='')
     g.setCollapsed(collapsed=False)
     g.add(
         formalutils.Field('new_fw_protocol',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.SelectChoice,
                               options=txt.new_fw_protocol_options),
                           label=txt.new_fw_protocol_label))
     g.add(
         formalutils.Field(
             'new_fw_port_in',
             formal.Integer(
                 required=True,
                 validators=[formal.RangeValidator(min=0, max=65535)]),
             label=txt.new_fw_port_in_label))
     g.add(
         formalutils.Field('new_fw_ip_out',
                           dt.FormIPv4Address(required=True),
                           label=txt.new_fw_ip_out_label))
     g.add(
         formalutils.Field(
             'new_fw_port_out',
             formal.Integer(
                 required=True,
                 validators=[formal.RangeValidator(min=0, max=65535)]),
             label=txt.new_fw_port_out_label))
     return g
示例#3
0
 def _create_fwrule_list_entry(index):
     g = formalutils.CollapsibleGroup(str(index), label='')
     g.setCollapsed(collapsed=False)
     g.add(
         formalutils.Field('ip_subnet',
                           dt.FormIPv4Subnet(required=True),
                           label='IP address or subnet'))
     g.add(
         formalutils.Field('protocol',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.SelectChoice,
                               options=txt.fw_protocol_select_options),
                           label='Protocol'))
     g.add(
         formalutils.Field(
             'port',
             formal.Integer(
                 required=False,
                 validators=[formal.RangeValidator(min=0, max=65535)]),
             label='Port'))
     g.add(
         formalutils.Field('action',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.SelectChoice,
                               options=txt.fw_protocol_action_options),
                           label='Action'))
     return g
示例#4
0
 def _create_route_list_entry(index):
     g = formalutils.CollapsibleGroup(str(index), label='')
     g.setCollapsed(False)
     g.add(
         formalutils.Field('subnet',
                           dt.FormIPv4Subnet(required=True),
                           label=txt.routing_subnet))
     g.add(
         formalutils.Field('network_connection',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.SelectChoice,
                               options=txt.routing_nw_options),
                           label=txt.routing_nw_label))
     g.add(
         formalutils.Field('gateway_selection',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.routing_gw_select_options),
                           label=txt.routing_gw_select_label))
     g.add(
         formalutils.Field('gateway',
                           dt.FormIPv4Address(required=False),
                           label=txt.routing_gw_label))
     return g
示例#5
0
 def create_source_routing_group(self, form, ctx):
     txt = self.route_uitexts
     g = formalutils.CollapsibleGroup('sr_group',
                                      label=txt.source_routing_caption)
     g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseSourceRouting))
     g.add(
         formalutils.Field('source_routing_selection',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.source_routing_select_options),
                           label=txt.source_routing_select_label))
     g.add(
         formalutils.Field('network_connection',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.SelectChoice,
                               options=txt.routing_nw_options),
                           label=txt.routing_nw_label))
     g.add(
         formalutils.Field('gateway_selection',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.routing_gw_select_options),
                           label=txt.routing_gw_select_label))
     g.add(
         formalutils.Field('gateway',
                           dt.FormIPv4Address(required=False),
                           label=txt.routing_gw_label))
     return g
示例#6
0
 def create_client_connection_group():
     cc_group = formalutils.CollapsibleGroup('client_connection',
                                             label=txt.cc_group_caption)
     cc_group.setCollapsed(
         uihelpers.collapse_setting(ns_ui.collapseClientConnection))
     #cc_group.add(formalutils.Field('server_name', formal.String(required=False), label=txt.server_address_label))
     cc_group.add(
         formalutils.Field('psk_1',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formalutils.SemiHiddenPassword),
                           label='Primary pre-shared key'))
     cc_group.add(
         formalutils.Field('psk_2',
                           formal.String(required=False),
                           formal.widgetFactory(
                               formalutils.SemiHiddenPassword),
                           label='Secondary pre-shared key'))
     cc_group.add(
         formalutils.Field('dns',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.client_dns_options),
                           label=txt.client_dns_options_label))
     cc_group.add(
         formalutils.Field('dns_1',
                           dt.FormIPv4Address(required=False),
                           label=txt.primary_dns_label))
     cc_group.add(
         formalutils.Field('dns_2',
                           dt.FormIPv4Address(required=False),
                           label=txt.secondary_dns_label))
     cc_group.add(
         formalutils.Field('wins_1',
                           dt.FormIPv4Address(required=False),
                           label=txt.primary_wins_label))
     cc_group.add(
         formalutils.Field('wins_2',
                           dt.FormIPv4Address(required=False),
                           label=txt.secondary_wins_label))
     cc_group.add(
         formalutils.Field('client_subnet',
                           dt.FormIPv4Subnet(required=True),
                           label=txt.client_subnet_label))
     cc_group.add(
         formalutils.Field('client_address_range',
                           dt.FormIPv4AddressRange(required=True),
                           label=txt.client_address_range_label))
     cc_group.add(
         formalutils.Field('client_compression',
                           formal.Boolean(required=True),
                           label='VPN client traffic compression'))
     return cc_group
示例#7
0
 def create_internet_connection_group(self, form, ctx):
     txt = self.nc_uitexts
     g = formalutils.CollapsibleGroup('ic_group',
                                      label=txt.ic_group_caption)
     g.setCollapsed(
         uihelpers.collapse_setting(ns_ui.collapseInternetConnection))
     g.add(
         formalutils.Field('if',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.SelectChoice,
                               options=uihelpers.interface_options()),
                           label=txt.if_label))
     g.add(
         formalutils.Field('ip_address_selection',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.ip_selection_options),
                           label=txt.ip_selection_label))
     g.add(
         formalutils.Field('ip_address',
                           dt.FormIPv4AddressSubnet(required=False),
                           label=txt.ip_label))
     g.add(
         formalutils.Field('subnet_mask',
                           dt.FormSubnetMask(required=False),
                           label=txt.subnet_label))
     g.add(
         formalutils.Field('default_gateway',
                           dt.FormIPv4Address(required=False),
                           label=txt.default_gw_label))
     g.add(
         formalutils.Field(
             'mtu',
             formal.Integer(
                 required=True,
                 validators=[formal.RangeValidator(min=576, max=1500)]),
             label=txt.mtu_label))
     g.add(
         formalutils.Field(
             'uplink',
             dt.FormFloat(required=False,
                          validators=[formal.RangeValidator(min=0.128)]),
             label=txt.uplink_label))
     g.add(
         formalutils.Field('client_traffic',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.client_traffic_options),
                           label=txt.client_traffic_label))
     return g
示例#8
0
    def create_firewall_group(self, form, ctx):
        txt = self.fw_uitexts

        g = formalutils.CollapsibleGroup('firewall',
                                         label=txt.firewall_group_caption)
        g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseFirewall))
        g.add(
            formalutils.Field('firewall_in_use',
                              formal.Boolean(required=True),
                              label=txt.enable_routing_label))
        return g
示例#9
0
 def create_dns_group(self, form, ctx):
     txt = self.nc_uitexts
     g = formalutils.CollapsibleGroup('dns_group',
                                      label=txt.dns_group_caption)
     g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseDns))
     g.add(
         formalutils.Field('dns_selection',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.dns_select_options),
                           label=txt.dns_select_label))
     g.add(
         formalutils.Field('dns_1',
                           dt.FormIPv4Address(required=False),
                           label=txt.primary_dns_label))
     g.add(
         formalutils.Field('dns_2',
                           dt.FormIPv4Address(required=False),
                           label=txt.secondary_dns_label))
     return g
示例#10
0
 def create_iface_count_group(self, form, ctx):
     txt = self.nc_uitexts
     g = formalutils.CollapsibleGroup('ifcount_group',
                                      label='Network Setup')
     g.setCollapsed(uihelpers.collapse_setting(
         ns_ui.collapseInterfaceCount))
     g.add(
         formalutils.Field('interface_count',
                           formal.String(required=True),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.ifcount_options),
                           label=txt.ifcount_label))
     return g
示例#11
0
    def form_buttons(self, ctx):
        form = formal.Form()

        g = formalutils.CollapsibleGroup('import',
                                         label='Import Configuration')
        g.setCollapsed(False)  # makes no sense to collapse really
        g.add(
            formalutils.Field('importfile',
                              formal.File(required=False),
                              label='File to import'))
        sg = formalutils.SubmitFieldGroup('buttons')
        sg.add(
            formalutils.SubmitField('submitconfigimport',
                                    formal.String(),
                                    label='Import configuration'))
        g.add(sg)
        form.add(g)
        form.addAction(self.submitted_configimport,
                       name='submitconfigimport',
                       validate=False)
        return form
示例#12
0
 def create_radius_group(self, ctx, form):
     g = formalutils.CollapsibleGroup('radius', label='RADIUS Servers')
     g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseRadius))
     g.add(
         formalutils.Field('server1',
                           formal.String(required=False),
                           label='Primary RADIUS server address'))
     g.add(
         formalutils.Field(
             'serverport1',
             formal.Integer(
                 required=False,
                 validators=[formal.RangeValidator(min=1, max=65535)]),
             label='Primary RADIUS server port'))
     g.add(
         formalutils.Field('secret1',
                           formal.String(required=False),
                           formal.widgetFactory(
                               formalutils.SemiHiddenPassword),
                           label='Primary RADIUS shared secret'))
     g.add(
         formalutils.Field('server2',
                           formal.String(required=False),
                           label='Secondary RADIUS server address'))
     g.add(
         formalutils.Field(
             'serverport2',
             formal.Integer(
                 required=False,
                 validators=[formal.RangeValidator(min=1, max=65535)]),
             label='Secondary RADIUS server port'))
     g.add(
         formalutils.Field('secret2',
                           formal.String(required=False),
                           formal.widgetFactory(
                               formalutils.SemiHiddenPassword),
                           label='Secondary RADIUS shared secret'))
     g.add(
         formalutils.Field('nasidentifier',
                           formal.String(required=False),
                           label='NAS Identifier'))
     return g
示例#13
0
    def create_dynamic_dns_group(self, form, ctx):
        txt = self.nc_uitexts
        g = formalutils.CollapsibleGroup('ddns_group',
                                         label=txt.ddns_group_caption)
        g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseDynamicDns))
        # XXX: provider is required, but 'none' option is 'disabled'
        g.add(
            formalutils.Field('ddns_provider',
                              formal.String(required=True),
                              formal.widgetFactory(formal.SelectChoice,
                                                   options=txt.ddns_providers),
                              label=txt.ddns_providers_label))
        g.add(
            formalutils.Field('ddns_username',
                              formal.String(required=False),
                              label=txt.ddns_username_label))
        g.add(
            formalutils.Field('ddns_password',
                              formal.String(required=False),
                              formal.widgetFactory(
                                  formalutils.SemiHiddenPassword),
                              label=txt.ddns_password_label))
        g.add(
            formalutils.Field('ddns_hostname',
                              formal.String(required=False),
                              label=txt.ddns_hostname_label))

        ddns_address_options = [
            ('interface', 'Use Internet connection IP address'),
            ('natted', 'Use NATted Internet connection IP address'),
            ('static', 'Use the following IP address'),
        ]
        g.add(
            formalutils.Field('ddns_address_type',
                              formal.String(required=False),
                              formal.widgetFactory(
                                  formal.RadioChoice,
                                  options=ddns_address_options),
                              label='IP address to update'))

        g.add(
            formalutils.Field('ddns_address',
                              formal.String(required=False),
                              label='Static IP address'))
        return g
示例#14
0
 def create_private_network_group(self, form, ctx):
     txt = self.nc_uitexts
     g = formalutils.CollapsibleGroup('pn_group',
                                      label=txt.pn_group_caption)
     g.setCollapsed(uihelpers.collapse_setting(
         ns_ui.collapsePrivateNetwork))
     g.add(
         formalutils.Field('if',
                           formal.String(required=False),
                           formal.widgetFactory(
                               formal.SelectChoice,
                               options=uihelpers.interface_options()),
                           label=txt.if_label))
     g.add(
         formalutils.Field('ip_address_selection',
                           formal.String(required=False),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.ip_selection_options),
                           label=txt.ip_selection_label))
     g.add(
         formalutils.Field('ip_address',
                           dt.FormIPv4AddressSubnet(required=False),
                           label=txt.ip_label))
     g.add(
         formalutils.Field('subnet_mask',
                           dt.FormSubnetMask(required=False),
                           label=txt.subnet_label))
     g.add(
         formalutils.Field('default_gateway',
                           dt.FormIPv4Address(required=False),
                           label=txt.default_gw_label))
     g.add(
         formalutils.Field('client_traffic',
                           formal.String(required=False),
                           formal.widgetFactory(
                               formal.RadioChoice,
                               options=txt.client_traffic_options),
                           label=txt.client_traffic_label))
     return g
示例#15
0
    def _create_s2s_connection_list_entry(self, index):
        mode_options = [('server',
                         'Respond to a connection from a remote server'),
                        ('client', 'Initiate connection to a remote server')]

        g = formalutils.CollapsibleGroup(str(index), label='')
        g.setCollapsed(False)
        g.add(
            formalutils.Field('s2s_username',
                              formal.String(required=True),
                              label='Username'))
        g.add(
            formalutils.Field('s2s_password',
                              formal.String(required=True),
                              formal.widgetFactory(
                                  formalutils.SemiHiddenPassword),
                              label='Password'))
        g.add(
            formalutils.Field('s2s_subnets',
                              dt.FormIPv4SubnetList(required=True),
                              label='Remote subnets'))
        g.add(
            formalutils.Field('s2s_mode',
                              formal.String(required=True),
                              formal.widgetFactory(formal.RadioChoice,
                                                   options=mode_options),
                              label='Connection mode'))
        g.add(
            formalutils.Field('s2s_server',
                              formal.String(required=False),
                              label='Remote server address'))
        g.add(
            formalutils.Field('s2s_psk',
                              formal.String(required=False),
                              formal.widgetFactory(
                                  formalutils.SemiHiddenPassword),
                              label='Remote server pre-shared key'))
        return g
示例#16
0
    def form_management(self, ctx):
        form = formal.Form()
        fda = formalutils.FormDataAccessor(form, [], ctx)
        tzhelp = uihelpers.TimezoneHelper()
        txt = self.mng_uitexts

        ### License

        g = formalutils.CollapsibleGroup('license_group',
                                         label=txt.license_group_caption)
        g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseLicense))
        g.add(
            formalutils.Field('license_key',
                              formal.String(required=False),
                              label=txt.license_key_label))
        form.add(g)

        ### Locale

        tzoptions = []
        for tzname in tzhelp.get_timezones():
            tzoptions.append((tzname, tzname))

        def _tz_cmp(x, y):
            x_name, x_label = x
            y_name, y_label = y
            return unicode.__cmp__(unicode(x_label), unicode(y_label))

        tzoptions.sort(cmp=_tz_cmp)

        # XXX: keymap values are truncated because they are so long
        keymapoptions = []
        for gname, gname_escaped, human in gnomeconfig.get_keymap_list():
            keymapoptions.append(
                (gname_escaped, uihelpers.ui_truncate(human, 56)))

        def _km_cmp(x, y):
            x_name, x_label = x
            y_name, y_label = y
            return unicode.__cmp__(unicode(x_label), unicode(y_label))

        keymapoptions.sort(cmp=_km_cmp)

        g = formalutils.CollapsibleGroup('locale_group',
                                         label='Locale Settings')
        g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseLocale))
        g.add(
            formalutils.Field('timezone',
                              formal.String(required=True),
                              formal.widgetFactory(formal.SelectChoice,
                                                   options=tzoptions),
                              label='Timezone'))
        g.add(
            formalutils.Field('keymap',
                              formal.String(required=True),
                              formal.widgetFactory(formal.SelectChoice,
                                                   options=keymapoptions),
                              label='Keyboard layout'))

        # XXX: it would be good if we could show a time example using the timezone
        # admin has selected.

        form.add(g)

        ### Reboots

        g = formalutils.CollapsibleGroup('reboot_group',
                                         label=txt.reboot_group_caption)
        g.setCollapsed(
            uihelpers.collapse_setting(ns_ui.collapseProductMaintenance))
        g.add(
            formalutils.Field('reboot_day',
                              formal.Integer(required=True),
                              formal.widgetFactory(
                                  formal.SelectChoice,
                                  options=txt.reboot_day_options),
                              label=txt.reboot_day_label))
        g.add(
            formalutils.Field('reboot_time',
                              formal.Integer(required=True),
                              formal.widgetFactory(
                                  formal.SelectChoice,
                                  options=txt.reboot_time_options),
                              label=txt.reboot_time_label))
        # Information about the periodic reboot consequences (about 5 minutes downtime).
        g.add(
            formalutils.Field('automatic_updates',
                              formal.Boolean(required=True),
                              label=txt.automatic_update_label))
        form.add(g)

        ### SNMP

        g = formalutils.CollapsibleGroup('snmp_group', label='SNMP Monitoring')
        g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseSnmp))
        g.add(
            uihelpers.create_access_control_dropdown('snmp_access',
                                                     'SNMP read-only access'))
        g.add(
            formalutils.Field('snmp_community',
                              formal.String(required=False),
                              formal.widgetFactory(
                                  formalutils.SemiHiddenPassword),
                              label='SNMP community string (password)'))
        form.add(g)

        ### Remote management

        g = formalutils.CollapsibleGroup('remote_group',
                                         label=txt.remote_group_caption)
        g.setCollapsed(
            uihelpers.collapse_setting(ns_ui.collapseRemoteManagement))
        g.add(
            uihelpers.create_access_control_dropdown('www_administration',
                                                     'Web administration'))
        g.add(
            uihelpers.create_access_control_dropdown('ssh_connection',
                                                     'SSH connection'))
        g.add(
            formalutils.Field('root_password1',
                              formal.String(required=False),
                              formal.widgetFactory(formalutils.HiddenPassword),
                              label='Set root password'))
        g.add(
            formalutils.Field('root_password2',
                              formal.String(required=False),
                              formal.widgetFactory(formalutils.HiddenPassword),
                              label='Re-enter root password'))
        form.add(g)

        ### Admin e-mails

        # XXX: not yet implemented
        #g = formalutils.CollapsibleGroup('email_group', label='Administrator E-mail')
        #g.setCollapsed(uihelpers.collapse_setting(ns_ui.collapseAdminEmail))
        #g.add(formalutils.Field('smtp_server', formal.String(required=False), label='SMTP server'))
        #g.add(formalutils.Field('smtp_from', formal.String(required=False), label='FROM address'))
        #g.add(formalutils.Field('smtp_to', formal.String(required=False), label='TO address(es) (comma separated)'))
        #form.add(g)

        ### SSL certificate

        g = formalutils.CollapsibleGroup('ssl_group', label='SSL Certificate')
        g.setCollapsed(uihelpers.collapse_setting(
            ns_ui.collapseSslCertificate))
        g.add(
            formalutils.Field(
                'ssl_certificate_chain',
                formal.String(required=False),
                formal.widgetFactory(formal.TextArea, cols=80, rows=10),
                label=
                'SSL Certificate Chain (PEM format, server certificate first)')
        )
        g.add(
            formalutils.Field('ssl_private_key',
                              formal.String(required=False),
                              formal.widgetFactory(formal.TextArea,
                                                   cols=80,
                                                   rows=10),
                              label='SSL Private Key (PEM format)'))
        form.add(g)

        ### Submit buttons

        sg = formalutils.SubmitFieldGroup('buttons')
        sg.add(
            formalutils.SubmitField('submit',
                                    formal.String(),
                                    label='Save changes'))
        form.add(sg)
        form.addAction(self.submitted, name='submit', validate=False)

        ### Fill data to form

        try:
            self.fill_management(ctx, fda)
        except:
            # ignore failure so user has chance to edit the form
            _log.exception('fill_form_data failed, ignoring')

        return form