@takodotid/circuit 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +11 -0
- package/dist/types/schema/system.d.ts +2 -0
- package/package.json +6 -1
- package/src/adapters/devices/fortios/render.ts +4 -0
- package/src/adapters/devices/junos/index.ts +1 -0
- package/src/adapters/devices/raisecom-ros/index.ts +2 -0
- package/src/adapters/devices/routeros/index.ts +1 -0
- package/src/adapters/devices/vrp/index.ts +2 -0
- package/src/schema/system.ts +2 -0
package/dist/cli/index.js
CHANGED
|
@@ -2450,6 +2450,9 @@ function routed(entry, device, name, settings, access) {
|
|
|
2450
2450
|
entry.set("allowaccess", access);
|
|
2451
2451
|
return;
|
|
2452
2452
|
}
|
|
2453
|
+
const answering = device.management?.interfaces;
|
|
2454
|
+
if (answering && !answering.includes(name))
|
|
2455
|
+
access = "ping";
|
|
2453
2456
|
const addresses = addressesOf2(settings);
|
|
2454
2457
|
const ipv4 = addresses.filter((address) => familyOf2(host2(address)) === "ipv4");
|
|
2455
2458
|
const ipv6 = addresses.filter((address) => familyOf2(host2(address)) === "ipv6");
|
|
@@ -4890,6 +4893,8 @@ function unsupported2(device) {
|
|
|
4890
4893
|
}
|
|
4891
4894
|
if (management.console)
|
|
4892
4895
|
found.push("management.console, the console uses the device's users");
|
|
4896
|
+
if (management.interfaces)
|
|
4897
|
+
found.push("management.interfaces, which only FortiOS builds for now");
|
|
4893
4898
|
if (management.native?.interfaces?.length)
|
|
4894
4899
|
found.push("management.native.interfaces, NETCONF runs over IP only");
|
|
4895
4900
|
if (management.ssh?.auth_timeout || management.ssh?.auth_retries)
|
|
@@ -5613,6 +5618,8 @@ async function read3(device, _network = [], options = {}) {
|
|
|
5613
5618
|
}
|
|
5614
5619
|
function unsupported3(device) {
|
|
5615
5620
|
const found = [];
|
|
5621
|
+
if (device.management?.interfaces)
|
|
5622
|
+
found.push("management.interfaces, which only FortiOS builds for now");
|
|
5616
5623
|
for (const [name, iface] of Object.entries(device.interfaces ?? {})) {
|
|
5617
5624
|
if (iface.type === "bridge")
|
|
5618
5625
|
found.push(`interfaces.${name}, a bridge, which only FortiOS builds for now`);
|
|
@@ -7624,6 +7631,8 @@ function unsupported4(device) {
|
|
|
7624
7631
|
const management = device.management;
|
|
7625
7632
|
if (management?.console)
|
|
7626
7633
|
found.push("management.console, the console uses the device's users");
|
|
7634
|
+
if (management?.interfaces)
|
|
7635
|
+
found.push("management.interfaces, which only FortiOS builds for now");
|
|
7627
7636
|
if (management?.privilege_password)
|
|
7628
7637
|
found.push("management.privilege_password, the platform has no privileged mode");
|
|
7629
7638
|
if (management?.snmp?.port)
|
|
@@ -8276,6 +8285,8 @@ function configurationOf(device, dump) {
|
|
|
8276
8285
|
}
|
|
8277
8286
|
function unsupported5(device) {
|
|
8278
8287
|
const found = [];
|
|
8288
|
+
if (device.management?.interfaces)
|
|
8289
|
+
found.push("management.interfaces, which only FortiOS builds for now");
|
|
8279
8290
|
for (const [name, iface] of Object.entries(device.interfaces ?? {})) {
|
|
8280
8291
|
if (iface.type === "bridge")
|
|
8281
8292
|
found.push(`interfaces.${name}, a bridge, which only FortiOS builds for now`);
|
|
@@ -84,6 +84,8 @@ export type SnmpUser = {
|
|
|
84
84
|
export type Management<I extends string, C extends string> = {
|
|
85
85
|
/** Sources allowed to every service that does not set its own. */
|
|
86
86
|
allow?: readonly Prefix[];
|
|
87
|
+
/** The ports and interfaces the services answer on; every other one answers ping alone. Every one with an address when absent. */
|
|
88
|
+
interfaces?: readonly I[];
|
|
87
89
|
/** Secure shell. */
|
|
88
90
|
ssh?: Service & {
|
|
89
91
|
/** Also offer legacy ciphers, MACs and key exchanges. Off when absent. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@takodotid/circuit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "Declarative, vendor-neutral network configuration: describe each device in TypeScript, and Circuit makes the device match. Alpha.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"network",
|
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
"name": "Rafly Maulana",
|
|
41
41
|
"email": "rafly@tako.id",
|
|
42
42
|
"url": "https://raflymaulana.com"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "hzmi",
|
|
46
|
+
"email": "hzmi@tako.id",
|
|
47
|
+
"url": "https://hzmi.xyz"
|
|
43
48
|
}
|
|
44
49
|
],
|
|
45
50
|
"type": "module",
|
|
@@ -495,6 +495,10 @@ function routed(entry: Block, device: Device, name: string, settings: RoutedSett
|
|
|
495
495
|
return;
|
|
496
496
|
}
|
|
497
497
|
|
|
498
|
+
// Services answer only where the config says, when it says; ping everywhere.
|
|
499
|
+
const answering = device.management?.interfaces;
|
|
500
|
+
if (answering && !answering.includes(name)) access = "ping";
|
|
501
|
+
|
|
498
502
|
const addresses = addressesOf(settings);
|
|
499
503
|
const ipv4 = addresses.filter((address) => familyOf(host(address)) === "ipv4");
|
|
500
504
|
const ipv6 = addresses.filter((address) => familyOf(host(address)) === "ipv6");
|
|
@@ -595,6 +595,7 @@ export function unsupported(device: Device): string[] {
|
|
|
595
595
|
}
|
|
596
596
|
|
|
597
597
|
if (management.console) found.push("management.console, the console uses the device's users");
|
|
598
|
+
if (management.interfaces) found.push("management.interfaces, which only FortiOS builds for now");
|
|
598
599
|
if (management.native?.interfaces?.length) found.push("management.native.interfaces, NETCONF runs over IP only");
|
|
599
600
|
if (management.ssh?.auth_timeout || management.ssh?.auth_retries) found.push("management.ssh.auth_timeout and auth_retries");
|
|
600
601
|
|
|
@@ -420,6 +420,8 @@ export async function read(device: Device, _network: readonly Device[] = [], opt
|
|
|
420
420
|
export function unsupported(device: Device): string[] {
|
|
421
421
|
const found: string[] = [];
|
|
422
422
|
|
|
423
|
+
if (device.management?.interfaces) found.push("management.interfaces, which only FortiOS builds for now");
|
|
424
|
+
|
|
423
425
|
for (const [name, iface] of Object.entries(device.interfaces ?? {})) {
|
|
424
426
|
if (iface.type === "bridge") found.push(`interfaces.${name}, a bridge, which only FortiOS builds for now`);
|
|
425
427
|
if (iface.type === "vlan" && iface.mac) found.push(`interfaces.${name}.mac, which only RouterOS sets for now`);
|
|
@@ -192,6 +192,7 @@ export function unsupported(device: Device): string[] {
|
|
|
192
192
|
const management = device.management;
|
|
193
193
|
|
|
194
194
|
if (management?.console) found.push("management.console, the console uses the device's users");
|
|
195
|
+
if (management?.interfaces) found.push("management.interfaces, which only FortiOS builds for now");
|
|
195
196
|
if (management?.privilege_password) found.push("management.privilege_password, the platform has no privileged mode");
|
|
196
197
|
|
|
197
198
|
if (management?.snmp?.port) found.push("management.snmp.port");
|
|
@@ -639,6 +639,8 @@ function configurationOf(device: Device, dump: string): string {
|
|
|
639
639
|
export function unsupported(device: Device): string[] {
|
|
640
640
|
const found: string[] = [];
|
|
641
641
|
|
|
642
|
+
if (device.management?.interfaces) found.push("management.interfaces, which only FortiOS builds for now");
|
|
643
|
+
|
|
642
644
|
for (const [name, iface] of Object.entries(device.interfaces ?? {})) {
|
|
643
645
|
if (iface.type === "bridge") found.push(`interfaces.${name}, a bridge, which only FortiOS builds for now`);
|
|
644
646
|
if (iface.type === "vlan" && iface.mac) found.push(`interfaces.${name}.mac, which only RouterOS sets for now`);
|
package/src/schema/system.ts
CHANGED
|
@@ -89,6 +89,8 @@ export type SnmpUser = {
|
|
|
89
89
|
export type Management<I extends string, C extends string> = {
|
|
90
90
|
/** Sources allowed to every service that does not set its own. */
|
|
91
91
|
allow?: readonly Prefix[];
|
|
92
|
+
/** The ports and interfaces the services answer on; every other one answers ping alone. Every one with an address when absent. */
|
|
93
|
+
interfaces?: readonly I[];
|
|
92
94
|
/** Secure shell. */
|
|
93
95
|
ssh?: Service & {
|
|
94
96
|
/** Also offer legacy ciphers, MACs and key exchanges. Off when absent. */
|