feat(new-tool): generate ula based on timestamp and mac address (#344)

* feat(ipv6-ula-generator): new tool: generate ula based on timestamp and mac address

This new tool generates a random unique ula based on the current timestamp and the provided mac address. An ULA is your "secondary" IPV6-Address only for internal use.
It can also be used as a backup address if your provider gets offline and your Prefix-IPs are not longer valid.Also you can create the most of your internal firewall rules based on your ULAs.

* feat(ipv6-ula-generator): changes requested by review

* Update src/tools/ipv6-ula-generator/index.ts

* Update src/tools/ipv6-ula-generator/ipv6-ula-generator.vue

---------

Co-authored-by: Corentin THOMASSET <corentin.thomasset74@gmail.com>
This commit is contained in:
cgoIT 2023-04-09 20:58:27 +02:00 committed by Corentin Thomasset
parent 1d7f8b9a8c
commit a1e983538c
No known key found for this signature in database
GPG Key ID: DBD997E935996158
2 changed files with 6 additions and 5 deletions

View File

@ -2,7 +2,7 @@
<div>
<n-space vertical :size="50">
<n-alert title="Info" type="info">
This page uses the first method suggested by IETF using the current timestamp plus the mac address, sha1 hashed,
This tool uses the first method suggested by IETF using the current timestamp plus the mac address, sha1 hashed,
and the lower 40 bits to generate your random ULA.
</n-alert>
@ -40,19 +40,20 @@ const calculatedSections = computed(() => {
const hex40bit = SHA1(timestamp + macAddress.value)
.toString()
.substring(30);
const ula = 'fd' + hex40bit.substring(0, 2) + ':' + hex40bit.substring(2, 6) + ':' + hex40bit.substring(6);
return [
{
label: 'IPv6 ULA : ',
label: 'IPv6 ULA:',
value: `${ula}::/48`,
},
{
label: 'First routable block: ',
label: 'First routable block:',
value: `${ula}:0::/64`,
},
{
label: 'Last routable block: ',
label: 'Last routable block:',
value: `${ula}:ffff::/64`,
},
];

View File

@ -1,4 +1,4 @@
import { useValidation, type ValidationAttrs } from '@/composable/validation';
import { useValidation } from '@/composable/validation';
import type { Ref } from 'vue';
function macAddressValidation(value: Ref) {