diff --git a/package-lock.json b/package-lock.json index b5ce66408..0fed49084 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@nethesis/nethesis-brands-svg-icons": "github:nethesis/Font-Awesome#ns-brands", "@nethesis/nethesis-light-svg-icons": "github:nethesis/Font-Awesome#ns-light", "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid", - "@nethserver/vue-tailwind-lib": "^0.0.89", + "@nethserver/vue-tailwind-lib": "^0.0.90", "@types/lodash": "^4.14.195", "@vueuse/core": "^10.5.0", "axios": "^1.4.0", @@ -1298,9 +1298,9 @@ } }, "node_modules/@nethserver/vue-tailwind-lib": { - "version": "0.0.89", - "resolved": "https://registry.npmjs.org/@nethserver/vue-tailwind-lib/-/vue-tailwind-lib-0.0.89.tgz", - "integrity": "sha512-G7x8JdZxoKo62hGJiN0XhHvgoxfhgZhCdOaBT2zQxUGh+FrHsLn8TMZQ9OIix5xEmKibgU/OzYe6xPVArTTHXA==", + "version": "0.0.90", + "resolved": "https://registry.npmjs.org/@nethserver/vue-tailwind-lib/-/vue-tailwind-lib-0.0.90.tgz", + "integrity": "sha512-qLhtacQ/uGcCBFhdBxgd0xAxWbWc+iL8OCOhwaVOdjorGkAHYL6nRbJ+roZ6vhl5UaXomLslfXAA7/N1qUvOVA==", "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-solid-svg-icons": "github:nethesis/Font-Awesome#solid", diff --git a/package.json b/package.json index 061425928..42eb4d68d 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "@nethesis/nethesis-brands-svg-icons": "github:nethesis/Font-Awesome#ns-brands", "@nethesis/nethesis-light-svg-icons": "github:nethesis/Font-Awesome#ns-light", "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid", - "@nethserver/vue-tailwind-lib": "^0.0.89", + "@nethserver/vue-tailwind-lib": "^0.0.90", "@types/lodash": "^4.14.195", "@vueuse/core": "^10.5.0", "axios": "^1.4.0", diff --git a/public/i18n/en/translation.json b/public/i18n/en/translation.json index 9d002da31..a60784c53 100644 --- a/public/i18n/en/translation.json +++ b/public/i18n/en/translation.json @@ -14,6 +14,9 @@ "disable": "Disable", "enabled": "Enabled", "disabled": "Disabled", + "step": "Step", + "previous": "Previous", + "next": "Next", "page_under_construction": "Page under construction" }, "error": { @@ -138,7 +141,10 @@ "cannot_disable_tunnel": "Cannot disable tunnel", "cannot_retrieve_tunnel_options": "Cannot retrieve tunnel options", "cannot_retrieve_tunnel_defaults": "Cannot retrieve tunnel defaults", - "cannot_import_configuration": "Cannot import configuration" + "cannot_import_configuration": "Cannot import configuration", + "cannot_retrieve_ipsec_tunnels": "Cannot retrieve IPsec tunnels", + "cannot_retrieve_ipsec_algorithms": "Cannot retrieve IPsec algorithms", + "cannot_retrieve_tunnel_data": "Cannot retrieve tunnel data" }, "ne_text_input": { "show_password": "Show password", @@ -907,6 +913,53 @@ "topology_tooltip_subnet_description": "This method offers a straightforward configuration approach. Instead of using a point-to-point setup, utilize a subnet configuration by specifying a local IP address and subnet mask for the tun interface. In this mode, each connected client is assigned a unique IP address, and it is compatible with Windows systems as well.", "topology_tooltip_p2p_description": "Implement a point-to-point topology where the client's tun interface remote endpoint consistently points to the server's tun interface local endpoint. This configuration assigns a single IP address to each connected client. Utilize this mode exclusively when none of the connected clients operate on Windows systems." }, + "ipsec_tunnel": { + "title": "IPsec tunnel", + "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse gravida, nibh vel finibus suscipit, mauris erat porta", + "add_ipsec_tunnel": "Add IPsec tunnel", + "no_tunnel_found": "No tunnel found", + "name": "Name", + "local_networks": "Local networks", + "remote_networks": "Remote networks", + "received": "Received", + "sent": "Sent", + "started": "Started", + "status": "Status", + "connection": "Connection", + "connected": "Connected", + "not_connected": "Not connected", + "enable": "Enable", + "disable": "Disable", + "enabled": "Enabled", + "disabled": "Disabled", + "delete_tunnel": "Delete tunnel", + "delete_tunnel_message": "You are about to delete tunnel '{name}'", + "add_tunnel": "Add tunnel", + "edit_tunnel": "Edit tunnel", + "tunnel_name": "Tunnel name", + "wan_ip_address": "WAN IP address", + "remote_ip_address": "Remote IP address", + "local_identifier": "Local identifier", + "remote_identifier": "Remote identifier", + "choose_wan": "Choose WAN", + "add_network": "Add network", + "pre_shared_key": "Pre-shared key", + "generate_key": "Generate key", + "import_key": "Import key", + "dpd_dead_peer_detection": "DPD (dead peer detection)", + "pfs_perfect_forward_secrecy_disabled": "PFS (Perfect Forward Secrecy) disabled", + "compression": "Compression", + "phase_one_ike": "Phase 1 (IKE)", + "phase_two_esp": "Phase 2 (ESP)", + "ike_version": "IKE version", + "encryption_algorithm": "Encryption algorithm", + "integrity_algorithm": "Integrity algorithm", + "diffie_hellman_group": "Diffie-Hellman group", + "key_life_time_seconds": "Key life time (seconds)", + "remote_ip_address_tooltip": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse gravida, nibh vel finibus suscipit, mauris erat porta", + "local_identifier_tooltip": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse gravida, nibh vel finibus suscipit, mauris erat porta", + "edit_ipsec_tunnel": "Edit IPsec tunnel" + }, "logs": { "title": "Logs", "limit_rows": "Lines limit", diff --git a/src/components/standalone/NeCopyField.vue b/src/components/standalone/NeCopyField.vue new file mode 100644 index 000000000..92b15f9ba --- /dev/null +++ b/src/components/standalone/NeCopyField.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/components/standalone/NeMultiTextInput.vue b/src/components/standalone/NeMultiTextInput.vue index fd83dca8d..de2fd0197 100644 --- a/src/components/standalone/NeMultiTextInput.vue +++ b/src/components/standalone/NeMultiTextInput.vue @@ -21,6 +21,7 @@ const props = withDefaults( modelValue: string[] | KeyValueItem[] addItemLabel: string invalidMessages?: string[] + generalInvalidMessage?: string invalidKeyMessages?: string[] keyOptions?: NeComboboxOption[] title?: string @@ -106,7 +107,9 @@ onMounted(() => {
@@ -140,6 +143,9 @@ onMounted(() => {
+

+ {{ generalInvalidMessage }} +