@owine/unifi-network-mcp 2.15.0 → 3.1.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/LICENSE +21 -0
- package/README.md +257 -77
- package/dist/client.d.ts +26 -1
- package/dist/client.js +199 -24
- package/dist/config.d.ts +11 -0
- package/dist/config.js +102 -3
- package/dist/guard.d.ts +46 -0
- package/dist/guard.js +180 -0
- package/dist/index.js +17 -4
- package/dist/instructions.d.ts +9 -0
- package/dist/instructions.js +32 -0
- package/dist/tls.d.ts +14 -0
- package/dist/tls.js +58 -0
- package/dist/tools/acl.js +123 -50
- package/dist/tools/classic.d.ts +3 -0
- package/dist/tools/classic.js +54 -0
- package/dist/tools/client-history.js +22 -12
- package/dist/tools/clients.js +10 -9
- package/dist/tools/devices.js +21 -20
- package/dist/tools/dns-policies.js +27 -27
- package/dist/tools/exposure.d.ts +3 -0
- package/dist/tools/exposure.js +118 -0
- package/dist/tools/firewall.d.ts +2 -1
- package/dist/tools/firewall.js +200 -75
- package/dist/tools/hotspot.js +35 -28
- package/dist/tools/index.d.ts +13 -1
- package/dist/tools/index.js +67 -4
- package/dist/tools/networks.d.ts +2 -1
- package/dist/tools/networks.js +44 -31
- package/dist/tools/sites.js +2 -2
- package/dist/tools/supporting.js +22 -21
- package/dist/tools/switching.js +16 -15
- package/dist/tools/system.js +1 -1
- package/dist/tools/traffic-matching.d.ts +2 -1
- package/dist/tools/traffic-matching.js +22 -20
- package/dist/tools/wifi.js +76 -30
- package/dist/utils/full-put.d.ts +11 -2
- package/dist/utils/full-put.js +25 -2
- package/dist/utils/output-schemas.d.ts +241 -4
- package/dist/utils/output-schemas.js +225 -49
- package/dist/utils/params.d.ts +12 -0
- package/dist/utils/params.js +21 -0
- package/dist/utils/pick.d.ts +6 -0
- package/dist/utils/pick.js +11 -0
- package/dist/utils/responses.d.ts +2 -0
- package/dist/utils/responses.js +28 -2
- package/dist/utils/safety.d.ts +35 -1
- package/dist/utils/safety.js +53 -3
- package/dist/utils/secrets.js +3 -0
- package/dist/utils/wan-exposure.d.ts +69 -0
- package/dist/utils/wan-exposure.js +245 -0
- package/dist/write-log.d.ts +52 -0
- package/dist/write-log.js +178 -0
- package/dist/write-tools.d.ts +27 -0
- package/dist/write-tools.js +50 -0
- package/package.json +19 -15
package/dist/utils/full-put.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Read-merge-write support for UniFi's full-replacement PUT endpoints.
|
|
3
3
|
*
|
|
4
|
-
* Several Integration API PUTs (WiFi broadcasts, networks, firewall policies
|
|
5
|
-
* replace the whole resource: required fields must all be present, and some
|
|
4
|
+
* Several Integration API PUTs (WiFi broadcasts, networks, firewall policies,
|
|
5
|
+
* ACL rules, DNS policies) replace the whole resource: required fields must all be present, and some
|
|
6
6
|
* optional fields carry meaning when omitted (a missing `dhcpGuarding`
|
|
7
7
|
* disables DHCP guarding; a missing `reportFlowEnabled` reverts to true). A
|
|
8
8
|
* sparse body therefore either fails or silently resets settings.
|
|
@@ -21,3 +21,12 @@ export declare function unsupportedFields(updates: JsonObject, allowedFields: re
|
|
|
21
21
|
export declare function missingFields(body: JsonObject, requiredFields: readonly string[]): string[];
|
|
22
22
|
/** Copy only the defined entries, so optional inputs the caller skipped are not sent. */
|
|
23
23
|
export declare function definedEntries(values: JsonObject): JsonObject;
|
|
24
|
+
/**
|
|
25
|
+
* Run one read-merge-write cycle at a time per resource. Agents often split
|
|
26
|
+
* "rename X and enable logging" into parallel calls; unserialised, both read
|
|
27
|
+
* the old resource and the second PUT silently reverts the first change.
|
|
28
|
+
* The queue is per process and keyed on the exact path string, so every
|
|
29
|
+
* writer of a resource (including the firewall-policy PATCH) must lock the
|
|
30
|
+
* same path.
|
|
31
|
+
*/
|
|
32
|
+
export declare function withResourceLock<T>(path: string, fn: () => Promise<T>): Promise<T>;
|
package/dist/utils/full-put.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Read-merge-write support for UniFi's full-replacement PUT endpoints.
|
|
4
4
|
*
|
|
5
|
-
* Several Integration API PUTs (WiFi broadcasts, networks, firewall policies
|
|
6
|
-
* replace the whole resource: required fields must all be present, and some
|
|
5
|
+
* Several Integration API PUTs (WiFi broadcasts, networks, firewall policies,
|
|
6
|
+
* ACL rules, DNS policies) replace the whole resource: required fields must all be present, and some
|
|
7
7
|
* optional fields carry meaning when omitted (a missing `dhcpGuarding`
|
|
8
8
|
* disables DHCP guarding; a missing `reportFlowEnabled` reverts to true). A
|
|
9
9
|
* sparse body therefore either fails or silently resets settings.
|
|
@@ -19,6 +19,7 @@ exports.mergeForPut = mergeForPut;
|
|
|
19
19
|
exports.unsupportedFields = unsupportedFields;
|
|
20
20
|
exports.missingFields = missingFields;
|
|
21
21
|
exports.definedEntries = definedEntries;
|
|
22
|
+
exports.withResourceLock = withResourceLock;
|
|
22
23
|
function asObject(value, what) {
|
|
23
24
|
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
24
25
|
throw new Error(`Expected ${what} to be a JSON object`);
|
|
@@ -49,3 +50,25 @@ function missingFields(body, requiredFields) {
|
|
|
49
50
|
function definedEntries(values) {
|
|
50
51
|
return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== undefined));
|
|
51
52
|
}
|
|
53
|
+
const resourceQueues = new Map();
|
|
54
|
+
/**
|
|
55
|
+
* Run one read-merge-write cycle at a time per resource. Agents often split
|
|
56
|
+
* "rename X and enable logging" into parallel calls; unserialised, both read
|
|
57
|
+
* the old resource and the second PUT silently reverts the first change.
|
|
58
|
+
* The queue is per process and keyed on the exact path string, so every
|
|
59
|
+
* writer of a resource (including the firewall-policy PATCH) must lock the
|
|
60
|
+
* same path.
|
|
61
|
+
*/
|
|
62
|
+
async function withResourceLock(path, fn) {
|
|
63
|
+
const previous = resourceQueues.get(path) ?? Promise.resolve();
|
|
64
|
+
const run = previous.then(fn);
|
|
65
|
+
const settled = run.then(() => undefined, () => undefined);
|
|
66
|
+
resourceQueues.set(path, settled);
|
|
67
|
+
try {
|
|
68
|
+
return await run;
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
if (resourceQueues.get(path) === settled)
|
|
72
|
+
resourceQueues.delete(path);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,14 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Output schemas for
|
|
3
|
-
*
|
|
2
|
+
* Output schemas for every read tool, and for write tools whose response
|
|
3
|
+
* echoes the resource (loose strategy: every non-key
|
|
4
|
+
* field optional, every nested object uses .loose() to allow
|
|
4
5
|
* firmware/hardware-specific fields to flow through unchanged).
|
|
5
6
|
*
|
|
6
7
|
* Verified against UniFi Network API 11.0.83. Where the docs collapse
|
|
7
8
|
* nested arrays/objects (e.g. interfaces.ports[], radios[]), the schema
|
|
8
|
-
* uses
|
|
9
|
-
* haven't verified.
|
|
9
|
+
* uses loose records so the contract doesn't lock to fields we
|
|
10
|
+
* haven't verified. Tools register these raw shapes, and registerAllTools()
|
|
11
|
+
* publishes each as a loose object (src/tools/index.ts), so fields a schema
|
|
12
|
+
* does not list never fail client-side validation.
|
|
10
13
|
*/
|
|
11
14
|
import { z } from "zod";
|
|
15
|
+
/**
|
|
16
|
+
* The outputSchema to publish for a tool: always a loose object, whether the
|
|
17
|
+
* tool passed a raw shape or a Zod object (the SDK accepts both). Wrapping a
|
|
18
|
+
* Zod object in z.looseObject() would build a broken schema that makes
|
|
19
|
+
* tools/list throw for every tool.
|
|
20
|
+
*/
|
|
21
|
+
export declare function looseOutput(schema: z.ZodRawShape | z.ZodObject): z.ZodObject;
|
|
22
|
+
export declare function writeResult<T extends z.ZodRawShape>(shape: T): { -readonly [k in keyof { -readonly [P in keyof T]: T[P]; }]: z.ZodOptional<{ -readonly [P in keyof T]: T[P]; }[k]>; } & {
|
|
23
|
+
readonly dryRun: z.ZodOptional<z.ZodLiteral<true>>;
|
|
24
|
+
readonly wouldExecute: z.ZodOptional<z.ZodObject<{
|
|
25
|
+
method: z.ZodString;
|
|
26
|
+
path: z.ZodString;
|
|
27
|
+
body: z.ZodOptional<z.ZodUnknown>;
|
|
28
|
+
}, z.core.$loose>>;
|
|
29
|
+
readonly confirmationRequired: z.ZodOptional<z.ZodString>;
|
|
30
|
+
};
|
|
12
31
|
export declare const getInfoOutputSchema: {
|
|
13
32
|
applicationVersion: z.ZodOptional<z.ZodString>;
|
|
14
33
|
};
|
|
@@ -709,6 +728,9 @@ export declare const listClientHistoryOutputSchema: {
|
|
|
709
728
|
status: z.ZodOptional<z.ZodString>;
|
|
710
729
|
}, z.core.$loose>>;
|
|
711
730
|
readonly count: z.ZodNumber;
|
|
731
|
+
readonly totalCount: z.ZodNumber;
|
|
732
|
+
readonly limit: z.ZodNumber;
|
|
733
|
+
readonly truncated: z.ZodBoolean;
|
|
712
734
|
readonly withinHours: z.ZodNumber;
|
|
713
735
|
readonly coverage: z.ZodString;
|
|
714
736
|
};
|
|
@@ -731,3 +753,218 @@ export declare const listClientSessionsOutputSchema: {
|
|
|
731
753
|
readonly end: z.ZodNumber;
|
|
732
754
|
readonly coverage: z.ZodString;
|
|
733
755
|
};
|
|
756
|
+
export declare const ClassicNetwork: z.ZodObject<{
|
|
757
|
+
_id: z.ZodString;
|
|
758
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
759
|
+
purpose: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
760
|
+
vlan: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
761
|
+
vlan_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
762
|
+
ip_subnet: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
763
|
+
networkgroup: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
764
|
+
enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
765
|
+
dhcpd_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
766
|
+
dhcpd_start: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
767
|
+
dhcpd_stop: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
768
|
+
domain_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
769
|
+
igmp_snooping: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
770
|
+
mdns_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
771
|
+
network_isolation_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
772
|
+
internet_access_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
773
|
+
firewall_zone_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
774
|
+
is_nat: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
775
|
+
ipv6_interface_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
776
|
+
setting_preference: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
777
|
+
}, z.core.$loose>;
|
|
778
|
+
export declare const ClassicFirewallGroup: z.ZodObject<{
|
|
779
|
+
_id: z.ZodString;
|
|
780
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
781
|
+
group_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
782
|
+
group_members: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
783
|
+
}, z.core.$loose>;
|
|
784
|
+
export declare const LegacyFirewallRule: z.ZodObject<{
|
|
785
|
+
_id: z.ZodString;
|
|
786
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
787
|
+
enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
788
|
+
ruleset: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
789
|
+
rule_index: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
790
|
+
action: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
791
|
+
protocol: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
792
|
+
protocol_v6: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
793
|
+
protocol_match_excepted: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
794
|
+
icmp_typename: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
795
|
+
icmpv6_typename: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
796
|
+
logging: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
797
|
+
state_established: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
798
|
+
state_related: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
799
|
+
state_new: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
800
|
+
state_invalid: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
801
|
+
src_firewallgroup_ids: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
802
|
+
src_networkconf_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
803
|
+
src_networkconf_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
804
|
+
src_address: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
805
|
+
src_address_ipv6: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
806
|
+
src_mac_address: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
807
|
+
src_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
808
|
+
dst_firewallgroup_ids: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
809
|
+
dst_networkconf_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
810
|
+
dst_networkconf_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
811
|
+
dst_address: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
812
|
+
dst_address_ipv6: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
813
|
+
dst_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
814
|
+
ipsec: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
815
|
+
setting_preference: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
816
|
+
}, z.core.$loose>;
|
|
817
|
+
/** Envelope of a classic REST collection; rows stay unknown until the allowlist is applied. */
|
|
818
|
+
export declare const ClassicEnvelope: z.ZodObject<{
|
|
819
|
+
meta: z.ZodObject<{
|
|
820
|
+
rc: z.ZodLiteral<"ok">;
|
|
821
|
+
}, z.core.$loose>;
|
|
822
|
+
data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
823
|
+
}, z.core.$strip>;
|
|
824
|
+
export declare const listClassicNetworksOutputSchema: {
|
|
825
|
+
readonly data: z.ZodArray<z.ZodObject<{
|
|
826
|
+
_id: z.ZodString;
|
|
827
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
828
|
+
purpose: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
829
|
+
vlan: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
830
|
+
vlan_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
831
|
+
ip_subnet: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
832
|
+
networkgroup: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
833
|
+
enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
834
|
+
dhcpd_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
835
|
+
dhcpd_start: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
836
|
+
dhcpd_stop: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
837
|
+
domain_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
838
|
+
igmp_snooping: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
839
|
+
mdns_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
840
|
+
network_isolation_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
841
|
+
internet_access_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
842
|
+
firewall_zone_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
843
|
+
is_nat: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
844
|
+
ipv6_interface_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
845
|
+
setting_preference: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
846
|
+
}, z.core.$loose>>;
|
|
847
|
+
readonly count: z.ZodNumber;
|
|
848
|
+
readonly siteReference: z.ZodString;
|
|
849
|
+
};
|
|
850
|
+
export declare const listFirewallGroupsOutputSchema: {
|
|
851
|
+
readonly data: z.ZodArray<z.ZodObject<{
|
|
852
|
+
_id: z.ZodString;
|
|
853
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
854
|
+
group_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
855
|
+
group_members: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
856
|
+
}, z.core.$loose>>;
|
|
857
|
+
readonly count: z.ZodNumber;
|
|
858
|
+
readonly siteReference: z.ZodString;
|
|
859
|
+
};
|
|
860
|
+
export declare const listLegacyFirewallRulesOutputSchema: {
|
|
861
|
+
readonly data: z.ZodArray<z.ZodObject<{
|
|
862
|
+
_id: z.ZodString;
|
|
863
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
864
|
+
enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
865
|
+
ruleset: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
866
|
+
rule_index: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
867
|
+
action: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
868
|
+
protocol: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
869
|
+
protocol_v6: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
870
|
+
protocol_match_excepted: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
871
|
+
icmp_typename: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
872
|
+
icmpv6_typename: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
873
|
+
logging: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
874
|
+
state_established: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
875
|
+
state_related: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
876
|
+
state_new: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
877
|
+
state_invalid: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
878
|
+
src_firewallgroup_ids: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
879
|
+
src_networkconf_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
880
|
+
src_networkconf_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
881
|
+
src_address: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
882
|
+
src_address_ipv6: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
883
|
+
src_mac_address: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
884
|
+
src_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
885
|
+
dst_firewallgroup_ids: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
886
|
+
dst_networkconf_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
887
|
+
dst_networkconf_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
888
|
+
dst_address: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
889
|
+
dst_address_ipv6: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
890
|
+
dst_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
891
|
+
ipsec: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
892
|
+
setting_preference: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
893
|
+
}, z.core.$loose>>;
|
|
894
|
+
readonly count: z.ZodNumber;
|
|
895
|
+
readonly siteReference: z.ZodString;
|
|
896
|
+
};
|
|
897
|
+
export declare const PortForwardDestination: z.ZodObject<{
|
|
898
|
+
destination_ip: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
899
|
+
interface: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
900
|
+
}, z.core.$loose>;
|
|
901
|
+
export declare const PortForward: z.ZodObject<{
|
|
902
|
+
_id: z.ZodString;
|
|
903
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
904
|
+
enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
905
|
+
pfwd_interface: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
906
|
+
destination_ip: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
907
|
+
destination_ips: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
908
|
+
destination_ip: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
909
|
+
interface: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
910
|
+
}, z.core.$loose>>>>;
|
|
911
|
+
src: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
912
|
+
src_limiting_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
913
|
+
src_limiting_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
914
|
+
src_firewall_group_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
915
|
+
dst_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
916
|
+
fwd: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
917
|
+
fwd_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
918
|
+
proto: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
919
|
+
log: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
920
|
+
}, z.core.$loose>;
|
|
921
|
+
export declare const listPortForwardsOutputSchema: {
|
|
922
|
+
readonly data: z.ZodArray<z.ZodObject<{
|
|
923
|
+
_id: z.ZodString;
|
|
924
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
925
|
+
enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
926
|
+
pfwd_interface: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
927
|
+
destination_ip: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
928
|
+
destination_ips: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
929
|
+
destination_ip: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
930
|
+
interface: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
931
|
+
}, z.core.$loose>>>>;
|
|
932
|
+
src: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
933
|
+
src_limiting_enabled: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
934
|
+
src_limiting_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
935
|
+
src_firewall_group_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
936
|
+
dst_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
937
|
+
fwd: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
938
|
+
fwd_port: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
939
|
+
proto: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
940
|
+
log: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
941
|
+
}, z.core.$loose>>;
|
|
942
|
+
readonly count: z.ZodNumber;
|
|
943
|
+
readonly enabledCount: z.ZodNumber;
|
|
944
|
+
readonly siteReference: z.ZodString;
|
|
945
|
+
};
|
|
946
|
+
export declare const getUpnpStatusOutputSchema: {
|
|
947
|
+
readonly siteReference: z.ZodString;
|
|
948
|
+
readonly status: z.ZodEnum<{
|
|
949
|
+
available: "available";
|
|
950
|
+
unavailable: "unavailable";
|
|
951
|
+
}>;
|
|
952
|
+
readonly source: z.ZodNullable<z.ZodString>;
|
|
953
|
+
readonly upnp_enabled: z.ZodNullable<z.ZodBoolean>;
|
|
954
|
+
readonly upnp_nat_pmp_enabled: z.ZodNullable<z.ZodBoolean>;
|
|
955
|
+
readonly upnp_secure_mode: z.ZodNullable<z.ZodBoolean>;
|
|
956
|
+
readonly upnp_wan_interface: z.ZodNullable<z.ZodString>;
|
|
957
|
+
readonly detail: z.ZodString;
|
|
958
|
+
};
|
|
959
|
+
export declare const getDeviceSshSettingsOutputSchema: {
|
|
960
|
+
readonly siteReference: z.ZodString;
|
|
961
|
+
readonly status: z.ZodEnum<{
|
|
962
|
+
available: "available";
|
|
963
|
+
unavailable: "unavailable";
|
|
964
|
+
}>;
|
|
965
|
+
readonly x_ssh_enabled: z.ZodNullable<z.ZodBoolean>;
|
|
966
|
+
readonly x_ssh_auth_password_enabled: z.ZodNullable<z.ZodBoolean>;
|
|
967
|
+
readonly x_ssh_bind_wildcard: z.ZodNullable<z.ZodBoolean>;
|
|
968
|
+
readonly sshKeyCount: z.ZodNullable<z.ZodNumber>;
|
|
969
|
+
readonly detail: z.ZodString;
|
|
970
|
+
};
|