diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index c30326fd..f656c6fe 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,8 +3,7 @@ name: Bug report about: Open a bug report title: "[bug] " labels: bug -assignees: '' - +assignees: "" --- **Describe the bug** @@ -12,6 +11,7 @@ A clear and concise description of the bug or unexpected behavior. **Steps To Reproduce** Steps to reproduce the behavior: + 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' @@ -24,6 +24,7 @@ A clear and concise description of what you expected to happen. If applicable, add screenshots to help explain your problem. **System Informatioon:** - - OS: [e.g. Ubuntu 24.04 LTS] - - Docker version: [e.g. Docker version 27.0.3, build 7d4bcd8] - - Browser and Browser Version (if applicable): [e.g. Chromium v126.0.6478.126] + +- OS: [e.g. Ubuntu 24.04 LTS] +- Docker version: [e.g. Docker version 27.0.3, build 7d4bcd8] +- Browser and Browser Version (if applicable): [e.g. Chromium v126.0.6478.126] diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 523386b9..9940eaf3 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -3,8 +3,7 @@ name: Feature request about: Suggest an idea for this project title: "[feature] " labels: enhancement -assignees: '' - +assignees: "" --- **Is your feature request related to a problem? Please describe.** diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 34a8295a..129eee2f 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -3,8 +3,7 @@ name: Question about: Please use the Discussion Forum to ask questions title: "[question] " labels: question -assignees: '' - +assignees: "" --- Please use the [Discussion Forum](https://github.com/orgs/openwisp/discussions) to ask questions. diff --git a/docker-compose.yml b/docker-compose.yml index 38d75eaf..c0028773 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -128,8 +128,8 @@ services: networks: default: aliases: - - dashboard.internal - - api.internal + - dashboard.internal + - api.internal ports: - "${NGINX_PORT:-80}:80" - "${NGINX_SSL_PORT:-443}:443" diff --git a/images/common/init_command.sh b/images/common/init_command.sh index b023589f..4b55da4a 100644 --- a/images/common/init_command.sh +++ b/images/common/init_command.sh @@ -18,6 +18,7 @@ if [ "$MODULE_NAME" = 'dashboard' ]; then start_uwsgi elif [ "$MODULE_NAME" = 'postfix' ]; then postfix_config + postfix set-permissions postfix start rsyslogd -n elif [ "$MODULE_NAME" = 'freeradius' ]; then diff --git a/images/common/openwisp/asgi.py b/images/common/openwisp/asgi.py index ec81442c..4ad7ea2f 100644 --- a/images/common/openwisp/asgi.py +++ b/images/common/openwisp/asgi.py @@ -19,7 +19,8 @@ get_routes as get_controller_routes, ) -routes = get_controller_routes() +routes = [] +routes.extend(get_controller_routes()) if env_bool(os.environ.get("USE_OPENWISP_TOPOLOGY")): from openwisp_network_topology.routing import ( # noqa: E402 @@ -28,6 +29,11 @@ routes.extend(network_topology_routes) +if env_bool(os.environ["USE_OPENWISP_RADIUS"]): + from openwisp_radius.routing import websocket_urlpatterns as radius_routes + + routes.extend(radius_routes) + application = ProtocolTypeRouter( { "http": django_asgi_app, diff --git a/images/common/openwisp/routing.py b/images/common/openwisp/routing.py deleted file mode 100644 index a6e57bcb..00000000 --- a/images/common/openwisp/routing.py +++ /dev/null @@ -1,14 +0,0 @@ -from channels.auth import AuthMiddlewareStack -from channels.routing import ProtocolTypeRouter, URLRouter -from channels.security.websocket import AllowedHostsOriginValidator -from django.core.asgi import get_asgi_application -from openwisp_controller.routing import get_routes - -application = ProtocolTypeRouter( - { - "websocket": AllowedHostsOriginValidator( - AuthMiddlewareStack(URLRouter(get_routes())) - ), - "http": get_asgi_application(), - } -) diff --git a/images/openwisp_api/module_settings.py b/images/openwisp_api/module_settings.py index 79fc3e61..a65e57da 100644 --- a/images/openwisp_api/module_settings.py +++ b/images/openwisp_api/module_settings.py @@ -36,7 +36,7 @@ "openwisp_network_topology", # openwisp-firmware-upgrader "openwisp_firmware_upgrader", - # openwisp radius + # openwisp-radius "dj_rest_auth", "dj_rest_auth.registration", "openwisp_radius", diff --git a/images/openwisp_base/Dockerfile b/images/openwisp_base/Dockerfile index 7c5623bc..8b8ff9eb 100644 --- a/images/openwisp_base/Dockerfile +++ b/images/openwisp_base/Dockerfile @@ -18,14 +18,18 @@ RUN apt-get update && \ RUN useradd --system --password '' --create-home --shell /bin/bash \ --gid root --uid 1001 openwisp +RUN mkdir /home/openwisp/.ssh && \ + mkdir -p /tmp && chmod 1777 /tmp +RUN chown -R openwisp:root /home/openwisp/ USER openwisp:root FROM system AS openwisp_python ENV PATH="${PATH}:/home/openwisp/.local/bin" -ENV PYTHONPATH=/home/openwisp/.local/lib/python3.10/site-packages -RUN pip install --no-cache-dir --user --upgrade pip~=24.1.2 setuptools~=70.3.0 wheel~=0.43.0 + +# hadolint ignore=DL3013 +RUN pip install --no-cache-dir --user --upgrade pip setuptools wheel ARG OPENWISP_MONITORING_SOURCE="https://github.com/openwisp/openwisp-monitoring/tarball/1.2" # hadolint ignore=DL3013 RUN pip install --no-cache-dir --user --upgrade ${OPENWISP_MONITORING_SOURCE} @@ -88,9 +92,8 @@ COPY --chown=openwisp:root ./common/ /opt/openwisp/ RUN mkdir /opt/openwisp/static && \ mkdir /opt/openwisp/media && \ mkdir /opt/openwisp/private && \ - mkdir /opt/openwisp/logs && \ - mkdir /home/openwisp/.ssh && \ - chown -R openwisp:root /opt/openwisp && \ + mkdir /opt/openwisp/logs +RUN chown -R openwisp:root /opt/openwisp && \ chown -R openwisp:root /home/openwisp/.ssh # Maintain backward compatibility with code written for ansible-openwisp2 RUN ln -s /opt/openwisp/openwisp /opt/openwisp/openwisp2 diff --git a/images/openwisp_dashboard/openvpn.json b/images/openwisp_dashboard/openvpn.json index cb50f2be..985339f8 100644 --- a/images/openwisp_dashboard/openvpn.json +++ b/images/openwisp_dashboard/openvpn.json @@ -1,82 +1,82 @@ { - "openvpn": [ - { - "server": "10.8.0.0 255.255.255.0", - "name": "default", - "mode": "server", - "proto": "udp", - "port": 1194, - "dev_type": "tun", - "dev": "tun0", - "local": "", - "comp_lzo": "no", - "auth": "SHA1", - "cipher": "none", - "engine": "", - "ca": "ca.pem", - "cert": "cert.pem", - "key": "key.pem", - "pkcs12": "", - "ns_cert_type": "", - "mtu_disc": "no", - "mtu_test": false, - "fragment": 0, - "mssfix": 1450, - "keepalive": "10 120", - "persist_tun": true, - "persist_key": true, - "tun_ipv6": false, - "up": "", - "up_delay": 0, - "down": "", - "script_security": 1, - "user": "nobody", - "group": "nogroup", - "mute": 0, - "status": "/var/log/tun0.status", - "status_version": 1, - "mute_replay_warnings": false, - "secret": "", - "reneg_sec": 0, - "tls_timeout": 2, - "tls_cipher": "", - "remote_cert_tls": "", - "float": false, - "fast_io": true, - "log": "", - "verb": 3, - "topology": "p2p", - "tls_server": true, - "dh": "dh.pem", - "crl_verify": "revoked.crl", - "duplicate_cn": false, - "client_to_client": false, - "client_cert_not_required": false, - "username_as_common_name": false, - "auth_user_pass_verify": "", - "tls_auth": "" - } - ], - "files": [ - { - "path": "ca.pem", - "mode": "0644", - "contents": "{{ ca }}" - }, - { - "path": "cert.pem", - "mode": "0644", - "contents": "{{ cert }}" - }, - { - "path": "key.pem", - "mode": "0644", - "contents": "{{ key }}" - }, - { - "path": "dh.pem", - "mode": "0644", - "contents": "{{ dh }}" - } - ] + "openvpn": [ + { + "server": "10.8.0.0 255.255.255.0", + "name": "default", + "mode": "server", + "proto": "udp", + "port": 1194, + "dev_type": "tun", + "dev": "tun0", + "local": "", + "comp_lzo": "no", + "auth": "SHA1", + "cipher": "none", + "engine": "", + "ca": "ca.pem", + "cert": "cert.pem", + "key": "key.pem", + "pkcs12": "", + "ns_cert_type": "", + "mtu_disc": "no", + "mtu_test": false, + "fragment": 0, + "mssfix": 1450, + "keepalive": "10 120", + "persist_tun": true, + "persist_key": true, + "tun_ipv6": false, + "up": "", + "up_delay": 0, + "down": "", + "script_security": 1, + "user": "nobody", + "group": "nogroup", + "mute": 0, + "status": "/var/log/tun0.status", + "status_version": 1, + "mute_replay_warnings": false, + "secret": "", + "reneg_sec": 0, + "tls_timeout": 2, + "tls_cipher": "", + "remote_cert_tls": "", + "float": false, + "fast_io": true, + "log": "", + "verb": 3, + "topology": "p2p", + "tls_server": true, + "dh": "dh.pem", + "crl_verify": "revoked.crl", + "duplicate_cn": false, + "client_to_client": false, + "client_cert_not_required": false, + "username_as_common_name": false, + "auth_user_pass_verify": "", + "tls_auth": "" + } + ], + "files": [ + { + "path": "ca.pem", + "mode": "0644", + "contents": "{{ ca }}" + }, + { + "path": "cert.pem", + "mode": "0644", + "contents": "{{ cert }}" + }, + { + "path": "key.pem", + "mode": "0644", + "contents": "{{ key }}" + }, + { + "path": "dh.pem", + "mode": "0644", + "contents": "{{ dh }}" + } + ] } diff --git a/images/openwisp_websocket/module_settings.py b/images/openwisp_websocket/module_settings.py index 1c20ffd7..a0fed31e 100644 --- a/images/openwisp_websocket/module_settings.py +++ b/images/openwisp_websocket/module_settings.py @@ -24,8 +24,12 @@ "openwisp_ipam", # openwisp-network-topology "openwisp_network_topology", - "openwisp_utils.admin_theme", + # openwisp-radius + "dj_rest_auth", + "dj_rest_auth.registration", + "openwisp_radius", # admin + "openwisp_utils.admin_theme", "django.contrib.admin", "django.forms", # other dependencies @@ -35,6 +39,7 @@ # rest framework "rest_framework", "rest_framework_gis", + "rest_framework.authtoken", "django_filters", # other packages "private_storage", diff --git a/tests/config.json b/tests/config.json index 1607fab2..a4b9d185 100644 --- a/tests/config.json +++ b/tests/config.json @@ -1,13 +1,13 @@ { - "driver": "chromium", - "headless": true, - "app_url": "https://dashboard.openwisp.org", - "api_url": "https://api.openwisp.org", - "load_init_data": true, - "logs": false, - "logs_file": "/tmp/odocker.log", - "username": "admin", - "password": "admin", - "services_max_retries": 25, - "services_delay_retries": 5 + "driver": "chromium", + "headless": true, + "app_url": "https://dashboard.openwisp.org", + "api_url": "https://api.openwisp.org", + "load_init_data": true, + "logs": false, + "logs_file": "/tmp/odocker.log", + "username": "admin", + "password": "admin", + "services_max_retries": 25, + "services_delay_retries": 5 } diff --git a/tests/static/network-graph.json b/tests/static/network-graph.json index 77fe55cb..dc0a695c 100644 --- a/tests/static/network-graph.json +++ b/tests/static/network-graph.json @@ -1,625 +1,625 @@ { - "created": "2017-07-19T16:35:33.296000Z", - "id": "36d5ba3e-1364-49d2-9e29-1f6dceb7cbbb", - "label": "Test Topology (OLSRd2)", - "parser": "netdiff.NetJsonParser", - "protocol": "olsrv2", - "type": "NetworkGraph", - "version": "0.14.1-1", - "links": [ - { - "cost": 1.0, - "properties": { - "created": "2018-07-04T15:20:52.178000Z", - "hopcount": 2, - "modified": "2018-07-07T07:46:22.300000Z", - "outgoing_tree": "false", - "source_addr": "10.27.24.1", - "status": "up", - "status_changed": "2018-07-07T07:46:22.300000Z", - "target_addr": "0.0.0.0/0", - "type": "attached" - }, - "source": "id_10.27.24.1", - "target": "id_10.27.24.1_0.0.0.0/0" - }, - { - "cost": 1.0, - "properties": { - "created": "2018-04-07T23:55:02.581000Z", - "hopcount": 2, - "modified": "2018-04-22T10:05:01.766000Z", - "outgoing_tree": "true", - "source_addr": "10.3.5.3", - "status": "up", - "status_changed": "2018-04-22T10:05:01.766000Z", - "target_addr": "10.27.22.0/24", - "type": "lan" - }, - "source": "id_10.3.5.3_10.27.22.0/24", - "target": "id_10.3.5.3" - }, - { - "cost": 2105088.0, - "properties": { - "created": "2018-04-23T10:40:01.946000Z", - "in_cost": 2105088, - "in_text": "1020bit/s", - "modified": "2018-05-04T10:20:02.559000Z", - "outgoing_tree": "false", - "source_addr": "10.27.253.61", - "status": "up", - "status_changed": "2018-05-04T10:20:02.559000Z", - "target_addr": "10.3.5.3", - "type": "node" - }, - "source": "id_10.27.253.61", - "target": "id_10.3.5.3" - }, - { - "cost": 1.0, - "properties": { - "created": "2017-08-20T17:10:02.521000Z", - "hopcount": 2, - "modified": "2018-02-24T19:04:14.572000Z", - "outgoing_tree": "true", - "source_addr": "10.27.22.1", - "status": "up", - "status_changed": "2018-02-24T19:04:14.572000Z", - "target_addr": "10.27.22.0/24", - "type": "attached" - }, - "source": "id_10.27.22.1", - "target": "id_10.27.22.1_10.27.22.0/24" - }, - { - "cost": 1.0, - "properties": { - "created": "2018-06-28T23:29:31.780000Z", - "hopcount": 2, - "modified": "2018-09-18T13:15:02.837652Z", - "outgoing_tree": "false", - "source_addr": "10.27.23.1", - "status": "up", - "status_changed": "2018-09-18T13:15:02.837666Z", - "target_addr": "10.27.23.0/24", - "type": "attached" - }, - "source": "id_10.27.23.1", - "target": "id_10.27.23.1_10.27.23.0/24" - }, - { - "cost": 1.0, - "properties": { - "created": "2017-07-19T16:44:21.590000Z", - "hopcount": 2, - "modified": "2018-02-24T19:04:15.826000Z", - "outgoing_tree": "true", - "source_addr": "10.27.10.1", - "status": "up", - "status_changed": "2018-02-24T19:04:15.826000Z", - "target_addr": "10.27.10.0/24", - "type": "attached" - }, - "source": "id_10.27.10.1", - "target": "id_10.27.10.1_10.27.10.0/24" - }, - { - "cost": 1.0, - "properties": { - "created": "2018-07-15T18:47:39.930000Z", - "hopcount": 2, - "modified": "2018-07-15T22:15:14.222000Z", - "outgoing_tree": "true", - "source_addr": "172.27.85.36", - "status": "up", - "status_changed": "2018-07-15T22:15:14.222000Z", - "target_addr": "10.27.23.0/24", - "type": "lan" - }, - "source": "id_172.27.85.36_10.27.23.0/24", - "target": "id_172.27.85.36" - }, - { - "cost": 1.0, - "properties": { - "created": "2018-04-23T22:10:00.759000Z", - "hopcount": 2, - "modified": "2018-05-08T19:10:01.494000Z", - "outgoing_tree": "true", - "source_addr": "10.3.5.3", - "status": "up", - "status_changed": "2018-05-08T19:10:01.494000Z", - "target_addr": "10.27.22.0/25", - "type": "attached" - }, - "source": "id_10.3.5.3", - "target": "id_10.3.5.3_10.27.22.0/25" - }, - { - "cost": 1.0, - "properties": { - "created": "2017-11-02T22:15:02.046000Z", - "hopcount": 2, - "modified": "2018-02-24T19:04:14.447000Z", - "outgoing_tree": "false", - "source_addr": "10.27.22.1", - "status": "up", - "status_changed": "2018-02-24T19:04:14.447000Z", - "target_addr": "0.0.0.0/0", - "type": "attached" - }, - "source": "id_10.27.22.1_0.0.0.0/0", - "target": "id_10.27.22.1" - }, - { - "cost": 2170624.0, - "properties": { - "created": "2017-07-19T16:44:21.731000Z", - "in_cost": 2105088, - "in_text": "1020bit/s", - "modified": "2018-02-24T19:04:15.594000Z", - "outgoing_tree": "false", - "source_addr": "10.27.253.1", - "status": "up", - "status_changed": "2018-02-24T19:04:15.594000Z", - "target_addr": "10.27.10.1", - "type": "node" - }, - "source": "id_10.27.10.1", - "target": "id_10.27.253.1" - }, - { - "cost": 2170624.0, - "properties": { - "created": "2017-08-20T17:10:02.763000Z", - "in_cost": 2105088, - "in_text": "1020bit/s", - "modified": "2018-02-24T19:04:14.909000Z", - "outgoing_tree": "false", - "source_addr": "10.27.253.1", - "status": "up", - "status_changed": "2018-02-24T19:04:14.910000Z", - "target_addr": "10.27.22.1", - "type": "node" - }, - "source": "id_10.27.22.1", - "target": "id_10.27.253.1" - }, - { - "cost": 1.0, - "properties": { - "created": "2017-07-19T16:44:22.636000Z", - "hopcount": 2, - "modified": "2018-02-24T19:04:16.038000Z", - "outgoing_tree": "true", - "source_addr": "10.27.0.1", - "status": "up", - "status_changed": "2018-02-24T19:04:16.038000Z", - "target_addr": "10.27.0.0/24", - "type": "lan" - }, - "source": "id_10.27.0.1", - "target": "id_10.27.0.1_10.27.0.0/24" - }, - { - "cost": 1.0, - "properties": { - "created": "2017-07-19T16:44:21.453000Z", - "hopcount": 2, - "modified": "2018-02-24T19:04:16.287000Z", - "outgoing_tree": "false", - "source_addr": "10.27.10.1", - "status": "up", - "status_changed": "2018-02-24T19:04:16.287000Z", - "target_addr": "0.0.0.0/0", - "type": "attached" - }, - "source": "id_10.27.10.1_0.0.0.0/0", - "target": "id_10.27.10.1" - }, - { - "cost": 2105088.0, - "properties": { - "created": "2017-08-20T17:10:02.639000Z", - "in_cost": 2105088, - "in_text": "1020bit/s", - "links": [ - { - "cost": 2105088, - "cost_text": "1020bit/s", - "in_cost": 2105088, - "in_text": "1020bit/s", - "interface": "vpnbas", - "outgoing_tree": "true", - "source_addr": "10.27.253.3", - "target_addr": "10.27.253.49" - } - ], - "modified": "2018-02-24T19:04:15.149000Z", - "outgoing_tree": "false", - "source_addr": "10.27.22.1", - "status": "up", - "status_changed": "2018-02-24T19:04:15.149000Z", - "target_addr": "10.27.10.1", - "type": "node" - }, - "source": "id_10.27.22.1", - "target": "id_10.27.10.1" - }, - { - "cost": 2105088.0, - "properties": { - "created": "2017-07-19T16:44:22Z", - "in_cost": 2105088, - "in_text": "1020bit/s", - "links": [ - { - "cost": 2105088, - "cost_text": "1020bit/s", - "in_cost": 2105088, - "in_text": "1020bit/s", - "interface": "vpnbas", - "outgoing_tree": "true", - "source_addr": "10.27.253.43", - "target_addr": "10.27.253.3" - } - ], - "modified": "2018-02-24T19:04:17.410000Z", - "outgoing_tree": "false", - "source_addr": "10.27.10.1", - "status": "up", - "status_changed": "2018-02-24T19:04:17.410000Z", - "target_addr": "10.27.0.1", - "type": "node" - }, - "source": "id_10.27.10.1", - "target": "id_10.27.0.1" - }, - { - "cost": 2309888.0, - "properties": { - "created": "2017-07-19T16:44:22.269000Z", - "in_cost": 2105088, - "in_text": "1020bit/s", - "links": [ - { - "cost": 2105088, - "cost_text": "1020bit/s", - "in_cost": 2105088, - "in_text": "1020bit/s", - "interface": "vpnbas", - "outgoing_tree": "true", - "source_addr": "10.27.253.43", - "target_addr": "10.27.253.1" - } - ], - "modified": "2018-02-24T19:04:15.341000Z", - "outgoing_tree": "false", - "source_addr": "10.27.253.1", - "status": "up", - "status_changed": "2018-02-24T19:04:15.341000Z", - "target_addr": "10.27.0.1", - "type": "node" - }, - "source": "id_10.27.253.1", - "target": "id_10.27.0.1" - }, - { - "cost": 2105088.0, - "properties": { - "created": "2017-08-25T18:47:03.958000Z", - "in_cost": 2105088, - "in_text": "1020bit/s", - "links": [ - { - "cost": 2105088, - "cost_text": "1020bit/s", - "in_cost": 2105088, - "in_text": "1020bit/s", - "interface": "vpnbas", - "outgoing_tree": "true", - "source_addr": "169.254.115.155", - "target_addr": "10.27.253.43" - } - ], - "modified": "2018-02-24T19:04:14.731000Z", - "outgoing_tree": "false", - "source_addr": "10.27.0.1", - "status": "up", - "status_changed": "2018-02-24T19:04:14.731000Z", - "target_addr": "10.27.22.1", - "type": "node" - }, - "source": "id_10.27.22.1", - "target": "id_10.27.0.1" - }, - { - "cost": 1.0, - "properties": { - "created": "2017-07-19T16:44:20.793000Z", - "hopcount": 2, - "modified": "2018-02-24T19:04:17.120000Z", - "outgoing_tree": "true", - "source_addr": "10.27.0.1", - "status": "up", - "status_changed": "2018-02-24T19:04:17.120000Z", - "target_addr": "0.0.0.0/0", - "type": "lan" - }, - "source": "id_10.27.0.1_0.0.0.0/0", - "target": "id_10.27.0.1" - } - ], - "metric": "ff_dat_metric", - "modified": "2018-05-11T03:45:00.928000Z", - "nodes": [ - { - "id": "id_10.27.24.1_10.27.24.0/24", - "label": "10.27.24.1 - 10.27.24.0/24", - "properties": { - "created": "2018-06-30T21:50:10.807000Z", - "modified": "2020-01-17T16:49:10.797938Z", - "router_addr": "10.27.24.1", - "router_id": "id_10.27.24.1", - "type": "attached" - } - }, - { - "id": "id_10.27.24.1_0.0.0.0/0", - "label": "10.27.24.1 - 0.0.0.0/0", - "properties": { - "created": "2018-06-30T21:50:10.722000Z", - "modified": "2020-01-17T16:49:10.782324Z", - "router_addr": "10.27.24.1", - "router_id": "id_10.27.24.1", - "type": "attached" - } - }, - { - "id": "id_10.3.5.3_0.0.0.0/0", - "label": "10.3.5.3 - 0.0.0.0/0", - "properties": { - "created": "2018-04-07T23:55:01.525000Z", - "modified": "2020-01-17T16:49:10.784182Z", - "router_addr": "10.3.5.3", - "router_id": "id_10.3.5.3", - "type": "lan" - } - }, - { - "id": "id_10.27.24.1", - "label": "10.27.24.1", - "properties": { - "created": "2018-03-31T17:30:01.070000Z", - "dualstack_addr": "fd25:fc4:1261::1", - "dualstack_id": "id_fd25:fc4:1261::1", - "modified": "2020-01-17T16:49:10.785919Z", - "router_addr": "10.27.24.1", - "router_id": "id_10.27.24.1", - "type": "node" - } - }, - { - "id": "id_10.3.5.3", - "label": "10.3.5.3", - "properties": { - "created": "2018-04-07T23:55:01.193000Z", - "dualstack_addr": "fd25:fc4:1261::1", - "dualstack_id": "id_fd25:fc4:1261::1", - "modified": "2020-01-17T16:49:10.787183Z", - "router_addr": "10.3.5.3", - "router_id": "id_10.3.5.3", - "type": "local" - } - }, - { - "id": "id_172.27.85.36_10.27.23.0/24", - "label": "172.27.85.36 - 10.27.23.0/24", - "properties": { - "created": "2018-07-15T18:47:39.762000Z", - "modified": "2020-01-17T16:49:10.788011Z", - "router_addr": "172.27.85.36", - "router_id": "id_172.27.85.36", - "type": "lan" - } - }, - { - "id": "id_10.27.253.61", - "label": "10.27.253.61", - "properties": { - "created": "2018-04-23T10:20:00.681000Z", - "dualstack_addr": "fe80::8c60:fcff:fe3b:5f9f", - "dualstack_id": "id_fe80::8c60:fcff:fe3b:5f9f", - "modified": "2020-01-17T16:49:10.788426Z", - "router_addr": "10.27.253.61", - "router_id": "id_10.27.253.61", - "type": "node" - } - }, - { - "id": "id_10.3.5.3_10.27.22.0/24", - "label": "10.3.5.3 - 10.27.22.0/24", - "properties": { - "created": "2018-04-07T23:55:00.820000Z", - "modified": "2020-01-17T16:49:10.792987Z", - "router_addr": "10.3.5.3", - "router_id": "id_10.3.5.3", - "type": "lan" - } - }, - { - "id": "id_10.27.22.1_0.0.0.0", - "label": "10.27.22.1 - 0.0.0.0", - "properties": { - "created": "2018-09-13T17:35:07.331000Z", - "modified": "2020-01-17T16:49:10.793818Z", - "router_addr": "10.27.22.1", - "router_id": "id_10.27.22.1", - "type": "lan" - } - }, - { - "id": "id_10.27.22.1_10.27.22.0/24", - "label": "Kali Oppido Lucano", - "properties": { - "created": "2017-08-20T17:10:02.423000Z", - "modified": "2020-01-17T16:49:10.795115Z", - "router_addr": "10.27.22.1", - "router_id": "id_10.27.22.1", - "type": "attached" - } - }, - { - "id": "id_10.27.23.1_10.27.23.0/24", - "label": "10.27.23.1 - 10.27.23.0/24", - "properties": { - "created": "2018-06-23T12:19:39.852000Z", - "modified": "2020-01-17T16:49:10.796726Z", - "router_addr": "10.27.23.1", - "router_id": "id_10.27.23.1", - "type": "attached" - } - }, - { - "id": "id_10.27.10.1_10.27.10.0/24", - "label": "Syskrack-net", - "properties": { - "created": "2017-07-19T16:44:20.003000Z", - "modified": "2020-01-17T16:49:10.797127Z", - "router_addr": "10.27.10.1", - "router_id": "id_10.27.10.1", - "type": "attached" - } - }, - { - "id": "id_172.27.85.36", - "label": "172.27.85.36", - "properties": { - "created": "2018-07-15T18:47:39.836000Z", - "dualstack_addr": "fdd1:50f2:2dfa::1", - "dualstack_id": "id_fdd1:50f2:2dfa::1", - "modified": "2020-01-17T16:49:10.798336Z", - "router_addr": "172.27.85.36", - "router_id": "id_172.27.85.36", - "type": "local" - } - }, - { - "id": "id_10.27.23.1", - "label": "10.27.23.1", - "properties": { - "created": "2018-06-23T12:19:39.743000Z", - "dualstack_addr": "fd02:c1d0:c7a7::1", - "dualstack_id": "id_fd02:c1d0:c7a7::1", - "modified": "2020-01-17T16:49:10.798739Z", - "router_addr": "10.27.23.1", - "router_id": "id_10.27.23.1", - "type": "node" - } - }, - { - "id": "id_10.3.5.3_10.27.22.0/25", - "label": "10.3.5.3 - 10.27.22.0/25", - "properties": { - "created": "2018-04-22T10:05:02.029000Z", - "modified": "2020-01-17T16:49:10.801491Z", - "router_addr": "10.3.5.3", - "router_id": "id_10.3.5.3", - "type": "attached" - } - }, - { - "id": "id_10.27.0.1_0.0.0.0/0", - "properties": { - "created": "2017-07-19T16:44:19.439000Z", - "modified": "2020-01-17T16:49:10.816051Z", - "router_addr": "10.27.0.1", - "router_id": "id_10.27.0.1", - "type": "lan" - } - }, - { - "id": "id_10.27.22.1", - "label": "Kali-Oppido-router", - "properties": { - "created": "2017-08-20T17:10:02.218000Z", - "dualstack_addr": "fe80::c66e:1fff:feff:223", - "dualstack_id": "id_fe80::c66e:1fff:feff:223", - "modified": "2020-01-17T16:49:10.816460Z", - "router_addr": "10.27.22.1", - "router_id": "id_10.27.22.1", - "type": "node" - } - }, - { - "id": "id_10.27.253.1", - "properties": { - "created": "2017-07-19T16:44:20.129000Z", - "dualstack_addr": "fe80::d446:ecff:fefd:3abe", - "dualstack_id": "id_fe80::d446:ecff:fefd:3abe", - "modified": "2020-01-17T16:49:10.818089Z", - "router_addr": "10.27.253.1", - "router_id": "id_10.27.253.1", - "type": "node" - } - }, - { - "id": "id_10.27.0.1_10.27.0.0/24", - "label": "Kali-Matera-net", - "properties": { - "created": "2017-07-19T16:44:20.660000Z", - "modified": "2020-01-17T16:49:10.826859Z", - "router_addr": "10.27.0.1", - "router_id": "id_10.27.0.1", - "type": "lan" - } - }, - { - "id": "id_10.27.10.1_0.0.0.0/0", - "properties": { - "created": "2017-07-19T16:44:19.702000Z", - "modified": "2020-01-17T16:49:10.829051Z", - "router_addr": "10.27.10.1", - "router_id": "id_10.27.10.1", - "type": "attached" - } - }, - { - "id": "id_10.27.22.1_0.0.0.0/0", - "properties": { - "created": "2017-08-20T17:10:02.336000Z", - "modified": "2020-01-17T16:49:10.829505Z", - "router_addr": "10.27.22.1", - "router_id": "id_10.27.22.1", - "type": "attached" - } - }, - { - "id": "id_10.27.10.1", - "label": "Syskrack-router", - "properties": { - "created": "2017-07-19T16:44:19.816000Z", - "dualstack_addr": "fdb5:a1cc:bb86::1", - "dualstack_id": "id_fdb5:a1cc:bb86::1", - "modified": "2020-01-17T16:49:10.829944Z", - "router_addr": "10.27.10.1", - "router_id": "id_10.27.10.1", - "type": "node" - } - }, - { - "id": "id_10.27.0.1", - "label": "Kali-Matera-router", - "properties": { - "created": "2017-07-19T16:44:20.255000Z", - "dualstack_addr": "fd5c:257b:b54e::1", - "dualstack_id": "id_fd5c:257b:b54e::1", - "modified": "2020-01-17T16:49:10.830356Z", - "router_addr": "10.27.0.1", - "router_id": "id_10.27.0.1", - "type": "local" - } - } - ] + "created": "2017-07-19T16:35:33.296000Z", + "id": "36d5ba3e-1364-49d2-9e29-1f6dceb7cbbb", + "label": "Test Topology (OLSRd2)", + "parser": "netdiff.NetJsonParser", + "protocol": "olsrv2", + "type": "NetworkGraph", + "version": "0.14.1-1", + "links": [ + { + "cost": 1.0, + "properties": { + "created": "2018-07-04T15:20:52.178000Z", + "hopcount": 2, + "modified": "2018-07-07T07:46:22.300000Z", + "outgoing_tree": "false", + "source_addr": "10.27.24.1", + "status": "up", + "status_changed": "2018-07-07T07:46:22.300000Z", + "target_addr": "0.0.0.0/0", + "type": "attached" + }, + "source": "id_10.27.24.1", + "target": "id_10.27.24.1_0.0.0.0/0" + }, + { + "cost": 1.0, + "properties": { + "created": "2018-04-07T23:55:02.581000Z", + "hopcount": 2, + "modified": "2018-04-22T10:05:01.766000Z", + "outgoing_tree": "true", + "source_addr": "10.3.5.3", + "status": "up", + "status_changed": "2018-04-22T10:05:01.766000Z", + "target_addr": "10.27.22.0/24", + "type": "lan" + }, + "source": "id_10.3.5.3_10.27.22.0/24", + "target": "id_10.3.5.3" + }, + { + "cost": 2105088.0, + "properties": { + "created": "2018-04-23T10:40:01.946000Z", + "in_cost": 2105088, + "in_text": "1020bit/s", + "modified": "2018-05-04T10:20:02.559000Z", + "outgoing_tree": "false", + "source_addr": "10.27.253.61", + "status": "up", + "status_changed": "2018-05-04T10:20:02.559000Z", + "target_addr": "10.3.5.3", + "type": "node" + }, + "source": "id_10.27.253.61", + "target": "id_10.3.5.3" + }, + { + "cost": 1.0, + "properties": { + "created": "2017-08-20T17:10:02.521000Z", + "hopcount": 2, + "modified": "2018-02-24T19:04:14.572000Z", + "outgoing_tree": "true", + "source_addr": "10.27.22.1", + "status": "up", + "status_changed": "2018-02-24T19:04:14.572000Z", + "target_addr": "10.27.22.0/24", + "type": "attached" + }, + "source": "id_10.27.22.1", + "target": "id_10.27.22.1_10.27.22.0/24" + }, + { + "cost": 1.0, + "properties": { + "created": "2018-06-28T23:29:31.780000Z", + "hopcount": 2, + "modified": "2018-09-18T13:15:02.837652Z", + "outgoing_tree": "false", + "source_addr": "10.27.23.1", + "status": "up", + "status_changed": "2018-09-18T13:15:02.837666Z", + "target_addr": "10.27.23.0/24", + "type": "attached" + }, + "source": "id_10.27.23.1", + "target": "id_10.27.23.1_10.27.23.0/24" + }, + { + "cost": 1.0, + "properties": { + "created": "2017-07-19T16:44:21.590000Z", + "hopcount": 2, + "modified": "2018-02-24T19:04:15.826000Z", + "outgoing_tree": "true", + "source_addr": "10.27.10.1", + "status": "up", + "status_changed": "2018-02-24T19:04:15.826000Z", + "target_addr": "10.27.10.0/24", + "type": "attached" + }, + "source": "id_10.27.10.1", + "target": "id_10.27.10.1_10.27.10.0/24" + }, + { + "cost": 1.0, + "properties": { + "created": "2018-07-15T18:47:39.930000Z", + "hopcount": 2, + "modified": "2018-07-15T22:15:14.222000Z", + "outgoing_tree": "true", + "source_addr": "172.27.85.36", + "status": "up", + "status_changed": "2018-07-15T22:15:14.222000Z", + "target_addr": "10.27.23.0/24", + "type": "lan" + }, + "source": "id_172.27.85.36_10.27.23.0/24", + "target": "id_172.27.85.36" + }, + { + "cost": 1.0, + "properties": { + "created": "2018-04-23T22:10:00.759000Z", + "hopcount": 2, + "modified": "2018-05-08T19:10:01.494000Z", + "outgoing_tree": "true", + "source_addr": "10.3.5.3", + "status": "up", + "status_changed": "2018-05-08T19:10:01.494000Z", + "target_addr": "10.27.22.0/25", + "type": "attached" + }, + "source": "id_10.3.5.3", + "target": "id_10.3.5.3_10.27.22.0/25" + }, + { + "cost": 1.0, + "properties": { + "created": "2017-11-02T22:15:02.046000Z", + "hopcount": 2, + "modified": "2018-02-24T19:04:14.447000Z", + "outgoing_tree": "false", + "source_addr": "10.27.22.1", + "status": "up", + "status_changed": "2018-02-24T19:04:14.447000Z", + "target_addr": "0.0.0.0/0", + "type": "attached" + }, + "source": "id_10.27.22.1_0.0.0.0/0", + "target": "id_10.27.22.1" + }, + { + "cost": 2170624.0, + "properties": { + "created": "2017-07-19T16:44:21.731000Z", + "in_cost": 2105088, + "in_text": "1020bit/s", + "modified": "2018-02-24T19:04:15.594000Z", + "outgoing_tree": "false", + "source_addr": "10.27.253.1", + "status": "up", + "status_changed": "2018-02-24T19:04:15.594000Z", + "target_addr": "10.27.10.1", + "type": "node" + }, + "source": "id_10.27.10.1", + "target": "id_10.27.253.1" + }, + { + "cost": 2170624.0, + "properties": { + "created": "2017-08-20T17:10:02.763000Z", + "in_cost": 2105088, + "in_text": "1020bit/s", + "modified": "2018-02-24T19:04:14.909000Z", + "outgoing_tree": "false", + "source_addr": "10.27.253.1", + "status": "up", + "status_changed": "2018-02-24T19:04:14.910000Z", + "target_addr": "10.27.22.1", + "type": "node" + }, + "source": "id_10.27.22.1", + "target": "id_10.27.253.1" + }, + { + "cost": 1.0, + "properties": { + "created": "2017-07-19T16:44:22.636000Z", + "hopcount": 2, + "modified": "2018-02-24T19:04:16.038000Z", + "outgoing_tree": "true", + "source_addr": "10.27.0.1", + "status": "up", + "status_changed": "2018-02-24T19:04:16.038000Z", + "target_addr": "10.27.0.0/24", + "type": "lan" + }, + "source": "id_10.27.0.1", + "target": "id_10.27.0.1_10.27.0.0/24" + }, + { + "cost": 1.0, + "properties": { + "created": "2017-07-19T16:44:21.453000Z", + "hopcount": 2, + "modified": "2018-02-24T19:04:16.287000Z", + "outgoing_tree": "false", + "source_addr": "10.27.10.1", + "status": "up", + "status_changed": "2018-02-24T19:04:16.287000Z", + "target_addr": "0.0.0.0/0", + "type": "attached" + }, + "source": "id_10.27.10.1_0.0.0.0/0", + "target": "id_10.27.10.1" + }, + { + "cost": 2105088.0, + "properties": { + "created": "2017-08-20T17:10:02.639000Z", + "in_cost": 2105088, + "in_text": "1020bit/s", + "links": [ + { + "cost": 2105088, + "cost_text": "1020bit/s", + "in_cost": 2105088, + "in_text": "1020bit/s", + "interface": "vpnbas", + "outgoing_tree": "true", + "source_addr": "10.27.253.3", + "target_addr": "10.27.253.49" + } + ], + "modified": "2018-02-24T19:04:15.149000Z", + "outgoing_tree": "false", + "source_addr": "10.27.22.1", + "status": "up", + "status_changed": "2018-02-24T19:04:15.149000Z", + "target_addr": "10.27.10.1", + "type": "node" + }, + "source": "id_10.27.22.1", + "target": "id_10.27.10.1" + }, + { + "cost": 2105088.0, + "properties": { + "created": "2017-07-19T16:44:22Z", + "in_cost": 2105088, + "in_text": "1020bit/s", + "links": [ + { + "cost": 2105088, + "cost_text": "1020bit/s", + "in_cost": 2105088, + "in_text": "1020bit/s", + "interface": "vpnbas", + "outgoing_tree": "true", + "source_addr": "10.27.253.43", + "target_addr": "10.27.253.3" + } + ], + "modified": "2018-02-24T19:04:17.410000Z", + "outgoing_tree": "false", + "source_addr": "10.27.10.1", + "status": "up", + "status_changed": "2018-02-24T19:04:17.410000Z", + "target_addr": "10.27.0.1", + "type": "node" + }, + "source": "id_10.27.10.1", + "target": "id_10.27.0.1" + }, + { + "cost": 2309888.0, + "properties": { + "created": "2017-07-19T16:44:22.269000Z", + "in_cost": 2105088, + "in_text": "1020bit/s", + "links": [ + { + "cost": 2105088, + "cost_text": "1020bit/s", + "in_cost": 2105088, + "in_text": "1020bit/s", + "interface": "vpnbas", + "outgoing_tree": "true", + "source_addr": "10.27.253.43", + "target_addr": "10.27.253.1" + } + ], + "modified": "2018-02-24T19:04:15.341000Z", + "outgoing_tree": "false", + "source_addr": "10.27.253.1", + "status": "up", + "status_changed": "2018-02-24T19:04:15.341000Z", + "target_addr": "10.27.0.1", + "type": "node" + }, + "source": "id_10.27.253.1", + "target": "id_10.27.0.1" + }, + { + "cost": 2105088.0, + "properties": { + "created": "2017-08-25T18:47:03.958000Z", + "in_cost": 2105088, + "in_text": "1020bit/s", + "links": [ + { + "cost": 2105088, + "cost_text": "1020bit/s", + "in_cost": 2105088, + "in_text": "1020bit/s", + "interface": "vpnbas", + "outgoing_tree": "true", + "source_addr": "169.254.115.155", + "target_addr": "10.27.253.43" + } + ], + "modified": "2018-02-24T19:04:14.731000Z", + "outgoing_tree": "false", + "source_addr": "10.27.0.1", + "status": "up", + "status_changed": "2018-02-24T19:04:14.731000Z", + "target_addr": "10.27.22.1", + "type": "node" + }, + "source": "id_10.27.22.1", + "target": "id_10.27.0.1" + }, + { + "cost": 1.0, + "properties": { + "created": "2017-07-19T16:44:20.793000Z", + "hopcount": 2, + "modified": "2018-02-24T19:04:17.120000Z", + "outgoing_tree": "true", + "source_addr": "10.27.0.1", + "status": "up", + "status_changed": "2018-02-24T19:04:17.120000Z", + "target_addr": "0.0.0.0/0", + "type": "lan" + }, + "source": "id_10.27.0.1_0.0.0.0/0", + "target": "id_10.27.0.1" + } + ], + "metric": "ff_dat_metric", + "modified": "2018-05-11T03:45:00.928000Z", + "nodes": [ + { + "id": "id_10.27.24.1_10.27.24.0/24", + "label": "10.27.24.1 - 10.27.24.0/24", + "properties": { + "created": "2018-06-30T21:50:10.807000Z", + "modified": "2020-01-17T16:49:10.797938Z", + "router_addr": "10.27.24.1", + "router_id": "id_10.27.24.1", + "type": "attached" + } + }, + { + "id": "id_10.27.24.1_0.0.0.0/0", + "label": "10.27.24.1 - 0.0.0.0/0", + "properties": { + "created": "2018-06-30T21:50:10.722000Z", + "modified": "2020-01-17T16:49:10.782324Z", + "router_addr": "10.27.24.1", + "router_id": "id_10.27.24.1", + "type": "attached" + } + }, + { + "id": "id_10.3.5.3_0.0.0.0/0", + "label": "10.3.5.3 - 0.0.0.0/0", + "properties": { + "created": "2018-04-07T23:55:01.525000Z", + "modified": "2020-01-17T16:49:10.784182Z", + "router_addr": "10.3.5.3", + "router_id": "id_10.3.5.3", + "type": "lan" + } + }, + { + "id": "id_10.27.24.1", + "label": "10.27.24.1", + "properties": { + "created": "2018-03-31T17:30:01.070000Z", + "dualstack_addr": "fd25:fc4:1261::1", + "dualstack_id": "id_fd25:fc4:1261::1", + "modified": "2020-01-17T16:49:10.785919Z", + "router_addr": "10.27.24.1", + "router_id": "id_10.27.24.1", + "type": "node" + } + }, + { + "id": "id_10.3.5.3", + "label": "10.3.5.3", + "properties": { + "created": "2018-04-07T23:55:01.193000Z", + "dualstack_addr": "fd25:fc4:1261::1", + "dualstack_id": "id_fd25:fc4:1261::1", + "modified": "2020-01-17T16:49:10.787183Z", + "router_addr": "10.3.5.3", + "router_id": "id_10.3.5.3", + "type": "local" + } + }, + { + "id": "id_172.27.85.36_10.27.23.0/24", + "label": "172.27.85.36 - 10.27.23.0/24", + "properties": { + "created": "2018-07-15T18:47:39.762000Z", + "modified": "2020-01-17T16:49:10.788011Z", + "router_addr": "172.27.85.36", + "router_id": "id_172.27.85.36", + "type": "lan" + } + }, + { + "id": "id_10.27.253.61", + "label": "10.27.253.61", + "properties": { + "created": "2018-04-23T10:20:00.681000Z", + "dualstack_addr": "fe80::8c60:fcff:fe3b:5f9f", + "dualstack_id": "id_fe80::8c60:fcff:fe3b:5f9f", + "modified": "2020-01-17T16:49:10.788426Z", + "router_addr": "10.27.253.61", + "router_id": "id_10.27.253.61", + "type": "node" + } + }, + { + "id": "id_10.3.5.3_10.27.22.0/24", + "label": "10.3.5.3 - 10.27.22.0/24", + "properties": { + "created": "2018-04-07T23:55:00.820000Z", + "modified": "2020-01-17T16:49:10.792987Z", + "router_addr": "10.3.5.3", + "router_id": "id_10.3.5.3", + "type": "lan" + } + }, + { + "id": "id_10.27.22.1_0.0.0.0", + "label": "10.27.22.1 - 0.0.0.0", + "properties": { + "created": "2018-09-13T17:35:07.331000Z", + "modified": "2020-01-17T16:49:10.793818Z", + "router_addr": "10.27.22.1", + "router_id": "id_10.27.22.1", + "type": "lan" + } + }, + { + "id": "id_10.27.22.1_10.27.22.0/24", + "label": "Kali Oppido Lucano", + "properties": { + "created": "2017-08-20T17:10:02.423000Z", + "modified": "2020-01-17T16:49:10.795115Z", + "router_addr": "10.27.22.1", + "router_id": "id_10.27.22.1", + "type": "attached" + } + }, + { + "id": "id_10.27.23.1_10.27.23.0/24", + "label": "10.27.23.1 - 10.27.23.0/24", + "properties": { + "created": "2018-06-23T12:19:39.852000Z", + "modified": "2020-01-17T16:49:10.796726Z", + "router_addr": "10.27.23.1", + "router_id": "id_10.27.23.1", + "type": "attached" + } + }, + { + "id": "id_10.27.10.1_10.27.10.0/24", + "label": "Syskrack-net", + "properties": { + "created": "2017-07-19T16:44:20.003000Z", + "modified": "2020-01-17T16:49:10.797127Z", + "router_addr": "10.27.10.1", + "router_id": "id_10.27.10.1", + "type": "attached" + } + }, + { + "id": "id_172.27.85.36", + "label": "172.27.85.36", + "properties": { + "created": "2018-07-15T18:47:39.836000Z", + "dualstack_addr": "fdd1:50f2:2dfa::1", + "dualstack_id": "id_fdd1:50f2:2dfa::1", + "modified": "2020-01-17T16:49:10.798336Z", + "router_addr": "172.27.85.36", + "router_id": "id_172.27.85.36", + "type": "local" + } + }, + { + "id": "id_10.27.23.1", + "label": "10.27.23.1", + "properties": { + "created": "2018-06-23T12:19:39.743000Z", + "dualstack_addr": "fd02:c1d0:c7a7::1", + "dualstack_id": "id_fd02:c1d0:c7a7::1", + "modified": "2020-01-17T16:49:10.798739Z", + "router_addr": "10.27.23.1", + "router_id": "id_10.27.23.1", + "type": "node" + } + }, + { + "id": "id_10.3.5.3_10.27.22.0/25", + "label": "10.3.5.3 - 10.27.22.0/25", + "properties": { + "created": "2018-04-22T10:05:02.029000Z", + "modified": "2020-01-17T16:49:10.801491Z", + "router_addr": "10.3.5.3", + "router_id": "id_10.3.5.3", + "type": "attached" + } + }, + { + "id": "id_10.27.0.1_0.0.0.0/0", + "properties": { + "created": "2017-07-19T16:44:19.439000Z", + "modified": "2020-01-17T16:49:10.816051Z", + "router_addr": "10.27.0.1", + "router_id": "id_10.27.0.1", + "type": "lan" + } + }, + { + "id": "id_10.27.22.1", + "label": "Kali-Oppido-router", + "properties": { + "created": "2017-08-20T17:10:02.218000Z", + "dualstack_addr": "fe80::c66e:1fff:feff:223", + "dualstack_id": "id_fe80::c66e:1fff:feff:223", + "modified": "2020-01-17T16:49:10.816460Z", + "router_addr": "10.27.22.1", + "router_id": "id_10.27.22.1", + "type": "node" + } + }, + { + "id": "id_10.27.253.1", + "properties": { + "created": "2017-07-19T16:44:20.129000Z", + "dualstack_addr": "fe80::d446:ecff:fefd:3abe", + "dualstack_id": "id_fe80::d446:ecff:fefd:3abe", + "modified": "2020-01-17T16:49:10.818089Z", + "router_addr": "10.27.253.1", + "router_id": "id_10.27.253.1", + "type": "node" + } + }, + { + "id": "id_10.27.0.1_10.27.0.0/24", + "label": "Kali-Matera-net", + "properties": { + "created": "2017-07-19T16:44:20.660000Z", + "modified": "2020-01-17T16:49:10.826859Z", + "router_addr": "10.27.0.1", + "router_id": "id_10.27.0.1", + "type": "lan" + } + }, + { + "id": "id_10.27.10.1_0.0.0.0/0", + "properties": { + "created": "2017-07-19T16:44:19.702000Z", + "modified": "2020-01-17T16:49:10.829051Z", + "router_addr": "10.27.10.1", + "router_id": "id_10.27.10.1", + "type": "attached" + } + }, + { + "id": "id_10.27.22.1_0.0.0.0/0", + "properties": { + "created": "2017-08-20T17:10:02.336000Z", + "modified": "2020-01-17T16:49:10.829505Z", + "router_addr": "10.27.22.1", + "router_id": "id_10.27.22.1", + "type": "attached" + } + }, + { + "id": "id_10.27.10.1", + "label": "Syskrack-router", + "properties": { + "created": "2017-07-19T16:44:19.816000Z", + "dualstack_addr": "fdb5:a1cc:bb86::1", + "dualstack_id": "id_fdb5:a1cc:bb86::1", + "modified": "2020-01-17T16:49:10.829944Z", + "router_addr": "10.27.10.1", + "router_id": "id_10.27.10.1", + "type": "node" + } + }, + { + "id": "id_10.27.0.1", + "label": "Kali-Matera-router", + "properties": { + "created": "2017-07-19T16:44:20.255000Z", + "dualstack_addr": "fd5c:257b:b54e::1", + "dualstack_id": "id_fd5c:257b:b54e::1", + "modified": "2020-01-17T16:49:10.830356Z", + "router_addr": "10.27.0.1", + "router_id": "id_10.27.0.1", + "type": "local" + } + } + ] }