コード例 #1
0
ファイル: opnsense.py プロジェクト: komori/OPNReport
 def data(self):
     data = super().data
     if hasattr_r(self.rootdoc.opnsense, 'OPNsense.Firewall.Alias.aliases.alias'):
         for alias in self.rootdoc.opnsense.OPNsense.Firewall.Alias.aliases.alias:
             if alias.name.string == data:
                 return {'alias': alias.data}
     return data
コード例 #2
0
 def data(self):
     data = super().data
     if hasattr_r(self.rootdoc.pfsense, 'aliases'):
         for alias in self.rootdoc.pfsense.aliases.alias:
             if alias.name.string == data:
                 return {'alias': alias.data}
     return data
コード例 #3
0
ファイル: opnsense.py プロジェクト: komori/OPNReport
 def data(self):
     data = super().data
     for interface_name, interface_data in self.rootdoc.opnsense.interfaces.data.items():
         alias_name = data
         if alias_name.endswith('ip'):
             alias_name = alias_name[:-2]
         if interface_name == alias_name:
             interface_data['name'] = data
             return {'interface': interface_data}
     if hasattr_r(self.rootdoc.opnsense, 'OPNsense.Firewall.Alias.aliases.alias'):
         for alias in self.rootdoc.opnsense.OPNsense.Firewall.Alias.aliases.alias:
             if alias.name.string == data:
                 return {'alias': alias.data}
     return data
