mirror of
https://github.com/h44z/wg-portal.git
synced 2026-05-28 08:56:17 +00:00
Improved default peer handling (#674)
* create default peers for newly created interfaces (#666) * allow to manually create default peers for an interface (#666)
This commit is contained in:
@@ -53,6 +53,7 @@ const formData = ref(freshInterface())
|
||||
const isSaving = ref(false)
|
||||
const isDeleting = ref(false)
|
||||
const isApplyingDefaults = ref(false)
|
||||
const isCreatingDefaultPeers = ref(false)
|
||||
|
||||
const isBackendValid = computed(() => {
|
||||
if (!props.visible || !selectedInterface.value) {
|
||||
@@ -313,6 +314,39 @@ async function applyPeerDefaults() {
|
||||
}
|
||||
}
|
||||
|
||||
async function createDefaultPeers() {
|
||||
if (props.interfaceId==='#NEW#') {
|
||||
return; // do nothing for new interfaces
|
||||
}
|
||||
|
||||
if (!formData.value.CreateDefaultPeer) {
|
||||
return; // only allowed if the interface flag is set
|
||||
}
|
||||
|
||||
if (isCreatingDefaultPeers.value) return
|
||||
isCreatingDefaultPeers.value = true
|
||||
try {
|
||||
await interfaces.CreateDefaultPeers(selectedInterface.value.Identifier)
|
||||
|
||||
notify({
|
||||
title: "Default Peers Created",
|
||||
text: "Created default peers for all users on this interface.",
|
||||
type: 'success',
|
||||
})
|
||||
|
||||
await peers.LoadPeers(selectedInterface.value.Identifier) // reload peers list
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
notify({
|
||||
title: "Failed to create default peers!",
|
||||
text: e.toString(),
|
||||
type: 'error',
|
||||
})
|
||||
} finally {
|
||||
isCreatingDefaultPeers.value = false
|
||||
}
|
||||
}
|
||||
|
||||
async function del() {
|
||||
if (isDeleting.value) return
|
||||
if (!confirm(t('modals.interface-edit.confirm-delete', {id: selectedInterface.value.Identifier}))) return
|
||||
@@ -490,9 +524,15 @@ async function del() {
|
||||
<input v-model="formData.Disabled" class="form-check-input" type="checkbox">
|
||||
<label class="form-check-label">{{ $t('modals.interface-edit.disabled.label') }}</label>
|
||||
</div>
|
||||
<div class="form-check form-switch" v-if="formData.Mode==='server' && settings.Setting('CreateDefaultPeer')">
|
||||
<input v-model="formData.CreateDefaultPeer" class="form-check-input" type="checkbox">
|
||||
<label class="form-check-label">{{ $t('modals.interface-edit.create-default-peer.label') }}</label>
|
||||
<div class="d-flex align-items-center justify-content-between" v-if="formData.Mode==='server' && settings.Setting('CreateDefaultPeer')">
|
||||
<div class="form-check form-switch mb-0">
|
||||
<input v-model="formData.CreateDefaultPeer" class="form-check-input" type="checkbox">
|
||||
<label class="form-check-label">{{ $t('modals.interface-edit.create-default-peer.label') }}</label>
|
||||
</div>
|
||||
<button v-if="props.interfaceId!=='#NEW#'" class="btn btn-primary btn-sm" type="button" @click.prevent="createDefaultPeers" :disabled="!formData.CreateDefaultPeer || isCreatingDefaultPeers">
|
||||
<span v-if="isCreatingDefaultPeers" class="spinner-border spinner-border-sm me-1" role="status" aria-hidden="true"></span>
|
||||
{{ $t('modals.interface-edit.button-create-default-peers') }}
|
||||
</button>
|
||||
</div>
|
||||
<div class="form-check form-switch" v-if="formData.Backend==='local'">
|
||||
<input v-model="formData.SaveConfig" checked="" class="form-check-input" type="checkbox">
|
||||
|
||||
@@ -505,6 +505,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Peer-Standardeinstellungen anwenden",
|
||||
"button-create-default-peers": "Standard-Peers erstellen",
|
||||
"confirm-delete": "Interface '{id}' wirklich löschen?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -505,6 +505,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Apply Peer Defaults",
|
||||
"button-create-default-peers": "Create Default Peers",
|
||||
"confirm-delete": "Are you sure you want to delete interface '{id}'?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -495,6 +495,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Aplicar Valores Predeterminados de peers",
|
||||
"button-create-default-peers": "Crear Peers Predeterminados",
|
||||
"confirm-delete": "Seguro que desea eliminar la interfaz '{id}'?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -377,6 +377,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Appliquer les valeurs par défaut des pairs",
|
||||
"button-create-default-peers": "Créer les pairs par défaut",
|
||||
"confirm-delete": "Voulez-vous vraiment supprimer l'interface \"{id}\" ?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -395,6 +395,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "피어 기본값 적용",
|
||||
"button-create-default-peers": "기본 피어 생성",
|
||||
"confirm-delete": "인터페이스 '{id}'를 삭제하시겠습니까?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -415,6 +415,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Aplicar Padrões de Peer",
|
||||
"button-create-default-peers": "Criar Peers Padrão",
|
||||
"confirm-delete": "Tem certeza que deseja excluir a interface '{id}'?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -486,6 +486,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Применить настройки пира по умолчанию",
|
||||
"button-create-default-peers": "Создать пиров по умолчанию",
|
||||
"confirm-delete": "Вы уверены, что хотите удалить интерфейс «{id}»?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -377,6 +377,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Застосувати значення за замовчуванням для пірів",
|
||||
"button-create-default-peers": "Створити пірів за замовчуванням",
|
||||
"confirm-delete": "Ви впевнені, що хочете видалити інтерфейс «{id}»?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -355,6 +355,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "Áp dụng Cài đặt Mặc định của Peer",
|
||||
"button-create-default-peers": "Tạo Peer Mặc định",
|
||||
"confirm-delete": "Ban co chac muon xoa giao dien '{id}' khong?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -355,6 +355,7 @@
|
||||
}
|
||||
},
|
||||
"button-apply-defaults": "应用节点默认值",
|
||||
"button-create-default-peers": "创建默认节点",
|
||||
"confirm-delete": "确定要删除接口“{id}”吗?"
|
||||
},
|
||||
"peer-view": {
|
||||
|
||||
@@ -148,6 +148,18 @@ export const interfaceStore = defineStore('interfaces', {
|
||||
throw new Error(error)
|
||||
})
|
||||
},
|
||||
async CreateDefaultPeers(id) {
|
||||
this.fetching = true
|
||||
return apiWrapper.post(`${baseUrl}/${base64_url_encode(id)}/create-default-peers`)
|
||||
.then(() => {
|
||||
this.fetching = false
|
||||
})
|
||||
.catch(error => {
|
||||
this.fetching = false
|
||||
console.log(error)
|
||||
throw new Error(error)
|
||||
})
|
||||
},
|
||||
async SaveConfiguration(id) {
|
||||
this.fetching = true
|
||||
return apiWrapper.post(`${baseUrl}/${base64_url_encode(id)}/save-config`)
|
||||
|
||||
Reference in New Issue
Block a user