def fill_port_forwarding_group(self, form, ctx, pf_fda): def _fill_port_forward_to_form(rdf_node, fda): fda['new_fw_protocol'] = rdf_node.getS(ns_ui.protocol, rdf.String) fda['new_fw_port_in'] = rdf_node.getS(ns_ui.incomingPort, rdf.Integer) fda['new_fw_ip_out'] = rdf_node.getS(ns_ui.ipAddress, rdf.IPv4Address) fda['new_fw_port_out'] = rdf_node.getS(ns_ui.destinationPort, rdf.Integer) ui_root = helpers.get_ui_config() uidatahelpers.fill_dynamic_list_to_form(ui_root, ns_ui.portForwards, ns_ui.PortForward, pf_fda, _fill_port_forward_to_form)
def fill_routing_group(self, form, ctx, toplevel_fda): def _fill_route_to_form(rdf_node, fda, subnet_exist): if rdf_node.hasType(ns_ui.InternetConnectionRoute): fda['network_connection'] = 'internet' elif rdf_node.hasType(ns_ui.PrivateNetworkConnectionRoute): fda['network_connection'] = 'private' else: raise uidatahelpers.RdfDataError('Route\'s destination network is neither internet nor private network connection') # Default route does not have subnet # XXX: why not 0.0.0.0/0 instead? if subnet_exist: fda['subnet'] = rdf_node.getS(ns_ui.subnet, rdf.IPv4Subnet) gw_node = rdf_node.getS(ns_ui.routeGateway) if gw_node.hasType(ns_ui.RouteGatewayNetworkDefault): fda['gateway_selection'] = 'nw_default_gw' elif gw_node.hasType(ns_ui.RouteGatewayManual): fda['gateway_selection'] = 'manual_gw' fda['gateway'] = gw_node.getS(ns_ui.ipAddress, rdf.IPv4Address) else: raise uidatahelpers.RdfDataError('Route\'s gateway is neither network default nor set gateway.') def _fill_additional_route_to_form(rdf_node, fda): _fill_route_to_form(rdf_node.getS(ns_ui.route), fda, True) def _fill_ppp_firewall_rule_to_form(rdf_node, fda): if rdf_node.hasS(ns_ui.ipAddress): # XXX: this is never encountered in practice? fda['ip_subnet'] = rdf_node.getS(ns_ui.ipAddress, rdf.IPv4Address) elif rdf_node.hasS(ns_ui.subnet): fda['ip_subnet'] = rdf_node.getS(ns_ui.subnet, rdf.IPv4Subnet) else: raise uidatahelpers.RdfDataError('Prohibited service ip/subnet is neither ipaddress nor subnet.') if rdf_node.hasS(ns_ui.protocol): fda['protocol'] = rdf_node.getS(ns_ui.protocol, rdf.String) else: fda['protocol'] = 'any' uidatahelpers.fill_optional_field_to_form(rdf_node, ns_ui.port, rdf.Integer, fda, 'port') fda['action'] = rdf_node.getS(ns_ui.action, rdf.String) ui_root = helpers.get_ui_config() # Default route _fill_route_to_form(ui_root.getS(ns_ui.defaultRoute), toplevel_fda.descend('dr_group'), False) # Additional routes add_route_fda = toplevel_fda.descend('ar_group') uidatahelpers.fill_dynamic_list_to_form(ui_root, ns_ui.routes, ns_ui.Route, add_route_fda, _fill_additional_route_to_form) # Source routing (forced routing) source_fda = toplevel_fda.descend('sr_group') if ui_root.hasS(ns_ui.sourceRouting): source_fda['source_routing_selection'] = 'on' _fill_route_to_form(ui_root.getS(ns_ui.sourceRouting), source_fda, False) else: source_fda['source_routing_selection'] = 'off' # PPP firewall rules fwrule_fda = toplevel_fda.descend('fwrule_group') uidatahelpers.fill_dynamic_list_to_form(ui_root, ns_ui.pppFirewallRules, ns_ui.PppFirewallRule, fwrule_fda, _fill_ppp_firewall_rule_to_form)
def fill_routing_group(self, form, ctx, toplevel_fda): def _fill_route_to_form(rdf_node, fda, subnet_exist): if rdf_node.hasType(ns_ui.InternetConnectionRoute): fda['network_connection'] = 'internet' elif rdf_node.hasType(ns_ui.PrivateNetworkConnectionRoute): fda['network_connection'] = 'private' else: raise uidatahelpers.RdfDataError( 'Route\'s destination network is neither internet nor private network connection' ) # Default route does not have subnet # XXX: why not 0.0.0.0/0 instead? if subnet_exist: fda['subnet'] = rdf_node.getS(ns_ui.subnet, rdf.IPv4Subnet) gw_node = rdf_node.getS(ns_ui.routeGateway) if gw_node.hasType(ns_ui.RouteGatewayNetworkDefault): fda['gateway_selection'] = 'nw_default_gw' elif gw_node.hasType(ns_ui.RouteGatewayManual): fda['gateway_selection'] = 'manual_gw' fda['gateway'] = gw_node.getS(ns_ui.ipAddress, rdf.IPv4Address) else: raise uidatahelpers.RdfDataError( 'Route\'s gateway is neither network default nor set gateway.' ) def _fill_additional_route_to_form(rdf_node, fda): _fill_route_to_form(rdf_node.getS(ns_ui.route), fda, True) def _fill_ppp_firewall_rule_to_form(rdf_node, fda): if rdf_node.hasS(ns_ui.ipAddress): # XXX: this is never encountered in practice? fda['ip_subnet'] = rdf_node.getS(ns_ui.ipAddress, rdf.IPv4Address) elif rdf_node.hasS(ns_ui.subnet): fda['ip_subnet'] = rdf_node.getS(ns_ui.subnet, rdf.IPv4Subnet) else: raise uidatahelpers.RdfDataError( 'Prohibited service ip/subnet is neither ipaddress nor subnet.' ) if rdf_node.hasS(ns_ui.protocol): fda['protocol'] = rdf_node.getS(ns_ui.protocol, rdf.String) else: fda['protocol'] = 'any' uidatahelpers.fill_optional_field_to_form(rdf_node, ns_ui.port, rdf.Integer, fda, 'port') fda['action'] = rdf_node.getS(ns_ui.action, rdf.String) ui_root = helpers.get_ui_config() # Default route _fill_route_to_form(ui_root.getS(ns_ui.defaultRoute), toplevel_fda.descend('dr_group'), False) # Additional routes add_route_fda = toplevel_fda.descend('ar_group') uidatahelpers.fill_dynamic_list_to_form( ui_root, ns_ui.routes, ns_ui.Route, add_route_fda, _fill_additional_route_to_form) # Source routing (forced routing) source_fda = toplevel_fda.descend('sr_group') if ui_root.hasS(ns_ui.sourceRouting): source_fda['source_routing_selection'] = 'on' _fill_route_to_form(ui_root.getS(ns_ui.sourceRouting), source_fda, False) else: source_fda['source_routing_selection'] = 'off' # PPP firewall rules fwrule_fda = toplevel_fda.descend('fwrule_group') uidatahelpers.fill_dynamic_list_to_form( ui_root, ns_ui.pppFirewallRules, ns_ui.PppFirewallRule, fwrule_fda, _fill_ppp_firewall_rule_to_form)