diff --git a/client/src/App.vue b/client/src/App.vue index f87174c..9001616 100644 --- a/client/src/App.vue +++ b/client/src/App.vue @@ -10,6 +10,7 @@ import IService from '~icons/material-symbols/home-repair-service'; import ISNAT from '~icons/mdi/arrow-expand-right'; import IDNAT from '~icons/mdi/arrow-collapse-right'; import IConfig from '~icons/grommet-icons/document-config'; +import IStaticRoutes from '~icons/material-symbols/drive-folder-upload-outline-sharp'; enum NavState { Open, Reduced, Collapsed }; const NavStateCount = 3; @@ -20,6 +21,7 @@ const navRoutes = { "/firewall/sourcenatrules": { icon: ISNAT, caption: "SNAT" }, "/firewall/destinationnatrules": { icon: IDNAT, caption: "DNAT" }, "/network/interfaces": { icon: IEthernet, caption: "Interfaces" }, + "/network/staticroutes": { icon: IStaticRoutes, caption: "Static Routes" }, "/object/addresses": { icon: IAddress, caption: "Addresses" }, "/object/services": { icon: IService, caption: "Services" }, "/config/config": { icon: IConfig, caption: "Config" }, diff --git a/client/src/definitions.ts b/client/src/definitions.ts index 73c6510..0c7a3a1 100644 --- a/client/src/definitions.ts +++ b/client/src/definitions.ts @@ -61,5 +61,24 @@ export const editTypes: { [key: string]: { [key: string]: any } } = { } ], }, + "staticroutes": { + name: "StaticRoute", + validationSchema: toFormValidator( + zod.object({ + name: zod.string(), + }), + ), + sections: [ + { + fields: [ + { key: "name", label: "Name", as: "TextBox", }, + { key: "interface", label: "Interface", as: "TextBox" }, + { key: "gateway", label: "Gateway", as: "TextBox" }, + { key: "destination", label: "Destination", as: "TextBox" }, + { key: "metric", label: "Metric", as: "NumberBox" }, + ], + }, + ], + }, }, }; \ No newline at end of file diff --git a/client/src/pages/network/StaticRoutes.vue b/client/src/pages/network/StaticRoutes.vue new file mode 100644 index 0000000..d0dc76a --- /dev/null +++ b/client/src/pages/network/StaticRoutes.vue @@ -0,0 +1,51 @@ + + + \ No newline at end of file