コード例 #4
0
ファイル: markdown.py プロジェクト: anthrax3/pfFocus
def output_markdown(doc, stream):
    stream.write("# pfSense\n")
    stream.write("Version {}\n".format(doc.pfsense.version))
    stream.write("\n")

    stream.write("## System\n")
    info = obj_to_dict(doc.pfsense.system,
                       ('hostname', 'domain', 'timeservers', 'timezone',
                        'language', 'dnsserver'))
    output_markdown_table(stream, ('Option', 'Value'), info.items())
    stream.write("\n")

    if hasattr_r(doc.pfsense, 'interfaces'):
        stream.write("## Interfaces\n")
        interfaces = sorted(doc.pfsense.interfaces.data.items(),
                            key=lambda interface: interface[0])
        interfaces = [
            [interface_name] +
            dict_to_list(interface_data,
                         ('enable', 'descr', 'if', 'ipaddr', 'subnet'))
            for interface_name, interface_data in interfaces
        ]
        output_markdown_table(stream, ('Name', 'Enabled', 'Description',
                                       'Interface', 'Address', 'Subnet'),
                              interfaces)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'vlans.vlan'):
        stream.write("## VLANs\n")
        vlans = [
            obj_to_list(vlan, ('vlanif', 'tag', 'if', 'descr'))
            for vlan in doc.pfsense.vlans.vlan
        ]
        output_markdown_table(stream,
                              ('Name', 'Tag', 'Interface', 'Description'),
                              vlans)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'bridges.bridged'):
        stream.write("## Bridges\n")
        bridges = [
            obj_to_list(bridge, ('bridgeif', 'members', 'descr'))
            for bridge in doc.pfsense.bridges.bridged
        ]
        output_markdown_table(stream, ('Name', 'Members', 'Description'),
                              bridges)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'gateways.gateway_item'):
        stream.write("## Gateways\n")
        gateways = [
            obj_to_list(gateway, ('defaultgw', 'name', 'interface', 'gateway',
                                  'weight', 'ipprotocol', 'descr'))
            for gateway in doc.pfsense.gateways.gateway_item
        ]
        output_markdown_table(stream,
                              ('Default', 'Name', 'Interface', 'Gateway',
                               'Weight', 'IP', 'Description'), gateways)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'staticroutes.route'):
        stream.write("## Static routes\n")
        routes = [
            obj_to_list(route, ('network', 'gateway', 'descr'))
            for route in doc.pfsense.staticroutes.route
        ]
        output_markdown_table(stream, ('Network', 'Gateway', 'Description'),
                              routes)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'dhcpd'):
        stream.write("## DHCP ranges\n")
        for dhcpd_interface_name in sorted(doc.pfsense.dhcpd.data.keys()):
            dhcpd_interface = PfSenseRuleInterface(parent=doc.pfsense.dhcpd)
            dhcpd_interface.string = dhcpd_interface_name
            stream.write("### DHCPd configuration for {}\n".format(
                format_markdown_cell(dhcpd_interface)))
            dhcpd = getattr(doc.pfsense.dhcpd, dhcpd_interface_name)
            dhcpd_dict = obj_to_dict(
                dhcpd, ('enable', 'defaultleasetime', 'maxleasetime'))
            output_markdown_table(stream, ('Option', 'Value'),
                                  dhcpd_dict.items())
            stream.write("\n")
            if hasattr_r(dhcpd, 'range'):
                stream.write("#### Ranges\n")
                ranges = [
                    obj_to_list(range, ('from', 'to')) for range in dhcpd.range
                ]
                output_markdown_table(stream, ('From', 'To'), ranges)
                stream.write("\n")
            if hasattr_r(dhcpd, 'staticmap'):
                stream.write("#### Static mappings\n")
                staticmaps = [
                    obj_to_list(staticmap, ('mac', 'ipaddr', 'hostname'))
                    for staticmap in dhcpd.staticmap
                ]
                output_markdown_table(stream, ('MAC', 'Address', 'Hostname'),
                                      staticmaps)
                stream.write("\n")
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'aliases.alias'):
        stream.write("## Aliases\n")
        aliases = [
            obj_to_list(alias, ('name', 'type', 'address', 'descr', 'detail'))
            for alias in doc.pfsense.aliases.alias
        ]
        output_markdown_table(
            stream, ('Name', 'Type', 'Address', 'Description', 'Detail'),
            aliases)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'nat.rule'):
        stream.write("## NAT rules\n")
        rules = [
            obj_to_list(rule,
                        ('disabled', 'interface', 'source', 'destination',
                         'protocol', 'target', 'local_port', 'descr'))
            for rule in doc.pfsense.nat.rule
        ]
        output_markdown_table(
            stream, ('Disabled', 'Interface', 'Source', 'Destination',
                     'Protocol', 'Target', 'Local port', 'Description'), rules)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'nat.outbound.rule'):
        stream.write("## Outbound NAT rules\n")
        rules = [
            obj_to_list(rule,
                        ('disabled', 'interface', 'source', 'destination',
                         'dstport', 'protocol', 'target', 'descr'))
            for rule in doc.pfsense.nat.outbound.rule
        ]
        output_markdown_table(
            stream, ('Disabled', 'Interface', 'Source', 'Destination',
                     'Destination port', 'Protocol', 'Target', 'Description'),
            rules)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'filter.rule'):
        stream.write("## Filter rules\n")
        rules = [
            obj_to_list(rule, ('disabled', 'interface', 'type', 'ipprotocol',
                               'protocol', 'source', 'destination', 'descr'))
            for rule in doc.pfsense.filter.rule
        ]
        output_markdown_table(
            stream, ('Disabled', 'Interface', 'Type', 'IP', 'Protocol',
                     'Source', 'Destination', 'Description'), rules)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'dnsmasq'):
        stream.write("## DNSmasq configuration\n")
        dnsmasq = obj_to_dict(doc.pfsense.dnsmasq,
                              ('enable', 'regdhcp', 'regdhcpstatic',
                               'strict_order', 'custom_options', 'interface'))
        output_markdown_table(stream, ('Option', 'Value'), dnsmasq.items())
        stream.write("\n")
        if hasattr_r(doc.pfsense.dnsmasq, 'hosts'):
            stream.write("### Host overrides\n")
            hosts = [
                obj_to_dict(host, ('host', 'domain', 'ip', 'descr', 'aliases'))
                for host in doc.pfsense.dnsmasq.hosts
            ]
            hostlists = [[host] + list(
                map(
                    lambda item:
                    (setattr(item, 'ip', host['ip']),
                     setattr(item, 'descr', item.description), item.data)[-1],
                    getattr(host['aliases'], 'item', []))) for host in hosts]
            hosts = [
                dict_to_list(host, ('host', 'domain', 'ip', 'descr'))
                for hostlist in hostlists for host in hostlist
            ]
            output_markdown_table(stream,
                                  ('Host', 'Domain', 'IP', 'Description'),
                                  hosts)
            stream.write("\n")
        if hasattr_r(doc.pfsense.dnsmasq, 'domainoverrides'):
            stream.write("### Domain overrides\n")
            domains = [
                obj_to_list(domain, ('domain', 'ip', 'descr'))
                for domain in doc.pfsense.dnsmasq.domainoverrides
            ]
            output_markdown_table(stream, ('Domain', 'IP', 'Description'),
                                  domains)
            stream.write("\n")

    if hasattr_r(doc.pfsense, 'openvpn.openvpn_server'):
        stream.write("## OpenVPN servers\n")
        openvpn_servers = [
            obj_to_dict(openvpn_server,
                        ('vpnid', 'mode', 'authmode', 'protocol', 'dev_mode',
                         'interface', 'ipaddr', 'local_port', 'crypto',
                         'digest', 'tunnel_network', 'remote_network',
                         'local_network', 'dynamic_ip', 'pool_enable',
                         'topology', 'description', 'custom_options'))
            for openvpn_server in doc.pfsense.openvpn.openvpn_server
        ]
        for openvpn_server in openvpn_servers:
            stream.write("### {}\n".format(
                format_markdown_cell(openvpn_server['description'])))
            output_markdown_table(stream, ('Option', 'Value'),
                                  openvpn_server.items())
            stream.write("\n")

    if hasattr_r(doc.pfsense, 'openvpn.openvpn_client'):
        stream.write("## OpenVPN clients\n")
        openvpn_clients = [
            obj_to_dict(openvpn_client,
                        ('vpnid', 'auth_user', 'mode', 'protocol', 'dev_mode',
                         'interface', 'ipaddr', 'local_port', 'server_addr',
                         'server_port', 'crypto', 'digest', 'tunnel_network',
                         'remote_network', 'local_network', 'topology',
                         'description', 'custom_options'))
            for openvpn_client in doc.pfsense.openvpn.openvpn_client
        ]
        for openvpn_client in openvpn_clients:
            stream.write("### {}\n".format(
                format_markdown_cell(openvpn_client['description'])))
            output_markdown_table(stream, ('Option', 'Value'),
                                  openvpn_client.items())
            stream.write("\n")

    if hasattr_r(doc.pfsense, 'openvpn.openvpn_csc'):
        stream.write("## OpenVPN client specific overrides\n")
        cscs = [
            obj_to_list(csc, ('server_list', 'common_name', 'description',
                              'tunnel_network'))
            for csc in doc.pfsense.openvpn.openvpn_csc
        ]
        output_markdown_table(
            stream,
            ('VPN IDs', 'Common Name', 'Description', 'Tunnel Network'), cscs)
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'syslog'):
        stream.write("## Syslog configuration\n")
        syslog = obj_to_dict(
            doc.pfsense.syslog,
            ('enable', 'logall', 'logfilesize', 'nentries', 'remoteserver',
             'remoteserver2', 'remoteserver3', 'sourceip', 'ipproto'))
        output_markdown_table(stream, ('Option', 'Value'), syslog.items())
        stream.write("\n")

    if hasattr_r(doc.pfsense, 'sysctl.item'):
        stream.write("## System tunables\n")
        tunables = [
            obj_to_list(tunable, ('tunable', 'value', 'descr'))
            for tunable in doc.pfsense.sysctl.item
        ]
        output_markdown_table(stream, ('Name', 'Value', 'Description'),
                              tunables)
        stream.write("\n")