From 5cc8375106189e3b5e55a4ba72c23ef1569a4d99 Mon Sep 17 00:00:00 2001 From: MatMoul <matmoul@gmail.com> Date: Thu, 31 Oct 2024 18:34:57 +0100 Subject: [PATCH] Add TODO to node + Sample IT_V2 --- samples/it_v2/doc.yaml | 2 + samples/it_v2/doc/_index.01.pug | 1 + samples/it_v2/doc/_index.yaml | 6 + samples/it_v2/doc/ad/_index.yaml | 5 + samples/it_v2/doc/ad/acls/_index.yaml | 7 + samples/it_v2/doc/ad/acls/fs-01.yaml | 31 ++ samples/it_v2/doc/ad/dfs/_index.yaml | 7 + .../it_v2/doc/ad/dfs/root@domain.local.yaml | 9 + samples/it_v2/doc/ad/domains/_index.yaml | 7 + .../it_v2/doc/ad/domains/domain.local.yaml | 7 + samples/it_v2/doc/ad/shares/_index.yaml | 7 + samples/it_v2/doc/ad/shares/fs-01.yaml | 7 + samples/it_v2/doc/ad/usergroups/_index.yaml | 7 + .../it_v2/doc/ad/usergroups/domain.local.yaml | 8 + samples/it_v2/doc/devices/_index.yaml | 5 + .../it_v2/doc/devices/computers/_index.yaml | 6 + .../doc/devices/computers/computer-01.yaml | 20 + .../doc/devices/computers/computer-02.yaml | 23 ++ samples/it_v2/doc/devices/netdevs/_index.yaml | 6 + .../doc/devices/netdevs/firewall-01.yaml | 33 ++ .../it_v2/doc/devices/netdevs/switch-01.yaml | 19 + .../it_v2/doc/devices/netdevs/wifi-01.yaml | 19 + .../it_v2/doc/devices/printers/_index.yaml | 6 + .../it_v2/doc/devices/printers/mfc-01.yaml | 12 + .../doc/devices/printers/printer-01.yaml | 12 + samples/it_v2/doc/devices/servers/_index.yaml | 6 + samples/it_v2/doc/devices/servers/dc-01.yaml | 26 ++ samples/it_v2/doc/devices/servers/fs-01.yaml | 28 ++ samples/it_v2/doc/devices/servers/nas-01.yaml | 30 ++ samples/it_v2/doc/index/_index.yaml | 6 + samples/it_v2/doc/maintenance/_index.yaml | 5 + .../it_v2/doc/maintenance/backups/_index.yaml | 7 + .../it_v2/doc/maintenance/todos/_index.yaml | 6 + .../it_v2/doc/maintenance/updates/_index.yaml | 7 + samples/it_v2/doc/network/_index.01.pug | 10 + samples/it_v2/doc/network/_index.yaml | 7 + samples/it_v2/doc/network/ipam/_index.yaml | 7 + .../doc/network/subnets/01_lan.01.drawio | 1 + .../it_v2/doc/network/subnets/01_lan.01.svg | 4 + samples/it_v2/doc/network/subnets/01_lan.yaml | 11 + .../doc/network/subnets/02_guest.01.drawio | 1 + .../it_v2/doc/network/subnets/02_guest.01.svg | 4 + .../it_v2/doc/network/subnets/02_guest.yaml | 13 + samples/it_v2/doc/network/subnets/04_vpn.yaml | 11 + .../doc/network/subnets/05_wan.01.drawio | 1 + .../it_v2/doc/network/subnets/05_wan.01.svg | 4 + samples/it_v2/doc/network/subnets/05_wan.yaml | 3 + samples/it_v2/doc/network/subnets/_index.yaml | 7 + samples/it_v2/doc/network/wifi/01_lan.yaml | 4 + samples/it_v2/doc/network/wifi/02_guest.yaml | 4 + samples/it_v2/doc/network/wifi/_index.yaml | 7 + samples/it_v2/doc/secrets/_index.yaml | 6 + samples/it_v2/doc/secrets/ad.yaml | 9 + samples/it_v2/doc/secrets/ms365.yaml | 11 + samples/it_v2/doc/secrets/windows.yaml | 6 + samples/it_v2/doc/softwares/_index.yaml | 5 + .../it_v2/doc/softwares/software1.notes.md | 3 + samples/it_v2/doc/softwares/software1.yaml | 9 + samples/it_v2/schemas/_index.json | 99 +++++ samples/it_v2/schemas/ad_acls.json | 118 ++++++ samples/it_v2/schemas/ad_dfs.json | 121 ++++++ samples/it_v2/schemas/ad_domain.json | 116 ++++++ samples/it_v2/schemas/ad_shares.json | 107 ++++++ samples/it_v2/schemas/ad_usergroups.json | 91 +++++ samples/it_v2/schemas/computer.json | 341 +++++++++++++++++ samples/it_v2/schemas/netdev.json | 345 +++++++++++++++++ samples/it_v2/schemas/printer.json | 317 +++++++++++++++ samples/it_v2/schemas/secrets.json | 104 +++++ samples/it_v2/schemas/server.json | 362 ++++++++++++++++++ samples/it_v2/schemas/software.json | 124 ++++++ samples/it_v2/schemas/subnet.json | 172 +++++++++ samples/it_v2/schemas/voipdev.json | 317 +++++++++++++++ samples/it_v2/schemas/wifi.json | 106 +++++ samples/it_v2/schemas_builder/build.sh | 52 +++ samples/it_v2/schemas_builder/objects/_index | 7 + samples/it_v2/schemas_builder/objects/ad_acls | 4 + samples/it_v2/schemas_builder/objects/ad_dfs | 4 + .../it_v2/schemas_builder/objects/ad_domain | 4 + .../it_v2/schemas_builder/objects/ad_shares | 4 + .../schemas_builder/objects/ad_usergroups | 4 + .../it_v2/schemas_builder/objects/computer | 12 + samples/it_v2/schemas_builder/objects/netdev | 12 + samples/it_v2/schemas_builder/objects/printer | 10 + samples/it_v2/schemas_builder/objects/secrets | 3 + samples/it_v2/schemas_builder/objects/server | 12 + .../it_v2/schemas_builder/objects/software | 6 + samples/it_v2/schemas_builder/objects/subnet | 4 + samples/it_v2/schemas_builder/objects/voipdev | 10 + samples/it_v2/schemas_builder/objects/wifi | 4 + .../it_v2/schemas_builder/parts/ad_acls.json | 48 +++ .../it_v2/schemas_builder/parts/ad_dfs.json | 51 +++ .../schemas_builder/parts/ad_domain.json | 46 +++ .../schemas_builder/parts/ad_shares.json | 37 ++ .../schemas_builder/parts/ad_usergroups.json | 21 + samples/it_v2/schemas_builder/parts/book.json | 6 + .../schemas_builder/parts/computer_os.json | 26 ++ .../schemas_builder/parts/computer_type.json | 20 + .../it_v2/schemas_builder/parts/files.json | 38 ++ .../it_v2/schemas_builder/parts/index.json | 6 + .../schemas_builder/parts/interfaces.json | 63 +++ .../it_v2/schemas_builder/parts/location.json | 13 + .../schemas_builder/parts/maintainer.json | 13 + .../parts/maintenance_backups.json | 86 +++++ .../parts/maintenance_updates.json | 72 ++++ .../it_v2/schemas_builder/parts/model.json | 13 + samples/it_v2/schemas_builder/parts/name.json | 13 + .../schemas_builder/parts/netdev_os.json | 16 + .../schemas_builder/parts/netdev_roles.json | 21 + .../schemas_builder/parts/netdev_type.json | 18 + .../schemas_builder/parts/printer_type.json | 17 + .../it_v2/schemas_builder/parts/secrets.json | 67 ++++ .../schemas_builder/parts/server_os.json | 28 ++ .../schemas_builder/parts/server_roles.json | 26 ++ .../schemas_builder/parts/server_type.json | 18 + .../it_v2/schemas_builder/parts/software.json | 22 ++ .../it_v2/schemas_builder/parts/subnet.json | 87 +++++ .../schemas_builder/parts/subnet_name.json | 28 ++ .../schemas_builder/parts/templates.json | 26 ++ .../it_v2/schemas_builder/parts/title.json | 13 + samples/it_v2/schemas_builder/parts/toc.json | 6 + samples/it_v2/schemas_builder/parts/todo.json | 31 ++ samples/it_v2/schemas_builder/parts/urls.json | 29 ++ .../schemas_builder/parts/voipdev_type.json | 17 + samples/it_v2/schemas_builder/parts/wifi.json | 21 + samples/it_v2/templates/acls.pug | 15 + samples/it_v2/templates/adadmins.pug | 13 + samples/it_v2/templates/backups.pug | 46 +++ samples/it_v2/templates/cloudadmins.pug | 13 + samples/it_v2/templates/computers.pug | 23 ++ samples/it_v2/templates/dfs.pug | 34 ++ samples/it_v2/templates/domains.pug | 28 ++ samples/it_v2/templates/ipam.pug | 72 ++++ samples/it_v2/templates/maintenances.pug | 56 +++ samples/it_v2/templates/ms365admins.pug | 13 + samples/it_v2/templates/ms365sharepoint.pug | 11 + samples/it_v2/templates/ms365users.pug | 17 + samples/it_v2/templates/netdevs.pug | 20 + samples/it_v2/templates/printers.pug | 22 ++ samples/it_v2/templates/ran.pug | 16 + samples/it_v2/templates/secrets.pug | 31 ++ samples/it_v2/templates/servers.pug | 28 ++ samples/it_v2/templates/shares.pug | 17 + samples/it_v2/templates/softwares.pug | 14 + samples/it_v2/templates/subnets.pug | 25 ++ samples/it_v2/templates/todos.pug | 59 +++ samples/it_v2/templates/updates.pug | 45 +++ samples/it_v2/templates/usergroups.pug | 11 + samples/it_v2/templates/webdomains.pug | 18 + samples/it_v2/templates/wifis.pug | 13 + src/core/jsondoc.js | 3 + 150 files changed, 5259 insertions(+) create mode 100644 samples/it_v2/doc.yaml create mode 100644 samples/it_v2/doc/_index.01.pug create mode 100644 samples/it_v2/doc/_index.yaml create mode 100644 samples/it_v2/doc/ad/_index.yaml create mode 100644 samples/it_v2/doc/ad/acls/_index.yaml create mode 100644 samples/it_v2/doc/ad/acls/fs-01.yaml create mode 100644 samples/it_v2/doc/ad/dfs/_index.yaml create mode 100644 samples/it_v2/doc/ad/dfs/root@domain.local.yaml create mode 100644 samples/it_v2/doc/ad/domains/_index.yaml create mode 100644 samples/it_v2/doc/ad/domains/domain.local.yaml create mode 100644 samples/it_v2/doc/ad/shares/_index.yaml create mode 100644 samples/it_v2/doc/ad/shares/fs-01.yaml create mode 100644 samples/it_v2/doc/ad/usergroups/_index.yaml create mode 100644 samples/it_v2/doc/ad/usergroups/domain.local.yaml create mode 100644 samples/it_v2/doc/devices/_index.yaml create mode 100644 samples/it_v2/doc/devices/computers/_index.yaml create mode 100644 samples/it_v2/doc/devices/computers/computer-01.yaml create mode 100644 samples/it_v2/doc/devices/computers/computer-02.yaml create mode 100644 samples/it_v2/doc/devices/netdevs/_index.yaml create mode 100644 samples/it_v2/doc/devices/netdevs/firewall-01.yaml create mode 100644 samples/it_v2/doc/devices/netdevs/switch-01.yaml create mode 100644 samples/it_v2/doc/devices/netdevs/wifi-01.yaml create mode 100644 samples/it_v2/doc/devices/printers/_index.yaml create mode 100644 samples/it_v2/doc/devices/printers/mfc-01.yaml create mode 100644 samples/it_v2/doc/devices/printers/printer-01.yaml create mode 100644 samples/it_v2/doc/devices/servers/_index.yaml create mode 100644 samples/it_v2/doc/devices/servers/dc-01.yaml create mode 100644 samples/it_v2/doc/devices/servers/fs-01.yaml create mode 100644 samples/it_v2/doc/devices/servers/nas-01.yaml create mode 100644 samples/it_v2/doc/index/_index.yaml create mode 100644 samples/it_v2/doc/maintenance/_index.yaml create mode 100644 samples/it_v2/doc/maintenance/backups/_index.yaml create mode 100644 samples/it_v2/doc/maintenance/todos/_index.yaml create mode 100644 samples/it_v2/doc/maintenance/updates/_index.yaml create mode 100644 samples/it_v2/doc/network/_index.01.pug create mode 100644 samples/it_v2/doc/network/_index.yaml create mode 100644 samples/it_v2/doc/network/ipam/_index.yaml create mode 100644 samples/it_v2/doc/network/subnets/01_lan.01.drawio create mode 100644 samples/it_v2/doc/network/subnets/01_lan.01.svg create mode 100644 samples/it_v2/doc/network/subnets/01_lan.yaml create mode 100644 samples/it_v2/doc/network/subnets/02_guest.01.drawio create mode 100644 samples/it_v2/doc/network/subnets/02_guest.01.svg create mode 100644 samples/it_v2/doc/network/subnets/02_guest.yaml create mode 100644 samples/it_v2/doc/network/subnets/04_vpn.yaml create mode 100644 samples/it_v2/doc/network/subnets/05_wan.01.drawio create mode 100644 samples/it_v2/doc/network/subnets/05_wan.01.svg create mode 100644 samples/it_v2/doc/network/subnets/05_wan.yaml create mode 100644 samples/it_v2/doc/network/subnets/_index.yaml create mode 100644 samples/it_v2/doc/network/wifi/01_lan.yaml create mode 100644 samples/it_v2/doc/network/wifi/02_guest.yaml create mode 100644 samples/it_v2/doc/network/wifi/_index.yaml create mode 100644 samples/it_v2/doc/secrets/_index.yaml create mode 100644 samples/it_v2/doc/secrets/ad.yaml create mode 100644 samples/it_v2/doc/secrets/ms365.yaml create mode 100644 samples/it_v2/doc/secrets/windows.yaml create mode 100644 samples/it_v2/doc/softwares/_index.yaml create mode 100644 samples/it_v2/doc/softwares/software1.notes.md create mode 100644 samples/it_v2/doc/softwares/software1.yaml create mode 100644 samples/it_v2/schemas/_index.json create mode 100644 samples/it_v2/schemas/ad_acls.json create mode 100644 samples/it_v2/schemas/ad_dfs.json create mode 100644 samples/it_v2/schemas/ad_domain.json create mode 100644 samples/it_v2/schemas/ad_shares.json create mode 100644 samples/it_v2/schemas/ad_usergroups.json create mode 100644 samples/it_v2/schemas/computer.json create mode 100644 samples/it_v2/schemas/netdev.json create mode 100644 samples/it_v2/schemas/printer.json create mode 100644 samples/it_v2/schemas/secrets.json create mode 100644 samples/it_v2/schemas/server.json create mode 100644 samples/it_v2/schemas/software.json create mode 100644 samples/it_v2/schemas/subnet.json create mode 100644 samples/it_v2/schemas/voipdev.json create mode 100644 samples/it_v2/schemas/wifi.json create mode 100644 samples/it_v2/schemas_builder/build.sh create mode 100644 samples/it_v2/schemas_builder/objects/_index create mode 100644 samples/it_v2/schemas_builder/objects/ad_acls create mode 100644 samples/it_v2/schemas_builder/objects/ad_dfs create mode 100644 samples/it_v2/schemas_builder/objects/ad_domain create mode 100644 samples/it_v2/schemas_builder/objects/ad_shares create mode 100644 samples/it_v2/schemas_builder/objects/ad_usergroups create mode 100644 samples/it_v2/schemas_builder/objects/computer create mode 100644 samples/it_v2/schemas_builder/objects/netdev create mode 100644 samples/it_v2/schemas_builder/objects/printer create mode 100644 samples/it_v2/schemas_builder/objects/secrets create mode 100644 samples/it_v2/schemas_builder/objects/server create mode 100644 samples/it_v2/schemas_builder/objects/software create mode 100644 samples/it_v2/schemas_builder/objects/subnet create mode 100644 samples/it_v2/schemas_builder/objects/voipdev create mode 100644 samples/it_v2/schemas_builder/objects/wifi create mode 100644 samples/it_v2/schemas_builder/parts/ad_acls.json create mode 100644 samples/it_v2/schemas_builder/parts/ad_dfs.json create mode 100644 samples/it_v2/schemas_builder/parts/ad_domain.json create mode 100644 samples/it_v2/schemas_builder/parts/ad_shares.json create mode 100644 samples/it_v2/schemas_builder/parts/ad_usergroups.json create mode 100644 samples/it_v2/schemas_builder/parts/book.json create mode 100644 samples/it_v2/schemas_builder/parts/computer_os.json create mode 100644 samples/it_v2/schemas_builder/parts/computer_type.json create mode 100644 samples/it_v2/schemas_builder/parts/files.json create mode 100644 samples/it_v2/schemas_builder/parts/index.json create mode 100644 samples/it_v2/schemas_builder/parts/interfaces.json create mode 100644 samples/it_v2/schemas_builder/parts/location.json create mode 100644 samples/it_v2/schemas_builder/parts/maintainer.json create mode 100644 samples/it_v2/schemas_builder/parts/maintenance_backups.json create mode 100644 samples/it_v2/schemas_builder/parts/maintenance_updates.json create mode 100644 samples/it_v2/schemas_builder/parts/model.json create mode 100644 samples/it_v2/schemas_builder/parts/name.json create mode 100644 samples/it_v2/schemas_builder/parts/netdev_os.json create mode 100644 samples/it_v2/schemas_builder/parts/netdev_roles.json create mode 100644 samples/it_v2/schemas_builder/parts/netdev_type.json create mode 100644 samples/it_v2/schemas_builder/parts/printer_type.json create mode 100644 samples/it_v2/schemas_builder/parts/secrets.json create mode 100644 samples/it_v2/schemas_builder/parts/server_os.json create mode 100644 samples/it_v2/schemas_builder/parts/server_roles.json create mode 100644 samples/it_v2/schemas_builder/parts/server_type.json create mode 100644 samples/it_v2/schemas_builder/parts/software.json create mode 100644 samples/it_v2/schemas_builder/parts/subnet.json create mode 100644 samples/it_v2/schemas_builder/parts/subnet_name.json create mode 100644 samples/it_v2/schemas_builder/parts/templates.json create mode 100644 samples/it_v2/schemas_builder/parts/title.json create mode 100644 samples/it_v2/schemas_builder/parts/toc.json create mode 100644 samples/it_v2/schemas_builder/parts/todo.json create mode 100644 samples/it_v2/schemas_builder/parts/urls.json create mode 100644 samples/it_v2/schemas_builder/parts/voipdev_type.json create mode 100644 samples/it_v2/schemas_builder/parts/wifi.json create mode 100644 samples/it_v2/templates/acls.pug create mode 100644 samples/it_v2/templates/adadmins.pug create mode 100644 samples/it_v2/templates/backups.pug create mode 100644 samples/it_v2/templates/cloudadmins.pug create mode 100644 samples/it_v2/templates/computers.pug create mode 100644 samples/it_v2/templates/dfs.pug create mode 100644 samples/it_v2/templates/domains.pug create mode 100644 samples/it_v2/templates/ipam.pug create mode 100644 samples/it_v2/templates/maintenances.pug create mode 100644 samples/it_v2/templates/ms365admins.pug create mode 100644 samples/it_v2/templates/ms365sharepoint.pug create mode 100644 samples/it_v2/templates/ms365users.pug create mode 100644 samples/it_v2/templates/netdevs.pug create mode 100644 samples/it_v2/templates/printers.pug create mode 100644 samples/it_v2/templates/ran.pug create mode 100644 samples/it_v2/templates/secrets.pug create mode 100644 samples/it_v2/templates/servers.pug create mode 100644 samples/it_v2/templates/shares.pug create mode 100644 samples/it_v2/templates/softwares.pug create mode 100644 samples/it_v2/templates/subnets.pug create mode 100644 samples/it_v2/templates/todos.pug create mode 100644 samples/it_v2/templates/updates.pug create mode 100644 samples/it_v2/templates/usergroups.pug create mode 100644 samples/it_v2/templates/webdomains.pug create mode 100644 samples/it_v2/templates/wifis.pug diff --git a/samples/it_v2/doc.yaml b/samples/it_v2/doc.yaml new file mode 100644 index 0000000..86a6124 --- /dev/null +++ b/samples/it_v2/doc.yaml @@ -0,0 +1,2 @@ +doc: 'doc' +templates: 'templates' diff --git a/samples/it_v2/doc/_index.01.pug b/samples/it_v2/doc/_index.01.pug new file mode 100644 index 0000000..cfdb394 --- /dev/null +++ b/samples/it_v2/doc/_index.01.pug @@ -0,0 +1 @@ +h2 Company SA \ No newline at end of file diff --git a/samples/it_v2/doc/_index.yaml b/samples/it_v2/doc/_index.yaml new file mode 100644 index 0000000..1b9a7bc --- /dev/null +++ b/samples/it_v2/doc/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../schemas/_index.json +title: IT Documentation +templates: + node: '@empty' +headfiles: + - 01.pug diff --git a/samples/it_v2/doc/ad/_index.yaml b/samples/it_v2/doc/ad/_index.yaml new file mode 100644 index 0000000..aad196a --- /dev/null +++ b/samples/it_v2/doc/ad/_index.yaml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=../../schemas/_index.json +index: 4 +title: 'Active Directory' +templates: + node: '@overview' diff --git a/samples/it_v2/doc/ad/acls/_index.yaml b/samples/it_v2/doc/ad/acls/_index.yaml new file mode 100644 index 0000000..16d3d03 --- /dev/null +++ b/samples/it_v2/doc/ad/acls/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 5 +title: 'ACLS' +toc: false +book: false +templates: + node: 'acls' diff --git a/samples/it_v2/doc/ad/acls/fs-01.yaml b/samples/it_v2/doc/ad/acls/fs-01.yaml new file mode 100644 index 0000000..40b6d2a --- /dev/null +++ b/samples/it_v2/doc/ad/acls/fs-01.yaml @@ -0,0 +1,31 @@ +# yaml-language-server: $schema=../../../schemas/ad_acls.json +name: 'FS-01' +folders: + - path: 'D:\Shares\Documents' + acls: + - name: 'Company' + access: 'RO' + - path: 'D:\Shares\Documents/Direction' + acls: + - name: 'Company Direction' + access: 'RW' + - path: 'D:\Shares\Documents/RH' + acls: + - name: 'Company Direction' + access: 'RO' + - name: 'Company RH' + access: 'RW' + - path: 'D:\Shares\Documents/Accounting' + acls: + - name: 'Company Direction' + access: 'RO' + - name: 'Company Accounting' + access: 'RW' + - path: 'D:\Shares\Documents/Secretariat' + acls: + - name: 'Company Direction' + access: 'RO' + - name: 'Company RH' + access: 'RO' + - name: 'Company Secretariat' + access: 'RW' diff --git a/samples/it_v2/doc/ad/dfs/_index.yaml b/samples/it_v2/doc/ad/dfs/_index.yaml new file mode 100644 index 0000000..116c89b --- /dev/null +++ b/samples/it_v2/doc/ad/dfs/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 3 +title: 'DFS' +toc: false +book: false +templates: + node: 'dfs' diff --git a/samples/it_v2/doc/ad/dfs/root@domain.local.yaml b/samples/it_v2/doc/ad/dfs/root@domain.local.yaml new file mode 100644 index 0000000..fe245ac --- /dev/null +++ b/samples/it_v2/doc/ad/dfs/root@domain.local.yaml @@ -0,0 +1,9 @@ +# yaml-language-server: $schema=../../../schemas/ad_dfs.json +name: 'ROOT' +path: '\\DOMAIN.local\ROOT' +targets: + - '\\FS-01\ROOT' +folders: + - name: 'Documents' + targets: + - '\\FS-01\Documents' diff --git a/samples/it_v2/doc/ad/domains/_index.yaml b/samples/it_v2/doc/ad/domains/_index.yaml new file mode 100644 index 0000000..814ffb0 --- /dev/null +++ b/samples/it_v2/doc/ad/domains/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 1 +title: 'Domains' +toc: false +book: false +templates: + node: 'domains' diff --git a/samples/it_v2/doc/ad/domains/domain.local.yaml b/samples/it_v2/doc/ad/domains/domain.local.yaml new file mode 100644 index 0000000..f287759 --- /dev/null +++ b/samples/it_v2/doc/ad/domains/domain.local.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/ad_domain.json +name: 'DOMAIN.local' +dc: + - name: 'dc-01' + fsmo: 'all' +servers: + - name: 'fs-01' diff --git a/samples/it_v2/doc/ad/shares/_index.yaml b/samples/it_v2/doc/ad/shares/_index.yaml new file mode 100644 index 0000000..7408786 --- /dev/null +++ b/samples/it_v2/doc/ad/shares/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 3 +title: 'Shares' +toc: false +book: false +templates: + node: 'shares' diff --git a/samples/it_v2/doc/ad/shares/fs-01.yaml b/samples/it_v2/doc/ad/shares/fs-01.yaml new file mode 100644 index 0000000..c2521a6 --- /dev/null +++ b/samples/it_v2/doc/ad/shares/fs-01.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/ad_shares.json +name: FS-01 +fileshares: + - path: '\\FS-01\Documents' +printshares: + - path: '\\FS-01\MFC-01' + - path: '\\FS-01\PRINTER-01' diff --git a/samples/it_v2/doc/ad/usergroups/_index.yaml b/samples/it_v2/doc/ad/usergroups/_index.yaml new file mode 100644 index 0000000..4864673 --- /dev/null +++ b/samples/it_v2/doc/ad/usergroups/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 2 +title: 'Usergroups' +toc: false +book: false +templates: + node: 'usergroups' diff --git a/samples/it_v2/doc/ad/usergroups/domain.local.yaml b/samples/it_v2/doc/ad/usergroups/domain.local.yaml new file mode 100644 index 0000000..0e327a5 --- /dev/null +++ b/samples/it_v2/doc/ad/usergroups/domain.local.yaml @@ -0,0 +1,8 @@ +# yaml-language-server: $schema=../../../schemas/ad_usergroups.json +name: DOMAIN.local +usergroups: + - name: 'Company' + - name: 'Company Management' + - name: 'Company RH' + - name: 'Company Accounting' + - name: 'Company Secretariat' diff --git a/samples/it_v2/doc/devices/_index.yaml b/samples/it_v2/doc/devices/_index.yaml new file mode 100644 index 0000000..1d8dc89 --- /dev/null +++ b/samples/it_v2/doc/devices/_index.yaml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=../../schemas/_index.json +index: 3 +title: Devices +templates: + node: '@overview' \ No newline at end of file diff --git a/samples/it_v2/doc/devices/computers/_index.yaml b/samples/it_v2/doc/devices/computers/_index.yaml new file mode 100644 index 0000000..3c72ca1 --- /dev/null +++ b/samples/it_v2/doc/devices/computers/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 4 +title: Computers +toc: false +templates: + node: 'computers' diff --git a/samples/it_v2/doc/devices/computers/computer-01.yaml b/samples/it_v2/doc/devices/computers/computer-01.yaml new file mode 100644 index 0000000..eceb49d --- /dev/null +++ b/samples/it_v2/doc/devices/computers/computer-01.yaml @@ -0,0 +1,20 @@ +# yaml-language-server: $schema=../../../schemas/computer.json +name: 'computer-01' +type: '' +model: '' +os: 'Windows 11 Pro' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.21' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: + - '10.10.10.1' +updates: + - type: 'os' + method: 'auto' + frequency: 'auto' + time: 'auto' +backups: + - type: 'none' diff --git a/samples/it_v2/doc/devices/computers/computer-02.yaml b/samples/it_v2/doc/devices/computers/computer-02.yaml new file mode 100644 index 0000000..9dea803 --- /dev/null +++ b/samples/it_v2/doc/devices/computers/computer-02.yaml @@ -0,0 +1,23 @@ +# yaml-language-server: $schema=../../../schemas/computer.json +todo: + - msg: 'Replace computer' + priority: 20 +name: 'computer-02' +type: '' +model: '' +os: '! Windows 7 Pro' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.22' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: + - '10.10.10.1' +updates: + - type: 'os' + method: 'auto' + frequency: 'auto' + time: 'auto' +backups: + - type: 'none' diff --git a/samples/it_v2/doc/devices/netdevs/_index.yaml b/samples/it_v2/doc/devices/netdevs/_index.yaml new file mode 100644 index 0000000..a48845a --- /dev/null +++ b/samples/it_v2/doc/devices/netdevs/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 1 +title: Network +toc: false +templates: + node: 'netdevs' \ No newline at end of file diff --git a/samples/it_v2/doc/devices/netdevs/firewall-01.yaml b/samples/it_v2/doc/devices/netdevs/firewall-01.yaml new file mode 100644 index 0000000..49bcaf9 --- /dev/null +++ b/samples/it_v2/doc/devices/netdevs/firewall-01.yaml @@ -0,0 +1,33 @@ +# yaml-language-server: $schema=../../../schemas/netdev.json +name: 'firewall-01' +roles: + - Firewall + - DHCP + - DNS + - VPN + - VLAN +model: 'Generic Firewall' +os: 'Linux' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.1' + mask: '255.255.255.0' + - name: 'GUEST' + ip: '192.168.5.1' + mask: '255.255.255.0' + - name: 'VPN' + ip: '192.168.9.1' + mask: '255.255.255.0' + - name: 'WAN' + ip: '0.0.0.0' + mask: '255.255.255.255' +updates: + - type: 'os' + method: 'auto' + frequency: 'tuesday' + time: '12:30' +backups: + - type: 'manual' + content: 'config' + frequency: 'On change' diff --git a/samples/it_v2/doc/devices/netdevs/switch-01.yaml b/samples/it_v2/doc/devices/netdevs/switch-01.yaml new file mode 100644 index 0000000..9e1e9de --- /dev/null +++ b/samples/it_v2/doc/devices/netdevs/switch-01.yaml @@ -0,0 +1,19 @@ +# yaml-language-server: $schema=../../../schemas/netdev.json +name: 'switch-01' +model: '' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.231' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: [ '10.10.10.1' ] +updates: + - type: 'os' + method: 'manual' + frequency: 'yearly' + time: '-' +backups: + - type: 'manual' + content: 'config' + frequency: 'On change' diff --git a/samples/it_v2/doc/devices/netdevs/wifi-01.yaml b/samples/it_v2/doc/devices/netdevs/wifi-01.yaml new file mode 100644 index 0000000..43787ca --- /dev/null +++ b/samples/it_v2/doc/devices/netdevs/wifi-01.yaml @@ -0,0 +1,19 @@ +# yaml-language-server: $schema=../../../schemas/netdev.json +name: 'wifi-01' +model: '' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.241' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: [ '10.10.10.1' ] +updates: + - type: 'os' + method: 'manual' + frequency: 'yearly' + time: '-' +backups: + - type: 'manual' + content: 'config' + frequency: 'On change' diff --git a/samples/it_v2/doc/devices/printers/_index.yaml b/samples/it_v2/doc/devices/printers/_index.yaml new file mode 100644 index 0000000..39f2b8d --- /dev/null +++ b/samples/it_v2/doc/devices/printers/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 8 +title: Printers +toc: false +templates: + node: printers \ No newline at end of file diff --git a/samples/it_v2/doc/devices/printers/mfc-01.yaml b/samples/it_v2/doc/devices/printers/mfc-01.yaml new file mode 100644 index 0000000..4443afe --- /dev/null +++ b/samples/it_v2/doc/devices/printers/mfc-01.yaml @@ -0,0 +1,12 @@ +# yaml-language-server: $schema=../../../schemas/printer.json +name: 'mfc-01' +type: mfc +model: '' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.211' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: + - '10.10.10.1' diff --git a/samples/it_v2/doc/devices/printers/printer-01.yaml b/samples/it_v2/doc/devices/printers/printer-01.yaml new file mode 100644 index 0000000..b250f95 --- /dev/null +++ b/samples/it_v2/doc/devices/printers/printer-01.yaml @@ -0,0 +1,12 @@ +# yaml-language-server: $schema=../../../schemas/printer.json +name: 'printer-01' +type: printer +model: '' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.212' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: + - '10.10.10.1' diff --git a/samples/it_v2/doc/devices/servers/_index.yaml b/samples/it_v2/doc/devices/servers/_index.yaml new file mode 100644 index 0000000..a379dbf --- /dev/null +++ b/samples/it_v2/doc/devices/servers/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 2 +title: Servers +toc: false +templates: + node: 'servers' diff --git a/samples/it_v2/doc/devices/servers/dc-01.yaml b/samples/it_v2/doc/devices/servers/dc-01.yaml new file mode 100644 index 0000000..bd02514 --- /dev/null +++ b/samples/it_v2/doc/devices/servers/dc-01.yaml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=../../../schemas/server.json +name: 'dc-01' +type: '' +roles: [ 'DC' ] +model: '' +os: 'Windows Server 2019 Std' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.110' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: + - '127.0.0.1' +updates: + - type: 'os' + method: 'auto' + frequency: 'friday' + time: 23:30 +backups: + - type: 'Windows Backup' + content: 'All' + frequency: daily + time: 20:30 + duration: '' + target: 'External HDD' diff --git a/samples/it_v2/doc/devices/servers/fs-01.yaml b/samples/it_v2/doc/devices/servers/fs-01.yaml new file mode 100644 index 0000000..5fb6aca --- /dev/null +++ b/samples/it_v2/doc/devices/servers/fs-01.yaml @@ -0,0 +1,28 @@ +# yaml-language-server: $schema=../../../schemas/server.json +name: 'fs-01' +type: '' +roles: + - 'File server' + - 'Print server' +model: '' +os: 'Windows Server 2019 Std' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.111' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: + - '10.10.10.1' +updates: + - type: 'os' + method: 'auto' + frequency: 'friday' + time: 23:30 +backups: + - type: 'Windows Backup' + content: 'All' + frequency: daily + time: 20:30 + duration: '' + target: 'External HDD' diff --git a/samples/it_v2/doc/devices/servers/nas-01.yaml b/samples/it_v2/doc/devices/servers/nas-01.yaml new file mode 100644 index 0000000..5b72f50 --- /dev/null +++ b/samples/it_v2/doc/devices/servers/nas-01.yaml @@ -0,0 +1,30 @@ +# yaml-language-server: $schema=../../../schemas/server.json +todo: + - msg: 'Add a new NAS server for backup' + priority: 20 +name: 'nas-01' +type: '' +roles: + - 'Backup server' +model: '' +os: '' +location: '' +interfaces: + - name: 'LAN' + ip: '10.10.10.119' + mask: '255.255.255.0' + gw: '10.10.10.1' + dns: + - '10.10.10.1' +updates: + - type: 'os' + method: 'auto' + frequency: 'friday' + time: 23:30 +backups: + - type: 'Internal Backup' + content: 'All' + frequency: daily + time: 20:30 + duration: '' + target: 'External HDD' diff --git a/samples/it_v2/doc/index/_index.yaml b/samples/it_v2/doc/index/_index.yaml new file mode 100644 index 0000000..cae42ce --- /dev/null +++ b/samples/it_v2/doc/index/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../schemas/_index.json +index: 1 +title: Index +toc: false +templates: + node: '@index' \ No newline at end of file diff --git a/samples/it_v2/doc/maintenance/_index.yaml b/samples/it_v2/doc/maintenance/_index.yaml new file mode 100644 index 0000000..ec11eec --- /dev/null +++ b/samples/it_v2/doc/maintenance/_index.yaml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=../../schemas/_index.json +index: 100 +title: Maintenance +templates: + node: '@overview' \ No newline at end of file diff --git a/samples/it_v2/doc/maintenance/backups/_index.yaml b/samples/it_v2/doc/maintenance/backups/_index.yaml new file mode 100644 index 0000000..3a63807 --- /dev/null +++ b/samples/it_v2/doc/maintenance/backups/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 3 +title: Backups +toc: false +book: false +templates: + node: backups \ No newline at end of file diff --git a/samples/it_v2/doc/maintenance/todos/_index.yaml b/samples/it_v2/doc/maintenance/todos/_index.yaml new file mode 100644 index 0000000..2b89594 --- /dev/null +++ b/samples/it_v2/doc/maintenance/todos/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 1 +title: TODOS +book: false +templates: + node: todos \ No newline at end of file diff --git a/samples/it_v2/doc/maintenance/updates/_index.yaml b/samples/it_v2/doc/maintenance/updates/_index.yaml new file mode 100644 index 0000000..c0be36c --- /dev/null +++ b/samples/it_v2/doc/maintenance/updates/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 5 +title: Updates +toc: false +book: false +templates: + node: updates \ No newline at end of file diff --git a/samples/it_v2/doc/network/_index.01.pug b/samples/it_v2/doc/network/_index.01.pug new file mode 100644 index 0000000..d02e5c2 --- /dev/null +++ b/samples/it_v2/doc/network/_index.01.pug @@ -0,0 +1,10 @@ +h2 Overview +div.section + h3 WAN + img(class="largeimage", src="/network/subnets?itm=05_wan&res=01.svg") +div.section + h3 GUEST + img(class="largeimage", src="/network/subnets?itm=02_guest&res=01.svg") +div.section + h3 LAN + img(class="largeimage", src="/network/subnets?itm=01_lan&res=01.svg") diff --git a/samples/it_v2/doc/network/_index.yaml b/samples/it_v2/doc/network/_index.yaml new file mode 100644 index 0000000..c89e2d4 --- /dev/null +++ b/samples/it_v2/doc/network/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../schemas/_index.json +index: 2 +title: Network +templates: + node: '@overview' +headfiles: + - 01.pug diff --git a/samples/it_v2/doc/network/ipam/_index.yaml b/samples/it_v2/doc/network/ipam/_index.yaml new file mode 100644 index 0000000..79a76d0 --- /dev/null +++ b/samples/it_v2/doc/network/ipam/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 10 +title: IPAM +toc: false +book: false +templates: + node: ipam \ No newline at end of file diff --git a/samples/it_v2/doc/network/subnets/01_lan.01.drawio b/samples/it_v2/doc/network/subnets/01_lan.01.drawio new file mode 100644 index 0000000..0c954d5 --- /dev/null +++ b/samples/it_v2/doc/network/subnets/01_lan.01.drawio @@ -0,0 +1 @@ +<mxfile host="app.diagrams.net" modified="2023-03-05T19:38:17.298Z" agent="5.0 (X11)" etag="oCyCbZFZh5oQalXICPcC" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">7Zpbc5s4FIB/jR/NcBPYj7HjNNvtTjPtzra7Lx4ZBFYCiEryrb++khCYq5NJ7aaeWfAM6EhIQuecT0fCI2ee7t9RmK//IiFKRrYZ7kfO7ci2Ldt3xUVKDoXEA5NCEFMc6kJHwWf8HWmhqaUbHCLWKMgJSTjOm8KAZBkKeEMGKSW7ZrGIJM1WcxijjuBzAJOu9AsO+bqQTmz/KL9HOF6XLVvetMhJYVlYvwlbw5DsaiJnMXLmlBBe3KX7OUrk4JXjUjx3N5BbdYyijL/kgRl7OCzGDh3/8+W/b05m0TTdjj2gO8cP5RujUAyAThLK1yQmGUwWR+mMkk0WIlmtKVLHMh8IyYXQEsJHxPlBaxNuOBGiNU8TnSt6TA9f5fOGOXVLwb+6QpW43TdSh3rqAVGcIo6oFkYk43OSEKpewDHVIeSMQ8pvpBGIjCCBjOGgFN/hpOxNdyD12DKyoYEele+fwLfFPVtCch9R92v08eZPNLZKi4Q0RvzEMOtycmhrLWg9vUNEvA09iAIUJZDjbdP2oDbhuCp31LK40YruV/rJbm9hstFNsR3mwXpsWh1zqKltiyjHwjU+wBVKHgjDHJNM5HGp9ir3JsGxlK4I5ySVBrLhCc7QvPJQpZvSG2QihGxd2ZPIyWXb6T6WSDEoDJ6MdY6WkG5W0Ch6ipjxOJ0ADy5t4JhL242XNovyPNmwZVFC1JS0+hkIBUujmUHdxUowaALypdD+pM50rqO5pjnnaq/fHaFhuXYhW9eBAX5eyadMrqbjU6qNhDvUXGiuDuUrlDyhWo43mVgzR+QI5YQYHR0vIxmqiW8xFcouxj2TiKgqKzFq9+g6Q3xH6BMzVhv2ujZaLIjUIeR5jRkrYVErUVWNI7NSppllmxexCsvrmoUPesyinDTObhZe1wx+LfCFBV0F8PudCvzuwD/Z7QYMvIRL9OKtuI3l7Q5HWM0ARY5oqZbZsZqc4IyrjoKZ+ImZ3BnZc6lfeRkBUWau5NZECZpCUJR1W+KJ3VN26vdVbCmh53cKF1Xra6tJqyUz7YHSrcrF77npjz0hNesoA+2ZNDvTImR5MR1GeC99qzsrqSFGdLFFxUhbPcQMMAuINTV2goUJYmKmDwJ5Uc92we7eyrMDdg3WIb8anEjPQEh7aj43cQKzC0hwKUC63ltHxADUAWkZpu9cFSTt64Sk3YVkGPRFxA1PH/DRgdi2pvF+B2x6KzDlecoBh5hUUaaNnwJWvSF5hz9t1pAowgEyGKKiVmaEJIU4W4qVt3iVJFGPDBndGUABPAM0SNGHChf0oOJSIbbrvzEqrEkjlrKuCxPedWLC62AiYv9jYhgTorNoWSQuCwjr9YTwLmQsvtkxi19LiCvZXesdPMe5SkCU3a4BIo16A4mhkR1cMpxegbx8u6tmK70u/vLdIHVcfDcoIDk+13rDt55db/g96w3/YhsykzdGhOdfMSM8/9y+rx99UOvnympc4BoT159Wh9cwompfr6yxYJaupGUhVa9+wmj8bhAiXGwHk6QPNK/buWhRwJ7IcygkGWRWX+TzbAihdjWWDEYyjAg2FPPDEouFhowmitd8o90K13mWHu7U6AkxnDMsQv52wR+r9+9tsj+ku+mnj5w+OmPrbTZ095gX+AA6VbFD3B/RIRMNcuiwBDijxh7Hq5Yu56RL79j+9iuUU72usSGnygd7Vyna83CqPoSf2rlsfuYbXEoo95vB4ClWVtb3MUY1dlPuf6pFRXszVPfnds25/NJ/I4fEvgvCzDUkCCIs7JeKwCCV29SQQ3FRgBDXYv0x5sJWRApIB7nzhZ9MjDyLzxFBtBhgOxfbshTJ4x8Eisnj+DcLZ/ED</diagram></mxfile> \ No newline at end of file diff --git a/samples/it_v2/doc/network/subnets/01_lan.01.svg b/samples/it_v2/doc/network/subnets/01_lan.01.svg new file mode 100644 index 0000000..a424788 --- /dev/null +++ b/samples/it_v2/doc/network/subnets/01_lan.01.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Do not edit this file with editors other than diagrams.net --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="754px" height="294px" viewBox="-0.5 -0.5 754 294" content="<mxfile host="app.diagrams.net" modified="2023-03-05T19:38:25.829Z" agent="5.0 (X11)" etag="8jscD-zKR9GG5IqyHH0f" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">7Zpbc5s4FIB/jR/NcBPYj7HjNNvtTjPtzra7Lx4ZBFYCiEryrb++khCYq5NJ7aaeWfAM6EhIQuecT0fCI2ee7t9RmK//IiFKRrYZ7kfO7ci2Ldt3xUVKDoXEA5NCEFMc6kJHwWf8HWmhqaUbHCLWKMgJSTjOm8KAZBkKeEMGKSW7ZrGIJM1WcxijjuBzAJOu9AsO+bqQTmz/KL9HOF6XLVvetMhJYVlYvwlbw5DsaiJnMXLmlBBe3KX7OUrk4JXjUjx3N5BbdYyijL/kgRl7OCzGDh3/8+W/b05m0TTdjj2gO8cP5RujUAyAThLK1yQmGUwWR+mMkk0WIlmtKVLHMh8IyYXQEsJHxPlBaxNuOBGiNU8TnSt6TA9f5fOGOXVLwb+6QpW43TdSh3rqAVGcIo6oFkYk43OSEKpewDHVIeSMQ8pvpBGIjCCBjOGgFN/hpOxNdyD12DKyoYEele+fwLfFPVtCch9R92v08eZPNLZKi4Q0RvzEMOtycmhrLWg9vUNEvA09iAIUJZDjbdP2oDbhuCp31LK40YruV/rJbm9hstFNsR3mwXpsWh1zqKltiyjHwjU+wBVKHgjDHJNM5HGp9ir3JsGxlK4I5ySVBrLhCc7QvPJQpZvSG2QihGxd2ZPIyWXb6T6WSDEoDJ6MdY6WkG5W0Ch6ipjxOJ0ADy5t4JhL242XNovyPNmwZVFC1JS0+hkIBUujmUHdxUowaALypdD+pM50rqO5pjnnaq/fHaFhuXYhW9eBAX5eyadMrqbjU6qNhDvUXGiuDuUrlDyhWo43mVgzR+QI5YQYHR0vIxmqiW8xFcouxj2TiKgqKzFq9+g6Q3xH6BMzVhv2ujZaLIjUIeR5jRkrYVErUVWNI7NSppllmxexCsvrmoUPesyinDTObhZe1wx+LfCFBV0F8PudCvzuwD/Z7QYMvIRL9OKtuI3l7Q5HWM0ARY5oqZbZsZqc4IyrjoKZ+ImZ3BnZc6lfeRkBUWau5NZECZpCUJR1W+KJ3VN26vdVbCmh53cKF1Xra6tJqyUz7YHSrcrF77npjz0hNesoA+2ZNDvTImR5MR1GeC99qzsrqSFGdLFFxUhbPcQMMAuINTV2goUJYmKmDwJ5Uc92we7eyrMDdg3WIb8anEjPQEh7aj43cQKzC0hwKUC63ltHxADUAWkZpu9cFSTt64Sk3YVkGPRFxA1PH/DRgdi2pvF+B2x6KzDlecoBh5hUUaaNnwJWvSF5hz9t1pAowgEyGKKiVmaEJIU4W4qVt3iVJFGPDBndGUABPAM0SNGHChf0oOJSIbbrvzEqrEkjlrKuCxPedWLC62AiYv9jYhgTorNoWSQuCwjr9YTwLmQsvtkxi19LiCvZXesdPMe5SkCU3a4BIo16A4mhkR1cMpxegbx8u6tmK70u/vLdIHVcfDcoIDk+13rDt55db/g96w3/YhsykzdGhOdfMSM8/9y+rx99UOvnympc4BoT159Wh9cwompfr6yxYJaupGUhVa9+wmj8bhAiXGwHk6QPNK/buWhRwJ7IcygkGWRWX+TzbAihdjWWDEYyjAg2FPPDEouFhowmitd8o90K13mWHu7U6AkxnDMsQv52wR+r9+9tsj+ku+mnj5w+OmPrbTZ095gX+AA6VbFD3B/RIRMNcuiwBDijxh7Hq5Yu56RL79j+9iuUU72usSGnygd7Vyna83CqPoSf2rlsfuYbXEoo95vB4ClWVtb3MUY1dlPuf6pFRXszVPfnds25/NJ/I4fEvgvCzDUkCCIs7JeKwCCV29SQQ3FRgBDXYv0x5sJWRApIB7nzhZ9MjDyLzxFBtBhgOxfbshTJ4x8Eisnj+DcLZ/ED</diagram></mxfile>"><defs/><g><path d="M 72 38.37 L 72 84.5 L 71.73 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 72 33.12 L 75.5 40.12 L 72 38.37 L 68.5 40.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 71.69 135.88 L 68.24 128.86 L 71.73 130.63 L 75.24 128.9 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="1" y="17" width="142" height="15" fill="#404040" stroke="#050505" stroke-width="0.17" pointer-events="all"/><path d="M 3.39 26.38 L 3.39 28.89 L 4.25 28.89 L 4.25 29.68 L 6.36 29.68 L 6.36 28.89 L 7.16 28.89 L 7.16 26.38 L 3.39 26.38 Z" fill="#1a1a1a" stroke="#313131" stroke-width="0.17" stroke-miterlimit="10" pointer-events="all"/><rect x="1" y="17" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 71.97 20.23 L 100.07 20.23 L 100.07 29.16 L 71.97 29.16 L 71.97 20.23 Z M 100.48 20.23 L 128.58 20.23 L 128.58 29.16 L 100.48 29.16 L 100.48 20.23 Z" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 75.99 28.75 L 76.84 28.75 L 76.84 28.26 L 75.99 28.26 L 75.99 28.75 Z M 72.65 28.75 L 73.51 28.75 L 73.51 28.25 L 72.65 28.25 L 72.65 28.75 Z M 80.5 28.75 L 81.35 28.75 L 81.35 28.26 L 80.5 28.26 L 80.5 28.75 Z M 77.16 28.75 L 78.02 28.75 L 78.02 28.25 L 77.16 28.25 L 77.16 28.75 Z M 85.01 28.75 L 85.87 28.75 L 85.87 28.26 L 85.01 28.26 L 85.01 28.75 Z M 81.67 28.75 L 82.53 28.75 L 82.53 28.25 L 81.67 28.25 L 81.67 28.75 Z M 89.52 28.75 L 90.38 28.75 L 90.38 28.26 L 89.52 28.26 L 89.52 28.75 Z M 86.18 28.75 L 87.04 28.75 L 87.04 28.25 L 86.18 28.25 L 86.18 28.75 Z M 94.03 28.75 L 94.89 28.75 L 94.89 28.26 L 94.03 28.26 L 94.03 28.75 Z M 90.69 28.75 L 91.55 28.75 L 91.55 28.25 L 90.69 28.25 L 90.69 28.75 Z M 98.54 28.75 L 99.4 28.75 L 99.4 28.26 L 98.54 28.26 L 98.54 28.75 Z M 95.21 28.75 L 96.06 28.75 L 96.06 28.25 L 95.21 28.25 L 95.21 28.75 Z M 104.5 28.75 L 105.36 28.75 L 105.36 28.26 L 104.5 28.26 L 104.5 28.75 Z M 101.17 28.75 L 102.02 28.75 L 102.02 28.25 L 101.17 28.25 L 101.17 28.75 Z M 109.01 28.75 L 109.87 28.75 L 109.87 28.26 L 109.01 28.26 L 109.01 28.75 Z M 105.68 28.75 L 106.54 28.75 L 106.54 28.25 L 105.68 28.25 L 105.68 28.75 Z M 113.52 28.75 L 114.38 28.75 L 114.38 28.26 L 113.52 28.26 L 113.52 28.75 Z M 110.19 28.75 L 111.05 28.75 L 111.05 28.25 L 110.19 28.25 L 110.19 28.75 Z M 118.04 28.75 L 118.89 28.75 L 118.89 28.26 L 118.04 28.26 L 118.04 28.75 Z M 114.7 28.75 L 115.56 28.75 L 115.56 28.25 L 114.7 28.25 L 114.7 28.75 Z M 122.55 28.75 L 123.4 28.75 L 123.4 28.26 L 122.55 28.26 L 122.55 28.75 Z M 119.21 28.75 L 120.07 28.75 L 120.07 28.25 L 119.21 28.25 L 119.21 28.75 Z M 127.06 28.75 L 127.91 28.75 L 127.91 28.26 L 127.06 28.26 L 127.06 28.75 Z M 123.72 28.75 L 124.58 28.75 L 124.58 28.25 L 123.72 28.25 L 123.72 28.75 Z" fill="#96ad92" stroke="#646664" stroke-width="0.1" stroke-miterlimit="10" pointer-events="all"/><rect x="1" y="17" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 73.78 28.77 L 73.78 27.83 L 72.88 27.83 L 72.88 25.5 L 76.66 25.5 L 76.66 27.83 L 75.77 27.83 L 75.77 28.77 L 73.78 28.77 Z M 78.29 28.77 L 78.29 27.83 L 77.39 27.83 L 77.39 25.5 L 81.17 25.5 L 81.17 27.83 L 80.28 27.83 L 80.28 28.77 L 78.29 28.77 Z M 82.8 28.77 L 82.8 27.83 L 81.9 27.83 L 81.9 25.5 L 85.68 25.5 L 85.68 27.83 L 84.79 27.83 L 84.79 28.77 L 82.8 28.77 Z M 87.31 28.77 L 87.31 27.83 L 86.41 27.83 L 86.41 25.5 L 90.2 25.5 L 90.2 27.83 L 89.3 27.83 L 89.3 28.77 L 87.31 28.77 Z M 91.82 28.77 L 91.82 27.83 L 90.92 27.83 L 90.92 25.5 L 94.71 25.5 L 94.71 27.83 L 93.81 27.83 L 93.81 28.77 L 91.82 28.77 Z M 96.34 20.54 L 96.34 21.47 L 95.44 21.47 L 95.44 23.81 L 99.22 23.81 L 99.22 21.47 L 98.33 21.47 L 98.33 20.54 L 96.34 20.54 Z M 91.84 20.54 L 91.84 21.47 L 90.95 21.47 L 90.95 23.81 L 94.73 23.81 L 94.73 21.47 L 93.84 21.47 L 93.84 20.54 L 91.84 20.54 Z M 87.35 20.54 L 87.35 21.47 L 86.46 21.47 L 86.46 23.81 L 90.24 23.81 L 90.24 21.47 L 89.35 21.47 L 89.35 20.54 L 87.35 20.54 Z M 82.86 20.54 L 82.86 21.47 L 81.96 21.47 L 81.96 23.81 L 85.75 23.81 L 85.75 21.47 L 84.85 21.47 L 84.85 20.54 L 82.86 20.54 Z M 78.37 20.54 L 78.37 21.47 L 77.47 21.47 L 77.47 23.81 L 81.25 23.81 L 81.25 21.47 L 80.36 21.47 L 80.36 20.54 L 78.37 20.54 Z M 73.87 20.54 L 73.87 21.47 L 72.98 21.47 L 72.98 23.81 L 76.76 23.81 L 76.76 21.47 L 75.87 21.47 L 75.87 20.54 L 73.87 20.54 Z M 96.33 28.77 L 96.33 27.83 L 95.43 27.83 L 95.43 25.5 L 99.22 25.5 L 99.22 27.83 L 98.32 27.83 L 98.32 28.77 L 96.33 28.77 Z M 102.29 28.77 L 102.29 27.83 L 101.4 27.83 L 101.4 25.5 L 105.18 25.5 L 105.18 27.83 L 104.29 27.83 L 104.29 28.77 L 102.29 28.77 Z M 106.8 28.77 L 106.8 27.83 L 105.91 27.83 L 105.91 25.5 L 109.69 25.5 L 109.69 27.83 L 108.8 27.83 L 108.8 28.77 L 106.8 28.77 Z M 111.31 28.77 L 111.31 27.83 L 110.42 27.83 L 110.42 25.5 L 114.2 25.5 L 114.2 27.83 L 113.31 27.83 L 113.31 28.77 L 111.31 28.77 Z M 115.82 28.77 L 115.82 27.83 L 114.93 27.83 L 114.93 25.5 L 118.71 25.5 L 118.71 27.83 L 117.82 27.83 L 117.82 28.77 L 115.82 28.77 Z M 120.33 28.77 L 120.33 27.83 L 119.44 27.83 L 119.44 25.5 L 123.22 25.5 L 123.22 27.83 L 122.33 27.83 L 122.33 28.77 L 120.33 28.77 Z M 124.85 20.54 L 124.85 21.47 L 123.96 21.47 L 123.96 23.81 L 127.74 23.81 L 127.74 21.47 L 126.85 21.47 L 126.85 20.54 L 124.85 20.54 Z M 120.36 20.54 L 120.36 21.47 L 119.47 21.47 L 119.47 23.81 L 123.25 23.81 L 123.25 21.47 L 122.35 21.47 L 122.35 20.54 L 120.36 20.54 Z M 115.87 20.54 L 115.87 21.47 L 114.97 21.47 L 114.97 23.81 L 118.76 23.81 L 118.76 21.47 L 117.86 21.47 L 117.86 20.54 L 115.87 20.54 Z M 111.38 20.54 L 111.38 21.47 L 110.48 21.47 L 110.48 23.81 L 114.26 23.81 L 114.26 21.47 L 113.37 21.47 L 113.37 20.54 L 111.38 20.54 Z M 106.88 20.54 L 106.88 21.47 L 105.99 21.47 L 105.99 23.81 L 109.77 23.81 L 109.77 21.47 L 108.88 21.47 L 108.88 20.54 L 106.88 20.54 Z M 102.39 20.54 L 102.39 21.47 L 101.5 21.47 L 101.5 23.81 L 105.28 23.81 L 105.28 21.47 L 104.38 21.47 L 104.38 20.54 L 102.39 20.54 Z M 124.85 28.77 L 124.85 27.83 L 123.95 27.83 L 123.95 25.5 L 127.73 25.5 L 127.73 27.83 L 126.84 27.83 L 126.84 28.77 L 124.85 28.77 Z" fill="#333" stroke="none" pointer-events="all"/><rect x="1.56" y="17.28" width="5.81" height="3.23" fill="#333" stroke="#282828" stroke-width="0.13" pointer-events="all"/><rect x="8.43" y="17.64" width="5.81" height="3.5" fill="#4d4d4d" stroke="#808080" stroke-width="0.1" pointer-events="all"/><path d="M 4.33 22.76 L 7.28 22.76 L 7.28 23.51 L 4.33 23.51 L 4.33 22.76 Z M 4.33 21.53 L 7.28 21.53 L 7.28 22.27 L 4.33 22.27 L 4.33 21.53 Z" fill="#cde1cb" stroke="#2a2a2a" stroke-width="0.13" stroke-miterlimit="10" pointer-events="all"/><rect x="15.47" y="28.25" width="2.32" height="0.72" fill="none" stroke="#808080" stroke-width="0.13" pointer-events="all"/><rect x="1" y="17" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="136.3" y="20.41" width="4.84" height="8.51" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 136.52 25.7 L 140.92 25.7 L 140.92 28.63 L 136.52 28.63 L 136.52 25.7 Z M 136.52 20.7 L 140.92 20.7 L 140.92 23.62 L 136.52 23.62 L 136.52 20.7 Z" fill="#262626" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 72px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">switch-01</div></div></div></foreignObject><text x="72" y="14" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">switch-01</text></switch></g><path d="M 9 157 C 5.65 154.78 3.63 151.02 3.63 147 C 3.63 142.98 5.65 139.22 9 137 L 745 137 C 748.35 139.22 750.37 142.98 750.37 147 C 750.37 151.02 748.35 154.78 745 157 Z" fill="#cccccc" stroke="#6881b3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 745 137 C 748.35 139.22 750.37 142.98 750.37 147 C 750.37 151.02 748.35 154.78 745 157 C 741.65 154.78 739.63 151.02 739.63 147 C 739.63 142.98 741.65 139.22 745 137" fill="#ffffff" stroke="#6881b3" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 278 73.37 L 278 102 L 277.78 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 278 68.12 L 281.5 75.12 L 278 73.37 L 274.5 75.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 277.74 135.88 L 274.3 128.86 L 277.78 130.63 L 281.3 128.91 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="253" y="17" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><path d="M 260.78 17 L 260.78 20.25 L 261.24 20.25 L 261.24 25.01 L 261.11 25.01 C 260.43 25.01 259.87 25.58 259.87 26.28 L 259.87 34.01 L 257.22 34.01 C 254.89 34.01 253 35.95 253 38.34 L 253 62.67 C 253 65.06 254.89 67 257.22 67 L 298.78 67 C 301.11 67 303 65.06 303 62.67 L 303 38.34 C 303 35.95 301.11 34.01 298.78 34.01 L 295.92 34.01 L 295.92 26.28 C 295.92 25.58 295.37 25.01 294.68 25.01 L 294.55 25.01 L 294.55 20.25 L 295.01 20.25 L 295.01 17 L 292.69 17 L 292.69 20.25 L 293.15 20.25 L 293.15 25.01 L 293.02 25.01 C 292.33 25.01 291.78 25.58 291.78 26.28 L 291.78 34.01 L 264.01 34.01 L 264.01 26.28 C 264.01 25.58 263.46 25.01 262.78 25.01 L 262.64 25.01 L 262.64 20.25 L 263.11 20.25 L 263.11 17 Z M 257.22 35.32 L 298.78 35.32 C 300.42 35.32 301.72 36.66 301.72 38.34 L 301.72 62.67 C 301.72 64.36 300.42 65.69 298.78 65.69 L 257.22 65.69 C 255.58 65.69 254.28 64.36 254.28 62.67 L 254.28 38.34 C 254.28 36.66 255.58 35.32 257.22 35.32 Z M 265 50.98 C 264.08 50.98 263.35 51.53 262.84 52.14 C 262.58 52.44 262.36 52.78 262.17 53.11 C 262.04 52.88 261.89 52.66 261.73 52.46 C 261.27 51.88 260.65 51.4 259.85 51.4 C 259.04 51.4 258.32 51.91 257.78 52.51 C 257.27 53.09 256.9 53.75 256.87 54.41 L 256.46 54.41 C 256.46 55.28 256.89 56.02 257.48 56.67 C 258.07 57.33 258.86 57.92 259.85 57.92 C 260.81 57.92 261.55 57.33 262.05 56.7 C 262.28 56.41 262.48 56.1 262.65 55.79 C 262.8 56.03 262.97 56.27 263.15 56.49 C 263.62 57.04 264.23 57.5 265 57.5 C 265.78 57.5 266.38 57.01 266.83 56.45 C 267.03 56.2 267.21 55.93 267.37 55.66 C 267.6 56 267.85 56.36 268.13 56.69 C 268.64 57.29 269.23 57.92 270.15 57.92 C 270.97 57.92 271.59 57.42 272.1 56.85 C 272.4 56.51 272.67 56.12 272.93 55.71 C 273.12 56.03 273.32 56.33 273.55 56.6 C 273.99 57.12 274.57 57.5 275.3 57.5 C 276.06 57.5 276.65 57.02 277.1 56.47 C 277.3 56.22 277.48 55.94 277.65 55.66 C 277.85 56 278.07 56.35 278.32 56.69 C 278.8 57.3 279.51 57.92 280.45 57.92 C 281.37 57.92 282.08 57.35 282.56 56.75 C 282.82 56.42 283.04 56.06 283.24 55.7 C 283.41 55.99 283.59 56.27 283.79 56.53 C 284.22 57.07 284.82 57.5 285.6 57.5 C 286.39 57.5 286.99 57.05 287.42 56.51 C 287.62 56.25 287.8 55.97 287.96 55.69 C 288.17 56.04 288.39 56.4 288.65 56.73 C 289.12 57.34 289.83 57.92 290.75 57.92 C 291.67 57.92 292.39 57.36 292.88 56.74 C 293.14 56.42 293.35 56.08 293.55 55.74 C 293.68 55.98 293.83 56.22 293.99 56.45 C 294.41 57.02 295.03 57.5 295.9 57.5 C 296.82 57.5 297.56 56.93 298.07 56.29 C 298.57 55.66 298.89 54.99 298.89 54.41 L 299.3 54.41 C 299.3 52.65 297.89 50.98 295.9 50.98 C 294.9 50.98 294.1 51.51 293.64 52.13 C 293.39 52.47 293.2 52.83 293.02 53.17 C 292.88 52.93 292.73 52.7 292.56 52.48 C 292.12 51.91 291.53 51.4 290.75 51.4 C 289.99 51.4 289.4 51.87 288.97 52.43 C 288.78 52.67 288.61 52.94 288.44 53.21 C 288.24 52.85 288.01 52.47 287.74 52.12 C 287.27 51.53 286.53 50.98 285.6 50.98 C 284.68 50.98 283.95 51.51 283.47 52.11 C 283.2 52.45 282.97 52.83 282.76 53.2 C 282.6 52.92 282.43 52.66 282.24 52.41 C 281.8 51.86 281.22 51.4 280.45 51.4 C 279.67 51.4 279.09 51.9 278.65 52.47 C 278.46 52.71 278.29 52.97 278.14 53.23 C 277.93 52.88 277.69 52.5 277.41 52.16 C 276.93 51.56 276.23 50.98 275.3 50.98 C 274.45 50.98 273.72 51.45 273.24 52.02 C 272.93 52.38 272.68 52.78 272.45 53.2 C 272.24 52.88 272.02 52.59 271.8 52.33 C 271.33 51.8 270.79 51.4 270.15 51.4 C 269.46 51.4 268.92 51.91 268.44 52.48 C 268.24 52.72 268.04 52.99 267.86 53.25 C 267.66 52.9 267.43 52.53 267.15 52.18 C 266.66 51.58 265.94 50.98 265 50.98 Z M 259.85 52.24 C 260.33 52.24 260.72 52.52 261.09 52.99 C 261.32 53.28 261.53 53.63 261.72 53.98 C 261.71 54 261.7 54.02 261.69 54.04 C 261.42 54.61 261.11 55.22 260.77 55.64 C 260.44 56.06 260.17 56.24 259.85 56.24 C 259.57 56.24 259.07 55.97 258.69 55.54 C 258.31 55.11 258.1 54.51 258.1 54.41 L 257.69 54.41 C 257.73 54.09 257.99 53.52 258.39 53.07 C 258.82 52.59 259.39 52.24 259.85 52.24 Z M 270.15 52.24 C 270.43 52.24 270.79 52.45 271.19 52.9 C 271.46 53.2 271.73 53.59 271.99 54.03 C 271.63 54.71 271.24 55.32 270.89 55.72 C 270.53 56.12 270.25 56.24 270.15 56.24 C 270.16 56.24 269.76 56.05 269.37 55.59 C 269 55.15 268.62 54.55 268.33 54.05 C 268.55 53.7 268.8 53.34 269.06 53.03 C 269.48 52.53 269.93 52.24 270.15 52.24 Z M 280.45 52.24 C 280.91 52.24 281.24 52.48 281.6 52.94 C 281.83 53.24 282.06 53.62 282.29 54.03 C 281.92 54.68 281.59 55.3 281.28 55.69 C 280.96 56.1 280.76 56.24 280.45 56.24 C 280.18 56.24 279.95 56.08 279.61 55.64 C 279.29 55.23 278.97 54.63 278.62 54.04 C 278.84 53.66 279.06 53.29 279.29 52.99 C 279.66 52.51 280.01 52.24 280.45 52.24 Z M 290.75 52.24 C 291.19 52.24 291.54 52.52 291.91 53 C 292.14 53.3 292.36 53.67 292.59 54.05 C 292.25 54.67 291.93 55.28 291.61 55.68 C 291.29 56.09 291.05 56.24 290.75 56.24 C 290.46 56.24 290.25 56.1 289.93 55.68 C 289.62 55.28 289.29 54.67 288.92 54.04 C 289.15 53.64 289.37 53.25 289.61 52.96 C 289.97 52.49 290.3 52.24 290.75 52.24 Z M 265 52.66 C 265.28 52.66 265.54 52.83 265.88 53.25 C 266.22 53.67 266.55 54.28 266.87 54.84 C 266.88 54.85 266.88 54.86 266.89 54.86 C 266.67 55.23 266.44 55.61 266.2 55.91 C 265.82 56.38 265.44 56.66 265 56.66 C 264.55 56.66 264.15 56.39 263.77 55.94 C 263.53 55.64 263.3 55.28 263.1 54.91 C 263.12 54.87 263.14 54.82 263.16 54.78 C 263.43 54.23 263.75 53.64 264.08 53.23 C 264.42 52.83 264.71 52.66 265 52.66 Z M 275.3 52.66 C 275.58 52.66 275.81 52.81 276.15 53.23 C 276.48 53.64 276.81 54.25 277.18 54.85 C 276.94 55.25 276.71 55.63 276.46 55.94 C 276.09 56.4 275.74 56.66 275.3 56.66 C 274.83 56.66 274.51 56.46 274.16 56.05 C 273.91 55.75 273.67 55.35 273.41 54.88 C 273.42 54.86 273.43 54.84 273.44 54.82 C 273.83 54.09 274.17 53.49 274.47 53.13 C 274.78 52.77 274.96 52.66 275.3 52.66 Z M 285.6 52.66 C 285.97 52.66 286.16 52.79 286.46 53.18 C 286.77 53.57 287.09 54.19 287.48 54.85 C 287.48 54.85 287.48 54.86 287.49 54.86 C 287.24 55.28 287.02 55.68 286.78 55.98 C 286.43 56.42 286.11 56.66 285.6 56.66 C 285.09 56.66 284.77 56.43 284.42 55.99 C 284.19 55.69 283.96 55.3 283.72 54.87 C 283.72 54.86 283.73 54.85 283.73 54.84 C 284.12 54.17 284.44 53.55 284.74 53.17 C 285.04 52.79 285.22 52.66 285.6 52.66 Z M 295.9 52.66 C 297 52.66 297.66 53.57 297.66 54.41 L 298.07 54.41 C 298.07 54.58 297.84 55.25 297.43 55.76 C 297.02 56.27 296.48 56.66 295.9 56.66 C 295.29 56.66 294.98 56.4 294.65 55.95 C 294.43 55.65 294.24 55.26 294.02 54.86 C 294.03 54.85 294.04 54.83 294.05 54.81 C 294.41 54.13 294.67 53.52 294.94 53.16 C 295.21 52.8 295.36 52.66 295.9 52.66 Z" fill="#4d4d4d" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 278px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><div>wifi-01</div></div></div></div></foreignObject><text x="278" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">wifi-01</text></switch></g><path d="M 42 210.63 L 42 187 L 42.28 164.83" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 42 215.88 L 38.5 208.88 L 42 210.63 L 45.5 208.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 42.35 159.58 L 45.76 166.62 L 42.28 164.83 L 38.76 166.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="19.5" y="217" width="45" height="55" fill="none" stroke="none" pointer-events="all"/><path d="M 41.05 225.92 L 41.05 223.69 L 24.7 223.69 L 24.7 225.92 Z M 19.5 269.03 L 19.5 219.84 C 19.5 218.26 20.97 217 22.38 217 L 43.36 217 C 45.05 217 46.25 218.58 46.25 219.86 L 46.25 245.49 L 41.53 254.16 L 24.7 254.16 L 24.7 256.39 L 40.33 256.39 L 37.91 260.85 L 24.7 260.85 L 24.7 263.08 L 36.7 263.08 L 33.47 269.03 Z M 36.41 272 C 35.38 272 34.74 271.32 35.26 270.26 L 48.5 245.94 C 48.99 245.09 49.93 244.83 50.62 245.96 L 63.88 270.19 C 64.5 271.3 63.78 272 62.78 272 Z" fill="#505050" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 279px; margin-left: 42px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">dc-01</div></div></div></foreignObject><text x="42" y="291" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">dc-01</text></switch></g><path d="M 142 210.63 L 142 187 L 142.3 163.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 142 215.88 L 138.5 208.88 L 142 210.63 L 145.5 208.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 142.36 158.12 L 145.77 165.16 L 142.3 163.37 L 138.77 165.07 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="119.5" y="217" width="45" height="56" fill="none" stroke="none" pointer-events="all"/><path d="M 141.25 225.96 L 141.25 223.72 L 124.75 223.72 L 124.75 225.96 Z M 150.78 249.85 L 153.6 247.25 C 154.31 246.65 154.86 246.12 155.45 246.12 L 162.67 246.12 C 164.01 246.12 164.5 247.4 164.5 248.03 L 164.5 249.85 Z M 135.25 273 L 135.25 253.22 C 135.25 252.29 135.97 251.35 137.05 251.35 L 164.5 251.35 L 164.5 273 Z M 119.5 269.27 L 119.5 219.93 C 119.5 218.39 120.85 217 122.46 217 L 143.53 217 C 145.14 217 146.5 218.39 146.5 219.9 L 146.5 249.18 L 136.96 249.18 C 134.87 249.18 133 250.96 133 253.16 L 133 254.33 L 124.75 254.33 L 124.75 256.57 L 133 256.57 L 133 261.05 L 124.75 261.05 L 124.75 263.29 L 133 263.29 L 133 269.27 Z" fill="#505050" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 142px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">fs-01</div></div></div></foreignObject><text x="142" y="292" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fs-01</text></switch></g><path d="M 708 93.37 L 708 112 L 707.91 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 708 88.12 L 711.5 95.12 L 708 93.37 L 704.5 95.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 707.89 135.88 L 704.42 128.87 L 707.91 130.63 L 711.42 128.9 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 687 82.8 C 685.45 82.8 684.2 81.55 684.2 80 L 684.2 49.55 L 673 42.2 L 673 40.1 L 684.2 46.4 L 684.2 38 L 676.5 33.1 L 676.5 31 L 684.2 35.2 L 684.2 29.6 L 696.1 29.6 L 698.9 31.35 L 704.5 31.35 L 704.5 21.2 L 718.5 17 L 718.5 24.7 L 731.8 19.8 L 731.8 18.4 L 740.9 18.4 L 740.9 20.5 L 743 22.6 L 743 80 C 743 80.74 742.71 81.45 742.18 81.98 C 741.65 82.51 740.94 82.8 740.2 82.8 Z" fill="#cccccc" stroke="#666666" stroke-width="1.4" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="737.4" cy="84.9" rx="2.0999999999999996" ry="2.0999999999999996" fill="#cccccc" stroke="#666666" stroke-width="1.4" pointer-events="all"/><ellipse cx="688.4" cy="84.9" rx="2.0999999999999996" ry="2.0999999999999996" fill="#cccccc" stroke="#666666" stroke-width="1.4" pointer-events="all"/><path d="M 704.5 82.8 L 704.5 31.35 M 704.5 34.5 L 698.9 31.35 M 704.5 34.5 L 730.4 34.5 M 704.5 54.8 L 743 54.8 M 704.5 61.8 L 743 61.8 M 717.1 54.8 L 717.1 61.8 M 704.5 68.8 L 743 68.8 M 704.5 75.8 L 743 75.8 M 730.4 37.3 L 730.4 28.9 L 743 28.9 M 704.5 37.3 L 743 37.3 M 684.2 34.5 L 684.2 52" fill="none" stroke="#666666" stroke-width="1.4" stroke-miterlimit="10" pointer-events="all"/><rect x="710.1" y="27.5" width="16.8" height="4.9" fill="none" stroke="#666666" stroke-width="1.4" pointer-events="all"/><rect x="719.2" y="77.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="719.2" y="70.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="719.2" y="63.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="719.2" y="56.9" width="7" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="711.5" y="28.9" width="8.4" height="2.1" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 708px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">mfc-01</div></div></div></foreignObject><text x="708" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">mfc-01</text></switch></g><path d="M 417.8 58.37 L 417.8 94.5 L 417.84 130.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 417.8 53.12 L 421.3 60.12 L 417.8 58.37 L 414.3 60.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 417.85 135.88 L 414.34 128.89 L 417.84 130.63 L 421.34 128.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="393" y="17" width="49.5" height="35" fill="none" stroke="none" pointer-events="all"/><path d="M 393 17 L 393 23.66 L 407.71 23.66 L 407.71 17 Z M 410.34 17 L 410.34 23.66 L 425.16 23.66 L 425.16 17 Z M 427.79 17 L 427.79 23.66 L 442.5 23.66 L 442.5 17 Z M 393 26.53 L 393 33.07 L 398.99 33.07 L 398.99 26.53 Z M 401.61 26.53 L 401.61 33.07 L 416.43 33.07 L 416.43 26.53 Z M 419.06 26.53 L 419.06 33.07 L 433.88 33.07 L 433.88 26.53 Z M 436.51 26.53 L 436.51 33.07 L 442.5 33.07 L 442.5 26.53 Z M 393 35.93 L 393 42.47 L 407.71 42.47 L 407.71 35.93 Z M 410.34 35.93 L 410.34 42.47 L 425.16 42.47 L 425.16 35.93 Z M 427.79 35.93 L 427.79 42.47 L 442.5 42.47 L 442.5 35.93 Z M 393 45.34 L 393 52 L 398.99 52 L 398.99 45.34 Z M 401.61 45.34 L 401.61 52 L 416.43 52 L 416.43 45.34 Z M 419.06 45.34 L 419.06 52 L 433.88 52 L 433.88 45.34 Z M 436.51 45.34 L 436.51 52 L 442.5 52 L 442.5 45.34 Z" fill="#282828" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 14px; margin-left: 418px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">firewall-01</div></div></div></foreignObject><text x="418" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">firewall...</text></switch></g><path d="M 718 200.63 L 718 182 L 717.75 165.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 718 205.88 L 714.5 198.88 L 718 200.63 L 721.5 198.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 717.67 160.12 L 721.28 167.06 L 717.75 165.37 L 714.28 167.17 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><image x="692.5" y="206.5" width="50" height="50" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAHvElEQVR4Xu1dZ8gdRRRNNBYssWAviCEq1gixxBafBSsqihVUEEFF4y9FRf0niooiIiJRUFBBxMT2Q2N/9oY/LKhYUOxdEUvEes7HbNg89307b78t8+49A4e3b9/dnbn3nr1T3s7M9GlKri0w3bX2Un6aCOCcBCKACODcAs7VVwQQAZxbwLn6igAigHMLOFdfEUAEcG4B5+orAogAyVhgDZRkV2DFZErUTEH+xm1fBX5p5vaj3TWlCPAEir7/aMUfW+knUfIDUih9SgT4HAbZJAWjtFCGL5DHpi3kU5pFigS4D6W+vLTk4ylwCYp9NCACFPgviwA347czx9O/paVeCIkzRIBiO4kApfypXyDFKkARoH4/D72jCNCisZGVqoBJ7K0qoF0yTuSmCNCu0RUBFAHUCxjGAVUB7UYjVQEd2FtVgKoAVQGqAjQUXMgBtQE6qJPUDWzX6GoDqA2gNoDaAGoDqA0ACyT5QsghKNicdqvFZbldjKOZwCvAvR2Voelsj0EGuwE/A1c0ndmQ+7+O80uy3/KNwO1w8q3E/h/oyEams/0X2u0AvE0t8wTo4ftTplWXcpkF9sNBfzICHIkfn5O9TFlgb2jzYNColADLBEyZwLcy+QgvAjjkQi0EmAHDnQDsDHwGLAI4hDuY5uLEYcAqACd8FLUt1sL5k4CtATZI7gJ+deSYc6DrTiPouxJk/xxB/iPIXg38E66ZMgHYRXsc4PStLP2EA77n3s+dOx/HVwL5KV434fvZOZltcfwIsHnu3Ic4PhD4eAQlx1V0RxT8jRYKfzDyeLQuAtyAGy0IN+O8Ns7lY/oU2Ar4A+AYwmvB+WQr58GtGuTYB+akD6YXgD0K7sX+6aEtGKbrLPZEAZ4PhfgSn7+XFGgj/L5asHFRxM1fvjK+bBZOHIvPxeG4h88sEldqA/AJnQXwyT0cOA24Jdx8d3xyAOdCgE8/Hc9xhe+Bd4D1gVuB04F1ge8AdkEZongNI8RZAEnDSLM03NfqR54A+ad0mL5svR8B8OHapcQo+ehSKwE+QcYM2XyK+TQfD9wdCsMuBhl9KXAZ8BewBcAq4n2Ac/7uAE4FNgC+DtdRntPArgIuAEgctg2stwXGkgB8gvnUM7GBwbFshhs+zXT2b8A8gOGdTzedz2phw3DNKfi8MxxzOJINII5KfQCwCmF6Fpgfji1/5AnA6rSsccfqlo1APiAcRp4sse3FKMpUawRgGOdTnjmLGTBUnwg8kCtR9jTnC8mxfRaGDmdiGGPjZJ2c0Dc4Zt00MURpPHEo9s0WdDwIeTwW8unhc0ptAN5ndYCTG9nNY+PvdoB1/GBivcY6K+sGsqrInJ/JslrgvWYD7wJ8WeLbFoySShZsD/GPodjEqDpow8mupU2vB2rrBsYWVHJpWqCHYk05AqSpmkoVYwERIMZKhmVEAMPOjVFNBIixkmEZEcCwc2NUEwFirGRYRgQw7NwY1USAGCsZlhEBDDs3RjURIMZKhmVEAMPOjVFNBIixkmEZEcCwc2NUEwFirGRYRgQw7NwY1USAGCsZlhEBDDs3RjURIMZKhmVEAMPOjVFNBIixkmEZEcCwc2NUEwFirGRYRgQw7NwY1USAGCsZlhEBDDs3RrVOCcAp45wKZX1f4BhHxMhwUi1nS3NGdV2pUwL8CC3WrksTJ/epe3/hTgnAKc1rAlwW5SUnDqyqJifVbgz0Ac6WrislQYBroQ3XEFIabgFO4KSzRACnLBEBnDo+U9sdAbjszDZOnf4M9H5oQHdXBMivleORA1xMi4tmsZfkMgKsB62fBriknLfE5V648CbXReTiTy4J4M3pMfq6qgJiDOJNRgTw5nHPjUDnvi5U31UE4Np3XCtwS6dM4LD4/Z4jwF5Q3vPWNGz9cwXW5LqBHLN/r8ankitWctn4wf8CuHI4lzL1GgG49O5RQLaaJ02eVQFc6fO6Gn3AjTnOC/crXC5+X/zYrzHDolvpz6ByA2cEKJesLtHDpRx/WW7bOI5Icd9AhqSmkghQbtmmCcD1mLlYNRfnXo4A/M5dKbg7Rd2Jy8NzyXMRoNyyGQFehOjJ5eIjS3yFK7i0/0Rqa/v47IUQEaDcX011Awtz7poAzP9cYPtyu5iT4H8B3FHtngHNXBGAW81wlxCvia1//iHWRjcwyQjAHUMeBthF8Zj4tB8HFHUD+zhf5zuBSRLAo9PLdHZVBZQZw+PvIoBHr+d0FgFEgEZeC0+yDbACSsXxae4c5jGxB5TtpZjp7yoC7AOt+Was18SxAHYDf/BaBXCbWG46md9F3BMZXoayHO5VN9CT10t0dVUFyO//t4AI4JwVIoAI4KsbeBEczu3nLSS+5HnbFBVxFQHmw1gTryYZSUXdulFVc0WAmbDOYmDWqFZKVJ4DO5ztPMo274OquCJAon7stFgiQKfm7z5zEaB7H3RaAtMEWATTLuzUvOlnfg2KOAfoA+beCErf/OmU0BQB+I77vHRsOxYluRGlXNB0Sdt6LZyLRM4FZjStkJH7L4UeHFTiGkKNprYI0KgSunl1C4gA1W1n4koRwIQbqyshAlS3nYkrRQATbqyuhAhQ3XYmrhQBTLixuhIiQHXbmbhSBDDhxupKiADVbWfiShHAhBurKyECVLediSv/A478eJ94LE19AAAAAElFTkSuQmCC" preserveAspectRatio="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 264px; margin-left: 718px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">printer-01</div></div></div></foreignObject><text x="718" y="276" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">printer-...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/samples/it_v2/doc/network/subnets/01_lan.yaml b/samples/it_v2/doc/network/subnets/01_lan.yaml new file mode 100644 index 0000000..0b17640 --- /dev/null +++ b/samples/it_v2/doc/network/subnets/01_lan.yaml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=../../../schemas/subnet.json +name: LAN +subnet: 10.10.10.0/24 +gw: 10.10.10.1 +dns: + - 10.10.10.1 +dhcp: + server: '10.10.10.1' + ranges: + - from: '10.10.10.50' + to: '10.10.10.169' diff --git a/samples/it_v2/doc/network/subnets/02_guest.01.drawio b/samples/it_v2/doc/network/subnets/02_guest.01.drawio new file mode 100644 index 0000000..eb3b9bd --- /dev/null +++ b/samples/it_v2/doc/network/subnets/02_guest.01.drawio @@ -0,0 +1 @@ +<mxfile host="app.diagrams.net" modified="2023-03-05T19:35:23.361Z" agent="5.0 (X11)" etag="2wwb6xFnzrKgUXp9-2X4" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">5VfJbtswEP0aHy1oteNjYqdNNzRoCjQ3gZFGEhtKVEnacvL1JS1Su7MgblGgNmBTb4bUcN7jjDTz1vn+PUNl9oXGQGauHe9n3mbmuo679OWfQh5qZBGc1UDKcKydWuAGP4IGbY1ucQy85ygoJQKXfTCiRQGR6GGIMVr13RJK+nctUarvaLfATYQIjNx+4FhkNXrmLlv8CnCamTs7i1VtyZFx1gvzDMW06kDe5cxbM0pFPcr3ayAqeSYv9bx3R6xNYAwK8ZIJj9+CX5dXPET0KmH+bfL1/BPMHb3MDpGt3jGvsIiyua0tXDyYXGQiJ3LkzLyLHTCBZZY+ozsg15RjgWkhbYKWHes5walC76gQNJcGuhUEF7BuyLIl2CRGXcSIZxC3llLdO9+nSl0WQ9G9lZUQIra9Q1YdKXDr5+osWKDQDTw7dP00dHlSlmTLw9pDrkQGcUYyacCkAekQG2CcVpMiuSnYdyCd5vdAcxDsQbpo68LXlBvN+1ZQA1UrIcd3ayzrykf7Ia3atFm7JVYONLev4NnotcPzTYU5jyQtQ5onSerxcoz9huehAGpZjHLdEdSQalRxz8LKrwARymRfJJiQNSWUHaL0Nu7G23gSl/4xlisaW0ELOA2PAxrNZZdE2x6TuPD/EImeNyJxRB7EsnzpS8pERlNaIHLZoheMbou4obL1+UwVSQcyfoIQD7oWo62gfaoS2iZbEmEfPopCgZg4VzVXcUwQ5zgy8DtMzPSjxHC6ZRG8QMRywRTEU4nSK6pkPEk0A4IE3vVr/RRveuo1lZLsCMTpK2Tp9leod6QnDchvoniDHvyRHnYEFRIxcf0nwjB8PysM5+TCeNuBHnffBDOoECFT/fdYfqer7bNF+uU9scPxZHMYlOb14XNgmNF76Fj8jfoeL9oG3sgsRDqsQimxWcw8hLkTPUN2ioqye25JJZ+smfurQTN3Rl1gOdEEXPftmoEoWUcfv2zmwSdIl/Z6Ht5+n7v/1pk/5dme3O9fKuVLe9Uv5Str8CxWF5dTFPOn9tnhtcIJnioDpQrhEFRwMQvUaUK8rA9jgveKzC5Bo8N8/HEb54eXIfO/wXkqt0LwnfyVJQlDHAogwDGXQCWPqByr4XkUyUF4SE34oYgpZRbfpSd6mF7Z1rJHjeOOH8S8hbUYH8LAN+grjqG8bF/KanbbV1vv8jc=</diagram></mxfile> \ No newline at end of file diff --git a/samples/it_v2/doc/network/subnets/02_guest.01.svg b/samples/it_v2/doc/network/subnets/02_guest.01.svg new file mode 100644 index 0000000..87ac2fd --- /dev/null +++ b/samples/it_v2/doc/network/subnets/02_guest.01.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Do not edit this file with editors other than diagrams.net --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="743px" height="157px" viewBox="-0.5 -0.5 743 157" content="<mxfile host="app.diagrams.net" modified="2023-03-05T19:36:29.034Z" agent="5.0 (X11)" etag="oqK-zXrrRnKW6i3NbcGS" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">5Vddj5s4FP01eQwCA0nzOJNMO9222mqn0vYNecCAOwazthOS/vpeB5vvTKea7GqlJlJin3tt7HuO7zULf1sc3wlc5Z94QtgCuclx4e8WCIXIg18NnBogQGEDZIImDeR1wAP9TgzoGnRPEyIHjopzpmg1BGNeliRWAwwLweuhW8rZ8KkVzswT3Q54iDEjE7e/aaLyBn2D1h1+T2iW2yd7q01jKbB1NhPLHCe87kH+3cLfCs5V0yqOW8J07GxcmnFvL1jbhQlSqpcM+P5X+M/dvYwwv09F8DX98+YDWXpmmgNme7NjWVMV50vXWKQ62VjkqmDQ8hb+7YEIRSFKH/EjYZ+5pIryEmyKVz3rDaOZRh+5UrwAA98rRkuybclyAWwDozsJljlJOkuln10cMy0uR+D4yckrEmGxf8ROs1IinW+bN+EKRyj03QgFWYRkWlVsL6PGA2Zio3XGEDQiwIDNEltgGlYbItgUOfYgE+Z3hBdEiRO4GOsqMJSfbN8xoq87CXkBarC8Lx/jh41qs3bujlhoGG5/gWer1x7PDzWVMgZaxjTPkjTg5RL7Lc9jATSymMS6J6gx1biWvkO1X0lUBMG+TSljW864OK/S36Gdv/MBB/+EwozWVvKSXIfHEY222yfRdackroJ/iUTfn5A4IY8kkL5MlwuV84yXmN116K3g+zJpqex8PnJN0pmMb0Spk8nFeK/4kKqUd8EGItzzR1OosFA3OudqjhmWksYWfkuZHX6RGMn3IiYvEDFMmBH1XKDMjDoYzxItCMOKHoa5fo43M/QzB0n2BOINFbJGwxmaHZlBI/LbVbxCD8FEDweGS0Dsun4TYVi+fyoM7+rCeN2BnlbflApSY8bm6u+l+M5n258m6ZfXxB7Hs8VhlJq358+ZYcGfSM8S7PT3ctK28A6iEJtllVqJ7WT2EoZmagZUipqLJ+mAkq9WzIPNqJh7kyqwnikCCL1eMyROt/Efn3bL8APJ1u52GX39skT/rzN/zbM9u9//KJWv3c0wlW+c0V2sSS7XSObP7bPHa01TOpcGKr2E86LC20WoTxOWVXMYU3rUZPYJmhzmy9dtWpxfhuz/jhYZbIXRR/iFlERJEinCiKQSgBqOKLR18yaOoRGdQxO9LxPOhSMP2ZUu0xvXWQ+o8dD0IuavnNX0EIaBRX/hGEK3eylr2O3ebP27Hw==</diagram></mxfile>"><defs/><g><rect x="600" y="24.5" width="142" height="15" fill="#404040" stroke="#050505" stroke-width="0.17" pointer-events="all"/><path d="M 602.39 33.88 L 602.39 36.39 L 603.25 36.39 L 603.25 37.18 L 605.36 37.18 L 605.36 36.39 L 606.16 36.39 L 606.16 33.88 L 602.39 33.88 Z" fill="#1a1a1a" stroke="#313131" stroke-width="0.17" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 670.97 27.73 L 699.07 27.73 L 699.07 36.66 L 670.97 36.66 L 670.97 27.73 Z M 699.48 27.73 L 727.58 27.73 L 727.58 36.66 L 699.48 36.66 L 699.48 27.73 Z" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 674.99 36.25 L 675.84 36.25 L 675.84 35.76 L 674.99 35.76 L 674.99 36.25 Z M 671.65 36.25 L 672.51 36.25 L 672.51 35.75 L 671.65 35.75 L 671.65 36.25 Z M 679.5 36.25 L 680.35 36.25 L 680.35 35.76 L 679.5 35.76 L 679.5 36.25 Z M 676.16 36.25 L 677.02 36.25 L 677.02 35.75 L 676.16 35.75 L 676.16 36.25 Z M 684.01 36.25 L 684.87 36.25 L 684.87 35.76 L 684.01 35.76 L 684.01 36.25 Z M 680.67 36.25 L 681.53 36.25 L 681.53 35.75 L 680.67 35.75 L 680.67 36.25 Z M 688.52 36.25 L 689.38 36.25 L 689.38 35.76 L 688.52 35.76 L 688.52 36.25 Z M 685.18 36.25 L 686.04 36.25 L 686.04 35.75 L 685.18 35.75 L 685.18 36.25 Z M 693.03 36.25 L 693.89 36.25 L 693.89 35.76 L 693.03 35.76 L 693.03 36.25 Z M 689.69 36.25 L 690.55 36.25 L 690.55 35.75 L 689.69 35.75 L 689.69 36.25 Z M 697.54 36.25 L 698.4 36.25 L 698.4 35.76 L 697.54 35.76 L 697.54 36.25 Z M 694.21 36.25 L 695.06 36.25 L 695.06 35.75 L 694.21 35.75 L 694.21 36.25 Z M 703.5 36.25 L 704.36 36.25 L 704.36 35.76 L 703.5 35.76 L 703.5 36.25 Z M 700.17 36.25 L 701.02 36.25 L 701.02 35.75 L 700.17 35.75 L 700.17 36.25 Z M 708.01 36.25 L 708.87 36.25 L 708.87 35.76 L 708.01 35.76 L 708.01 36.25 Z M 704.68 36.25 L 705.54 36.25 L 705.54 35.75 L 704.68 35.75 L 704.68 36.25 Z M 712.52 36.25 L 713.38 36.25 L 713.38 35.76 L 712.52 35.76 L 712.52 36.25 Z M 709.19 36.25 L 710.05 36.25 L 710.05 35.75 L 709.19 35.75 L 709.19 36.25 Z M 717.04 36.25 L 717.89 36.25 L 717.89 35.76 L 717.04 35.76 L 717.04 36.25 Z M 713.7 36.25 L 714.56 36.25 L 714.56 35.75 L 713.7 35.75 L 713.7 36.25 Z M 721.55 36.25 L 722.4 36.25 L 722.4 35.76 L 721.55 35.76 L 721.55 36.25 Z M 718.21 36.25 L 719.07 36.25 L 719.07 35.75 L 718.21 35.75 L 718.21 36.25 Z M 726.06 36.25 L 726.91 36.25 L 726.91 35.76 L 726.06 35.76 L 726.06 36.25 Z M 722.72 36.25 L 723.58 36.25 L 723.58 35.75 L 722.72 35.75 L 722.72 36.25 Z" fill="#96ad92" stroke="#646664" stroke-width="0.1" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 672.78 36.27 L 672.78 35.33 L 671.88 35.33 L 671.88 33 L 675.66 33 L 675.66 35.33 L 674.77 35.33 L 674.77 36.27 L 672.78 36.27 Z M 677.29 36.27 L 677.29 35.33 L 676.39 35.33 L 676.39 33 L 680.17 33 L 680.17 35.33 L 679.28 35.33 L 679.28 36.27 L 677.29 36.27 Z M 681.8 36.27 L 681.8 35.33 L 680.9 35.33 L 680.9 33 L 684.68 33 L 684.68 35.33 L 683.79 35.33 L 683.79 36.27 L 681.8 36.27 Z M 686.31 36.27 L 686.31 35.33 L 685.41 35.33 L 685.41 33 L 689.2 33 L 689.2 35.33 L 688.3 35.33 L 688.3 36.27 L 686.31 36.27 Z M 690.82 36.27 L 690.82 35.33 L 689.92 35.33 L 689.92 33 L 693.71 33 L 693.71 35.33 L 692.81 35.33 L 692.81 36.27 L 690.82 36.27 Z M 695.34 28.04 L 695.34 28.97 L 694.44 28.97 L 694.44 31.31 L 698.22 31.31 L 698.22 28.97 L 697.33 28.97 L 697.33 28.04 L 695.34 28.04 Z M 690.84 28.04 L 690.84 28.97 L 689.95 28.97 L 689.95 31.31 L 693.73 31.31 L 693.73 28.97 L 692.84 28.97 L 692.84 28.04 L 690.84 28.04 Z M 686.35 28.04 L 686.35 28.97 L 685.46 28.97 L 685.46 31.31 L 689.24 31.31 L 689.24 28.97 L 688.35 28.97 L 688.35 28.04 L 686.35 28.04 Z M 681.86 28.04 L 681.86 28.97 L 680.96 28.97 L 680.96 31.31 L 684.75 31.31 L 684.75 28.97 L 683.85 28.97 L 683.85 28.04 L 681.86 28.04 Z M 677.37 28.04 L 677.37 28.97 L 676.47 28.97 L 676.47 31.31 L 680.25 31.31 L 680.25 28.97 L 679.36 28.97 L 679.36 28.04 L 677.37 28.04 Z M 672.87 28.04 L 672.87 28.97 L 671.98 28.97 L 671.98 31.31 L 675.76 31.31 L 675.76 28.97 L 674.87 28.97 L 674.87 28.04 L 672.87 28.04 Z M 695.33 36.27 L 695.33 35.33 L 694.43 35.33 L 694.43 33 L 698.22 33 L 698.22 35.33 L 697.32 35.33 L 697.32 36.27 L 695.33 36.27 Z M 701.29 36.27 L 701.29 35.33 L 700.4 35.33 L 700.4 33 L 704.18 33 L 704.18 35.33 L 703.29 35.33 L 703.29 36.27 L 701.29 36.27 Z M 705.8 36.27 L 705.8 35.33 L 704.91 35.33 L 704.91 33 L 708.69 33 L 708.69 35.33 L 707.8 35.33 L 707.8 36.27 L 705.8 36.27 Z M 710.31 36.27 L 710.31 35.33 L 709.42 35.33 L 709.42 33 L 713.2 33 L 713.2 35.33 L 712.31 35.33 L 712.31 36.27 L 710.31 36.27 Z M 714.82 36.27 L 714.82 35.33 L 713.93 35.33 L 713.93 33 L 717.71 33 L 717.71 35.33 L 716.82 35.33 L 716.82 36.27 L 714.82 36.27 Z M 719.33 36.27 L 719.33 35.33 L 718.44 35.33 L 718.44 33 L 722.22 33 L 722.22 35.33 L 721.33 35.33 L 721.33 36.27 L 719.33 36.27 Z M 723.85 28.04 L 723.85 28.97 L 722.96 28.97 L 722.96 31.31 L 726.74 31.31 L 726.74 28.97 L 725.85 28.97 L 725.85 28.04 L 723.85 28.04 Z M 719.36 28.04 L 719.36 28.97 L 718.47 28.97 L 718.47 31.31 L 722.25 31.31 L 722.25 28.97 L 721.35 28.97 L 721.35 28.04 L 719.36 28.04 Z M 714.87 28.04 L 714.87 28.97 L 713.97 28.97 L 713.97 31.31 L 717.76 31.31 L 717.76 28.97 L 716.86 28.97 L 716.86 28.04 L 714.87 28.04 Z M 710.38 28.04 L 710.38 28.97 L 709.48 28.97 L 709.48 31.31 L 713.26 31.31 L 713.26 28.97 L 712.37 28.97 L 712.37 28.04 L 710.38 28.04 Z M 705.88 28.04 L 705.88 28.97 L 704.99 28.97 L 704.99 31.31 L 708.77 31.31 L 708.77 28.97 L 707.88 28.97 L 707.88 28.04 L 705.88 28.04 Z M 701.39 28.04 L 701.39 28.97 L 700.5 28.97 L 700.5 31.31 L 704.28 31.31 L 704.28 28.97 L 703.38 28.97 L 703.38 28.04 L 701.39 28.04 Z M 723.85 36.27 L 723.85 35.33 L 722.95 35.33 L 722.95 33 L 726.73 33 L 726.73 35.33 L 725.84 35.33 L 725.84 36.27 L 723.85 36.27 Z" fill="#333" stroke="none" pointer-events="all"/><rect x="600.56" y="24.78" width="5.81" height="3.23" fill="#333" stroke="#282828" stroke-width="0.13" pointer-events="all"/><rect x="607.43" y="25.14" width="5.81" height="3.5" fill="#4d4d4d" stroke="#808080" stroke-width="0.1" pointer-events="all"/><path d="M 603.33 30.26 L 606.28 30.26 L 606.28 31.01 L 603.33 31.01 L 603.33 30.26 Z M 603.33 29.03 L 606.28 29.03 L 606.28 29.77 L 603.33 29.77 L 603.33 29.03 Z" fill="#cde1cb" stroke="#2a2a2a" stroke-width="0.13" stroke-miterlimit="10" pointer-events="all"/><rect x="614.47" y="35.75" width="2.32" height="0.72" fill="none" stroke="#808080" stroke-width="0.13" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="735.3" y="27.91" width="4.84" height="8.51" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 735.52 33.2 L 739.92 33.2 L 739.92 36.13 L 735.52 36.13 L 735.52 33.2 Z M 735.52 28.2 L 739.92 28.2 L 739.92 31.12 L 735.52 31.12 L 735.52 28.2 Z" fill="#262626" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 22px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">switch-01</div></div></div></foreignObject><text x="671" y="22" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">switch-01</text></switch></g><path d="M 100 43.5 L 100 47.97 C 100 56.28 90.37 64 80.14 64 L 20.19 64 C 10.2 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 36.51 4.86 29.04 12.94 26.5 C 12.73 19.67 15.49 13.59 20.62 8.55 C 27.41 1.98 38.12 0 47.09 3.05 C 53.97 5.44 59.19 10.28 61.79 15.92 C 66.36 13.03 72.13 12.93 76.92 16.26 C 79.47 18.05 81.84 21.11 82.07 25.64 C 86.72 26.03 91.56 28.16 95.46 32.61 C 98.3 35.77 99.94 39.88 100 43.5 Z" fill="#d2d3d3" stroke="none" pointer-events="all"/><path d="M 100 43.5 L 100 47.97 C 100 56.3 90.37 64 80.14 64 L 20.19 64 C 10.16 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 53.27 9.89 60.59 20.07 60.59 L 79.89 60.59 C 91.13 60.59 100 52.7 100 43.5 Z" fill-opacity="0.3" fill="#000000" stroke="none" pointer-events="all"/><rect x="0" y="0" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 47.88 44.46 L 39.39 44.46 L 39.39 55.49 L 28.02 55.49 L 28.02 44.46 L 19.54 44.46 L 33.71 21.07 Z M 62.05 55.4 L 47.88 32 L 56.36 32 L 56.36 20.97 L 67.73 20.97 L 67.73 32 L 76.22 32 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 71px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Swisscom</div></div></div></foreignObject><text x="50" y="83" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Swisscom</text></switch></g><path d="M 106.37 32 L 443.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 101.12 32 L 108.12 28.5 L 106.37 32 L 108.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 448.88 32 L 441.88 35.5 L 443.63 32 L 441.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 526.37 32 L 593.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 521.12 32 L 528.12 28.5 L 526.37 32 L 528.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 598.88 32 L 591.88 35.5 L 593.63 32 L 591.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 32px; margin-left: 560px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">vlan 10</div></div></div></foreignObject><text x="560" y="35" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">vlan 10</text></switch></g><rect x="450" y="21" width="70" height="18.97" rx="3.79" ry="3.79" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><rect x="457" y="39.97" width="56" height="3.03" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><path d="M 452.1 26.31 L 456.3 26.31 L 456.3 28.59 L 454.9 28.59 L 454.9 29.34 L 453.5 29.34 L 453.5 28.59 L 452.1 28.59 Z M 458.05 26.31 L 462.25 26.31 L 462.25 28.59 L 460.85 28.59 L 460.85 29.34 L 459.45 29.34 L 459.45 28.59 L 458.05 28.59 Z M 464 26.31 L 468.2 26.31 L 468.2 28.59 L 466.8 28.59 L 466.8 29.34 L 465.4 29.34 L 465.4 28.59 L 464 28.59 Z M 469.95 26.31 L 474.15 26.31 L 474.15 28.59 L 472.75 28.59 L 472.75 29.34 L 471.35 29.34 L 471.35 28.59 L 469.95 28.59 Z M 475.9 26.31 L 480.1 26.31 L 480.1 28.59 L 478.7 28.59 L 478.7 29.34 L 477.3 29.34 L 477.3 28.59 L 475.9 28.59 Z M 481.85 26.31 L 486.05 26.31 L 486.05 28.59 L 484.65 28.59 L 484.65 29.34 L 483.25 29.34 L 483.25 28.59 L 481.85 28.59 Z M 487.8 26.31 L 492 26.31 L 492 28.59 L 490.6 28.59 L 490.6 29.34 L 489.2 29.34 L 489.2 28.59 L 487.8 28.59 Z M 493.75 26.31 L 497.95 26.31 L 497.95 28.59 L 496.55 28.59 L 496.55 29.34 L 495.15 29.34 L 495.15 28.59 L 493.75 28.59 Z" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="511.6" cy="30.48" rx="5.6" ry="6.068965517241379" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="24.79" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="36.17" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="30.48" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="495.85" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="489.9" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="483.95" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="478" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="472.05" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="466.1" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="460.15" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="454.2" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 511.6 26.31 L 511.6 34.66 M 507.05 30.48 L 509.85 30.48 M 513.35 30.48 L 516.15 30.48 M 510.2 27.83 L 511.6 26.31 L 513 27.83 M 510.2 33.14 L 511.6 34.66 L 513 33.14 M 508.45 28.97 L 509.85 30.48 L 508.45 32 M 514.75 28.97 L 513.35 30.48 L 514.75 32" fill="none" stroke="#4d4d4d" stroke-width="0.7" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 50px; margin-left: 485px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">firewall-01</div></div></div></foreignObject><text x="485" y="62" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">firewall-01</text></switch></g><path d="M 669 73.63 L 669 45.87" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 669 78.88 L 665.5 71.88 L 669 73.63 L 672.5 71.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 669 40.62 L 672.5 47.62 L 669 45.87 L 665.5 47.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 60px; margin-left: 669px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">vlan 10</div></div></div></foreignObject><text x="669" y="63" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">vlan 10</text></switch></g><image x="650.2" y="79.5" width="36.6" height="54.6" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MS4xMTUgOTEuNDAxIj48cGF0aCBkPSJNNi45NTggNjcuODE1QzMuODIgNjYuMzc3LjE4IDYxLjQ0NC4yMDUgNTcuNTQzTC4xOCA5LjYwN0MuMyA3LjY0NS42OCA2LjUgMi4yNDggNS4zMTRzNy44MDYtNC4yNjYgOC44NS00LjY4OGMxLjEtLjQ0NSAyLjQ2NC0xLjE3NiA1Ljk5NS45MTdsMzguNTIgMjMuMjYyYzQuNTYgMi42MDUgNS4xNzYgNi4yOSA1LjMxIDguOTY2cy4wMzIgNDUuNjgtLjIyIDQ4LjdjLS4xMTYgMS4zODgtLjUxNyAyLjYzOC0yLjIzNSAzLjc1Mi0xLjk1NiAxLjI3LTUuMjggMi43Ny03LjQxMyAzLjkwNy0zLjk1OCAyLjEwNC01LjMyNi43MzMtNS45MTQuNDVDNDIuMTQgODkuMTIgNi45NTggNjcuODE1IDYuOTU4IDY3LjgxNSIgZmlsbD0iIzY0NjU2NyIvPjxnIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik02Ljk1OCA2Ny44MTVDMy44MiA2Ni4zNzcuMTggNjEuNDQ0LjIwNSA1Ny41NDNMLjE4IDkuNjA3Qy4zIDcuNjQ1LjY4IDYuNSAyLjI0OCA1LjMxNHM3LjgwNi00LjI2NiA4Ljg1LTQuNjg4YzEuMS0uNDQ1IDIuNDY0LTEuMTc2IDUuOTk1LjkxN2wzOC41MiAyMy4yNjJjNC41NiAyLjYwNSA1LjE3NiA2LjI5IDUuMzEgOC45NjZzLjAzMiA0NS42OC0uMjIgNDguN2MtLjExNiAxLjM4OC0uNTE3IDIuNjM4LTIuMjM1IDMuNzUyLTEuOTU2IDEuMjctNS4yOCAyLjc3LTcuNDEzIDMuOTA3LTMuOTU4IDIuMTA0LTUuMzI2LjczMy01LjkxNC40NUM0Mi4xNCA4OS4xMiA2Ljk1OCA2Ny44MTUgNi45NTggNjcuODE1eiIgc3Ryb2tlPSIjNjQ2NTY3IiBzdHJva2Utd2lkdGg9Ii4yNjIiLz48ZyBzdHJva2U9IiM2MTYzNjUiIHN0cm9rZS13aWR0aD0iMy4xMzkiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0yLjc3IDYuODM1bDkuNDE0LTQuOTM4Yy44MzMtLjM5MyAyLjAxNy0uMTM0IDMuNDg3LjU5M0w2LjU1NyA3LjQ2M2MtLjgtLjMxOC0yLjcwNy0xLjItMy43ODYtLjYyOHptNTUuMDAzIDc3Ljg5MmMtMTIuNyA2Ljc0NyAzLjQ1My0yLjA3My05LjI1NiA0LjY3NC44ODMtLjQ3IDEuNDM1LTEuNTYgMS40MzMtMy4xNGw5LjI1OC00LjY3M2MwIDEuNTgtLjU1MiAyLjY2OC0xLjQzNSAzLjEzOHoiLz48cGF0aCBkPSJNNi4yOTYgNy40NjNsOS40MzctNC44ODIgMzguOTE1IDIzLjg0Ny05LjI4NiA0LjV6bTQzLjYyIDMxLjY5NGw5LjM1My01LjQyNy0uMDEzIDQ3LjQzLTkuMzA3IDUuMXoiLz48cGF0aCBkPSJNNDUuMzYyIDMwLjkzN2w5LjkzMy00LjQxNmMyLjUxMyAxLjUgMy45NyA0LjE4IDMuOTc0IDcuMjFsLTkuMzUyIDUuNDI3Yy0uMDAyLTMuMDMtMi4wNC02LjctNC41NTUtOC4yMnoiLz48cGF0aCBkPSJNNDUuMzYyIDMwLjkzN2MyLjUxNiAxLjUgNC41NTMgNS4xOSA0LjU1NSA4LjIybC4wMzMgNDcuMTA1Yy4wMDQgMy4wMy0yLjAzIDQuMjYyLTQuNTQ3IDIuNzUyTDYuMzM3IDY1LjU0Yy0yLjUyLTEuNTE1LTQuNTYtNS4xOTQtNC41Ni04LjIyNUwxLjc0MyAxMC4yMUMxLjc0IDcuMTggMy43NzYgNS45NSA2LjI5NiA3LjQ2M2wzOS4wNjYgMjMuNDc0eiIvPjwvZz48L2c+PHBhdGggZD0iTTIuOTY0IDYuNjcyYzEuNi0uODcgMS4xMzctLjg5NyA5LjAyMy00LjcuODMtLjQgMi4yMTUtLjIgMy40MjQuNTI3TDYuMzQ2IDcuMDM2Yy0xLjIwOC0uNzI3LTIuNTY4LS43OTUtMy4zODItLjM2NCIgZmlsbD0iIzhkOGY5MiIvPjxwYXRoIGQ9Ik01OC4wMDcgODQuMTI0bC05LjQ0IDQuODVjLjgzNy0uNTQzIDEuNDM0LTEuNTYgMS40MzItMy4xNGw5LjI1OC01LjA2N2MwIDEuNTc4LS4zNjcgMi44ODctMS4yNSAzLjM1NyIgZmlsbD0iIzU4NTg1YiIvPjxwYXRoIGQ9Ik02LjM0NSA3LjAzNmw4LjkyNS00LjY0IDM4LjkxNSAyMy40NzhMNDUuNDEgMzAuNXoiIGZpbGw9IiM2ZTcwNzIiLz48cGF0aCBkPSJNNTAuMDcyIDM4LjU3Nmw5LjE5Ny00Ljg0Ny4wMDQgNDcuOTQ1LTkuMTMgNC4xOTd6IiBmaWxsPSIjNmM2ZTcwIi8+PHBhdGggZD0iTTQ1LjQxMiAzMC41MWw4Ljc3My00LjYzNmMyLjUxNCAxLjUgNS4wOCA0LjgyNiA1LjA4NCA3Ljg1NmwtOS4zMDMgNWMtLjAwMi0zLjAzLTIuMDQtNi43LTQuNTU0LTguMjIiIGZpbGw9IiM4ZDhmOTIiLz48cGF0aCBkPSJNNDUuNDEyIDMwLjUxYzIuNTE1IDEuNSA0LjU1MiA1LjE5IDQuNTU0IDguMjJMNTAgODUuODM0Yy4wMDQgMy4wMy0yLjAzIDQuMjYyLTQuNTQ3IDIuNzUzTDYuMzg2IDY1LjExM2MtMi41Mi0xLjUxNC00LjU2LTUuMTk0LTQuNTYtOC4yMjVMMS43OTMgOS43ODNDMS43OSA2Ljc1MiAzLjgyNiA1LjUyIDYuMzQ2IDcuMDM1TDQ1LjQxMiAzMC41MXoiIGZpbGw9IiNiMWIzYjUiLz48cGF0aCBkPSJNNDkuOTQgODUuOTRsLS4wMzQtNDcuMTA0Yy0uMDEtMi43OTUtMS44ODQtNi4xODMtNC4yLTcuNTgyTDYuNjQgNy43OGMtMi4zMi0xLjM4Ni00LjE5LS4yNDgtNC4xOTMgMi41MzdsLjAzMyA0Ny4xMDVjLjAwOCAyLjc5NCAxLjg4IDYuMTggNC4yIDcuNTczTDQ1Ljc1IDg4LjQ2OGMyLjMxMiAxLjQgNC4xODYuMjU2IDQuMTkyLTIuNTN6TTQ1LjcwOCAzMC4zOWMyLjcxMyAxLjYzIDQuOTEyIDUuNiA0LjkxNiA4Ljg3M2wuMDMzIDQ3LjEwN2MuMDAyIDMuMjYyLTIuMTk1IDQuNi00LjkwOCAyLjk2OEw2LjY4MiA2NS44NjZjLTIuNzE0LTEuNjQtNC45MTQtNS42LTQuOTE2LTguODczTDEuNzMzIDkuODg3Yy0uMDAyLTMuMjcgMi4xOTQtNC42IDQuOTA4LTIuOTdMNDUuNzA4IDMwLjM5eiIgZmlsbD0iI2U3ZThlOSIvPjxwYXRoIGQ9Ik00NS43MTggMzEuM2MyLjMxNSAxLjQgNC4xOSA0Ljc4NyA0LjIgNy41OGwuMDM1IDQ3LjEwNWMtLjAwNSAyLjc4NS0xLjg4IDMuOTItNC4xOTMgMi41M0w2LjY5MyA2NS4wNTJDNC4zNyA2My42NTggMi41IDYwLjI3MiAyLjQ5IDU3LjQ4TDIuNDYgMTAuMzc0Yy4wMDQtMi43ODYgMS44Ny0zLjkyNCA0LjE5My0yLjUzOEw0NS43MTggMzEuM3oiIGZpbGw9IiNmZWZlZmUiLz48cGF0aCBkPSJNMTQuMjUzIDU3LjIzN2MwIC44NjUtLjU3NiAxLjIzMi0xLjI4Ni44MnMtMS4yODctMS40NTItMS4yODctMi4zMTguNTc2LTEuMjMyIDEuMjg3LS44MTcgMS4yODYgMS40NSAxLjI4NiAyLjMxNm00LjQzMiAyLjU4YzAgLjg2Ni0uNTc2IDEuMjMtMS4yODcuODE4cy0xLjI4Ni0xLjQ1LTEuMjg2LTIuMzE3LjU3NS0xLjIzMiAxLjI4Ni0uODE4IDEuMjg3IDEuNDUgMS4yODcgMi4zMTdtNC40MyAyLjU4YzAgLjg2NC0uNTc1IDEuMjMyLTEuMjg2Ljgycy0xLjI4Ny0xLjQ1Mi0xLjI4Ny0yLjMxOC41NzYtMS4yMzIgMS4yODctLjgxNyAxLjI4NiAxLjQ1IDEuMjg2IDIuMzE2bTQuNDM0IDIuNThjMCAuODY2LS41NzYgMS4yMy0xLjI4Ny44MThzLTEuMjg2LTEuNDUtMS4yODYtMi4zMTcuNTc1LTEuMjMyIDEuMjg2LS44MiAxLjI4NyAxLjQ1MiAxLjI4NyAyLjMxOG00LjQzIDIuNThjMCAuODY0LS41NzcgMS4yMzItMS4yODcuODJzLTEuMjg3LTEuNDUtMS4yODctMi4zMTguNTc3LTEuMjMyIDEuMjg3LS44MTcgMS4yODcgMS40NSAxLjI4NyAyLjMxNiIgZmlsbD0iIzU4NTg1YiIvPjxnIGZpbGw9IiM2YzZlNzAiPjxwYXRoIGQ9Ik0xMS44NjggMjUuNWwxLjA0NCA0Ljg3OC0xLjUwNi0uODctLjIwNi0xLjEyLS45OTguNDI2LTIuNjM2LTEuNTIzem0uMjcyLjE1bC40MTcgMS45ODguMzcuMjE1LS4yNjIuMjczLjUxMyAyLjQxMiAxLjU0NC0xLjY1LjMwOC4xOCAxLjA2OC0xLjEzMnoiLz48cGF0aCBkPSJNMTMuNzggMzAuODhsMS43MjYtMS44NmMtLjA4Ni41NTguMTA4IDEuMjM3LjQ4IDEuODc1LjM3OC42NDguODg4IDEuMTM0IDEuMzE3IDEuMWwtLjU1LjYwOC0yLjk3NC0xLjcxNHptMi40MjgtMi41NDdsMS4zMzIuNzY4Yy0uMTg2LS4yOTgtLjQxOC0uNTQ1LS42NjctLjY4OHMtLjQ3OC0uMTYzLS42NjUtLjA4Ii8+PHBhdGggZD0iTTE2Ljg4MyAzMS41MDRjLjI2LjE1LjUuMTY1LjcuMDdsLTEuMzgtLjc5OGMuMi4zMTcuNDMuNTguNy43M20tLjkzOC0xLjIzOGwxLjg3MiAxLjA4YTEgMSAwIDAgMCAuMTE3LS4yNjJsLTIuMS0xLjIxOGEzIDMgMCAwIDAgLjEyMS4zOTltLS4xOTgtLjk1N2wuMDA2LjE1OCAyLjIzMiAxLjI4Ny4wMDUtLjE1di0uMTgzbC0yLjIyNy0xLjI4NC0uMDA3LjE3M20uMDctLjUwM2wyLjEgMS4yYy0uMDM0LS4xMzYtLjA3Ny0uMjcyLS4xMjgtLjQwM2wtMS44NDYtMS4wNjhjLS4wNS4wNzMtLjA5NC4xNjItLjEyNS4yNiIvPjwvZz48ZyBmaWxsPSIjNTg1ODViIj48cGF0aCBkPSJNMjAuMDMgMzIuNzk4bC0uMzI4LS4xOS0uMTMtLjA3NC41MzQtMS40OTcuMDEuMDA1LjU2NiAyLjEzMy0uNjUyLS4zNzZ6bTEuNTY3IDIuNDcyYTEuOTQgMS45NCAwIDAgMS0uMTA4LS4yOTdMMjAuMSAzMC4wNjdsLS4wMS0uMDA2LTEuMjk1IDMuNDY3Yy0uMDE4LjA0NC0uMDQzLjA3LS4wNzcuMDhsLjQ4NS4yOGMtLjAxMy0uMDMtLjAzNS0uMDczLS4wMzQtLjExNC0uMDAxLS4wMTguMDE1LS4wNjIuMDM4LS4xMjJsLjI3NC0uNzY2LjI0Mi4xNC4zMDcuMTc3Ljc4NS40NTQuMjggMS4wODUuMDQuMTY2Yy4wMDEuMDQyLS4wMi4wNTgtLjAzMy4wNzVsLjQ5My4yODZ6Ii8+PHBhdGggZD0iTTIxLjY0IDM1LjI5NGMuMDY3LS4wMDYuMDc4LS4xNDUuMDc3LS4zNzhsLS4wMTItMy41NThjLS4wMDEtLjExMy0uMDA2LS4yMTgtLjA3Mi0uM2wuMzcyLjIxNi4wMTQgNC4wMDZjLjAwMi4xMjUuMDMzLjIyNy4wOC4zbC0uNDYtLjI2NXptLjc0NC40M2MuMDctLjAwNy4wOC0uMTQ2LjA3Ny0uMzc4bC0uMDEzLTMuNTZjMC0uMTEzLS4wMDQtLjIyLS4wNy0uM2wuMzczLjIxNi4wMTQgNC4wMDdjMCAuMTI1LjAzMi4yMjYuMDc4LjNsLS40Ni0uMjY1em0uNzQ2LjQzYy4wNy0uMDA2LjA3OC0uMTQ1LjA3Ny0uMzhsLS4wMDgtMi4yMzJjMC0uMTE0LS4wMDUtLjIyLS4wNy0uM2wuMzczLjIxNC4wMSAyLjY4MmMuMDAxLjEyNi4wMy4yMjcuMDguM2wtLjQ2LS4yNjZ6bS40MTQtMy40MWMwIC4xNS0uMS4yMTctLjE5NC4xNTZzLS4xOTYtLjIzMi0uMTk4LS4zOC4xLS4yMTcuMTk1LS4xNTguMTk3LjIzMy4xOTcuMzgybTE0LjI5IDExLjg5NWMuMDY3LS4wMDguMDc2LS4xNDYuMDc1LS4zOGwtLjAwOC0yLjIzM2MtLjAwMS0uMTE0LS4wMDUtLjIxOC0uMDctLjNsLjM3My4yMTQuMDEgMi42ODNjLjAwMS4xMjQuMDMuMjI0LjA4LjI4N2wtLjQ1OC0uMjYzem0uNDEyLTMuNGMwIC4xNS0uMS4yMTUtLjE5NC4xNTdzLS4xOTctLjIzMi0uMTk3LS4zOC4xLS4yMTguMTk0LS4xNThhLjQ5LjQ5IDAgMCAxIC4xOTcuMzhtLTEwLjA1LTIuOTA2bC0uMzA0LS41LS4wMDUtMS4wNDRjLS4yMjUtLjQ0LS4zNzgtLjY5NS0uNzk4LS45NC0uNDg2LS4yOC0uODE4LjA2LS44MTYuNjk4LjAwMi42Mi40IDEuMzYzLjg1OCAxLjYyNy40LjIyNi42LjAxNC43Ni0uMDEzbC0uMDAxLS41MDQuMzA0LjQ4MmMuMDAxLjE0My4wMDEuMzUyLjA1LjQzNC0uMS0uMDI4LS4xNzMtLjAwNC0uMjUuMDIzLS4zMDguMDYtLjQ4My4yMDMtLjg2NC0uMDE4LS42Ni0uMzgtMS4xNjQtMS4zNjMtMS4xNjgtMi4yNTMtLjAwMy0uOS41NTMtMS4yMTIgMS4xODYtLjg0N2ExLjU0IDEuNTQgMCAwIDEgLjcyMy44NTJsLjAxNS0uMDAyLS4wMDQtMS40NTdhLjQ0LjQ0IDAgMCAwLS4wNzktLjI0MmwuMzguMjIuMDEzIDMuNDk2em0yLjM4IDEuOTJhLjU2LjU2IDAgMCAwIC4wNTQuMjM4bC0uNDM0LS4yNWMuMDI4LS4wMzUuMDUyLS4wOTUuMDUyLS4xNzhsLS4wMTMtMy42MzgtLjUtLjI4MmMtLjA5My0uMDUzLS4xNS0uMDYtLjIuMDA1bC0uMDAzLS41MjcgMS43Ljk4Ny4wMDEuNTI1YS4zOS4zOSAwIDAgMC0uMi0uMjM0bC0uNS0uMjgyLjAxMiAzLjYzN3oiLz48cGF0aCBkPSJNMzMuMjggNDIuMDI1Yy4wNy0uMDA2LjA3Ny0uMTQ2LjA3Ny0uMzc4bC0uMDEzLTMuNTZjMC0uMTEzLS4wMDYtLjIxNi0uMDctLjMwN2wuMzczLjIxNEwzMy42NiA0MmMwIC4xMjUuMDMyLjIyNi4wOC4zbC0uNDYtLjI2NXptNC4wNDQtLjA4Yy0uMTA0LS4xOC0uMjQzLS4zNDgtLjM4Ny0uNDMtLjE4Ni0uMTA4LS4zNDItLjEwOC0uMzQuMTguMDAzLjY3LjkzNS44NzIuOTQgMS45Ny4wMDEuNTItLjI5OC43MjgtLjY3LjUxNGExLjk4IDEuOTggMCAwIDEtLjM2NC0uMjcxYy0uMDg4LS4wNzMtLjE1LS4xNDQtLjE5Ny0uMTctLjAyNS0uMDE2LS4wNjQtLjAwMy0uMDgyLjAyMmwtLjAwMy0uMDAxdi0uNzE3Yy4xNC4yOTguMzQyLjU1Ni41NTUuNjc4LjIyNi4xMy40NS4xNy40NS0uMTg3LS4wMDEtLjgzNi0uOTMzLS45NzItLjkzNy0yLjAyLS4wMDEtLjQ4NC4yNjMtLjYzLjYtLjQyOC4xMi4wNjguMjYuMi4zMzQuMjUuMDMuMDE4LjA3NS4wMy4wOTYuMDA2bC4wMDEuNjA0em0yLjM5MiAxLjM4Yy0uMTA0LS4xOC0uMjQzLS4zNS0uMzg3LS40My0uMTg1LS4xMDctLjM0Mi0uMTA4LS4zNC4xNzguMDAyLjY3LjkzMy44NzIuOTM2IDEuOTcuMDAyLjUyLS4yOTYuNzI4LS42Ny41MTRhMi4wNCAyLjA0IDAgMCAxLS4zNjQtLjI3Yy0uMDg3LS4wNzQtLjE0OC0uMTQ2LS4xOTQtLjE3Mi0uMDI4LS4wMTctLjA2NS0uMDAxLS4wODQuMDIzbC0uMDAyLS4wMDItLjAwMy0uNzE2Yy4xNDMuMjk4LjM0My41NTUuNTU1LjY3OC4yMjYuMTMuNDUuMTcuNDUtLjE4OC0uMDAzLS44MzUtLjkzMy0uOTc0LS45MzctMi4wMi0uMDAyLS40ODMuMjYyLS42MjguNjA4LS40My4xMi4wNy4yNi4yLjMzNC4yNTIuMDMuMDE4LjA3NC4wMy4wOTYuMDA3bC4wMDEuNjA0em0tMTUuMy04Ljc3Yy0uMzQuMTk4LS40Mi42NzQtLjI2IDEuM2wxLjMzMy0uNzc0Yy0uMzQtLjUzLS43NDMtLjcxOC0xLjA3NC0uNTI1bTEuNTQyLjc4MmwtMS42MTMuOTRjLjM0LjYxNC44MDguODY1IDEuMTczLjY1NC4xLS4wNTguMTkzLS4xMjMuMjYzLS4yMnYuNTk1bC0uMDc0LjA0NmMtLjUuMy0xLjIzLS4xMTItMS42Ni0xLjA2NS0uNDM0LS45Ni0uMzM4LTEuODUzLjE3Ny0yLjE0OC41MzgtLjMxNCAxLjI3LjMgMS42MTQgMS4wNDQuMDM3LjA4LjA4LjExNi4xMi4xNTZtNS41ODIgMy4zMjRjLS4zNDIuMi0uNDIzLjY3NC0uMjYgMS4zbDEuMzM0LS43NzVjLS4zNC0uNTI3LS43NDQtLjcxNS0xLjA3My0uNTI0bTEuNTQyLjc4NGwtMS42MTUuOTM4Yy4zNC42MTQuOC44NjQgMS4xNzQuNjUzLjEtLjA2LjItLjEyNC4yNi0uMjJsLjAwMy41OTVjLS4wMjQuMDE4LS4wNDguMDMyLS4wNzMuMDQ1LS41LjMtMS4yMy0uMTEzLTEuNjYtMS4wNjQtLjQzNi0uOTYtLjM0LTEuODUyLjE3NC0yLjE1LjU0LS4zMTMgMS4yNzMuMjkyIDEuNjE2IDEuMDQ2LjAzNi4wOC4wODIuMTE2LjEyLjE1Nm0xLjUzLjk5Yy0uMzQuMi0uNDIuNjc0LS4yNiAxLjNsMS4zMzItLjc3N2MtLjM0LS41MjctLjc0Mi0uNzE1LTEuMDcyLS41MjRtMS41NC43ODRsLTEuNjE0LjkzOGMuMzQyLjYxMy44Ljg2NCAxLjE3NS42NTNhLjguOCAwIDAgMCAuMjYtLjIybC4wMDMuNTk1LS4wNzQuMDQ1Yy0uNS4zLTEuMjMtLjExMi0xLjY2LTEuMDY1LS40MzUtLjk2LS4zMzgtMS44NS4xNzUtMi4xNDguNTM4LS4zMTMgMS4yNzIuMjkyIDEuNjE2IDEuMDQ2LjAzNS4wOC4wOC4xMTYuMTIuMTU2Ii8+PC9nPjxwYXRoIGQ9Ik0zOS43ODQgNDEuNjE3bC0uMDk0LS4wNTR2LS4wNDdsLjIyOC4xMy4wMDEuMDQ4LS4wOTUtLjA1NS4wMDIuMzc4LS4wNC0uMDIzem0uNDMuNDRsLS4wMDQtLjE4N2gtLjAwMWwtLjA0LjE0LS4wNTUuMTc0LS4wMy0uMDE2LS4wNS0uMjMtLjAzNi0uMTg2LS4wMDYuMTgzLS4wMDguMTc3LS4wMzgtLjAyLjAyLS40MTMuMDUyLjAzLjA1Mi4yMzQuMDMyLjE2LjAwMS4wMDJjLjAwNy0uMDQuMDItLjA4LjAzMi0uMTI1bC4wNTQtLjE3Mi4wNS4wMjguMDIuNDM1LS4wMzgtLjAyLS4wMS0uMTkyeiIgZmlsbD0iIzZjNmU3MCIvPjwvc3ZnPg=="/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 142px; margin-left: 669px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">wifi-01</div></div></div></foreignObject><text x="669" y="154" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">wifi-01</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/samples/it_v2/doc/network/subnets/02_guest.yaml b/samples/it_v2/doc/network/subnets/02_guest.yaml new file mode 100644 index 0000000..ef3be27 --- /dev/null +++ b/samples/it_v2/doc/network/subnets/02_guest.yaml @@ -0,0 +1,13 @@ +# yaml-language-server: $schema=../../../schemas/subnet.json +name: GUEST +subnet: 192.168.5.0/24 +gw: 192.168.5.1 +dns: + - 192.168.5.1 +vlans: + - 10 +dhcp: + server: '192.168.5.1' + ranges: + - from: '192.168.5.10' + to: '192.18.5.199' diff --git a/samples/it_v2/doc/network/subnets/04_vpn.yaml b/samples/it_v2/doc/network/subnets/04_vpn.yaml new file mode 100644 index 0000000..fdc558b --- /dev/null +++ b/samples/it_v2/doc/network/subnets/04_vpn.yaml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=../../../schemas/subnet.json +name: VPN +subnet: 192.168.9.0/24 +gw: 192.168.9.1 +dns: + - 192.168.9.1 +dhcp: + server: '192.168.9.1' + ranges: + - from: '192.168.9.2' + to: '192.168.9.254' diff --git a/samples/it_v2/doc/network/subnets/05_wan.01.drawio b/samples/it_v2/doc/network/subnets/05_wan.01.drawio new file mode 100644 index 0000000..75f8ac9 --- /dev/null +++ b/samples/it_v2/doc/network/subnets/05_wan.01.drawio @@ -0,0 +1 @@ +<mxfile host="app.diagrams.net" modified="2023-03-05T19:31:14.845Z" agent="5.0 (X11)" etag="FslN_q_c38xDY7rFevKs" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">5VbLVtswEP2aLPHxKwksIQnQU3rKKYt25yPssS2QPa4k44SvrxTLr9jhUeiqySLWndFIuvdm5Jm3yrZXnBTpN4yAzVw72s689cx1HXfpqx+N7GpkMT+tgYTTyCR1wB19BgPaBi1pBGKQKBGZpMUQDDHPIZQDjHCO1TAtRjZctSAJjIC7kLAx+pNGMq3RU3fZ4ddAk7RZ2Vmc1ZGMNMnmJCIlEVY9yNvMvBVHlPVTtl0B0+Q1vNTzLo9E241xyOVbJjz/mP/eXIuA4HXM/V/x9/OvcOKYMk+ElebEoqIyTE9sExFy13CRyoypJ2fmXTwBl1SxdEPugd2ioJJirmL3KCVmvYRzRhMdkFgoFEvJaA6rVixbgS0xehARkULURQq9drZNtLssTsJHKy0gILy8J1a9UxDWw9npfEECd+7ZgesngSviomClCOoMVWlMVnNwtU/Y9iBD3hVgBpLvVIqJLnwjZONk35rXQNUZw/HdGkv7pjB5xHgxaWt3cqkHo9g71Gtc2FPvSy6B5yBH4k1SP2D7LzUlZhSCXloBPZscCkgq4VnUbDFQZF/ElLEVMuT7XXprd+2tPYWr/Iiqik0sxxw+R8cDGZthX0TbHou48P+RiJ43EnEkHkSqKZkhcpligjlhmw694FjmUStll3ODWqS9GA8g5c50WFJKHEoVY0e2EsLef7SEknB5rjup1pgRIWjYwJeUNdOPCiOw5CG8wcSqYALyJaJMRU3Gi0JzYETSp2EHn9LNTL1FZcmeQZyhQ5busEJ9IjPpQPx2Fx/wg/9/+6GR+VU/OJ/uh4/9j8dXaUw5VISxqcv0GL/TTfbV3swOAm03fqk9T94JBx15tf/sFeb4CL2Iv9bf4726gdeKhdBsK9dObIs1b1TuxFWhLogK+aOwlJPrjX9G7z87uMOdUfNfTvR+1323Z9Swe7WrW0P3guxt/gA=</diagram></mxfile> \ No newline at end of file diff --git a/samples/it_v2/doc/network/subnets/05_wan.01.svg b/samples/it_v2/doc/network/subnets/05_wan.01.svg new file mode 100644 index 0000000..98c2996 --- /dev/null +++ b/samples/it_v2/doc/network/subnets/05_wan.01.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Do not edit this file with editors other than diagrams.net --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="743px" height="86px" viewBox="-0.5 -0.5 743 86" content="<mxfile host="app.diagrams.net" modified="2023-03-05T19:31:29.109Z" agent="5.0 (X11)" etag="6HpyPnld0iTa0z9jPkPf" version="21.0.2" type="device"><diagram id="b6ezudLEMjEVSUdVGraq" name="Page-1">5VbLVtswEP2aLPHxKwksIQnQU3rKKYt25yPssS2QPa4k44SvrxTLr9jhUeiqySLWndFIuvdm5Jm3yrZXnBTpN4yAzVw72s689cx1HXfpqx+N7GpkMT+tgYTTyCR1wB19BgPaBi1pBGKQKBGZpMUQDDHPIZQDjHCO1TAtRjZctSAJjIC7kLAx+pNGMq3RU3fZ4ddAk7RZ2Vmc1ZGMNMnmJCIlEVY9yNvMvBVHlPVTtl0B0+Q1vNTzLo9E241xyOVbJjz/mP/eXIuA4HXM/V/x9/OvcOKYMk+ElebEoqIyTE9sExFy13CRyoypJ2fmXTwBl1SxdEPugd2ioJJirmL3KCVmvYRzRhMdkFgoFEvJaA6rVixbgS0xehARkULURQq9drZNtLssTsJHKy0gILy8J1a9UxDWw9npfEECd+7ZgesngSviomClCOoMVWlMVnNwtU/Y9iBD3hVgBpLvVIqJLnwjZONk35rXQNUZw/HdGkv7pjB5xHgxaWt3cqkHo9g71Gtc2FPvSy6B5yBH4k1SP2D7LzUlZhSCXloBPZscCkgq4VnUbDFQZF/ElLEVMuT7XXprd+2tPYWr/Iiqik0sxxw+R8cDGZthX0TbHou48P+RiJ43EnEkHkSqKZkhcpligjlhmw694FjmUStll3ODWqS9GA8g5c50WFJKHEoVY0e2EsLef7SEknB5rjup1pgRIWjYwJeUNdOPCiOw5CG8wcSqYALyJaJMRU3Gi0JzYETSp2EHn9LNTL1FZcmeQZyhQ5busEJ9IjPpQPx2Fx/wg/9/+6GR+VU/OJ/uh4/9j8dXaUw5VISxqcv0GL/TTfbV3swOAm03fqk9T94JBx15tf/sFeb4CL2Iv9bf4726gdeKhdBsK9dObIs1b1TuxFWhLogK+aOwlJPrjX9G7z87uMOdUfNfTvR+1323Z9Swe7WrW0P3guxt/gA=</diagram></mxfile>"><defs/><g><rect x="600" y="24.5" width="142" height="15" fill="#404040" stroke="#050505" stroke-width="0.17" pointer-events="all"/><path d="M 602.39 33.88 L 602.39 36.39 L 603.25 36.39 L 603.25 37.18 L 605.36 37.18 L 605.36 36.39 L 606.16 36.39 L 606.16 33.88 L 602.39 33.88 Z" fill="#1a1a1a" stroke="#313131" stroke-width="0.17" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 670.97 27.73 L 699.07 27.73 L 699.07 36.66 L 670.97 36.66 L 670.97 27.73 Z M 699.48 27.73 L 727.58 27.73 L 727.58 36.66 L 699.48 36.66 L 699.48 27.73 Z" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 674.99 36.25 L 675.84 36.25 L 675.84 35.76 L 674.99 35.76 L 674.99 36.25 Z M 671.65 36.25 L 672.51 36.25 L 672.51 35.75 L 671.65 35.75 L 671.65 36.25 Z M 679.5 36.25 L 680.35 36.25 L 680.35 35.76 L 679.5 35.76 L 679.5 36.25 Z M 676.16 36.25 L 677.02 36.25 L 677.02 35.75 L 676.16 35.75 L 676.16 36.25 Z M 684.01 36.25 L 684.87 36.25 L 684.87 35.76 L 684.01 35.76 L 684.01 36.25 Z M 680.67 36.25 L 681.53 36.25 L 681.53 35.75 L 680.67 35.75 L 680.67 36.25 Z M 688.52 36.25 L 689.38 36.25 L 689.38 35.76 L 688.52 35.76 L 688.52 36.25 Z M 685.18 36.25 L 686.04 36.25 L 686.04 35.75 L 685.18 35.75 L 685.18 36.25 Z M 693.03 36.25 L 693.89 36.25 L 693.89 35.76 L 693.03 35.76 L 693.03 36.25 Z M 689.69 36.25 L 690.55 36.25 L 690.55 35.75 L 689.69 35.75 L 689.69 36.25 Z M 697.54 36.25 L 698.4 36.25 L 698.4 35.76 L 697.54 35.76 L 697.54 36.25 Z M 694.21 36.25 L 695.06 36.25 L 695.06 35.75 L 694.21 35.75 L 694.21 36.25 Z M 703.5 36.25 L 704.36 36.25 L 704.36 35.76 L 703.5 35.76 L 703.5 36.25 Z M 700.17 36.25 L 701.02 36.25 L 701.02 35.75 L 700.17 35.75 L 700.17 36.25 Z M 708.01 36.25 L 708.87 36.25 L 708.87 35.76 L 708.01 35.76 L 708.01 36.25 Z M 704.68 36.25 L 705.54 36.25 L 705.54 35.75 L 704.68 35.75 L 704.68 36.25 Z M 712.52 36.25 L 713.38 36.25 L 713.38 35.76 L 712.52 35.76 L 712.52 36.25 Z M 709.19 36.25 L 710.05 36.25 L 710.05 35.75 L 709.19 35.75 L 709.19 36.25 Z M 717.04 36.25 L 717.89 36.25 L 717.89 35.76 L 717.04 35.76 L 717.04 36.25 Z M 713.7 36.25 L 714.56 36.25 L 714.56 35.75 L 713.7 35.75 L 713.7 36.25 Z M 721.55 36.25 L 722.4 36.25 L 722.4 35.76 L 721.55 35.76 L 721.55 36.25 Z M 718.21 36.25 L 719.07 36.25 L 719.07 35.75 L 718.21 35.75 L 718.21 36.25 Z M 726.06 36.25 L 726.91 36.25 L 726.91 35.76 L 726.06 35.76 L 726.06 36.25 Z M 722.72 36.25 L 723.58 36.25 L 723.58 35.75 L 722.72 35.75 L 722.72 36.25 Z" fill="#96ad92" stroke="#646664" stroke-width="0.1" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 672.78 36.27 L 672.78 35.33 L 671.88 35.33 L 671.88 33 L 675.66 33 L 675.66 35.33 L 674.77 35.33 L 674.77 36.27 L 672.78 36.27 Z M 677.29 36.27 L 677.29 35.33 L 676.39 35.33 L 676.39 33 L 680.17 33 L 680.17 35.33 L 679.28 35.33 L 679.28 36.27 L 677.29 36.27 Z M 681.8 36.27 L 681.8 35.33 L 680.9 35.33 L 680.9 33 L 684.68 33 L 684.68 35.33 L 683.79 35.33 L 683.79 36.27 L 681.8 36.27 Z M 686.31 36.27 L 686.31 35.33 L 685.41 35.33 L 685.41 33 L 689.2 33 L 689.2 35.33 L 688.3 35.33 L 688.3 36.27 L 686.31 36.27 Z M 690.82 36.27 L 690.82 35.33 L 689.92 35.33 L 689.92 33 L 693.71 33 L 693.71 35.33 L 692.81 35.33 L 692.81 36.27 L 690.82 36.27 Z M 695.34 28.04 L 695.34 28.97 L 694.44 28.97 L 694.44 31.31 L 698.22 31.31 L 698.22 28.97 L 697.33 28.97 L 697.33 28.04 L 695.34 28.04 Z M 690.84 28.04 L 690.84 28.97 L 689.95 28.97 L 689.95 31.31 L 693.73 31.31 L 693.73 28.97 L 692.84 28.97 L 692.84 28.04 L 690.84 28.04 Z M 686.35 28.04 L 686.35 28.97 L 685.46 28.97 L 685.46 31.31 L 689.24 31.31 L 689.24 28.97 L 688.35 28.97 L 688.35 28.04 L 686.35 28.04 Z M 681.86 28.04 L 681.86 28.97 L 680.96 28.97 L 680.96 31.31 L 684.75 31.31 L 684.75 28.97 L 683.85 28.97 L 683.85 28.04 L 681.86 28.04 Z M 677.37 28.04 L 677.37 28.97 L 676.47 28.97 L 676.47 31.31 L 680.25 31.31 L 680.25 28.97 L 679.36 28.97 L 679.36 28.04 L 677.37 28.04 Z M 672.87 28.04 L 672.87 28.97 L 671.98 28.97 L 671.98 31.31 L 675.76 31.31 L 675.76 28.97 L 674.87 28.97 L 674.87 28.04 L 672.87 28.04 Z M 695.33 36.27 L 695.33 35.33 L 694.43 35.33 L 694.43 33 L 698.22 33 L 698.22 35.33 L 697.32 35.33 L 697.32 36.27 L 695.33 36.27 Z M 701.29 36.27 L 701.29 35.33 L 700.4 35.33 L 700.4 33 L 704.18 33 L 704.18 35.33 L 703.29 35.33 L 703.29 36.27 L 701.29 36.27 Z M 705.8 36.27 L 705.8 35.33 L 704.91 35.33 L 704.91 33 L 708.69 33 L 708.69 35.33 L 707.8 35.33 L 707.8 36.27 L 705.8 36.27 Z M 710.31 36.27 L 710.31 35.33 L 709.42 35.33 L 709.42 33 L 713.2 33 L 713.2 35.33 L 712.31 35.33 L 712.31 36.27 L 710.31 36.27 Z M 714.82 36.27 L 714.82 35.33 L 713.93 35.33 L 713.93 33 L 717.71 33 L 717.71 35.33 L 716.82 35.33 L 716.82 36.27 L 714.82 36.27 Z M 719.33 36.27 L 719.33 35.33 L 718.44 35.33 L 718.44 33 L 722.22 33 L 722.22 35.33 L 721.33 35.33 L 721.33 36.27 L 719.33 36.27 Z M 723.85 28.04 L 723.85 28.97 L 722.96 28.97 L 722.96 31.31 L 726.74 31.31 L 726.74 28.97 L 725.85 28.97 L 725.85 28.04 L 723.85 28.04 Z M 719.36 28.04 L 719.36 28.97 L 718.47 28.97 L 718.47 31.31 L 722.25 31.31 L 722.25 28.97 L 721.35 28.97 L 721.35 28.04 L 719.36 28.04 Z M 714.87 28.04 L 714.87 28.97 L 713.97 28.97 L 713.97 31.31 L 717.76 31.31 L 717.76 28.97 L 716.86 28.97 L 716.86 28.04 L 714.87 28.04 Z M 710.38 28.04 L 710.38 28.97 L 709.48 28.97 L 709.48 31.31 L 713.26 31.31 L 713.26 28.97 L 712.37 28.97 L 712.37 28.04 L 710.38 28.04 Z M 705.88 28.04 L 705.88 28.97 L 704.99 28.97 L 704.99 31.31 L 708.77 31.31 L 708.77 28.97 L 707.88 28.97 L 707.88 28.04 L 705.88 28.04 Z M 701.39 28.04 L 701.39 28.97 L 700.5 28.97 L 700.5 31.31 L 704.28 31.31 L 704.28 28.97 L 703.38 28.97 L 703.38 28.04 L 701.39 28.04 Z M 723.85 36.27 L 723.85 35.33 L 722.95 35.33 L 722.95 33 L 726.73 33 L 726.73 35.33 L 725.84 35.33 L 725.84 36.27 L 723.85 36.27 Z" fill="#333" stroke="none" pointer-events="all"/><rect x="600.56" y="24.78" width="5.81" height="3.23" fill="#333" stroke="#282828" stroke-width="0.13" pointer-events="all"/><rect x="607.43" y="25.14" width="5.81" height="3.5" fill="#4d4d4d" stroke="#808080" stroke-width="0.1" pointer-events="all"/><path d="M 603.33 30.26 L 606.28 30.26 L 606.28 31.01 L 603.33 31.01 L 603.33 30.26 Z M 603.33 29.03 L 606.28 29.03 L 606.28 29.77 L 603.33 29.77 L 603.33 29.03 Z" fill="#cde1cb" stroke="#2a2a2a" stroke-width="0.13" stroke-miterlimit="10" pointer-events="all"/><rect x="614.47" y="35.75" width="2.32" height="0.72" fill="none" stroke="#808080" stroke-width="0.13" pointer-events="all"/><rect x="600" y="24.5" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="735.3" y="27.91" width="4.84" height="8.51" fill="#f2f2f2" stroke="none" pointer-events="all"/><path d="M 735.52 33.2 L 739.92 33.2 L 739.92 36.13 L 735.52 36.13 L 735.52 33.2 Z M 735.52 28.2 L 739.92 28.2 L 739.92 31.12 L 735.52 31.12 L 735.52 28.2 Z" fill="#262626" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 47px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">switch-01</div></div></div></foreignObject><text x="671" y="59" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">switch-01</text></switch></g><path d="M 100 43.5 L 100 47.97 C 100 56.28 90.37 64 80.14 64 L 20.19 64 C 10.2 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 36.51 4.86 29.04 12.94 26.5 C 12.73 19.67 15.49 13.59 20.62 8.55 C 27.41 1.98 38.12 0 47.09 3.05 C 53.97 5.44 59.19 10.28 61.79 15.92 C 66.36 13.03 72.13 12.93 76.92 16.26 C 79.47 18.05 81.84 21.11 82.07 25.64 C 86.72 26.03 91.56 28.16 95.46 32.61 C 98.3 35.77 99.94 39.88 100 43.5 Z" fill="#d2d3d3" stroke="none" pointer-events="all"/><path d="M 100 43.5 L 100 47.97 C 100 56.3 90.37 64 80.14 64 L 20.19 64 C 10.16 64 0.02 56.73 0.02 47.85 L 0 44.53 C 0 53.27 9.89 60.59 20.07 60.59 L 79.89 60.59 C 91.13 60.59 100 52.7 100 43.5 Z" fill-opacity="0.3" fill="#000000" stroke="none" pointer-events="all"/><rect x="0" y="0" width="0" height="0" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 47.88 44.46 L 39.39 44.46 L 39.39 55.49 L 28.02 55.49 L 28.02 44.46 L 19.54 44.46 L 33.71 21.07 Z M 62.05 55.4 L 47.88 32 L 56.36 32 L 56.36 20.97 L 67.73 20.97 L 67.73 32 L 76.22 32 Z" fill="#ffffff" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 71px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Internet</div></div></div></foreignObject><text x="50" y="83" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Internet</text></switch></g><path d="M 106.37 32 L 443.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 101.12 32 L 108.12 28.5 L 106.37 32 L 108.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 448.88 32 L 441.88 35.5 L 443.63 32 L 441.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 526.37 32 L 593.63 32" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 521.12 32 L 528.12 28.5 L 526.37 32 L 528.12 35.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 598.88 32 L 591.88 35.5 L 593.63 32 L 591.88 28.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="450" y="21" width="70" height="18.97" rx="3.79" ry="3.79" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><rect x="457" y="39.97" width="56" height="3.03" fill="#cccccc" stroke="#4d4d4d" stroke-width="1.4" pointer-events="all"/><path d="M 452.1 26.31 L 456.3 26.31 L 456.3 28.59 L 454.9 28.59 L 454.9 29.34 L 453.5 29.34 L 453.5 28.59 L 452.1 28.59 Z M 458.05 26.31 L 462.25 26.31 L 462.25 28.59 L 460.85 28.59 L 460.85 29.34 L 459.45 29.34 L 459.45 28.59 L 458.05 28.59 Z M 464 26.31 L 468.2 26.31 L 468.2 28.59 L 466.8 28.59 L 466.8 29.34 L 465.4 29.34 L 465.4 28.59 L 464 28.59 Z M 469.95 26.31 L 474.15 26.31 L 474.15 28.59 L 472.75 28.59 L 472.75 29.34 L 471.35 29.34 L 471.35 28.59 L 469.95 28.59 Z M 475.9 26.31 L 480.1 26.31 L 480.1 28.59 L 478.7 28.59 L 478.7 29.34 L 477.3 29.34 L 477.3 28.59 L 475.9 28.59 Z M 481.85 26.31 L 486.05 26.31 L 486.05 28.59 L 484.65 28.59 L 484.65 29.34 L 483.25 29.34 L 483.25 28.59 L 481.85 28.59 Z M 487.8 26.31 L 492 26.31 L 492 28.59 L 490.6 28.59 L 490.6 29.34 L 489.2 29.34 L 489.2 28.59 L 487.8 28.59 Z M 493.75 26.31 L 497.95 26.31 L 497.95 28.59 L 496.55 28.59 L 496.55 29.34 L 495.15 29.34 L 495.15 28.59 L 493.75 28.59 Z" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="511.6" cy="30.48" rx="5.6" ry="6.068965517241379" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="24.79" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="36.17" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="502.5" cy="30.48" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="495.85" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="489.9" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="483.95" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="478" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="472.05" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="466.1" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="460.15" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><ellipse cx="454.2" cy="33.9" rx="1.4" ry="1.5172413793103448" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 511.6 26.31 L 511.6 34.66 M 507.05 30.48 L 509.85 30.48 M 513.35 30.48 L 516.15 30.48 M 510.2 27.83 L 511.6 26.31 L 513 27.83 M 510.2 33.14 L 511.6 34.66 L 513 33.14 M 508.45 28.97 L 509.85 30.48 L 508.45 32 M 514.75 28.97 L 513.35 30.48 L 514.75 32" fill="none" stroke="#4d4d4d" stroke-width="0.7" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 50px; margin-left: 485px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">firewall-01</div></div></div></foreignObject><text x="485" y="62" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">firewall-01</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/samples/it_v2/doc/network/subnets/05_wan.yaml b/samples/it_v2/doc/network/subnets/05_wan.yaml new file mode 100644 index 0000000..050e88e --- /dev/null +++ b/samples/it_v2/doc/network/subnets/05_wan.yaml @@ -0,0 +1,3 @@ +# yaml-language-server: $schema=../../../schemas/subnet.json +name: WAN +subnet: 0.0.0.0/32 diff --git a/samples/it_v2/doc/network/subnets/_index.yaml b/samples/it_v2/doc/network/subnets/_index.yaml new file mode 100644 index 0000000..9b29001 --- /dev/null +++ b/samples/it_v2/doc/network/subnets/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 1 +title: Subnets +toc: false +book: false +templates: + node: subnets \ No newline at end of file diff --git a/samples/it_v2/doc/network/wifi/01_lan.yaml b/samples/it_v2/doc/network/wifi/01_lan.yaml new file mode 100644 index 0000000..c37ea68 --- /dev/null +++ b/samples/it_v2/doc/network/wifi/01_lan.yaml @@ -0,0 +1,4 @@ +# yaml-language-server: $schema=../../../schemas/wifi.json +name: LAN +ssid: 'Company-WIFI' +key: 'feDFw848$435dEWs' \ No newline at end of file diff --git a/samples/it_v2/doc/network/wifi/02_guest.yaml b/samples/it_v2/doc/network/wifi/02_guest.yaml new file mode 100644 index 0000000..f1b67d2 --- /dev/null +++ b/samples/it_v2/doc/network/wifi/02_guest.yaml @@ -0,0 +1,4 @@ +# yaml-language-server: $schema=../../../schemas/wifi.json +name: GUEST +ssid: 'GUEST-WIFI' +key: 'Visitors' \ No newline at end of file diff --git a/samples/it_v2/doc/network/wifi/_index.yaml b/samples/it_v2/doc/network/wifi/_index.yaml new file mode 100644 index 0000000..3e2c679 --- /dev/null +++ b/samples/it_v2/doc/network/wifi/_index.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=../../../schemas/_index.json +index: 2 +title: WIFI +toc: false +book: false +templates: + node: wifis \ No newline at end of file diff --git a/samples/it_v2/doc/secrets/_index.yaml b/samples/it_v2/doc/secrets/_index.yaml new file mode 100644 index 0000000..a0ebb65 --- /dev/null +++ b/samples/it_v2/doc/secrets/_index.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../schemas/_index.json +index: 1000 +title: Secrets +templates: + node: 'secrets' + items: '@none' \ No newline at end of file diff --git a/samples/it_v2/doc/secrets/ad.yaml b/samples/it_v2/doc/secrets/ad.yaml new file mode 100644 index 0000000..7c30bab --- /dev/null +++ b/samples/it_v2/doc/secrets/ad.yaml @@ -0,0 +1,9 @@ +# yaml-language-server: $schema=../../schemas/secrets.json +name: AD +secrets: + - type: AD + user: Administrator + password: 'Pa$$w0rd' + - type: AD + user: LocalAdmin + password: 'SimplePass' diff --git a/samples/it_v2/doc/secrets/ms365.yaml b/samples/it_v2/doc/secrets/ms365.yaml new file mode 100644 index 0000000..fdd70a1 --- /dev/null +++ b/samples/it_v2/doc/secrets/ms365.yaml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=../../schemas/secrets.json +name: Microsoft 365 +secrets: + - type: https + user: admin@companysa.onmicrosoft.com + password: 'MySuperPassword' + mfa: + - type: totp + value: 'JEWRF85D23NNMEISL3j' + - type: sms + value: '+000000000000' diff --git a/samples/it_v2/doc/secrets/windows.yaml b/samples/it_v2/doc/secrets/windows.yaml new file mode 100644 index 0000000..552e329 --- /dev/null +++ b/samples/it_v2/doc/secrets/windows.yaml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=../../schemas/secrets.json +name: Windows +secrets: + - type: USER + user: Administrator + password: 'Pa$$w0rd' diff --git a/samples/it_v2/doc/softwares/_index.yaml b/samples/it_v2/doc/softwares/_index.yaml new file mode 100644 index 0000000..e3219d0 --- /dev/null +++ b/samples/it_v2/doc/softwares/_index.yaml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=../../schemas/_index.json +index: 10 +title: Softwares +templates: + node: 'softwares' \ No newline at end of file diff --git a/samples/it_v2/doc/softwares/software1.notes.md b/samples/it_v2/doc/softwares/software1.notes.md new file mode 100644 index 0000000..4e25d1c --- /dev/null +++ b/samples/it_v2/doc/softwares/software1.notes.md @@ -0,0 +1,3 @@ +### Additional informations + +Before you begin, .... \ No newline at end of file diff --git a/samples/it_v2/doc/softwares/software1.yaml b/samples/it_v2/doc/softwares/software1.yaml new file mode 100644 index 0000000..789d135 --- /dev/null +++ b/samples/it_v2/doc/softwares/software1.yaml @@ -0,0 +1,9 @@ +# yaml-language-server: $schema=../../schemas/software.json +name: 'Software 1' +publisher: 'Software Inc' +licenses: '4' +urls: + - website: 'https://soft.home' + - download: 'https://soft.download' +files: + - notes.md diff --git a/samples/it_v2/schemas/_index.json b/samples/it_v2/schemas/_index.json new file mode 100644 index 0000000..cfb9ee2 --- /dev/null +++ b/samples/it_v2/schemas/_index.json @@ -0,0 +1,99 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "index": { "type": "integer" }, + "title": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "book": { "type": "boolean" }, + "toc": { "type": "boolean" }, + "templates": { + "type": "object", + "properties": { + "node": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/ad_acls.json b/samples/it_v2/schemas/ad_acls.json new file mode 100644 index 0000000..5b835e1 --- /dev/null +++ b/samples/it_v2/schemas/ad_acls.json @@ -0,0 +1,118 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "folders": { + "type": "array", + "items": { + "properties": { + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "acls": { + "type": "array", + "items": { + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "access": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'RO'", + "'RW'", + "'traversal'", + "'DENY'" + ]} + ] + } + } + } + } + } + } + + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/ad_dfs.json b/samples/it_v2/schemas/ad_dfs.json new file mode 100644 index 0000000..829e89d --- /dev/null +++ b/samples/it_v2/schemas/ad_dfs.json @@ -0,0 +1,121 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "targets": { + "type": "array", + "items": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + }, + "folders": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "targets": { + "type": "array", + "items": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/ad_domain.json b/samples/it_v2/schemas/ad_domain.json new file mode 100644 index 0000000..17c6f7d --- /dev/null +++ b/samples/it_v2/schemas/ad_domain.json @@ -0,0 +1,116 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "dc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "fsmo": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'all'" + ]} + ] + } + } + } + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/ad_shares.json b/samples/it_v2/schemas/ad_shares.json new file mode 100644 index 0000000..9be9512 --- /dev/null +++ b/samples/it_v2/schemas/ad_shares.json @@ -0,0 +1,107 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "fileshares": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "printshares": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/ad_usergroups.json b/samples/it_v2/schemas/ad_usergroups.json new file mode 100644 index 0000000..6a100ea --- /dev/null +++ b/samples/it_v2/schemas/ad_usergroups.json @@ -0,0 +1,91 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "usergroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/computer.json b/samples/it_v2/schemas/computer.json new file mode 100644 index 0000000..2613ee4 --- /dev/null +++ b/samples/it_v2/schemas/computer.json @@ -0,0 +1,341 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "maintainer": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'notebook'", + "'rack'", + "'slim'", + "'small'", + "'tower'", + "'vm'" + ]} + ] + }, + "model": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "os": { + "type": "string", + "anyOf": [ + { "type": "string" }, + {"enum": [ + "''", + "'Windows XP Home'", + "'Windows XP Pro'", + "'Windows Vista Home'", + "'Windows Vista Pro'", + "'Windows 7 Home'", + "'Windows 7 Pro'", + "'Windows 8 Home'", + "'Windows 8 Pro'", + "'Windows 10 Home'", + "'Windows 10 Pro'", + "'Windows 11 Home'", + "'Windows 11 Pro'" + ]} + ] + }, + "location": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'WIFI'", + "'WAN'", + "'VPN'" + ]} + ] + }, + "ip": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mask": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'255.255.255.0'", + "'255.255.0.0'", + "'255.0.0.0'" + ]} + ] + }, + "gw": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + }, + "updates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'os'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "backups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'none'", + "'hypervisor'", + "'windowsbackup'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "target": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'usb'", + "'pbs'", + "'share'", + "'iscsi'", + "'cloud'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/netdev.json b/samples/it_v2/schemas/netdev.json new file mode 100644 index 0000000..a294829 --- /dev/null +++ b/samples/it_v2/schemas/netdev.json @@ -0,0 +1,345 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "maintainer": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'box'", + "'rack'", + "'wall'", + "'ceiling'" + ]} + ] + }, + "roles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'DHCP'", + "'DNS'", + "'VPN'", + "'Firewall'", + "'Router'" + ]} + ] + } + }, + "model": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "os": { + "type": "string", + "anyOf": [ + { "type": "string" }, + {"enum": [ + "''", + "'Linux'", + "'Debian'" + ]} + ] + }, + "location": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'WIFI'", + "'WAN'", + "'VPN'" + ]} + ] + }, + "ip": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mask": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'255.255.255.0'", + "'255.255.0.0'", + "'255.0.0.0'" + ]} + ] + }, + "gw": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + }, + "updates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'os'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "backups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'none'", + "'hypervisor'", + "'windowsbackup'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "target": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'usb'", + "'pbs'", + "'share'", + "'iscsi'", + "'cloud'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/printer.json b/samples/it_v2/schemas/printer.json new file mode 100644 index 0000000..b143ef8 --- /dev/null +++ b/samples/it_v2/schemas/printer.json @@ -0,0 +1,317 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "maintainer": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'printer'", + "'mfc'", + "'large printer'" + ]} + ] + }, + "model": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "location": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'WIFI'", + "'WAN'", + "'VPN'" + ]} + ] + }, + "ip": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mask": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'255.255.255.0'", + "'255.255.0.0'", + "'255.0.0.0'" + ]} + ] + }, + "gw": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + }, + "updates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'os'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "backups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'none'", + "'hypervisor'", + "'windowsbackup'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "target": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'usb'", + "'pbs'", + "'share'", + "'iscsi'", + "'cloud'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/secrets.json b/samples/it_v2/schemas/secrets.json new file mode 100644 index 0000000..aff9ad9 --- /dev/null +++ b/samples/it_v2/schemas/secrets.json @@ -0,0 +1,104 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "secrets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "'ad'", + "'https'", + "'ssh'", + "'user'" + ]} + ] + }, + "user": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "password": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mfa": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'totp'", + "'sms'", + "'e-mail'" + ]} + ] + }, + "value": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } + } + } + } +} diff --git a/samples/it_v2/schemas/server.json b/samples/it_v2/schemas/server.json new file mode 100644 index 0000000..346d1fd --- /dev/null +++ b/samples/it_v2/schemas/server.json @@ -0,0 +1,362 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "maintainer": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'mini'", + "'rack'", + "'tower'", + "'vm'" + ]} + ] + }, + "roles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'DHCP'", + "'DNS'", + "'VPN'", + "'Firewall'", + "'DC'", + "'File Server'", + "'Print Server'", + "'App Server'", + "'Backup Server'", + "'Hypervisor'" + ]} + ] + } + }, + "model": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "os": { + "type": "string", + "anyOf": [ + { "type": "string" }, + {"enum": [ + "''", + "'Windows 2000'", + "'Windows 2003'", + "'Windows 2008'", + "'Windows 2008 R2'", + "'Windows 2012'", + "'Windows 2012 R2'", + "'Windows 2016'", + "'Windows 2019'", + "'Windows 2021'", + "'Debian'", + "'Debian / Proxmox VE'", + "'Debian / Proxmox BS'", + "'FreeBSD / OPNSense'", + "'FreeBSD / pfSense'" + ]} + ] + }, + "location": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'WIFI'", + "'WAN'", + "'VPN'" + ]} + ] + }, + "ip": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mask": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'255.255.255.0'", + "'255.255.0.0'", + "'255.0.0.0'" + ]} + ] + }, + "gw": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + }, + "updates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'os'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "backups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'none'", + "'hypervisor'", + "'windowsbackup'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "target": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'usb'", + "'pbs'", + "'share'", + "'iscsi'", + "'cloud'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/software.json b/samples/it_v2/schemas/software.json new file mode 100644 index 0000000..06322a2 --- /dev/null +++ b/samples/it_v2/schemas/software.json @@ -0,0 +1,124 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "maintainer": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "publisher": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "licenses": { + "oneOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "urls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "website": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "download": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/subnet.json b/samples/it_v2/schemas/subnet.json new file mode 100644 index 0000000..542abf7 --- /dev/null +++ b/samples/it_v2/schemas/subnet.json @@ -0,0 +1,172 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'LAN01'", + "'LAN02'", + "'LAN03'", + "'LAN04'", + "'LAN06'", + "'LAN07'", + "'LAN08'", + "'LAN09'", + "'LAN10'", + "'WAN'", + "'WIFI'", + "'GUEST'", + "'DMZ'", + "'VPN'" + ]} + ] + }, + "subnet": { + "type": "string", + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.0/24'", + "'192.168.1.0/24'" + ]} + ] + }, + "gw": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.1'", + "'192.168.1.1'" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.1'", + "'192.168.1.1'" + ]} + ] + } + }, + "vlans": { + "type": "array", + "items": { + "type": "integer" + } + }, + "dhcp": { + "type": "object", + "properties": { + "server": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.1'", + "'192.168.1.1'" + ]} + ] + }, + "ranges": { + "type": "array", + "items": { + "properties": { + "from": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.20'", + "'192.168.1.20'" + ]} + ] + }, + "to": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.99'", + "'192.168.1.99'" + ]} + ] + } + } + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/voipdev.json b/samples/it_v2/schemas/voipdev.json new file mode 100644 index 0000000..5a58e5b --- /dev/null +++ b/samples/it_v2/schemas/voipdev.json @@ -0,0 +1,317 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "maintainer": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'phone'", + "'antenna'", + "'gateway'" + ]} + ] + }, + "model": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "location": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'WIFI'", + "'WAN'", + "'VPN'" + ]} + ] + }, + "ip": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mask": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'255.255.255.0'", + "'255.255.0.0'", + "'255.0.0.0'" + ]} + ] + }, + "gw": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + }, + "updates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'os'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "backups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'none'", + "'hypervisor'", + "'windowsbackup'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "target": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'usb'", + "'pbs'", + "'share'", + "'iscsi'", + "'cloud'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas/wifi.json b/samples/it_v2/schemas/wifi.json new file mode 100644 index 0000000..d7c70f0 --- /dev/null +++ b/samples/it_v2/schemas/wifi.json @@ -0,0 +1,106 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "YAML Schema for computer", + "type": "object", + "additionalProperties": false, + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'LAN01'", + "'LAN02'", + "'LAN03'", + "'LAN04'", + "'LAN06'", + "'LAN07'", + "'LAN08'", + "'LAN09'", + "'LAN10'", + "'WAN'", + "'WIFI'", + "'GUEST'", + "'DMZ'", + "'VPN'" + ]} + ] + }, + "ssid": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "key": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} diff --git a/samples/it_v2/schemas_builder/build.sh b/samples/it_v2/schemas_builder/build.sh new file mode 100644 index 0000000..55a1980 --- /dev/null +++ b/samples/it_v2/schemas_builder/build.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +declare -r PARTDIR=./parts +declare -r SCHEMADIR=../schemas +declare -r OBJECTSDIR=./objects + +getSchemaHeader() { + local DOC="{\n" + DOC+="\t\""'$schema'"\": \"http://json-schema.org/draft-07/schema#\",\n" + DOC+="\t\"title\": \"YAML Schema for computer\",\n" + DOC+="\t\"type\": \"object\",\n" + DOC+="\t\"additionalProperties\": false,\n" + DOC+="\t\"properties\": {\n" + echo -e "${DOC}" +} +getSchemaFooter() { + local DOC+="\t}\n" + DOC+="}\n" + echo -e "${DOC}" +} +getPart() { + local -r PARTFILE=${PARTDIR}/${1}.json + if [ ! -f "${PARTFILE}" ]; then + echo "${PARTFILE} not found" + exit 1 + fi + tail -n +4 "${PARTFILE}" | head -n -2 +} + +buildObject() { + local -r OBJECTFILE=${1} + local DOC=$(getSchemaHeader)"\n" + + while IFS= read -r LINE; do + if [[ ! $LINE =~ ^[[:space:]]*\#.*$ ]]; then + if [ -f ${PARTDIR}/"${LINE}".json ]; then + DOC+=$(getPart "${LINE}")",\n" + else + echo "Error: Part not found : ${LINE} in ${OBJECTFILE}" + fi + fi + done < "${OBJECTFILE}" + DOC="${DOC::-3}\n" + + DOC+=$(getSchemaFooter) + local SCHEMAFILE=${SCHEMADIR}/$(basename "${OBJECTFILE}").json + echo -e "${DOC}" > "${SCHEMAFILE}" +} + +for OBJECTFILE in "${OBJECTSDIR}"/*; do + buildObject "${OBJECTFILE}" +done diff --git a/samples/it_v2/schemas_builder/objects/_index b/samples/it_v2/schemas_builder/objects/_index new file mode 100644 index 0000000..ba861a3 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/_index @@ -0,0 +1,7 @@ +todo +index +title +book +toc +templates +files diff --git a/samples/it_v2/schemas_builder/objects/ad_acls b/samples/it_v2/schemas_builder/objects/ad_acls new file mode 100644 index 0000000..f6640db --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/ad_acls @@ -0,0 +1,4 @@ +todo +name +ad_acls +files diff --git a/samples/it_v2/schemas_builder/objects/ad_dfs b/samples/it_v2/schemas_builder/objects/ad_dfs new file mode 100644 index 0000000..d368685 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/ad_dfs @@ -0,0 +1,4 @@ +todo +name +ad_dfs +files diff --git a/samples/it_v2/schemas_builder/objects/ad_domain b/samples/it_v2/schemas_builder/objects/ad_domain new file mode 100644 index 0000000..a9dd628 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/ad_domain @@ -0,0 +1,4 @@ +todo +name +ad_domain +files diff --git a/samples/it_v2/schemas_builder/objects/ad_shares b/samples/it_v2/schemas_builder/objects/ad_shares new file mode 100644 index 0000000..6dd6a25 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/ad_shares @@ -0,0 +1,4 @@ +todo +name +ad_shares +files diff --git a/samples/it_v2/schemas_builder/objects/ad_usergroups b/samples/it_v2/schemas_builder/objects/ad_usergroups new file mode 100644 index 0000000..7e36ad0 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/ad_usergroups @@ -0,0 +1,4 @@ +todo +name +ad_usergroups +files diff --git a/samples/it_v2/schemas_builder/objects/computer b/samples/it_v2/schemas_builder/objects/computer new file mode 100644 index 0000000..4260345 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/computer @@ -0,0 +1,12 @@ +todo +name +maintainer +computer_type +# computer_roles +model +computer_os +location +interfaces +maintenance_updates +maintenance_backups +files diff --git a/samples/it_v2/schemas_builder/objects/netdev b/samples/it_v2/schemas_builder/objects/netdev new file mode 100644 index 0000000..ace2015 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/netdev @@ -0,0 +1,12 @@ +todo +name +maintainer +netdev_type +netdev_roles +model +netdev_os +location +interfaces +maintenance_updates +maintenance_backups +files diff --git a/samples/it_v2/schemas_builder/objects/printer b/samples/it_v2/schemas_builder/objects/printer new file mode 100644 index 0000000..eec5ff7 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/printer @@ -0,0 +1,10 @@ +todo +name +maintainer +printer_type +model +location +interfaces +maintenance_updates +maintenance_backups +files diff --git a/samples/it_v2/schemas_builder/objects/secrets b/samples/it_v2/schemas_builder/objects/secrets new file mode 100644 index 0000000..98c872f --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/secrets @@ -0,0 +1,3 @@ +todo +name +secrets diff --git a/samples/it_v2/schemas_builder/objects/server b/samples/it_v2/schemas_builder/objects/server new file mode 100644 index 0000000..c4ae0fd --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/server @@ -0,0 +1,12 @@ +todo +name +maintainer +server_type +server_roles +model +server_os +location +interfaces +maintenance_updates +maintenance_backups +files diff --git a/samples/it_v2/schemas_builder/objects/software b/samples/it_v2/schemas_builder/objects/software new file mode 100644 index 0000000..c89544e --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/software @@ -0,0 +1,6 @@ +todo +name +maintainer +software +urls +files diff --git a/samples/it_v2/schemas_builder/objects/subnet b/samples/it_v2/schemas_builder/objects/subnet new file mode 100644 index 0000000..2ad454b --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/subnet @@ -0,0 +1,4 @@ +todo +subnet_name +subnet +files diff --git a/samples/it_v2/schemas_builder/objects/voipdev b/samples/it_v2/schemas_builder/objects/voipdev new file mode 100644 index 0000000..ccdd3ee --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/voipdev @@ -0,0 +1,10 @@ +todo +name +maintainer +voipdev_type +model +location +interfaces +maintenance_updates +maintenance_backups +files diff --git a/samples/it_v2/schemas_builder/objects/wifi b/samples/it_v2/schemas_builder/objects/wifi new file mode 100644 index 0000000..34762e0 --- /dev/null +++ b/samples/it_v2/schemas_builder/objects/wifi @@ -0,0 +1,4 @@ +todo +subnet_name +wifi +files diff --git a/samples/it_v2/schemas_builder/parts/ad_acls.json b/samples/it_v2/schemas_builder/parts/ad_acls.json new file mode 100644 index 0000000..ec9e03d --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/ad_acls.json @@ -0,0 +1,48 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "folders": { + "type": "array", + "items": { + "properties": { + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "acls": { + "type": "array", + "items": { + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "access": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'RO'", + "'RW'", + "'traversal'", + "'DENY'" + ]} + ] + } + } + } + } + } + } + + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/ad_dfs.json b/samples/it_v2/schemas_builder/parts/ad_dfs.json new file mode 100644 index 0000000..f783b8c --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/ad_dfs.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "targets": { + "type": "array", + "items": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + }, + "folders": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "targets": { + "type": "array", + "items": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/ad_domain.json b/samples/it_v2/schemas_builder/parts/ad_domain.json new file mode 100644 index 0000000..7d13a5f --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/ad_domain.json @@ -0,0 +1,46 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "dc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "fsmo": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'all'" + ]} + ] + } + } + } + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/ad_shares.json b/samples/it_v2/schemas_builder/parts/ad_shares.json new file mode 100644 index 0000000..33c9835 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/ad_shares.json @@ -0,0 +1,37 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "fileshares": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + }, + "printshares": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/ad_usergroups.json b/samples/it_v2/schemas_builder/parts/ad_usergroups.json new file mode 100644 index 0000000..155620a --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/ad_usergroups.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "usergroups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/book.json b/samples/it_v2/schemas_builder/parts/book.json new file mode 100644 index 0000000..fb3194a --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/book.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "book": { "type": "boolean" } + } +} diff --git a/samples/it_v2/schemas_builder/parts/computer_os.json b/samples/it_v2/schemas_builder/parts/computer_os.json new file mode 100644 index 0000000..ed449fa --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/computer_os.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "os": { + "type": "string", + "anyOf": [ + { "type": "string" }, + {"enum": [ + "''", + "'Windows XP Home'", + "'Windows XP Pro'", + "'Windows Vista Home'", + "'Windows Vista Pro'", + "'Windows 7 Home'", + "'Windows 7 Pro'", + "'Windows 8 Home'", + "'Windows 8 Pro'", + "'Windows 10 Home'", + "'Windows 10 Pro'", + "'Windows 11 Home'", + "'Windows 11 Pro'" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/computer_type.json b/samples/it_v2/schemas_builder/parts/computer_type.json new file mode 100644 index 0000000..56736a9 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/computer_type.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'notebook'", + "'rack'", + "'slim'", + "'small'", + "'tower'", + "'vm'" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/files.json b/samples/it_v2/schemas_builder/parts/files.json new file mode 100644 index 0000000..0ec1ffa --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/files.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "headfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "files": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + }, + "footfiles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''" + ]} + ] + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/index.json b/samples/it_v2/schemas_builder/parts/index.json new file mode 100644 index 0000000..e7f5731 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/index.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "index": { "type": "integer" } + } +} diff --git a/samples/it_v2/schemas_builder/parts/interfaces.json b/samples/it_v2/schemas_builder/parts/interfaces.json new file mode 100644 index 0000000..c142b3c --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/interfaces.json @@ -0,0 +1,63 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'WIFI'", + "'WAN'", + "'VPN'" + ]} + ] + }, + "ip": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mask": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'255.255.255.0'", + "'255.255.0.0'", + "'255.0.0.0'" + ]} + ] + }, + "gw": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/location.json b/samples/it_v2/schemas_builder/parts/location.json new file mode 100644 index 0000000..1aa74bb --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/location.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "location": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/maintainer.json b/samples/it_v2/schemas_builder/parts/maintainer.json new file mode 100644 index 0000000..97805d4 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/maintainer.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "maintainer": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/maintenance_backups.json b/samples/it_v2/schemas_builder/parts/maintenance_backups.json new file mode 100644 index 0000000..fd8bb64 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/maintenance_backups.json @@ -0,0 +1,86 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "backups": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'none'", + "'hypervisor'", + "'windowsbackup'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "target": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'usb'", + "'pbs'", + "'share'", + "'iscsi'", + "'cloud'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/maintenance_updates.json b/samples/it_v2/schemas_builder/parts/maintenance_updates.json new file mode 100644 index 0000000..dea9a0c --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/maintenance_updates.json @@ -0,0 +1,72 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "updates": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'os'" + ]} + ] + }, + "method": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'manual'" + ]} + ] + }, + "frequency": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'auto'", + "'daily'", + "'weekly'", + "'monthly'", + "'quarterly'", + "'halfyearly'", + "'yearly'", + "'monday'", + "'tuesday'", + "'wednesday'", + "'thursday'", + "'friday'", + "'saturday'", + "'sonday'" + ]} + ] + }, + "time": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'auto'" + ]} + ] + }, + "duration": { + "anyOf": [ + { "type": "string" }, + { "type": "integer" }, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/model.json b/samples/it_v2/schemas_builder/parts/model.json new file mode 100644 index 0000000..b06b1e5 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/model.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "model": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/name.json b/samples/it_v2/schemas_builder/parts/name.json new file mode 100644 index 0000000..912151b --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/name.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/netdev_os.json b/samples/it_v2/schemas_builder/parts/netdev_os.json new file mode 100644 index 0000000..768f8b4 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/netdev_os.json @@ -0,0 +1,16 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "os": { + "type": "string", + "anyOf": [ + { "type": "string" }, + {"enum": [ + "''", + "'Linux'", + "'Debian'" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/netdev_roles.json b/samples/it_v2/schemas_builder/parts/netdev_roles.json new file mode 100644 index 0000000..bdf3926 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/netdev_roles.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "roles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'DHCP'", + "'DNS'", + "'VPN'", + "'Firewall'", + "'Router'" + ]} + ] + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/netdev_type.json b/samples/it_v2/schemas_builder/parts/netdev_type.json new file mode 100644 index 0000000..d62c8d7 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/netdev_type.json @@ -0,0 +1,18 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'box'", + "'rack'", + "'wall'", + "'ceiling'" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/printer_type.json b/samples/it_v2/schemas_builder/parts/printer_type.json new file mode 100644 index 0000000..9ef03c2 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/printer_type.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'printer'", + "'mfc'", + "'large printer'" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/secrets.json b/samples/it_v2/schemas_builder/parts/secrets.json new file mode 100644 index 0000000..d1190d4 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/secrets.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "secrets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "'ad'", + "'https'", + "'ssh'", + "'user'" + ]} + ] + }, + "user": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "password": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "mfa": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'totp'", + "'sms'", + "'e-mail'" + ]} + ] + }, + "value": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/server_os.json b/samples/it_v2/schemas_builder/parts/server_os.json new file mode 100644 index 0000000..e503025 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/server_os.json @@ -0,0 +1,28 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "os": { + "type": "string", + "anyOf": [ + { "type": "string" }, + {"enum": [ + "''", + "'Windows 2000'", + "'Windows 2003'", + "'Windows 2008'", + "'Windows 2008 R2'", + "'Windows 2012'", + "'Windows 2012 R2'", + "'Windows 2016'", + "'Windows 2019'", + "'Windows 2021'", + "'Debian'", + "'Debian / Proxmox VE'", + "'Debian / Proxmox BS'", + "'FreeBSD / OPNSense'", + "'FreeBSD / pfSense'" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/server_roles.json b/samples/it_v2/schemas_builder/parts/server_roles.json new file mode 100644 index 0000000..0d7be1b --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/server_roles.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "roles": { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'DHCP'", + "'DNS'", + "'VPN'", + "'Firewall'", + "'DC'", + "'File Server'", + "'Print Server'", + "'App Server'", + "'Backup Server'", + "'Hypervisor'" + ]} + ] + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/server_type.json b/samples/it_v2/schemas_builder/parts/server_type.json new file mode 100644 index 0000000..23d0666 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/server_type.json @@ -0,0 +1,18 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'mini'", + "'rack'", + "'tower'", + "'vm'" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/software.json b/samples/it_v2/schemas_builder/parts/software.json new file mode 100644 index 0000000..7ffd968 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/software.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "publisher": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "licenses": { + "oneOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/subnet.json b/samples/it_v2/schemas_builder/parts/subnet.json new file mode 100644 index 0000000..f60030b --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/subnet.json @@ -0,0 +1,87 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "subnet": { + "type": "string", + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.0/24'", + "'192.168.1.0/24'" + ]} + ] + }, + "gw": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.1'", + "'192.168.1.1'" + ]} + ] + }, + "dns": { + "type": "array", + "items": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.1'", + "'192.168.1.1'" + ]} + ] + } + }, + "vlans": { + "type": "array", + "items": { + "type": "integer" + } + }, + "dhcp": { + "type": "object", + "properties": { + "server": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.1'", + "'192.168.1.1'" + ]} + ] + }, + "ranges": { + "type": "array", + "items": { + "properties": { + "from": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.20'", + "'192.168.1.20'" + ]} + ] + }, + "to": { + "oneOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'192.168.0.99'", + "'192.168.1.99'" + ]} + ] + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/subnet_name.json b/samples/it_v2/schemas_builder/parts/subnet_name.json new file mode 100644 index 0000000..a1732b3 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/subnet_name.json @@ -0,0 +1,28 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "name": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''", + "'LAN'", + "'LAN01'", + "'LAN02'", + "'LAN03'", + "'LAN04'", + "'LAN06'", + "'LAN07'", + "'LAN08'", + "'LAN09'", + "'LAN10'", + "'WAN'", + "'WIFI'", + "'GUEST'", + "'DMZ'", + "'VPN'" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/templates.json b/samples/it_v2/schemas_builder/parts/templates.json new file mode 100644 index 0000000..34b8504 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/templates.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "templates": { + "type": "object", + "properties": { + "node": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "items": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/title.json b/samples/it_v2/schemas_builder/parts/title.json new file mode 100644 index 0000000..37edba7 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/title.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "title": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } +} diff --git a/samples/it_v2/schemas_builder/parts/toc.json b/samples/it_v2/schemas_builder/parts/toc.json new file mode 100644 index 0000000..ad08ff2 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/toc.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "toc": { "type": "boolean" } + } +} diff --git a/samples/it_v2/schemas_builder/parts/todo.json b/samples/it_v2/schemas_builder/parts/todo.json new file mode 100644 index 0000000..435a71f --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/todo.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "todo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "msg": { + "anyOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "priority": { "type": "integer" }, + "duration": { + "anyOf": [ + {"type": "integer"}, + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/urls.json b/samples/it_v2/schemas_builder/parts/urls.json new file mode 100644 index 0000000..cc7ea48 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/urls.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "object", + "properties": { + "website": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "download": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } + } + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/voipdev_type.json b/samples/it_v2/schemas_builder/parts/voipdev_type.json new file mode 100644 index 0000000..08645fa --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/voipdev_type.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "type": { + "type": "string", + "anyOf": [ + { "type": "string" }, + { "enum": [ + "''", + "'phone'", + "'antenna'", + "'gateway'" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/schemas_builder/parts/wifi.json b/samples/it_v2/schemas_builder/parts/wifi.json new file mode 100644 index 0000000..bda8be8 --- /dev/null +++ b/samples/it_v2/schemas_builder/parts/wifi.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "ssid": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + }, + "key": { + "oneOf": [ + {"type": "string"}, + {"enum": [ + "''" + ]} + ] + } + } +} \ No newline at end of file diff --git a/samples/it_v2/templates/acls.pug b/samples/it_v2/templates/acls.pug new file mode 100644 index 0000000..c3ffc46 --- /dev/null +++ b/samples/it_v2/templates/acls.pug @@ -0,0 +1,15 @@ +div#HEADFILES + +each srv in node.items + h3=srv.data.name + each fld in srv.data.folders + div.itemvmargin + div=fld.path + table + each acl in fld.acls + tr + td=acl.name + td=acl.access + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/adadmins.pug b/samples/it_v2/templates/adadmins.pug new file mode 100644 index 0000000..90d90cf --- /dev/null +++ b/samples/it_v2/templates/adadmins.pug @@ -0,0 +1,13 @@ +div#HEADFILES + +table + thead + th Account + th Notes + each itm in node.items + tr + td=itm.data.name + td=itm.data.notes + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/backups.pug b/samples/it_v2/templates/backups.pug new file mode 100644 index 0000000..73244ac --- /dev/null +++ b/samples/it_v2/templates/backups.pug @@ -0,0 +1,46 @@ +div#HEADFILES +- + const backups = [] + const readNode = (curNode) => { + if(curNode?.data?.backups?.length > 0) { + const nodeItem = { + name: curNode.data.name, + backups: curNode.data.backups, + } + backups.push(nodeItem) + } + curNode.items.forEach((itm) => { + if(itm?.data?.backups?.length > 0) { + const nodeItem = { + name: itm.data.name, + url: curNode.url + '?itm=' + itm.name, + backups: itm.data.backups, + } + backups.push(nodeItem) + } + }) + curNode.nodes.forEach((childNode) => { + readNode(childNode) + }) + } + readNode(doc) + +table + thead + th Devices + th Types + th Content + th Frequency + th Time + th Duration + th Target + each itm in backups + each backup in itm.backups + tr + td + a(href=itm.url)=itm.name + each key in Object.keys(backup) + td=backup[key] + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/cloudadmins.pug b/samples/it_v2/templates/cloudadmins.pug new file mode 100644 index 0000000..90d90cf --- /dev/null +++ b/samples/it_v2/templates/cloudadmins.pug @@ -0,0 +1,13 @@ +div#HEADFILES + +table + thead + th Account + th Notes + each itm in node.items + tr + td=itm.data.name + td=itm.data.notes + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/computers.pug b/samples/it_v2/templates/computers.pug new file mode 100644 index 0000000..164f900 --- /dev/null +++ b/samples/it_v2/templates/computers.pug @@ -0,0 +1,23 @@ +div#HEADFILES +table + thead + th Name + th OS + th IPs + th Emplacement + each computer in node.items + tr + td + a(href=computer.url)=computer.data.name + if (computer.data.os.substr(0,1) == '!') + td.alert=computer.data.os + else + td=computer.data.os + td + if computer.data.interfaces + each interface in computer.data.interfaces + if interface.ip + div=interface.ip + td=computer.data.location +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/dfs.pug b/samples/it_v2/templates/dfs.pug new file mode 100644 index 0000000..557379a --- /dev/null +++ b/samples/it_v2/templates/dfs.pug @@ -0,0 +1,34 @@ +div#HEADFILES + +each itm in node.items + table.itemvmargin + tr + td.bold Name + td.bold=itm.data.name + tr + td Path + td=itm.data.path + tr + td Targets + td + if (itm.data.targets) + each target in itm.data.targets + div=target + if (itm.data.folders) + tr + td Folders + td + table + thead + th Name + th Targets + each fld in itm.data.folders + tr + td=fld.name + td + if (fld.targets) + each target in fld.targets + div=target + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/domains.pug b/samples/it_v2/templates/domains.pug new file mode 100644 index 0000000..0274b21 --- /dev/null +++ b/samples/it_v2/templates/domains.pug @@ -0,0 +1,28 @@ +div#HEADFILES + +table + thead + th Name + th DC + th FSMO + th Members + each itm in node.items + tr + td=itm.name + td + if (itm.data) + each dc in itm.data.dc + div + a(href="/devices/servers?itm="+dc.name)=dc.name + td + if (itm.data) + each dc in itm.data.dc + div=dc.fsmo + td + if (itm.data) + each srv in itm.data.servers + div + a(href="/devices/servers?itm="+srv.name)=srv.name + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/ipam.pug b/samples/it_v2/templates/ipam.pug new file mode 100644 index 0000000..9abf2b3 --- /dev/null +++ b/samples/it_v2/templates/ipam.pug @@ -0,0 +1,72 @@ +div#HEADFILES +- + let dhcpRanges = [] + node.parent.getNode('subnets').items.forEach((itm) => { + itm?.data?.dhcp?.ranges?.forEach((rng) => { + dhcpRanges.push({ + from: rng.from, + to: rng.to, + server: itm.data.dhcp.server, + name: itm.data.name, + }) + }) + }) + dhcpRanges = dhcpRanges.sort((a,b)=>{return compareIP(a.from, b.from)}) + let ipNodes = [] + node.parent.parent.getNode('devices')?.nodes?.forEach((nd) => { + nd.items.forEach((itm) => { + if(itm.data.interfaces) { + itm.data.interfaces.forEach((nic) => { + if(nic.ip) ipNodes.push({ + ip: nic.ip, + node: nd, + item: itm, + }) + }) + } + }) + }) + ipNodes = ipNodes.sort((a,b)=>{return compareIP(a.ip, b.ip)}) +if dhcpRanges.length > 0 + h3 DHCP ranges + table + thead + th Subnet + th Server + th From + th To + each rng in dhcpRanges + tr + td=rng.name + td=rng.server + td=rng.from + td=rng.to +if ipNodes.length > 0 + h3 Static IPs + table + thead + th IP + th Name + th Model + th OS + each nd in ipNodes + tr + td=nd.ip + td + a(href=nd.item.url)=nd.item.data.name + if (nd.item.data.model) + if (nd.item.data.model.substr(0,1) == '!') + td.alert=nd.item.data.model + else + td=nd.item.data.model + else + td + if (nd.item.data.os) + if (nd.item.data.os.substr(0,1) == '!') + td.alert=nd.item.data.os + else + td=nd.item.data.os + else + td +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/maintenances.pug b/samples/it_v2/templates/maintenances.pug new file mode 100644 index 0000000..a969230 --- /dev/null +++ b/samples/it_v2/templates/maintenances.pug @@ -0,0 +1,56 @@ +div#HEADFILES +- + const maintenances = [] + let fulltime = 0 + const readNode = (curNode) => { + if(curNode?.data?.maintenances?.length > 0) { + const nodeItem = { + name: curNode.data.name, + maintenances: curNode.data.maintenances, + } + maintenances.push(nodeItem) + } + curNode.items.forEach((itm) => { + if(itm?.data?.maintenances?.length > 0) { + const nodeItem = { + name: itm.data.name, + maintenances: itm.data.maintenances, + } + nodeItem?.maintenances?.forEach((maintenance) => { + if(maintenance.yearlytime) fulltime += maintenance.yearlytime + }) + maintenances.push(nodeItem) + } + }) + curNode.nodes.forEach((childNode) => { + readNode(childNode) + }) + } + readNode(doc) +table + each itm in maintenances + tr + td=itm.name + td + table + thead + th Type + th Frequency + th Yearly time + th Todo + each maintenance in itm.maintenances + tr + td=maintenance.type + td=maintenance.frequency + if typeof maintenance.yearlytime === 'number' + td=maintenance.yearlytime + ' min' + else + td + td=maintenance.action +table + tr + td Yearly time : + td=((fulltime / 60) + '').split('.')[0] + ' hour' + td=((fulltime / 60) + '').split('.')[0] * 130 + ':' + ((fulltime / 60) + '').split('.')[0] * 100 + ' / Years' +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/ms365admins.pug b/samples/it_v2/templates/ms365admins.pug new file mode 100644 index 0000000..90d90cf --- /dev/null +++ b/samples/it_v2/templates/ms365admins.pug @@ -0,0 +1,13 @@ +div#HEADFILES + +table + thead + th Account + th Notes + each itm in node.items + tr + td=itm.data.name + td=itm.data.notes + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/ms365sharepoint.pug b/samples/it_v2/templates/ms365sharepoint.pug new file mode 100644 index 0000000..712b814 --- /dev/null +++ b/samples/it_v2/templates/ms365sharepoint.pug @@ -0,0 +1,11 @@ +div#HEADFILES + +each itm in node.items + table + tr + td.bold=itm.data.name + tr + td=itm.data.url + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/ms365users.pug b/samples/it_v2/templates/ms365users.pug new file mode 100644 index 0000000..1d5f3a3 --- /dev/null +++ b/samples/it_v2/templates/ms365users.pug @@ -0,0 +1,17 @@ +div#HEADFILES + +table + thead + th Name + th E-Mail + th Password + th License + each itm in node.items + tr + td=itm.data.name + td=itm.data.email + td=itm.data.password + td=itm.data.license + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/netdevs.pug b/samples/it_v2/templates/netdevs.pug new file mode 100644 index 0000000..cf72bce --- /dev/null +++ b/samples/it_v2/templates/netdevs.pug @@ -0,0 +1,20 @@ +div#HEADFILES +table + thead + th Name + th Model + th IPs + th Location + each netdev in node.items + tr + td + a(href=netdev.url)=netdev.data.name + td=netdev.data.model + td + if netdev.data.interfaces + each interface in netdev.data.interfaces + if interface.ip + div=interface.ip + td=netdev.data.location +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/printers.pug b/samples/it_v2/templates/printers.pug new file mode 100644 index 0000000..aca9393 --- /dev/null +++ b/samples/it_v2/templates/printers.pug @@ -0,0 +1,22 @@ +div#HEADFILES +table + thead + th Name + th Type + th Model + th IPs + th Location + each printer in node.items + tr + td + a(href=printer.url)=printer.data.name + td=printer.data.type + td=printer.data.model + td + if printer.data.interfaces + each interface in printer.data.interfaces + if interface.ip + div=interface.ip + td=printer.data.location +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/ran.pug b/samples/it_v2/templates/ran.pug new file mode 100644 index 0000000..6638f46 --- /dev/null +++ b/samples/it_v2/templates/ran.pug @@ -0,0 +1,16 @@ +div#HEADFILES +table + thead + th Name + th Type + th Model + th Location + each ran in node.items + tr + td + a(href=ran.url)=ran.data.name + td=ran.data.type + td=ran.data.model + td=ran.data.location +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/secrets.pug b/samples/it_v2/templates/secrets.pug new file mode 100644 index 0000000..1944567 --- /dev/null +++ b/samples/it_v2/templates/secrets.pug @@ -0,0 +1,31 @@ +div#HEADFILES +table + tr + th + th Type + th User + th Password + each item in node.items + - var i=0 + each secret in item.data.secrets + tr + if i == 0 + td(style='font-weight:bold')=item.data.name + else + td + if secret.port + td=secret.type+' ('+secret.port+')' + else + td=secret.type + td=secret.user + td=secret.password + if secret.mfa + each mfa in secret.mfa + tr + td + td mfa (#{mfa.type}) + td(colspan=2)=mfa.value + + - i+=1 +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/servers.pug b/samples/it_v2/templates/servers.pug new file mode 100644 index 0000000..9224a61 --- /dev/null +++ b/samples/it_v2/templates/servers.pug @@ -0,0 +1,28 @@ +div#HEADFILES +table + thead + th Name + th Roles + th OS + th IPs + th Location + each server in node.items + tr + td + a(href=server.url)=server.data.name + td + if server.data.roles + each role in server.data.roles + div=role + if (server.data.os.substr(0,1) == '!') + td.alert=server.data.os + else + td=server.data.os + td + if server.data.interfaces + each interface in server.data.interfaces + if interface.ip + div=interface.ip + td=server.data.location +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/shares.pug b/samples/it_v2/templates/shares.pug new file mode 100644 index 0000000..28d1b6e --- /dev/null +++ b/samples/it_v2/templates/shares.pug @@ -0,0 +1,17 @@ +div#HEADFILES + +each srv in node.items + h3=srv.data.name + h4 Folders + table + each fileshare in srv.data.fileshares + tr + td=fileshare.path + h4 Printers + table + each printshare in srv.data.printshares + tr + td=printshare.path + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/softwares.pug b/samples/it_v2/templates/softwares.pug new file mode 100644 index 0000000..e60d454 --- /dev/null +++ b/samples/it_v2/templates/softwares.pug @@ -0,0 +1,14 @@ +div#HEADFILES +table + thead + th Name + th Publisher + th Licenses + each software in node.items + tr + td + a(href=software.url)=software.data.name + td=software.data.publisher + td=software.data.licenses +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/subnets.pug b/samples/it_v2/templates/subnets.pug new file mode 100644 index 0000000..b3f22e3 --- /dev/null +++ b/samples/it_v2/templates/subnets.pug @@ -0,0 +1,25 @@ +div#HEADFILES +table + thead + th Name + th Subnet + th Gateway + th DNS + th VLANS + each subnet in node.items + tr + td=subnet.data.name + td=subnet.data.subnet + td=subnet.data.gw + td + if subnet.data.dns + each dns in subnet.data.dns + div=dns + td + if subnet.data.vlans + -var array = [] + each vlan in subnet.data.vlans + -array.push(vlan) + div=array +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/todos.pug b/samples/it_v2/templates/todos.pug new file mode 100644 index 0000000..413cedd --- /dev/null +++ b/samples/it_v2/templates/todos.pug @@ -0,0 +1,59 @@ +div#HEADFILES +- + let todos = [] + const readNode = (curNode) => { + if(curNode?.todo?.length > 0) { + curNode.todo.forEach((itm) => { + const nodeItem = { + name: curNode.name, + url: curNode.url, + todo: itm, + } + todos.push(nodeItem) + }) + } + + curNode.items.forEach((itm) => { + if(itm?.data?.todo?.length > 0) { + itm.data.todo.forEach((todo) => { + const nodeItem = { + name: itm.data.name, + url: curNode.url + '?itm=' + itm.name, + todo: todo, + } + todos.push(nodeItem) + }) + } + }) + + curNode.nodes.forEach((childNode) => { + readNode(childNode) + }) + } + + readNode(doc) + todos = todos.sort((x, y) => { + return (y.todo.priority - x.todo.priority) + }) + +table + thead + th Priority + th Object + th Message + each itm in todos + if itm.todo.priority >= 10 + tr.alert + td=itm.todo.priority + td + a.alert(href=itm.url)=itm.name + td=itm.todo.msg + else + tr + td=itm.todo.priority + td + a(href=itm.url)=itm.name + td=itm.todo.msg + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/updates.pug b/samples/it_v2/templates/updates.pug new file mode 100644 index 0000000..0797cc3 --- /dev/null +++ b/samples/it_v2/templates/updates.pug @@ -0,0 +1,45 @@ +div#HEADFILES +- + const updates = [] + const readNode = (curNode) => { + if(curNode?.data?.updates?.length > 0) { + const nodeItem = { + name: curNode.data.name, + updates: curNode.data.updates, + } + updates.push(nodeItem) + } + curNode.items.forEach((itm) => { + if(itm?.data?.updates?.length > 0) { + const nodeItem = { + name: itm.data.name, + url: curNode.url + '?itm=' + itm.name, + updates: itm.data.updates, + } + updates.push(nodeItem) + } + }) + curNode.nodes.forEach((childNode) => { + readNode(childNode) + }) + } + readNode(doc) + +table + thead + th Devices + th Types + th Method + th Frequency + th Time + th Duration + each itm in updates + each update in itm.updates + tr + td + a(href=itm.url)=itm.name + each key in Object.keys(update) + td=update[key] + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/usergroups.pug b/samples/it_v2/templates/usergroups.pug new file mode 100644 index 0000000..da54ee3 --- /dev/null +++ b/samples/it_v2/templates/usergroups.pug @@ -0,0 +1,11 @@ +div#HEADFILES + +each dom in node.items + h3=dom.data.name + table + each usergroup in dom.data.usergroups + tr + td=usergroup.name + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/webdomains.pug b/samples/it_v2/templates/webdomains.pug new file mode 100644 index 0000000..b4f186b --- /dev/null +++ b/samples/it_v2/templates/webdomains.pug @@ -0,0 +1,18 @@ +div#HEADFILES + +table + thead + th Name + th Notes + each itm in node.items + tr + td=itm.data.name + td=itm.data.notes + if itm.data.aliases + each alias in itm.data.aliases + tr + td=alias.name + td=alias.notes + +div#FILES +div#FOOTFILES diff --git a/samples/it_v2/templates/wifis.pug b/samples/it_v2/templates/wifis.pug new file mode 100644 index 0000000..6547170 --- /dev/null +++ b/samples/it_v2/templates/wifis.pug @@ -0,0 +1,13 @@ +div#HEADFILES +table + thead + th Subnet + th SSID + th Key + each wifi in node.items + tr + td=wifi.data.name + td=wifi.data.ssid + td=wifi.data.key +div#FILES +div#FOOTFILES diff --git a/src/core/jsondoc.js b/src/core/jsondoc.js index 2fab9f9..96779a2 100644 --- a/src/core/jsondoc.js +++ b/src/core/jsondoc.js @@ -17,6 +17,7 @@ const load = (yamlFile) => { }, }, root: { + todo: [], name: '', title: '', toc: false, @@ -55,6 +56,7 @@ const load = (yamlFile) => { const nodePathParts = nodePath.split(path.sep) const nodeName = (parentNode)?nodePathParts[nodePathParts.length - 1]:'root' const node = { + todo: [], index: 100, name: nodeName, title: nodeName, @@ -78,6 +80,7 @@ const load = (yamlFile) => { const yamlNode = YAML.parse(fs.readFileSync(path.join(nodePath, '_index.yaml'), 'utf8')) if(yamlNode) { + if(yamlNode.todo) node.todo = yamlNode.todo if(yamlNode.index) node.index = yamlNode.index if(yamlNode.title) node.title = yamlNode.title if(yamlNode.toc == false) node.toc = yamlNode.toc