mirror of https://github.com/wg-easy/wg-easy
Browse Source
* start supporting ipv6 * add ipv6 support * build server with es2020 es2019 doesn't support bigint * fix issues, better namingpull/1648/head
committed by
Bernd Storath
22 changed files with 275 additions and 159 deletions
@ -1,60 +0,0 @@ |
|||
<template> |
|||
<span class="group"> |
|||
<!-- Show --> |
|||
<input |
|||
v-show="clientEditAddressId === client.id" |
|||
ref="clientAddressInput" |
|||
v-model="clientEditAddress" |
|||
class="rounded border-2 dark:bg-neutral-700 border-gray-100 dark:border-neutral-600 focus:border-gray-200 dark:focus:border-neutral-500 outline-none w-20 text-black dark:text-neutral-300 dark:placeholder:text-neutral-500" |
|||
@keyup.enter=" |
|||
updateClientAddress(client, clientEditAddress); |
|||
clientEditAddress = null; |
|||
clientEditAddressId = null; |
|||
" |
|||
@keyup.escape=" |
|||
clientEditAddress = null; |
|||
clientEditAddressId = null; |
|||
" |
|||
/> |
|||
<span v-show="clientEditAddressId !== client.id" class="inline-block">{{ |
|||
client.address |
|||
}}</span> |
|||
|
|||
<!-- Edit --> |
|||
<span |
|||
v-show="clientEditAddressId !== client.id" |
|||
class="cursor-pointer opacity-0 group-hover:opacity-100 transition-opacity" |
|||
@click=" |
|||
clientEditAddress = client.address; |
|||
clientEditAddressId = client.id; |
|||
nextTick(() => clientAddressInput?.select()); |
|||
" |
|||
> |
|||
<IconsEdit |
|||
class="h-4 w-4 inline align-middle opacity-25 hover:opacity-100" |
|||
/> |
|||
</span> |
|||
</span> |
|||
</template> |
|||
|
|||
<script setup lang="ts"> |
|||
defineProps<{ |
|||
client: LocalClient; |
|||
}>(); |
|||
|
|||
const clientsStore = useClientsStore(); |
|||
|
|||
const clientAddressInput = ref<HTMLInputElement | null>(null); |
|||
const clientEditAddress = ref<null | string>(null); |
|||
const clientEditAddressId = ref<null | string>(null); |
|||
|
|||
function updateClientAddress(client: WGClient, address: string | null) { |
|||
if (address === null) { |
|||
return; |
|||
} |
|||
api |
|||
.updateClientAddress({ clientId: client.id, address }) |
|||
.catch((err) => alert(err.message || err.toString())) |
|||
.finally(() => clientsStore.refresh().catch(console.error)); |
|||
} |
|||
</script> |
@ -0,0 +1,60 @@ |
|||
<template> |
|||
<span class="group"> |
|||
<!-- Show --> |
|||
<input |
|||
v-show="clientEditAddress4Id === client.id" |
|||
ref="clientAddress4Input" |
|||
v-model="clientEditAddress4" |
|||
class="rounded border-2 dark:bg-neutral-700 border-gray-100 dark:border-neutral-600 focus:border-gray-200 dark:focus:border-neutral-500 outline-none w-20 text-black dark:text-neutral-300 dark:placeholder:text-neutral-500" |
|||
@keyup.enter=" |
|||
updateClientAddress4(client, clientEditAddress4); |
|||
clientEditAddress4 = null; |
|||
clientEditAddress4Id = null; |
|||
" |
|||
@keyup.escape=" |
|||
clientEditAddress4 = null; |
|||
clientEditAddress4Id = null; |
|||
" |
|||
/> |
|||
<span v-show="clientEditAddress4Id !== client.id" class="inline-block">{{ |
|||
client.address4 |
|||
}}</span> |
|||
|
|||
<!-- Edit --> |
|||
<span |
|||
v-show="clientEditAddress4Id !== client.id" |
|||
class="cursor-pointer opacity-0 group-hover:opacity-100 transition-opacity" |
|||
@click=" |
|||
clientEditAddress4 = client.address4; |
|||
clientEditAddress4Id = client.id; |
|||
nextTick(() => clientAddress4Input?.select()); |
|||
" |
|||
> |
|||
<IconsEdit |
|||
class="h-4 w-4 inline align-middle opacity-25 hover:opacity-100" |
|||
/> |
|||
</span> |
|||
</span> |
|||
</template> |
|||
|
|||
<script setup lang="ts"> |
|||
defineProps<{ |
|||
client: LocalClient; |
|||
}>(); |
|||
|
|||
const clientsStore = useClientsStore(); |
|||
|
|||
const clientAddress4Input = ref<HTMLInputElement | null>(null); |
|||
const clientEditAddress4 = ref<null | string>(null); |
|||
const clientEditAddress4Id = ref<null | string>(null); |
|||
|
|||
function updateClientAddress4(client: WGClient, address4: string | null) { |
|||
if (address4 === null) { |
|||
return; |
|||
} |
|||
api |
|||
.updateClientAddress4({ clientId: client.id, address4 }) |
|||
.catch((err) => alert(err.message || err.toString())) |
|||
.finally(() => clientsStore.refresh().catch(console.error)); |
|||
} |
|||
</script> |
@ -32,15 +32,21 @@ importers: |
|||
bcryptjs: |
|||
specifier: ^2.4.3 |
|||
version: 2.4.3 |
|||
cidr-tools: |
|||
specifier: ^11.0.2 |
|||
version: 11.0.2 |
|||
crc-32: |
|||
specifier: ^1.2.2 |
|||
version: 1.2.2 |
|||
debug: |
|||
specifier: ^4.3.7 |
|||
version: 4.3.7 |
|||
ip: |
|||
specifier: ^2.0.1 |
|||
version: 2.0.1 |
|||
ip-bigint: |
|||
specifier: ^8.2.0 |
|||
version: 8.2.0 |
|||
is-ip: |
|||
specifier: ^5.0.1 |
|||
version: 5.0.1 |
|||
js-sha256: |
|||
specifier: ^0.11.0 |
|||
version: 0.11.0 |
|||
@ -81,9 +87,6 @@ importers: |
|||
'@types/debug': |
|||
specifier: ^4.1.12 |
|||
version: 4.1.12 |
|||
'@types/ip': |
|||
specifier: ^1.1.3 |
|||
version: 1.1.3 |
|||
'@types/qrcode': |
|||
specifier: ^1.5.5 |
|||
version: 1.5.5 |
|||
@ -1223,9 +1226,6 @@ packages: |
|||
'@types/[email protected]': |
|||
resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} |
|||
|
|||
'@types/[email protected]': |
|||
resolution: {integrity: sha512-64waoJgkXFTYnCYDUWgSATJ/dXEBanVkaP5d4Sbk7P6U7cTTMhxVyROTckc6JKdwCrgnAjZMn0k3177aQxtDEA==} |
|||
|
|||
'@types/[email protected]': |
|||
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} |
|||
|
|||
@ -1678,6 +1678,10 @@ packages: |
|||
resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} |
|||
engines: {node: '>=8'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-OLeM9EOXybbhMsGGBNRLCMjn8e+wFOXARIShF/sZwmJLsxWywqfE0By4BMftT6BFWpbcETWpW7TfM2KGCtrZDg==} |
|||
engines: {node: '>=18'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} |
|||
|
|||
@ -1699,6 +1703,10 @@ packages: |
|||
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} |
|||
engines: {node: '>=12'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==} |
|||
engines: {node: '>=12'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} |
|||
engines: {node: '>=0.10.0'} |
|||
@ -1784,6 +1792,10 @@ packages: |
|||
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} |
|||
engines: {node: '>= 0.6'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} |
|||
engines: {node: '>=12'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} |
|||
|
|||
@ -2338,6 +2350,10 @@ packages: |
|||
[email protected]: |
|||
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==} |
|||
engines: {node: '>=14.16'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} |
|||
engines: {node: '>=10'} |
|||
@ -2555,8 +2571,13 @@ packages: |
|||
resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} |
|||
engines: {node: '>=12.22.0'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} |
|||
[email protected]: |
|||
resolution: {integrity: sha512-46EAEKzGNxojH5JaGEeCix49tL4h1W8ia5mhogZ68HroVAfyLj1E+SFFid4GuyK0mdIKjwcAITLqwg1wlkx2iQ==} |
|||
engines: {node: '>=18'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} |
|||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} |
|||
@ -2614,6 +2635,10 @@ packages: |
|||
resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} |
|||
engines: {node: '>=18'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==} |
|||
engines: {node: '>=14.16'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} |
|||
|
|||
@ -2632,6 +2657,10 @@ packages: |
|||
[email protected]: |
|||
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==} |
|||
engines: {node: '>=12'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} |
|||
|
|||
@ -3840,6 +3869,10 @@ packages: |
|||
engines: {node: '>=16 || 14 >=14.17'} |
|||
hasBin: true |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==} |
|||
engines: {node: '>=14.16'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} |
|||
engines: {node: '>=16'} |
|||
@ -3948,6 +3981,10 @@ packages: |
|||
[email protected]: |
|||
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} |
|||
engines: {node: '>=12'} |
|||
|
|||
[email protected]: |
|||
resolution: {integrity: sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==} |
|||
|
|||
@ -5631,10 +5668,6 @@ snapshots: |
|||
dependencies: |
|||
'@types/node': 22.5.2 |
|||
|
|||
'@types/[email protected]': |
|||
dependencies: |
|||
'@types/node': 22.5.2 |
|||
|
|||
'@types/[email protected]': {} |
|||
|
|||
'@types/[email protected]': {} |
|||
@ -6211,6 +6244,10 @@ snapshots: |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
ip-bigint: 8.2.0 |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
consola: 3.2.3 |
|||
@ -6239,6 +6276,10 @@ snapshots: |
|||
strip-ansi: 6.0.1 |
|||
wrap-ansi: 7.0.0 |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
is-regexp: 3.1.0 |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
@ -6299,6 +6340,8 @@ snapshots: |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
@ -6948,6 +6991,8 @@ snapshots: |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
aproba: 2.0.0 |
|||
@ -7187,7 +7232,9 @@ snapshots: |
|||
transitivePeerDependencies: |
|||
- supports-color |
|||
|
|||
[email protected]: {} |
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
|
|||
@ -7232,6 +7279,11 @@ snapshots: |
|||
global-directory: 4.0.1 |
|||
is-path-inside: 4.0.0 |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
ip-regex: 5.0.0 |
|||
super-regex: 0.2.0 |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
@ -7244,6 +7296,8 @@ snapshots: |
|||
dependencies: |
|||
'@types/estree': 1.0.5 |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
protocols: 2.0.1 |
|||
@ -8593,6 +8647,12 @@ snapshots: |
|||
pirates: 4.0.6 |
|||
ts-interface-checker: 0.1.13 |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
clone-regexp: 3.0.0 |
|||
function-timeout: 0.1.1 |
|||
time-span: 5.1.0 |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
copy-anything: 3.0.5 |
|||
@ -8738,6 +8798,10 @@ snapshots: |
|||
dependencies: |
|||
any-promise: 1.3.0 |
|||
|
|||
[email protected]: |
|||
dependencies: |
|||
convert-hrtime: 5.0.0 |
|||
|
|||
[email protected]: {} |
|||
|
|||
[email protected]: {} |
|||
|
@ -1,8 +1,7 @@ |
|||
export default defineEventHandler(async () => { |
|||
const system = await Database.getSystem(); |
|||
const latestRelease = await fetchLatestRelease(); |
|||
return { |
|||
currentRelease: system.release, |
|||
currentRelease: RELEASE, |
|||
latestRelease: latestRelease, |
|||
}; |
|||
}); |
|||
|
@ -1,5 +1,8 @@ |
|||
import debug from 'debug'; |
|||
import packageJson from '@@/package.json'; |
|||
|
|||
export const WG_PATH = process.env.WG_PATH || '/etc/wireguard/'; |
|||
|
|||
export const RELEASE = packageJson.release.version; |
|||
|
|||
export const SERVER_DEBUG = debug('Server'); |
|||
|
Loading…
Reference in new issue