add
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
<template>
|
||||
<v-card subtitle="Tun">
|
||||
<v-row>
|
||||
<v-col cols="12" sm="8">
|
||||
<v-text-field v-model="addrs" :label="$t('types.tun.addr') + ' ' + $t('commaSeparated')" placeholder="172.18.0.1/30" hide-details></v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row>
|
||||
<v-col cols="12" sm="6" md="4">
|
||||
<v-text-field v-model="data.interface_name" :label="$t('types.tun.ifName')" placeholder="tun0" hide-details clearable @click:clear="delete data.interface_name"></v-text-field>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="4">
|
||||
<v-text-field type="number" v-model.number="data.mtu" label="MTU" hide-details></v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row>
|
||||
<v-col cols="12" sm="6" md="4">
|
||||
<v-text-field
|
||||
type="number"
|
||||
v-model.number="udpTimeout"
|
||||
label="UDP timeout"
|
||||
min="1"
|
||||
:suffix="$t('date.m')"
|
||||
hide-details>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="4">
|
||||
<v-select
|
||||
v-model="data.stack"
|
||||
label="Stack"
|
||||
:items="['system','gvisor','mixed']"
|
||||
hide-details
|
||||
></v-select>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="4">
|
||||
<v-switch v-model="data.endpoint_independent_nat" color="primary" label="Independent NAT" hide-details></v-switch>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-row>
|
||||
<v-col cols="12" sm="6" md="4">
|
||||
<v-switch v-model="autoRoute" color="primary" label="Auto Route" hide-details></v-switch>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="4" v-if="autoRoute">
|
||||
<v-switch v-model="data.auto_redirect" color="primary" label="Auto Redirect" hide-details></v-switch>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="4" v-if="autoRoute">
|
||||
<v-switch v-model="data.strict_route" color="primary" label="Strict Route" hide-details></v-switch>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="4" v-if="autoRoute && data.auto_redirect">
|
||||
<v-switch v-model="data.exclude_mptcp" color="primary" :label="$t('types.tun.excludeMptcp')" hide-details></v-switch>
|
||||
</v-col>
|
||||
<v-col cols="12" sm="6" md="4" v-if="autoRoute && data.auto_redirect">
|
||||
<v-text-field
|
||||
type="number"
|
||||
v-model.number="fallbackRuleIndex"
|
||||
:label="$t('types.tun.fallbackRuleIndex')"
|
||||
min="0"
|
||||
hide-details>
|
||||
</v-text-field>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
|
||||
export default {
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {
|
||||
menu: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
addrs: {
|
||||
get() { return this.$props.data.address?.join(',') },
|
||||
set(v:string) { this.$props.data.address = v.length > 0 ? v.split(',') : undefined }
|
||||
},
|
||||
udpTimeout: {
|
||||
get() { return this.$props.data.udp_timeout ? parseInt(this.$props.data.udp_timeout.replace('m','')) : 5 },
|
||||
set(v:number) { this.$props.data.udp_timeout = v > 0 ? v + 'm' : '5m' }
|
||||
},
|
||||
autoRoute: {
|
||||
get() { return this.$props.data.auto_route ?? false },
|
||||
set(v:boolean) {
|
||||
this.$props.data.auto_route = v
|
||||
this.$props.data.auto_redirect = v ? false : undefined
|
||||
this.$props.data.strict_route = v ? false : undefined
|
||||
}
|
||||
},
|
||||
fallbackRuleIndex: {
|
||||
get() { return this.$props.data.auto_redirect_iproute2_fallback_rule_index ?? 32768 },
|
||||
set(v: number) {
|
||||
const val = typeof v === 'number' && !isNaN(v) && v >= 0 ? v : undefined
|
||||
this.$props.data.auto_redirect_iproute2_fallback_rule_index = val
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user