From bbb00de25b4ea0012e0520d32923cdbd5679ea79 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Tue, 4 Jul 2023 22:55:11 +0200 Subject: [PATCH] config download --- frontend/src/components/PeerViewModal.vue | 25 ++++++- frontend/src/views/InterfaceView.vue | 20 +++++- go.mod | 5 -- go.sum | 10 --- internal/app/filetemplate/manager.go | 7 +- internal/app/filetemplate/qrwriter.go | 88 +++++++++++++++++++++++ 6 files changed, 136 insertions(+), 19 deletions(-) create mode 100644 internal/app/filetemplate/qrwriter.go diff --git a/frontend/src/components/PeerViewModal.vue b/frontend/src/components/PeerViewModal.vue index 905df4c..d5ea2a5 100644 --- a/frontend/src/components/PeerViewModal.vue +++ b/frontend/src/components/PeerViewModal.vue @@ -66,6 +66,29 @@ watch(() => props.visible, async (newValue, oldValue) => { } ) +function download() { + // credit: https://www.bitdegree.org/learn/javascript-download + let filename = 'WireGuard-Tunnel.conf' + if (selectedPeer.value.DisplayName) { + filename = selectedPeer.value.DisplayName + .replace(/ /g,"_") + .replace(/[^a-zA-Z0-9-_]/g,"") + .substring(0, 16) + + ".conf" + } + let text = configString.value + + let element = document.createElement('a') + element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)) + element.setAttribute('download', filename) + + element.style.display = 'none' + document.body.appendChild(element) + + element.click() + document.body.removeChild(element) +} +