From c0b5aefa4ae8c95d0898b64da98150397914a919 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sat, 28 Oct 2023 19:15:40 +0200 Subject: [PATCH] adjust apicalls for rust backend --- client/src/definitions.ts | 308 +++++++++--------- .../pages/[subsystem]/[entity]/edit/[id].vue | 22 +- .../pages/[subsystem]/[entity]/edit/index.vue | 12 +- client/src/pages/config/config.vue | 44 +-- .../pages/firewall/DestinationNATRules.vue | 28 +- client/src/pages/firewall/ForwardRules.vue | 30 +- client/src/pages/firewall/SourceNATRules.vue | 28 +- client/src/pages/index.vue | 10 +- client/src/pages/network/Interfaces.vue | 22 +- client/src/pages/network/StaticRoutes.vue | 20 +- client/src/pages/object/Addresses.vue | 28 +- client/src/pages/object/Services.vue | 32 +- client/src/pages/service/DHCPv4Servers.vue | 18 +- client/src/pages/service/DNSServers.vue | 18 +- client/src/pages/service/NTPServers.vue | 18 +- client/src/pages/system/Users.vue | 18 +- client/src/pages/vpn/WireguardInterfaces.vue | 18 +- client/src/pages/vpn/WireguardPeers.vue | 18 +- client/src/pages/vpn/WireguardStatus.vue | 12 +- 19 files changed, 352 insertions(+), 352 deletions(-) diff --git a/client/src/definitions.ts b/client/src/definitions.ts index e300b99..3e377cf 100644 --- a/client/src/definitions.ts +++ b/client/src/definitions.ts @@ -4,90 +4,90 @@ import { SearchProvider, Options } from '~/components/inputs/DropdownInput.vue'; import { apiCall } from './api'; const GetHardwareInterfaces: SearchProvider = async (o) => { - let res = await apiCall("Network.GetLinks", {}); + let res = await apiCall('network.get_links', {}); if (res.Error === null) { - console.debug("links", res.Data.Links); - return Object.fromEntries(res.Data.Links.map(r => [r.name, { display: r.name }])); + console.debug('links', res.Data); + return Object.fromEntries(res.Data.map(r => [r.name, { display: r.name }])); } else { - console.debug("error", res); + console.debug('error', res); return {} as Options; } }; const GetInterfaces: SearchProvider = async (o) => { - let res = await apiCall("Network.GetInterfaces", {}); + let res = await apiCall('network.get_interfaces', {}); if (res.Error === null) { - console.debug("interfaces", res.Data.Interfaces); + console.debug('interfaces', res.Data); let obj = {} as Options; - Object.keys(res.Data.Interfaces).forEach(function (key, index) { + Object.keys(res.Data).forEach(function (key, index) { obj[key] = { display: key, }; }); return obj; } else { - console.debug("error", res); + console.debug('error', res); return {} as Options; } }; const GetAddresses: SearchProvider = async (o) => { - let res = await apiCall("Object.GetAddresses", {}); + let res = await apiCall('object.get_addresses', {}); if (res.Error === null) { - console.debug("addresses", res.Data.Addresses); + console.debug('addresses', res.Data); let obj = {} as Options; - Object.keys(res.Data.Addresses).forEach(function (key, index) { + Object.keys(res.Data).forEach(function (key, index) { obj[key] = { display: key, }; }); return obj; } else { - console.debug("error", res); + console.debug('error', res); return {} as Options; } }; const GetServices: SearchProvider = async (o) => { - let res = await apiCall("Object.GetServices", {}); + let res = await apiCall('Object.get_services', {}); if (res.Error === null) { - console.debug("services", res.Data.Services); + console.debug('services', res.Data); let obj = {} as Options; - Object.keys(res.Data.Services).forEach(function (key, index) { + Object.keys(res.Data).forEach(function (key, index) { obj[key] = { display: key, }; }); return obj; } else { - console.debug("error", res); + console.debug('error', res); return {} as Options; } }; const GetPeers: SearchProvider = async (o) => { - let res = await apiCall("VPN.GetWireguardPeers", {}); + let res = await apiCall('VPN.get_wireguard_peers', {}); if (res.Error === null) { - console.debug("peers", res.Data.WireguardPeers); + console.debug('peers', res.Data); let obj = {} as Options; - Object.keys(res.Data.WireguardPeers).forEach(function (key, index) { + Object.keys(res.Data).forEach(function (key, index) { obj[key] = { display: key, }; }); return obj; } else { - console.debug("error", res); + console.debug('error', res); return {} as Options; } }; export const editTypes: { [key: string]: { [key: string]: any } } = { - "firewall": { - name: "Firewall", - "forwardrules": { - name: "ForwardRule", - idType: "Number", + 'firewall': { + name: 'Firewall', + 'forwardrules': { + name: 'ForwardRule', + idType: 'Number', validationSchema: toFormValidator( zod.object({ name: zod.string(), @@ -99,20 +99,20 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox" }, - { key: "match.source_addresses", label: "Source", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "match.destination_addresses", label: "Destination", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "match.services", label: "Services", as: "MultiSelect", props: { searchProvider: GetServices } }, - { key: "verdict", label: "Verdict", as: "PillBar", props: { options: { accept: { display: 'Accept' }, drop: { display: 'Drop' }, continue: { display: 'Continue' } } } }, - { key: "counter", label: "Counter", as: "CheckBox" }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'name', label: 'Name', as: 'TextBox' }, + { key: 'match.source_addresses', label: 'Source', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'match.destination_addresses', label: 'Destination', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'match.services', label: 'Services', as: 'MultiSelect', props: { searchProvider: GetServices } }, + { key: 'verdict', label: 'Verdict', as: 'PillBar', props: { options: { accept: { display: 'Accept' }, drop: { display: 'Drop' }, continue: { display: 'Continue' } } } }, + { key: 'counter', label: 'Counter', as: 'CheckBox' }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, - "destinationnatrules": { - name: "DestinationNATRule", - idType: "Number", + 'destinationnatrules': { + name: 'DestinationNATRule', + idType: 'Number', validationSchema: toFormValidator( zod.object({ name: zod.string(), @@ -124,26 +124,26 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox" }, - { key: "match.source_addresses", label: "Source", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "match.destination_addresses", label: "Destination", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "match.services", label: "Services", as: "MultiSelect", props: { searchProvider: GetServices } }, + { key: 'name', label: 'Name', as: 'TextBox' }, + { key: 'match.source_addresses', label: 'Source', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'match.destination_addresses', label: 'Destination', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'match.services', label: 'Services', as: 'MultiSelect', props: { searchProvider: GetServices } }, ], }, { - title: "DNAT", + title: 'DNAT', fields: [ - { key: "address", label: "Destination", as: "SingleSelect", props: { searchProvider: GetAddresses } }, - { key: "service", label: "Service", as: "SingleSelect", props: { searchProvider: GetServices } }, - { key: "counter", label: "Counter", as: "CheckBox" }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'address', label: 'Destination', as: 'SingleSelect', props: { searchProvider: GetAddresses } }, + { key: 'service', label: 'Service', as: 'SingleSelect', props: { searchProvider: GetServices } }, + { key: 'counter', label: 'Counter', as: 'CheckBox' }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, - "sourcenatrules": { - name: "SourceNATRule", - idType: "Number", + 'sourcenatrules': { + name: 'SourceNATRule', + idType: 'Number', validationSchema: toFormValidator( zod.object({ name: zod.string(), @@ -155,29 +155,29 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox" }, - { key: "match.source_addresses", label: "Source", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "match.destination_addresses", label: "Destination", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "match.services", label: "Services", as: "MultiSelect", props: { searchProvider: GetServices } }, + { key: 'name', label: 'Name', as: 'TextBox' }, + { key: 'match.source_addresses', label: 'Source', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'match.destination_addresses', label: 'Destination', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'match.services', label: 'Services', as: 'MultiSelect', props: { searchProvider: GetServices } }, ], }, { - title: "SNAT", + title: 'SNAT', fields: [ - { key: "type", label: "Type", as: "PillBar", props: { options: { snat: { display: 'SNAT' }, masquerade: { display: 'Masquerade' } } } }, - { key: "address", label: "Source", as: "SingleSelect", enabled: (values: any) => (values["type"] == 'snat'), props: { searchProvider: GetAddresses } }, - { key: "service", label: "Service", as: "SingleSelect", enabled: (values: any) => (values["type"] == 'snat'), props: { searchProvider: GetServices } }, - { key: "counter", label: "Counter", as: "CheckBox" }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'type', label: 'Type', as: 'PillBar', props: { options: { snat: { display: 'SNAT' }, masquerade: { display: 'Masquerade' } } } }, + { key: 'address', label: 'Source', as: 'SingleSelect', enabled: (values: any) => (values['type'] == 'snat'), props: { searchProvider: GetAddresses } }, + { key: 'service', label: 'Service', as: 'SingleSelect', enabled: (values: any) => (values['type'] == 'snat'), props: { searchProvider: GetServices } }, + { key: 'counter', label: 'Counter', as: 'CheckBox' }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, }, - "network": { - name: "Network", - "interfaces": { - name: "Interface", + 'network': { + name: 'Network', + 'interfaces': { + name: 'Interface', validationSchema: toFormValidator( zod.object({ name: zod.string(), @@ -190,28 +190,28 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox", default: "placeholder" }, - { key: "type", label: "Type", as: "PillBar", props: { options: { hardware: { display: 'Hardware' }, vlan: { display: 'VLAN' }, bond: { display: 'Bond' }, bridge: { display: 'Bridge' } } } }, - { key: "hardware_device", label: "Hardware Device", as: "SingleSelect", enabled: (values: any) => (values["type"] == 'hardware'), props: { searchProvider: GetHardwareInterfaces } }, - { key: "vlan_parent", label: "VLAN Parent", as: "SingleSelect", enabled: (values: any) => (values["type"] == 'vlan'), props: { searchProvider: GetInterfaces } }, - { key: "vlan_id", label: "VLAN ID", as: "NumberBox", props: { min: 1, max: 4094 }, enabled: (values: any) => (values["type"] == 'vlan') }, - { key: "bond_members", label: "Bond Members", as: "MultiSelect", enabled: (values: any) => (values["type"] == 'bond'), props: { searchProvider: GetHardwareInterfaces } }, - { key: "bridge_members", label: "Bridge Members", as: "MultiSelect", enabled: (values: any) => (values["type"] == 'bridge'), props: { searchProvider: GetHardwareInterfaces } }, + { key: 'name', label: 'Name', as: 'TextBox', default: 'placeholder' }, + { key: 'type', label: 'Type', as: 'PillBar', props: { options: { hardware: { display: 'Hardware' }, vlan: { display: 'VLAN' }, bond: { display: 'Bond' }, bridge: { display: 'Bridge' } } } }, + { key: 'hardware_device', label: 'Hardware Device', as: 'SingleSelect', enabled: (values: any) => (values['type'] == 'hardware'), props: { searchProvider: GetHardwareInterfaces } }, + { key: 'vlan_parent', label: 'VLAN Parent', as: 'SingleSelect', enabled: (values: any) => (values['type'] == 'vlan'), props: { searchProvider: GetInterfaces } }, + { key: 'vlan_id', label: 'VLAN ID', as: 'NumberBox', props: { min: 1, max: 4094 }, enabled: (values: any) => (values['type'] == 'vlan') }, + { key: 'bond_members', label: 'Bond Members', as: 'MultiSelect', enabled: (values: any) => (values['type'] == 'bond'), props: { searchProvider: GetHardwareInterfaces } }, + { key: 'bridge_members', label: 'Bridge Members', as: 'MultiSelect', enabled: (values: any) => (values['type'] == 'bridge'), props: { searchProvider: GetHardwareInterfaces } }, ], }, { - title: "Addressing", + title: 'Addressing', fields: [ - { key: "addressing_mode", label: "Addressing Mode", as: "PillBar", props: { options: { none: { display: 'None' }, static: { display: 'Static' }, dhcp: { display: 'DHCP' } } } }, - { key: "address", label: "Address", as: "TextBox", enabled: (values: any) => (values["addressing_mode"] == 'static') }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'addressing_mode', label: 'Addressing Mode', as: 'PillBar', props: { options: { none: { display: 'None' }, static: { display: 'Static' }, dhcp: { display: 'DHCP' } } } }, + { key: 'address', label: 'Address', as: 'TextBox', enabled: (values: any) => (values['addressing_mode'] == 'static') }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, - "staticroutes": { - name: "StaticRoute", - idType: "Number", + 'staticroutes': { + name: 'StaticRoute', + idType: 'Number', validationSchema: toFormValidator( zod.object({ name: zod.string(), @@ -220,20 +220,20 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox" }, - { key: "interface", label: "Interface", as: "SingleSelect", props: { searchProvider: GetInterfaces } }, - { key: "gateway", label: "Gateway", as: "TextBox" }, - { key: "destination", label: "Destination", as: "TextBox" }, - { key: "metric", label: "Metric", as: "NumberBox" }, + { key: 'name', label: 'Name', as: 'TextBox' }, + { key: 'interface', label: 'Interface', as: 'SingleSelect', props: { searchProvider: GetInterfaces } }, + { key: 'gateway', label: 'Gateway', as: 'TextBox' }, + { key: 'destination', label: 'Destination', as: 'TextBox' }, + { key: 'metric', label: 'Metric', as: 'NumberBox' }, ], }, ], }, }, - "object": { - name: "Object", - "addresses": { - name: "Address", + 'object': { + name: 'Object', + 'addresses': { + name: 'Address', validationSchema: toFormValidator( zod.object({ }), @@ -241,19 +241,19 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox", default: "placeholder" }, - { key: "type", label: "Type", as: "PillBar", props: { options: { host: { display: 'Host' }, range: { display: 'Range' }, network: { display: 'Network' }, group: { display: 'Group' } } } }, - { key: "host", label: "Host", as: "TextBox", default: "placeholder", enabled: (values: any) => (values["type"] == 'host') }, - { key: "range", label: "Range", as: "TextBox", default: "placeholder", enabled: (values: any) => (values["type"] == 'range') }, - { key: "network", label: "Network", as: "TextBox", default: "placeholder", enabled: (values: any) => (values["type"] == 'network') }, - { key: "children", label: "Children", as: "MultiSelect", enabled: (values: any) => (values["type"] == 'group'), props: { searchProvider: GetAddresses } }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'name', label: 'Name', as: 'TextBox', default: 'placeholder' }, + { key: 'type', label: 'Type', as: 'PillBar', props: { options: { host: { display: 'Host' }, range: { display: 'Range' }, network: { display: 'Network' }, group: { display: 'Group' } } } }, + { key: 'host', label: 'Host', as: 'TextBox', default: 'placeholder', enabled: (values: any) => (values['type'] == 'host') }, + { key: 'range', label: 'Range', as: 'TextBox', default: 'placeholder', enabled: (values: any) => (values['type'] == 'range') }, + { key: 'network', label: 'Network', as: 'TextBox', default: 'placeholder', enabled: (values: any) => (values['type'] == 'network') }, + { key: 'children', label: 'Children', as: 'MultiSelect', enabled: (values: any) => (values['type'] == 'group'), props: { searchProvider: GetAddresses } }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, - "services": { - name: "Service", + 'services': { + name: 'Service', validationSchema: toFormValidator( zod.object({ }), @@ -261,25 +261,25 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox", default: "placeholder" }, - { key: "type", label: "Type", as: "PillBar", props: { options: { tcp: { display: 'TCP' }, udp: { display: 'UDP' }, icmp: { display: 'ICMP' }, group: { display: 'Group' } } } }, - { key: "sport_start", label: "Source Port Start", as: "NumberBox", enabled: (values: any) => (values["type"] == 'tcp' || values["type"] == 'udp') }, - { key: "sport_end", label: "Source Port End", as: "NumberBox", enabled: (values: any) => (values["type"] == 'tcp' || values["type"] == 'udp') }, - { key: "dport_start", label: "Destination Port Start", as: "NumberBox", enabled: (values: any) => (values["type"] == 'tcp' || values["type"] == 'udp') }, - { key: "dport_end", label: "Destination Port End", as: "NumberBox", enabled: (values: any) => (values["type"] == 'tcp' || values["type"] == 'udp') }, - { key: "icmp_code", label: "ICMP Code", as: "NumberBox", enabled: (values: any) => (values["type"] == 'icmp') }, - { key: "children", label: "Children", as: "MultiSelect", enabled: (values: any) => (values["type"] == 'group'), props: { searchProvider: GetServices } }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'name', label: 'Name', as: 'TextBox', default: 'placeholder' }, + { key: 'type', label: 'Type', as: 'PillBar', props: { options: { tcp: { display: 'TCP' }, udp: { display: 'UDP' }, icmp: { display: 'ICMP' }, group: { display: 'Group' } } } }, + { key: 'sport_start', label: 'Source Port Start', as: 'NumberBox', enabled: (values: any) => (values['type'] == 'tcp' || values['type'] == 'udp') }, + { key: 'sport_end', label: 'Source Port End', as: 'NumberBox', enabled: (values: any) => (values['type'] == 'tcp' || values['type'] == 'udp') }, + { key: 'dport_start', label: 'Destination Port Start', as: 'NumberBox', enabled: (values: any) => (values['type'] == 'tcp' || values['type'] == 'udp') }, + { key: 'dport_end', label: 'Destination Port End', as: 'NumberBox', enabled: (values: any) => (values['type'] == 'tcp' || values['type'] == 'udp') }, + { key: 'icmp_code', label: 'ICMP Code', as: 'NumberBox', enabled: (values: any) => (values['type'] == 'icmp') }, + { key: 'children', label: 'Children', as: 'MultiSelect', enabled: (values: any) => (values['type'] == 'group'), props: { searchProvider: GetServices } }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, }, - "service": { - name: "Service", - "dhcpv4servers": { - name: "DHCPv4Server", - idType: "Number", + 'service': { + name: 'Service', + 'dhcpv4servers': { + name: 'DHCPv4Server', + idType: 'Number', validationSchema: toFormValidator( zod.object({ }), @@ -287,24 +287,24 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "interface", label: "Interface", as: "SingleSelect", props: { searchProvider: GetInterfaces } }, - { key: "pool", label: "Pool", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "gateway_mode", label: "Gateway Mode", as: "PillBar", props: { options: { none: { display: 'None' }, interface: { display: 'Interface' }, specify: { display: 'Specify' } } } }, - { key: "gateway", label: "Gateway", as: "SingleSelect", enabled: (values: any) => (values["gateway_mode"] == 'specify'), props: { searchProvider: GetAddresses } }, - { key: "dns_server_mode", label: "DNS Server Mode", as: "PillBar", props: { options: { none: { display: 'None' }, interface: { display: 'Interface' }, specify: { display: 'Specify' } } } }, - { key: "dns_servers", label: "DNS Servers", as: "MultiSelect", enabled: (values: any) => (values["dns_server_mode"] == 'specify'), props: { searchProvider: GetAddresses } }, - { key: "ntp_server_mode", label: "NTP Server Mode", as: "PillBar", props: { options: { none: { display: 'None' }, interface: { display: 'Interface' }, specify: { display: 'Specify' } } } }, - { key: "ntp_servers", label: "NTP Servers", as: "MultiSelect", enabled: (values: any) => (values["ntp_server_mode"] == 'specify'), props: { searchProvider: GetAddresses } }, - { key: "default_lease_time", label: "Default Lease Time", as: "NumberBox" }, - { key: "max_lease_time", label: "Max Lease Time", as: "NumberBox" }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'interface', label: 'Interface', as: 'SingleSelect', props: { searchProvider: GetInterfaces } }, + { key: 'pool', label: 'Pool', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'gateway_mode', label: 'Gateway Mode', as: 'PillBar', props: { options: { none: { display: 'None' }, interface: { display: 'Interface' }, specify: { display: 'Specify' } } } }, + { key: 'gateway', label: 'Gateway', as: 'SingleSelect', enabled: (values: any) => (values['gateway_mode'] == 'specify'), props: { searchProvider: GetAddresses } }, + { key: 'dns_server_mode', label: 'DNS Server Mode', as: 'PillBar', props: { options: { none: { display: 'None' }, interface: { display: 'Interface' }, specify: { display: 'Specify' } } } }, + { key: 'dns_servers', label: 'DNS Servers', as: 'MultiSelect', enabled: (values: any) => (values['dns_server_mode'] == 'specify'), props: { searchProvider: GetAddresses } }, + { key: 'ntp_server_mode', label: 'NTP Server Mode', as: 'PillBar', props: { options: { none: { display: 'None' }, interface: { display: 'Interface' }, specify: { display: 'Specify' } } } }, + { key: 'ntp_servers', label: 'NTP Servers', as: 'MultiSelect', enabled: (values: any) => (values['ntp_server_mode'] == 'specify'), props: { searchProvider: GetAddresses } }, + { key: 'default_lease_time', label: 'Default Lease Time', as: 'NumberBox' }, + { key: 'max_lease_time', label: 'Max Lease Time', as: 'NumberBox' }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, - "ntpservers": { - name: "NTPServer", - idType: "Number", + 'ntpservers': { + name: 'NTPServer', + idType: 'Number', validationSchema: toFormValidator( zod.object({ }), @@ -312,15 +312,15 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "interface", label: "Interface", as: "SingleSelect", props: { searchProvider: GetInterfaces } }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'interface', label: 'Interface', as: 'SingleSelect', props: { searchProvider: GetInterfaces } }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, - "dnsservers": { - name: "DNSServer", - idType: "Number", + 'dnsservers': { + name: 'DNSServer', + idType: 'Number', validationSchema: toFormValidator( zod.object({ }), @@ -328,17 +328,17 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "interface", label: "Interface", as: "SingleSelect", props: { searchProvider: GetInterfaces } }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'interface', label: 'Interface', as: 'SingleSelect', props: { searchProvider: GetInterfaces } }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, }, - "vpn": { - name: "VPN", - "wireguardinterfaces": { - name: "WireguardInterface", + 'vpn': { + name: 'VPN', + 'wireguardinterfaces': { + name: 'WireguardInterface', validationSchema: toFormValidator( zod.object({ }), @@ -346,18 +346,18 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox", default: "placeholder" }, - { key: "public_key", label: "Public Key", as: "TextBox", default: "placeholder" }, - { key: "private_key", label: "Private Key", as: "TextBox", default: "placeholder" }, - { key: "listen_port", label: "Listen Port", as: "NumberBox" }, - { key: "peers", label: "Peers", as: "MultiSelect", props: { searchProvider: GetPeers } }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'name', label: 'Name', as: 'TextBox', default: 'placeholder' }, + { key: 'public_key', label: 'Public Key', as: 'TextBox', default: 'placeholder' }, + { key: 'private_key', label: 'Private Key', as: 'TextBox', default: 'placeholder' }, + { key: 'listen_port', label: 'Listen Port', as: 'NumberBox' }, + { key: 'peers', label: 'Peers', as: 'MultiSelect', props: { searchProvider: GetPeers } }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, - "wireguardpeers": { - name: "WireguardPeer", + 'wireguardpeers': { + name: 'WireguardPeer', validationSchema: toFormValidator( zod.object({ }), @@ -365,22 +365,22 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox", default: "placeholder" }, - { key: "public_key", label: "Public Key", as: "TextBox", default: "placeholder" }, - { key: "preshared_key", label: "Preshared Key", as: "TextBox", default: "placeholder" }, - { key: "allowed_ips", label: "Allowed IPs", as: "MultiSelect", props: { searchProvider: GetAddresses } }, - { key: "endpoint", label: "Endpoint", as: "TextBox", default: "placeholder" }, - { key: "persistent_keepalive", label: "Persistent Keepalive", as: "NumberBox" }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'name', label: 'Name', as: 'TextBox', default: 'placeholder' }, + { key: 'public_key', label: 'Public Key', as: 'TextBox', default: 'placeholder' }, + { key: 'preshared_key', label: 'Preshared Key', as: 'TextBox', default: 'placeholder' }, + { key: 'allowed_ips', label: 'Allowed IPs', as: 'MultiSelect', props: { searchProvider: GetAddresses } }, + { key: 'endpoint', label: 'Endpoint', as: 'TextBox', default: 'placeholder' }, + { key: 'persistent_keepalive', label: 'Persistent Keepalive', as: 'NumberBox' }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], }, }, - "system": { - name: "System", - "users": { - name: "User", + 'system': { + name: 'System', + 'users': { + name: 'User', validationSchema: toFormValidator( zod.object({ }), @@ -388,9 +388,9 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { sections: [ { fields: [ - { key: "name", label: "Name", as: "TextBox" }, - { key: "password", label: "Password", as: "TextBox", props: { type: "password" } }, - { key: "comment", label: "Comment", as: "MultilineTextBox" }, + { key: 'name', label: 'Name', as: 'TextBox' }, + { key: 'password', label: 'Password', as: 'TextBox', props: { type: 'password' } }, + { key: 'comment', label: 'Comment', as: 'MultilineTextBox' }, ], }, ], diff --git a/client/src/pages/[subsystem]/[entity]/edit/[id].vue b/client/src/pages/[subsystem]/[entity]/edit/[id].vue index dd7a231..864859d 100644 --- a/client/src/pages/[subsystem]/[entity]/edit/[id].vue +++ b/client/src/pages/[subsystem]/[entity]/edit/[id].vue @@ -1,6 +1,6 @@ \ No newline at end of file diff --git a/client/src/pages/firewall/DestinationNATRules.vue b/client/src/pages/firewall/DestinationNATRules.vue index e75cdea..e756dd8 100644 --- a/client/src/pages/firewall/DestinationNATRules.vue +++ b/client/src/pages/firewall/DestinationNATRules.vue @@ -1,5 +1,5 @@