sandbox/asa/recursion_services.py
2024-11-02 14:14:15 +03:00

1627 lines
37 KiB
Python

import json
from pprint import pprint
raw_service_objects = [
{
"name": "service_tcp_destination",
"description": "TCP: Only destination",
"type": "tcp",
"destination": "1"
},
{
"name": "service_udp_all",
"description": "UDP: source and destination",
"type": "udp",
"source": "2",
"destination": "1"
},
{
"name": "service_icmp_all",
"description": "ICMP: type + code",
"type": "icmp",
"icmp_type": "1",
"icmp_code": "2"
},
{
"name": "service_icmp6_all",
"description": "ICMP6: type + code",
"type": "icmp",
"icmp_type": "254",
"icmp_code": "0"
},
{
"name": "service_protocol_23",
"description": "Protocol: 23",
"protocol": "23"
},
{
"name": "service_protocol_name",
"description": "Protocol: Name \"ip\"",
"protocol": "ip"
},
{
"name": "service_tcp_source",
"description": "TCP: Only source",
"type": "tcp",
"source": "123"
},
{
"name": "service_tcp_all",
"description": "TCP: destination and source",
"type": "tcp",
"source": "2",
"destination": "1"
},
{
"name": "service_udp_source",
"description": "UDP: Only source",
"type": "udp",
"source": "1"
},
{
"name": "service_udp_destination",
"description": "UDP: only destination",
"type": "udp",
"destination": "1"
},
{
"name": "service_icmp_type",
"description": "ICMP: only type",
"type": "icmp"
},
{
"name": "service_icmp6_type",
"description": "ICMP6: type only",
"type": "icmp"
},
{
"name": "service_protocol_12",
"description": "Protocol: 12",
"protocol": "12"
},
{
"name": "service_tcp_no_descr",
"type": "tcp",
"source": "2",
"destination": "1"
},
{
"name": "tcp_obj",
"description": "descr",
"type": "tcp",
"destination": "455"
},
{
"name": "udp_obj",
"description": "descr",
"type": "udp",
"destination": "456"
},
{
"name": "icmp_obj",
"description": "descr",
"type": "icmp",
"icmp_type": "250",
"icmp_code": "5"
},
{
"name": "icmp6_obj",
"description": "descr",
"type": "icmp",
"icmp_type": "250",
"icmp_code": "5"
},
{
"name": "protocol_obj",
"description": "descr",
"protocol": "252"
}
]
service_objects = {}
for item in raw_service_objects:
name = item["name"]
service_objects[name] = item
base_service_groups = {
"test_service_group": {
"name": "test_service_group",
"type": "",
"description": "",
"members": [
{
"service_object_name": "service_udp_all"
},
{
"service_object_name": "service_tcp_destination"
}
]
},
"tcpudp_service_grp": {
"name": "tcpudp_service_grp",
"type": "tcp-udp",
"description": "",
"members": [
{
"port": "discard"
},
{
"port": "nfs"
}
]
},
"test_tcp_grp": {
"name": "test_tcp_grp",
"type": "tcp",
"description": "TCP group description",
"members": [
{
"port": "aol"
},
{
"port": "citrix-ica"
}
]
},
"udp_test_service_group": {
"name": "udp_test_service_group",
"type": "udp",
"description": "",
"members": [
{
"port": "biff"
},
{
"port": "www"
}
]
},
"UDP_grp_test": {
"name": "UDP_grp_test",
"type": "udp",
"description": "Description",
"members": [
{
"group_name": "tcpudp_service_grp"
},
{
"port": "23"
},
{
"port_range_start": "23",
"port_range_finish": "bootps"
},
{
"port": "www"
}
]
},
"TCP_GROUP_all": {
"name": "TCP_GROUP_all",
"type": "tcp",
"description": "description",
"members": [
{
"port_range_start": "1",
"port_range_finish": "65535"
},
{
"port": "5"
},
{
"port_range_start": "5",
"port_range_finish": "255"
},
{
"port": "aol"
},
{
"port": "bgp"
},
{
"port": "chargen"
},
{
"port": "cifs"
},
{
"port": "citrix-ica"
},
{
"port": "ctiqbe"
},
{
"port": "daytime"
},
{
"port": "discard"
},
{
"port": "domain"
},
{
"port": "echo"
},
{
"port": "exec"
},
{
"port": "finger"
},
{
"port": "ftp"
},
{
"port": "ftp-data"
},
{
"port": "gopher"
},
{
"port": "h323"
},
{
"port": "hostname"
},
{
"port": "www"
},
{
"port": "https"
},
{
"port": "ident"
},
{
"port": "imap4"
},
{
"port": "irc"
},
{
"port": "kerberos"
},
{
"port": "klogin"
},
{
"port": "kshell"
},
{
"port": "ldap"
},
{
"port": "ldaps"
},
{
"port": "login"
},
{
"port": "lotusnotes"
},
{
"port": "lpd"
},
{
"port": "netbios-ssn"
},
{
"port": "nfs"
},
{
"port": "nntp"
},
{
"port": "pcanywhere-data"
},
{
"port": "pim-auto-rp"
},
{
"port": "pop2"
},
{
"port": "pop3"
},
{
"port": "pptp"
},
{
"port": "rsh"
},
{
"port": "rtsp"
},
{
"port": "sip"
},
{
"port": "smtp"
},
{
"port": "sqlnet"
},
{
"port": "ssh"
},
{
"port": "sunrpc"
},
{
"port": "tacacs"
},
{
"port": "talk"
},
{
"port": "telnet"
},
{
"port": "uucp"
},
{
"port": "whois"
},
{
"group_name": "tcpudp_service_grp"
},
{
"group_name": "test_tcp_grp"
}
]
},
"TCP_GROUP1": {
"name": "TCP_GROUP1",
"type": "tcp",
"description": "description",
"members": [
{
"group_name": "TCP_GROUP_all"
},
{
"group_name": "tcpudp_service_grp"
}
]
},
"TCP_GROUP2": {
"name": "TCP_GROUP2",
"type": "tcp",
"description": "",
"members": [
{
"port": "54"
},
{
"port_range_start": "54",
"port_range_finish": "255"
},
{
"port": "aol"
},
{
"port": "bgp"
}
]
},
"UDP_GROUP1": {
"name": "UDP_GROUP1",
"type": "udp",
"description": "description",
"members": [
{
"group_name": "tcpudp_service_grp"
},
{
"group_name": "udp_test_service_group"
}
]
},
"UDP_GROUP2": {
"name": "UDP_GROUP2",
"type": "udp",
"description": "",
"members": [
{
"port": "356"
},
{
"port": "bootps"
},
{
"port": "cifs"
},
{
"port": "discard"
}
]
},
"UDP_GROUP3": {
"name": "UDP_GROUP3",
"type": "udp",
"description": "description",
"members": [
{
"port": "305"
},
{
"port": "45"
},
{
"port": "47"
}
]
},
"UDP_GROUP4": {
"name": "UDP_GROUP4",
"type": "udp",
"description": "",
"members": [
{
"port_range_start": "5",
"port_range_finish": "35"
},
{
"port_range_start": "78",
"port_range_finish": "6557"
}
]
},
"UDP_GROUP_all": {
"name": "UDP_GROUP_all",
"type": "udp",
"description": "description",
"members": [
{
"group_name": "UDP_grp_test"
},
{
"group_name": "tcpudp_service_grp"
},
{
"port": "0"
},
{
"port_range_start": "0",
"port_range_finish": "2"
},
{
"port_range_start": "54",
"port_range_finish": "2456"
},
{
"port": "56"
},
{
"port": "biff"
},
{
"port": "bootpc"
},
{
"port": "bootps"
},
{
"port": "cifs"
},
{
"port": "discard"
},
{
"port": "dnsix"
},
{
"port": "domain"
},
{
"port": "echo"
},
{
"port": "www"
},
{
"port": "isakmp"
},
{
"port": "kerberos"
},
{
"port": "mobile-ip"
},
{
"port": "nameserver"
},
{
"port": "netbios-dgm"
},
{
"port": "netbios-ns"
},
{
"port": "nfs"
},
{
"port": "ntp"
},
{
"port": "pcanywhere-status"
},
{
"port": "pim-auto-rp"
},
{
"port": "radius"
},
{
"port": "radius-acct"
},
{
"port": "rip"
},
{
"port": "secureid-udp"
},
{
"port": "sip"
},
{
"port": "snmp"
},
{
"port": "snmptrap"
},
{
"port": "sunrpc"
},
{
"port": "syslog"
},
{
"port": "tacacs"
},
{
"port": "talk"
},
{
"port": "tftp"
},
{
"port": "time"
},
{
"port": "who"
},
{
"port": "xdmcp"
},
{
"group_name": "udp_test_service_group"
}
]
},
"TCP_GROUP": {
"name": "TCP_GROUP",
"type": "tcp",
"description": "long descriptiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooon",
"members": [
{
"port": "aol"
},
{
"port": "bgp"
},
{
"port": "chargen"
}
]
},
"TCP-UDP_GROUP1": {
"name": "TCP-UDP_GROUP1",
"type": "tcp-udp",
"description": "",
"members": [
{
"group_name": "tcpudp_service_grp"
}
]
},
"TCP-UDP_GROUP2": {
"name": "TCP-UDP_GROUP2",
"type": "tcp-udp",
"description": "",
"members": [
{
"port": "cifs"
},
{
"port": "discard"
},
{
"port": "domain"
},
{
"port": "echo"
},
{
"port": "www"
},
{
"port": "kerberos"
},
{
"port": "nfs"
}
]
},
"TCP-UDP_GROUP3": {
"name": "TCP-UDP_GROUP3",
"type": "tcp-udp",
"description": "description",
"members": [
{
"port": "2030"
},
{
"port": "45"
}
]
},
"TCP-UDP_GROUP4": {
"name": "TCP-UDP_GROUP4",
"type": "tcp-udp",
"description": "",
"members": [
{
"port_range_start": "43",
"port_range_finish": "654"
},
{
"port_range_start": "687",
"port_range_finish": "6554"
}
]
},
"TCP-UDP_GROUP_all": {
"name": "TCP-UDP_GROUP_all",
"type": "tcp-udp",
"description": "description",
"members": [
{
"port_range_start": "2000",
"port_range_finish": "2100"
},
{
"port": "56"
},
{
"port_range_start": "56",
"port_range_finish": "6574"
},
{
"port": "cifs"
},
{
"port": "discard"
},
{
"port": "domain"
},
{
"port": "echo"
},
{
"port": "www"
},
{
"port": "kerberos"
},
{
"port": "nfs"
},
{
"port": "pim-auto-rp"
},
{
"port": "sip"
},
{
"port": "sunrpc"
},
{
"port": "tacacs"
},
{
"port": "talk"
},
{
"group_name": "tcpudp_service_grp"
}
]
},
"SERVICE_GROUP1": {
"name": "SERVICE_GROUP1",
"type": "",
"description": "description",
"members": [
{
"group_name": "test_service_group"
}
]
},
"SERVICE_GROUP2": {
"name": "SERVICE_GROUP2",
"type": "",
"description": "description",
"members": [
{
"service_object_name": "service_icmp6_all"
},
{
"service_object_name": "service_icmp_all"
},
{
"service_object_name": "service_protocol_23"
},
{
"service_object_name": "service_protocol_name"
},
{
"service_object_name": "service_tcp_all"
},
{
"service_object_name": "service_tcp_destination"
},
{
"service_object_name": "service_tcp_source"
},
{
"service_object_name": "service_udp_all"
},
{
"service_object_name": "service_udp_destination"
},
{
"service_object_name": "service_udp_source"
}
]
},
"SERVICE_GROUP3": {
"name": "SERVICE_GROUP3",
"type": "",
"description": "",
"members": [
{
"protocol": "ip"
},
{
"protocol": "icmp"
},
{
"protocol": "snp"
},
{
"protocol": "udp"
},
{
"protocol": "igmp"
},
{
"protocol": "ipinip"
},
{
"protocol": "gre"
},
{
"protocol": "esp"
},
{
"protocol": "icmp6"
},
{
"protocol": "tcp"
},
{
"protocol": "igrp"
},
{
"protocol": "icmp",
"icmp_type": "echo"
},
{
"protocol": "icmp",
"icmp_type": "echo-reply"
},
{
"protocol": "icmp",
"icmp_type": "information-reply"
},
{
"protocol": "icmp",
"icmp_type": "information-request"
},
{
"protocol": "icmp",
"icmp_type": "mask-reply"
},
{
"protocol": "tcp-udp",
"destination_port": "www"
},
{
"protocol": "tcp-udp",
"destination_port": "kerberos"
},
{
"protocol": "tcp-udp",
"destination_port": "sip"
},
{
"protocol": "tcp-udp",
"destination_port": "sunrpc"
},
{
"protocol": "tcp",
"destination_port": "bgp"
},
{
"protocol": "tcp",
"destination_port": "chargen"
},
{
"protocol": "tcp",
"destination_port": "cifs"
},
{
"protocol": "tcp",
"destination_port": "citrix-ica"
},
{
"protocol": "tcp",
"destination_port": "ctiqbe"
},
{
"protocol": "tcp",
"destination_port": "daytime"
},
{
"protocol": "tcp",
"destination_port": "discard"
},
{
"protocol": "tcp",
"destination_port": "domain"
},
{
"protocol": "tcp",
"destination_port": "echo"
},
{
"protocol": "udp",
"destination_port": "isakmp"
},
{
"protocol": "udp",
"destination_port": "kerberos"
},
{
"protocol": "udp",
"destination_port": "mobile-ip"
},
{
"protocol": "udp",
"destination_port": "nameserver"
}
]
},
"SERVICE_GROUP4": {
"name": "SERVICE_GROUP4",
"type": "",
"description": "description",
"members": [
{
"service_object_name": "icmp6_obj"
},
{
"service_object_name": "icmp_obj"
},
{
"service_object_name": "protocol_obj"
},
{
"protocol": "tcp-udp",
"destination_port": "456"
},
{
"service_object_name": "tcp_obj"
},
{
"service_object_name": "udp_obj"
}
]
},
"SERVICE_GROUP_all": {
"name": "SERVICE_GROUP_all",
"type": "",
"description": "description",
"members": [
{
"protocol": "ip"
},
{
"protocol": "udp"
},
{
"protocol": "ah"
},
{
"protocol": "tcp"
},
{
"protocol": "icmp",
"icmp_type": "echo"
},
{
"protocol": "icmp6",
"icmp_type": "router-solicitation"
},
{
"service_object_name": "icmp6_obj"
},
{
"service_object_name": "protocol_obj"
},
{
"service_object_name": "service_icmp_all"
},
{
"service_object_name": "service_tcp_destination"
},
{
"protocol": "tcp-udp",
"destination_port": "kerberos"
},
{
"protocol": "tcp",
"destination_port": "chargen"
},
{
"protocol": "tcp",
"destination_port": "cifs"
},
{
"group_name": "test_service_group"
},
{
"protocol": "udp",
"destination_port": "nfs"
},
{
"service_object_name": "udp_obj"
}
]
},
"ip_serv_group_1": {
"name": "ip_serv_group_1",
"type": "",
"description": "",
"members": [
{
"group_name": "SERVICE_GROUP1"
},
{
"group_name": "SERVICE_GROUP2"
},
{
"service_object_name": "service_icmp_all"
},
{
"service_object_name": "udp_obj"
}
]
},
"ip_serv_group2": {
"name": "ip_serv_group2",
"type": "",
"description": "",
"members": [
{
"group_name": "SERVICE_GROUP3"
},
{
"service_object_name": "icmp_obj"
},
{
"group_name": "ip_serv_group_1"
}
]
},
"ip_serv_group3": {
"name": "ip_serv_group3",
"type": "",
"description": "",
"members": [
{
"group_name": "ip_serv_group2"
},
{
"service_object_name": "tcp_obj"
},
{
"group_name": "test_service_group"
}
]
},
"tcp_serv_group1": {
"name": "tcp_serv_group1",
"type": "tcp",
"description": "",
"members": [
{
"group_name": "TCP_GROUP"
},
{
"group_name": "TCP_GROUP1"
}
]
},
"tcp_serv_group2": {
"name": "tcp_serv_group2",
"type": "tcp",
"description": "",
"members": [
{
"port": "bgp"
},
{
"port": "chargen"
},
{
"group_name": "tcp_serv_group1"
}
]
},
"tcp_serv_group3": {
"name": "tcp_serv_group3",
"type": "tcp",
"description": "",
"members": [
{
"group_name": "tcp_serv_group1"
},
{
"group_name": "tcp_serv_group2"
}
]
},
"tcpudp_serv_group1": {
"name": "tcpudp_serv_group1",
"type": "tcp-udp",
"description": "",
"members": [
{
"group_name": "TCP-UDP_GROUP2"
}
]
},
"tcpudp_serv_group2": {
"name": "tcpudp_serv_group2",
"type": "tcp-udp",
"description": "",
"members": [
{
"group_name": "TCP-UDP_GROUP3"
},
{
"port": "kerberos"
},
{
"port": "nfs"
},
{
"group_name": "tcpudp_serv_group1"
}
]
},
"tcpudp_serv_group3": {
"name": "tcpudp_serv_group3",
"type": "tcp-udp",
"description": "",
"members": [
{
"group_name": "tcpudp_serv_group1"
},
{
"group_name": "tcpudp_serv_group2"
}
]
}
}
icmp_service_groups = {
"icmp_test_grp": {
"name": "icmp_test_grp",
"type": "icmp",
"description": "",
"members": [
{
"icmp_object_name": "mobile-redirect"
},
{
"icmp_object_name": "router-advertisement"
}
]
},
"ICMP_GROUP1": {
"name": "ICMP_GROUP1",
"type": "icmp",
"description": "",
"members": [
{
"group_name": "icmp_test_grp"
}
]
},
"ICMP_GROUP2": {
"name": "ICMP_GROUP2",
"type": "icmp",
"description": "description",
"members": [
{
"icmp_object_name": "echo"
},
{
"icmp_object_name": "echo-reply"
},
{
"icmp_object_name": "information-reply"
},
{
"icmp_object_name": "information-request"
},
{
"icmp_object_name": "redirect"
}
]
},
"ICMP_GROUP3": {
"name": "ICMP_GROUP3",
"type": "icmp",
"description": "description",
"members": [
{
"icmp_object_name": "146"
},
{
"icmp_object_name": "33"
},
{
"icmp_object_name": "43"
}
]
},
"ICMP_GROUP4_all": {
"name": "ICMP_GROUP4_all",
"type": "icmp",
"description": "description",
"members": [
{
"group_name": "ICMP_GROUP1"
},
{
"group_name": "ICMP_GROUP2"
},
{
"group_name": "ICMP_GROUP3"
},
{
"icmp_object_name": "74"
},
{
"icmp_object_name": "alternate-address"
},
{
"icmp_object_name": "conversion-error"
},
{
"icmp_object_name": "echo"
},
{
"icmp_object_name": "echo-reply"
},
{
"icmp_object_name": "information-reply"
},
{
"icmp_object_name": "information-request"
},
{
"icmp_object_name": "mask-reply"
},
{
"icmp_object_name": "mask-request"
},
{
"icmp_object_name": "mobile-redirect"
},
{
"icmp_object_name": "parameter-problem"
},
{
"icmp_object_name": "redirect"
},
{
"icmp_object_name": "router-advertisement"
},
{
"icmp_object_name": "router-solicitation"
},
{
"icmp_object_name": "source-quench"
},
{
"icmp_object_name": "time-exceeded"
},
{
"icmp_object_name": "timestamp-reply"
},
{
"icmp_object_name": "timestamp-request"
},
{
"icmp_object_name": "traceroute"
},
{
"icmp_object_name": "unreachable"
},
{
"group_name": "icmp_test_grp"
}
]
},
"icmp_serv_group1": {
"name": "icmp_serv_group1",
"type": "icmp",
"description": "",
"members": [
{
"group_name": "ICMP_GROUP1"
},
{
"group_name": "ICMP_GROUP2"
}
]
},
"icmp_serv_group2": {
"name": "icmp_serv_group2",
"type": "icmp",
"description": "descr",
"members": [
{
"group_name": "ICMP_GROUP3"
},
{
"icmp_object_name": "echo"
},
{
"icmp_object_name": "echo-reply"
},
{
"group_name": "icmp_serv_group1"
},
{
"group_name": "icmp_test_grp"
}
]
},
"icmp_serv_group3": {
"name": "icmp_serv_group3",
"type": "icmp",
"description": "descr",
"members": [
{
"group_name": "ICMP_GROUP3"
},
{
"icmp_object_name": "mask-request"
},
{
"icmp_object_name": "mobile-redirect"
},
{
"group_name": "icmp_serv_group1"
},
{
"group_name": "icmp_serv_group2"
}
]
}
}
protocol_service_groups = {
"TCPUDP": {
"name": "TCPUDP",
"type": "protocol",
"description": "",
"members": [
{
"protocol_object": "udp"
},
{
"protocol_object": "tcp"
}
]
},
"DM_INLINE_PROTOCOL_1": {
"name": "DM_INLINE_PROTOCOL_1",
"type": "protocol",
"description": "",
"members": [
{
"protocol_object": "icmp"
},
{
"protocol_object": "8"
}
]
},
"test_protocol_grp": {
"name": "test_protocol_grp",
"type": "protocol",
"description": "",
"members": [
{
"protocol_object": "esp"
},
{
"protocol_object": "igrp"
}
]
},
"PROTO_GROUP": {
"name": "PROTO_GROUP",
"type": "protocol",
"description": "description",
"members": [
{
"protocol_object": "ip"
},
{
"protocol_object": "udp"
},
{
"protocol_object": "5"
},
{
"protocol_object": "icmp6"
},
{
"protocol_object": "78"
},
{
"group_name": "TCPUDP"
}
]
},
"PROTO_GROUP2": {
"name": "PROTO_GROUP2",
"type": "protocol",
"description": "",
"members": [
{
"group_name": "TCPUDP"
}
]
},
"PROTO_GROUP3": {
"name": "PROTO_GROUP3",
"type": "protocol",
"description": "description",
"members": [
{
"protocol_object": "100"
},
{
"protocol_object": "23"
},
{
"protocol_object": "24"
}
]
},
"PROTO_GROUP4": {
"name": "PROTO_GROUP4",
"type": "protocol",
"description": "description",
"members": [
{
"protocol_object": "ip"
},
{
"protocol_object": "icmp"
},
{
"protocol_object": "udp"
},
{
"protocol_object": "gre"
},
{
"protocol_object": "tcp"
}
]
},
"PROTO_GROUP5_all": {
"name": "PROTO_GROUP5_all",
"type": "protocol",
"description": "description",
"members": [
{
"protocol_object": "ip"
},
{
"protocol_object": "icmp"
},
{
"protocol_object": "pim"
},
{
"protocol_object": "pcp"
},
{
"protocol_object": "snp"
},
{
"protocol_object": "udp"
},
{
"protocol_object": "igmp"
},
{
"protocol_object": "255"
},
{
"protocol_object": "ipinip"
},
{
"protocol_object": "45"
},
{
"protocol_object": "gre"
},
{
"protocol_object": "esp"
},
{
"protocol_object": "ah"
},
{
"protocol_object": "icmp6"
},
{
"protocol_object": "tcp"
},
{
"protocol_object": "eigrp"
},
{
"protocol_object": "ospf"
},
{
"protocol_object": "igrp"
},
{
"protocol_object": "nos"
},
{
"group_name": "PROTO_GROUP"
},
{
"group_name": "PROTO_GROUP2"
},
{
"group_name": "PROTO_GROUP3"
},
{
"group_name": "PROTO_GROUP4"
},
{
"group_name": "TCPUDP"
},
{
"group_name": "test_protocol_grp"
}
]
},
"proto_serv_group1": {
"name": "proto_serv_group1",
"type": "protocol",
"description": "descr",
"members": [
{
"protocol_object": "ip"
},
{
"protocol_object": "icmp"
},
{
"protocol_object": "udp"
},
{
"protocol_object": "gre"
},
{
"protocol_object": "esp"
},
{
"protocol_object": "icmp6"
},
{
"protocol_object": "tcp"
},
{
"group_name": "PROTO_GROUP"
},
{
"group_name": "PROTO_GROUP2"
}
]
},
"proto_serv_group2": {
"name": "proto_serv_group2",
"type": "protocol",
"description": "descr",
"members": [
{
"protocol_object": "ip"
},
{
"protocol_object": "ipinip"
},
{
"protocol_object": "igrp"
},
{
"group_name": "PROTO_GROUP"
},
{
"group_name": "TCPUDP"
},
{
"group_name": "proto_serv_group1"
}
]
}
}
service_groups = base_service_groups.copy()
service_groups.update(icmp_service_groups)
service_groups.update(protocol_service_groups)
def parse_member(service_member, parsed_members):
"""kek"""
service_object = service_member.get("service_object_name", None)
group_name = service_member.get("group_name", None)
if service_object:
parsed_members.append(service_objects[service_object])
return parsed_members
if group_name:
group_to_reparse = service_groups[service_member["group_name"]]
inner_service_members = group_to_reparse["members"]
for in_member in inner_service_members:
parse_member(in_member, parsed_members)
else:
parsed_members.append(service_member)
return parsed_members
parsed_services = {}
for service_name, service_inners in service_groups.items():
tmp_members = []
for member in service_inners["members"]:
parse_member(member, tmp_members)
del service_inners["members"]
parsed_services[service_name] = service_inners
parsed_services[service_name]["members"] = tmp_members
f = open("services_groups.json", "a")
json.dump(parsed_services, f)
f.close()