AmneziaWG 2.0 (#2226)
* feat!: awg * feat: add description to fields, add I5 * fix: awg i18n * fix: types * minor fixes * Remove TODO comment from types.ts Removed TODO comment for more validation. --------- Co-authored-by: Bernd Storath <999999bst@gmail.com>
This commit is contained in:
committed by
GitHub
parent
a8ba7f7247
commit
6a282e6ab9
@@ -0,0 +1,28 @@
|
||||
<template>
|
||||
<div class="flex items-center">
|
||||
<FormLabel :for="id">
|
||||
{{ label }}
|
||||
</FormLabel>
|
||||
<BaseTooltip v-if="description" :text="description">
|
||||
<IconsInfo class="size-4" />
|
||||
</BaseTooltip>
|
||||
</div>
|
||||
<BaseInput :id="id" v-model.number="data" :name="id" type="number" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
defineProps<{ id: string; label: string; description?: string }>();
|
||||
|
||||
const data = defineModel<number | null>({
|
||||
set(value) {
|
||||
const temp = value ?? null;
|
||||
if (temp === 0) {
|
||||
return null;
|
||||
}
|
||||
if ((temp as string | null) === '') {
|
||||
return null;
|
||||
}
|
||||
return temp;
|
||||
},
|
||||
});
|
||||
</script>
|
||||
@@ -47,6 +47,61 @@
|
||||
:description="$t('admin.config.persistentKeepaliveDesc')"
|
||||
/>
|
||||
</FormGroup>
|
||||
<FormGroup v-if="globalStore.information?.isAwg">
|
||||
<FormHeading>{{ $t('awg.obfuscationParameters') }}</FormHeading>
|
||||
|
||||
<FormNullNumberField
|
||||
id="jC"
|
||||
v-model="data.defaultJC"
|
||||
:label="$t('awg.jCLabel')"
|
||||
:description="$t('awg.jCDescription')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="jMin"
|
||||
v-model="data.defaultJMin"
|
||||
:label="$t('awg.jMinLabel')"
|
||||
:description="$t('awg.jMinDescription')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="jMax"
|
||||
v-model="data.defaultJMax"
|
||||
:label="$t('awg.jMaxLabel')"
|
||||
:description="$t('awg.jMaxDescription')"
|
||||
/>
|
||||
|
||||
<div class="col-span-full text-sm">* {{ $t('awg.mtuNote') }}</div>
|
||||
|
||||
<FormNullTextField
|
||||
id="i1"
|
||||
v-model="data.defaultI1"
|
||||
:label="$t('awg.i1Label')"
|
||||
:description="$t('awg.i1Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i2"
|
||||
v-model="data.defaultI2"
|
||||
:label="$t('awg.i2Label')"
|
||||
:description="$t('awg.i2Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i3"
|
||||
v-model="data.defaultI3"
|
||||
:label="$t('awg.i3Label')"
|
||||
:description="$t('awg.i3Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i4"
|
||||
v-model="data.defaultI4"
|
||||
:label="$t('awg.i4Label')"
|
||||
:description="$t('awg.i4Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i5"
|
||||
v-model="data.defaultI5"
|
||||
:label="$t('awg.i5Label')"
|
||||
:description="$t('awg.i5Description')"
|
||||
/>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<FormHeading>{{ $t('form.actions') }}</FormHeading>
|
||||
<FormPrimaryActionField type="submit" :label="$t('form.save')" />
|
||||
@@ -57,6 +112,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
const globalStore = useGlobalStore();
|
||||
|
||||
const { data: _data, refresh } = await useFetch(`/api/admin/userconfig`, {
|
||||
method: 'get',
|
||||
});
|
||||
|
||||
@@ -21,6 +21,109 @@
|
||||
:description="$t('admin.interface.deviceDesc')"
|
||||
/>
|
||||
</FormGroup>
|
||||
<FormGroup v-if="globalStore.information?.isAwg">
|
||||
<FormHeading>{{ $t('awg.obfuscationParameters') }}</FormHeading>
|
||||
|
||||
<FormNullNumberField
|
||||
id="jC"
|
||||
v-model="data.jC"
|
||||
:label="$t('awg.jCLabel')"
|
||||
:description="$t('awg.jCDescription')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="jMin"
|
||||
v-model="data.jMin"
|
||||
:label="$t('awg.jMinLabel')"
|
||||
:description="$t('awg.jMinDescription')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="jMax"
|
||||
v-model="data.jMax"
|
||||
:label="$t('awg.jMaxLabel')"
|
||||
:description="$t('awg.jMaxDescription')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="s1"
|
||||
v-model="data.s1"
|
||||
:label="$t('awg.s1Label')"
|
||||
:description="$t('awg.s1Description')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="s2"
|
||||
v-model="data.s2"
|
||||
:label="$t('awg.s2Label')"
|
||||
:description="$t('awg.s2Description')"
|
||||
/>
|
||||
|
||||
<div class="col-span-full text-sm">* {{ $t('awg.mtuNote') }}</div>
|
||||
|
||||
<FormNullNumberField
|
||||
id="s3"
|
||||
v-model="data.s3"
|
||||
:label="$t('awg.s3Label')"
|
||||
:description="$t('awg.s3Description')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="s4"
|
||||
v-model="data.s4"
|
||||
:label="$t('awg.s4Label')"
|
||||
:description="$t('awg.s4Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i1"
|
||||
v-model="data.i1"
|
||||
:label="$t('awg.i1Label')"
|
||||
:description="$t('awg.i1Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i2"
|
||||
v-model="data.i2"
|
||||
:label="$t('awg.i2Label')"
|
||||
:description="$t('awg.i2Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i3"
|
||||
v-model="data.i3"
|
||||
:label="$t('awg.i3Label')"
|
||||
:description="$t('awg.i3Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i4"
|
||||
v-model="data.i4"
|
||||
:label="$t('awg.i4Label')"
|
||||
:description="$t('awg.i4Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i5"
|
||||
v-model="data.i5"
|
||||
:label="$t('awg.i5Label')"
|
||||
:description="$t('awg.i5Description')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="h1"
|
||||
v-model="data.h1"
|
||||
:label="$t('awg.h1Label')"
|
||||
:description="$t('awg.h1Description')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="h2"
|
||||
v-model="data.h2"
|
||||
:label="$t('awg.h2Label')"
|
||||
:description="$t('awg.h2Description')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="h3"
|
||||
v-model="data.h3"
|
||||
:label="$t('awg.h3Label')"
|
||||
:description="$t('awg.h3Description')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="h4"
|
||||
v-model="data.h4"
|
||||
:label="$t('awg.h4Label')"
|
||||
:description="$t('awg.h4Description')"
|
||||
/>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<FormHeading>{{ $t('form.actions') }}</FormHeading>
|
||||
<FormPrimaryActionField type="submit" :label="$t('form.save')" />
|
||||
@@ -53,6 +156,8 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const globalStore = useGlobalStore();
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const { data: _data, refresh } = await useFetch(`/api/admin/interface`, {
|
||||
|
||||
@@ -82,6 +82,61 @@
|
||||
:label="$t('general.persistentKeepalive')"
|
||||
/>
|
||||
</FormGroup>
|
||||
<FormGroup v-if="globalStore.information?.isAwg">
|
||||
<FormHeading>{{ $t('awg.obfuscationParameters') }}</FormHeading>
|
||||
|
||||
<FormNullNumberField
|
||||
id="jC"
|
||||
v-model="data.jC"
|
||||
:label="$t('awg.jCLabel')"
|
||||
:description="$t('awg.jCDescription')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="Jmin"
|
||||
v-model="data.jMin"
|
||||
:label="$t('awg.jMinLabel')"
|
||||
:description="$t('awg.jMinDescription')"
|
||||
/>
|
||||
<FormNullNumberField
|
||||
id="Jmax"
|
||||
v-model="data.jMax"
|
||||
:label="$t('awg.jMaxLabel')"
|
||||
:description="$t('awg.jMaxDescription')"
|
||||
/>
|
||||
|
||||
<div class="col-span-full text-sm">* {{ $t('awg.mtuNote') }}</div>
|
||||
|
||||
<FormNullTextField
|
||||
id="i1"
|
||||
v-model="data.i1"
|
||||
:label="$t('awg.i1Label')"
|
||||
:description="$t('awg.i1Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i2"
|
||||
v-model="data.i2"
|
||||
:label="$t('awg.i2Label')"
|
||||
:description="$t('awg.i2Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i3"
|
||||
v-model="data.i3"
|
||||
:label="$t('awg.i3Label')"
|
||||
:description="$t('awg.i3Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i4"
|
||||
v-model="data.i4"
|
||||
:label="$t('awg.i4Label')"
|
||||
:description="$t('awg.i4Description')"
|
||||
/>
|
||||
<FormNullTextField
|
||||
id="i5"
|
||||
v-model="data.i5"
|
||||
:label="$t('awg.i5Label')"
|
||||
:description="$t('awg.i5Description')"
|
||||
/>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<FormHeading :description="$t('client.hooksDescription')">
|
||||
{{ $t('client.hooks') }}
|
||||
@@ -140,6 +195,7 @@
|
||||
|
||||
<script lang="ts" setup>
|
||||
const authStore = useAuthStore();
|
||||
const globalStore = useGlobalStore();
|
||||
authStore.update();
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
Reference in New Issue
Block a user