Vorstand
-
+
Nils Wisiol
Peter Thomassen
Wolfgang Studier
diff --git a/www/webapp/src/components/ActivateAccountActionHandler.vue b/www/webapp/src/components/ActivateAccountActionHandler.vue
index 9a5edd13b..5656c78cd 100644
--- a/www/webapp/src/components/ActivateAccountActionHandler.vue
+++ b/www/webapp/src/components/ActivateAccountActionHandler.vue
@@ -8,7 +8,7 @@
v-model="payload.captcha.solution"
label="Type CAPTCHA text here"
prepend-icon="mdi-account-check"
- outline
+ variant="outlined"
required
:disabled="working"
:rules="captcha_rules"
@@ -38,18 +38,18 @@
- mdi-refresh
+ mdi-refresh
- mdi-eye
- mdi-ear-hearing
+ mdi-eye
+ mdi-ear-hearing
Again, thank you so much.
- Done
+ Done
@@ -36,7 +36,7 @@
v-model="name"
label="Full Name of the Account Holder"
prepend-icon="mdi-account"
- outline
+ variant="outlined"
required
:disabled="working"
:rules="name_rules"
@@ -47,19 +47,19 @@
v-model="iban"
label="IBAN"
prepend-icon="mdi-bank"
- outline
+ variant="outlined"
required
:disabled="working"
:rules="iban_rules"
:error-messages="iban_errors"
- validate-on-blur
+ validate-on="blur"
/>
diff --git a/www/webapp/src/components/Field/GenericText.vue b/www/webapp/src/components/Field/GenericText.vue
index 926d7d0c5..5dc9d8b35 100644
--- a/www/webapp/src/components/Field/GenericText.vue
+++ b/www/webapp/src/components/Field/GenericText.vue
@@ -3,15 +3,15 @@
:label="label"
:disabled="disabled || readonly"
:error-messages="errorMessages"
- :value="value"
+ :model-value="value"
:type="type || ''"
:placeholder="placeholder || (required ? '' : '(optional)')"
:hint="hint"
persistent-hint
:required="required"
:rules="[v => !required || !!v || 'Required.'].concat(rules)"
- @input="changed('input', $event)"
- @input.native="$emit('dirty', $event)"
+ @update:model-value="changed('input', $event)"
+ @update:model-value.native="$emit('dirty', $event)"
@keyup="changed('keyup', $event)"
/>
diff --git a/www/webapp/src/components/Field/GenericTextarea.vue b/www/webapp/src/components/Field/GenericTextarea.vue
index 56818c060..ca5464f71 100644
--- a/www/webapp/src/components/Field/GenericTextarea.vue
+++ b/www/webapp/src/components/Field/GenericTextarea.vue
@@ -3,15 +3,15 @@
:label="label"
:disabled="disabled || readonly"
:error-messages="errorMessages"
- :value="value"
+ :model-value="value"
:type="type || ''"
:placeholder="required ? '' : '(optional)'"
:hint="hint"
persistent-hint
:required="required"
:rules="[v => !required || !!v || 'Required.'].concat(rules)"
- @input="changed('input', $event)"
- @input.native="$emit('dirty', $event)"
+ @update:model-value="changed('input', $event)"
+ @update:model-value.native="$emit('dirty', $event)"
@keyup="changed('keyup', $event)"
dense
rows="8"
diff --git a/www/webapp/src/components/Field/RRSetType.vue b/www/webapp/src/components/Field/RRSetType.vue
index 8c0773ef9..28a8bf3c4 100644
--- a/www/webapp/src/components/Field/RRSetType.vue
+++ b/www/webapp/src/components/Field/RRSetType.vue
@@ -5,11 +5,11 @@
:error-messages="errorMessages"
hint="You can also enter other types. For a full list, check the documentation."
:persistent-hint="!readonly"
- :value="value"
+ :model-value="value"
:items="types"
:required="required"
:rules="[v => !required || !!v || 'Required.']"
- @input="input($event)"
+ @update:model-value="input($event)"
/>
diff --git a/www/webapp/src/components/Field/Record.vue b/www/webapp/src/components/Field/Record.vue
index d496bd14f..6bba58c80 100644
--- a/www/webapp/src/components/Field/Record.vue
+++ b/www/webapp/src/components/Field/Record.vue
@@ -19,7 +19,7 @@
:style="{ width: fieldWidth(index) }"
:append-icon="index == fields.length-1 && !readonly && !disabled ? appendIcon : ''"
@click:append="$emit('remove', $event)"
- @input="inputHandler()"
+ @update:model-value="inputHandler()"
@paste.prevent="pasteHandler($event)"
@keydown.8="backspaceHandler(index, $event)"
@keydown.32="spaceHandler(index, $event)"
diff --git a/www/webapp/src/components/Field/RecordList.vue b/www/webapp/src/components/Field/RecordList.vue
index 8bf2114b7..4c7323ea4 100644
--- a/www/webapp/src/components/Field/RecordList.vue
+++ b/www/webapp/src/components/Field/RecordList.vue
@@ -21,8 +21,8 @@
@click="addHandler"
class="px-0 text-none"
color="grey"
- small
- text
+ size="small"
+ variant="text"
v-if="!readonly && !disabled"
>mdi-plus add another value
diff --git a/www/webapp/src/components/Field/Switchbox.vue b/www/webapp/src/components/Field/Switchbox.vue
index bcb8b9bce..746cb94cc 100644
--- a/www/webapp/src/components/Field/Switchbox.vue
+++ b/www/webapp/src/components/Field/Switchbox.vue
@@ -6,7 +6,7 @@
:input-value="value"
:required="required"
:rules="[v => !required || !!v || 'Required.']"
- @change="change"
+ @update:model-value="change"
/>
diff --git a/www/webapp/src/components/Field/TTL.vue b/www/webapp/src/components/Field/TTL.vue
index c91d38c31..daa0f0791 100644
--- a/www/webapp/src/components/Field/TTL.vue
+++ b/www/webapp/src/components/Field/TTL.vue
@@ -3,15 +3,15 @@
:label="label"
:disabled="disabled || readonly"
:error-messages="errorMessages"
- :value="value"
+ :model-value="value"
type="number"
max="86400"
:min="min"
:placeholder="required ? '' : '(optional)'"
:required="required"
:rules="rules"
- @input="changed('input', $event)"
- @input.native="$emit('dirty', $event)"
+ @update:model-value="changed('input', $event)"
+ @update:model-value.native="$emit('dirty', $event)"
@keyup="changed('keyup', $event)"
/>
diff --git a/www/webapp/src/components/ResetPasswordActionHandler.vue b/www/webapp/src/components/ResetPasswordActionHandler.vue
index d0ea9f122..f5ec5e0cf 100644
--- a/www/webapp/src/components/ResetPasswordActionHandler.vue
+++ b/www/webapp/src/components/ResetPasswordActionHandler.vue
@@ -15,7 +15,7 @@
tabindex="1"
>
h(App)
-}).$mount('#app')
+createApp(App)
+.use(vuetify)
+.use(timeago)
+.use(pinia)
+.use(router)
+.mount('#app')
diff --git a/www/webapp/src/router/index.js b/www/webapp/src/router/index.js
index 316c25458..02e360143 100644
--- a/www/webapp/src/router/index.js
+++ b/www/webapp/src/router/index.js
@@ -1,4 +1,4 @@
-import VueRouter from 'vue-router'
+import { createRouter, createWebHistory } from 'vue-router'
import Home from '@/views/Home.vue'
import {HTTP} from '@/utils';
import {useUserStore} from "@/store/user";
@@ -35,12 +35,12 @@ const routes = [
component: () => import(/* webpackChunkName: "signup" */ '@/views/Welcome.vue')
},
{
- path: 'https://desec.readthedocs.io/',
+ path: '/desec.readthedocs.io/', // TODO
name: 'docs',
beforeEnter(to) { location.href = to.path },
},
{
- path: 'https://talk.desec.io/',
+ path: '/talk.desec.io/', // TODO
name: 'talk',
beforeEnter(to) { location.href = to.path },
},
@@ -90,7 +90,7 @@ const routes = [
component: () => import(/* webpackChunkName: "extra" */ '@/views/Donate.vue')
},
{
- path: 'https://github.com/desec-io/desec-stack/projects?query=is%3Aopen+sort%3Aname-asc&type=classic',
+ path: '/github.com/desec-io/desec-stack/projects?query=is%3Aopen+sort%3Aname-asc&type=classic',
name: 'roadmap',
beforeEnter(to) { location.href = to.path },
},
@@ -139,8 +139,9 @@ const routes = [
},
]
-const router = new VueRouter({
+const router = createRouter({
mode: 'history',
+ history: createWebHistory(),
base: process.env.BASE_URL,
scrollBehavior (to, from) {
// Skip if destination full path has query parameters and differs in no other way from previous
diff --git a/www/webapp/src/views/About.vue b/www/webapp/src/views/About.vue
index 9b608a60c..23a87bf08 100644
--- a/www/webapp/src/views/About.vue
+++ b/www/webapp/src/views/About.vue
@@ -1,6 +1,6 @@
-
+
- About Us
+ About Us
Our services are operated by deSEC e.V., a registered non-profit organization in Berlin, Germany.
@@ -26,7 +26,7 @@
-
+
diff --git a/www/webapp/src/views/ChangeEmail.vue b/www/webapp/src/views/ChangeEmail.vue
index 86f7d98b8..be764d886 100644
--- a/www/webapp/src/views/ChangeEmail.vue
+++ b/www/webapp/src/views/ChangeEmail.vue
@@ -35,10 +35,10 @@
v-model="email"
label="Current Email"
prepend-icon="mdi-blank"
- outline
+ variant="outlined"
required
:disabled="true"
- validate-on-blur
+ validate-on="blur"
/>
- Keep deSEC Going
+ Keep deSEC Going
To offer free DNS hosting for everyone, deSEC relies on donations only.
If you like our service, please consider donating.
- Donate
+ Donate
diff --git a/www/webapp/src/views/Console/DomainSetupDialog.vue b/www/webapp/src/views/Console/DomainSetupDialog.vue
index 3d8d1a257..c3a653050 100644
--- a/www/webapp/src/views/Console/DomainSetupDialog.vue
+++ b/www/webapp/src/views/Console/DomainSetupDialog.vue
@@ -8,7 +8,7 @@
>
-
+
Setup Instructions for {{ domain }}
diff --git a/www/webapp/src/views/Console/TOTPVerifyDialog.vue b/www/webapp/src/views/Console/TOTPVerifyDialog.vue
index ef2d68c6a..b5aa2f626 100644
--- a/www/webapp/src/views/Console/TOTPVerifyDialog.vue
+++ b/www/webapp/src/views/Console/TOTPVerifyDialog.vue
@@ -9,7 +9,7 @@
-
+
Verify TOTP: {{ name }}
@@ -65,7 +65,7 @@
mdi-plus
@@ -84,7 +84,7 @@
- {{ headlines.create }}
+ {{ headlines.create }}
mdi-close
@@ -137,7 +137,7 @@
v-if="Object.keys(writeableAdvancedColumns).length > 0"
>
-
+
Advanced settings
@@ -166,7 +166,7 @@
@@ -176,7 +176,7 @@
type="submit"
color="primary"
class="grow"
- depressed
+ variant="flat"
:disabled="createInhibited || !valid || createDialogWorking || createDialogSuccess"
:loading="createDialogWorking"
v-if="!createDialogSuccess"
@@ -215,7 +215,7 @@
@@ -237,8 +237,8 @@
-
-
Feels so empty here!
+
+
Feels so empty here!
No entries yet.
@@ -251,7 +251,7 @@
type="warning"
>
-
Too much data!
+
Too much data!
Wow! There are more than 500 entries here.
Unfortunately, the web interface can't handle this.
@@ -275,7 +275,7 @@
- {{ headlines.destroy }}
+ {{ headlines.destroy }}
@@ -308,7 +308,7 @@
@@ -317,7 +317,7 @@
diff --git a/www/webapp/src/views/DeleteAccount.vue b/www/webapp/src/views/DeleteAccount.vue
index 10dde899c..1b6da7ca9 100644
--- a/www/webapp/src/views/DeleteAccount.vue
+++ b/www/webapp/src/views/DeleteAccount.vue
@@ -33,10 +33,10 @@
v-model="email"
label="Current Email"
prepend-icon="mdi-blank"
- outline
+ variant="outlined"
required
:disabled="true"
- validate-on-blur
+ validate-on="blur"
/>
-
+
mdi-numeric-0-circle
DNS Configuration
@@ -14,12 +14,12 @@
To ensure a smooth transition when moving your domain to deSEC, setup a password for your deSEC account,
log in and configure the DNS for
{{ domain }}, before you proceed below.
-
+
Assign Account Password
-
+
mdi-numeric-1-circle
Delegate your domain
@@ -29,7 +29,7 @@
{{ domain }} (usually your provider or technical administrator):
-
+
Nameservers
@@ -38,13 +38,7 @@
{{ ns.join('\n') }}
-
+
mdi-content-copy
copy to clipboard
@@ -62,7 +56,7 @@
Once your provider processes this information, the Internet will start directing DNS queries to deSEC.
-
+
mdi-numeric-2-circle
Enable DNSSEC
@@ -75,7 +69,7 @@
{{ t.title }}
@@ -87,13 +81,7 @@
{{ t.banner }}
{{ t.data }}
-
+
mdi-content-copy
copy to clipboard
@@ -110,7 +98,7 @@
-
+
mdi-numeric-3-circle
Check Setup
@@ -125,7 +113,7 @@
@@ -187,11 +175,13 @@ export default {
},
},
methods: {
- copySuccess: function () {
- this.showSnackbar("Copied to clipboard.");
- },
- copyError: function () {
- this.showSnackbar("Copy to clipboard failed. Please try again manually.");
+ copy: async function (text) {
+ try {
+ await navigator.clipboard.writeText(text);
+ this.showSnackbar("Copied to clipboard.");
+ } catch (e) {
+ this.showSnackbar("Copy to clipboard failed. Please try again manually.");
+ }
},
showSnackbar: function (text) {
this.snackbar_text = text;
diff --git a/www/webapp/src/views/DomainSetupPage.vue b/www/webapp/src/views/DomainSetupPage.vue
index 797faecb0..486b4746b 100644
--- a/www/webapp/src/views/DomainSetupPage.vue
+++ b/www/webapp/src/views/DomainSetupPage.vue
@@ -21,26 +21,26 @@
- Find Help
+ Find Help
In our forum talk.desec.io, members of the community
discuss ideas and applications of deSEC. If you have a question, chances are that you may be able to find
the answer there.
- Find Help
+ Find Help
- Keep deSEC Going
+ Keep deSEC Going
To offer free DNS hosting for everyone, deSEC relies on donations only.
If you like our service, please consider donating.
- Donate
+ Donate
diff --git a/www/webapp/src/views/Donate.vue b/www/webapp/src/views/Donate.vue
index b983fdd91..e00ef4871 100644
--- a/www/webapp/src/views/Donate.vue
+++ b/www/webapp/src/views/Donate.vue
@@ -16,7 +16,7 @@
-
+
mdi-bank-transfer-in Direct Debit – Let us Take your Money (Europe)
@@ -30,7 +30,7 @@
-
+
mdi-bank-transfer-out Bank Transfer – Send us Money (Europe)
@@ -58,7 +58,7 @@
-
+
mdi-credit-card-outline Credit Card
@@ -76,7 +76,7 @@
-
+
mdi-github GitHub Sponsors
@@ -89,7 +89,7 @@
-
+
mdi-gift-outline PayPal
@@ -107,7 +107,7 @@
-
+
mdi-heart-multiple-outline Double-up with Your Employer
@@ -129,7 +129,7 @@
Based in Europe? You almost certainly can donate via direct debit or bank transfer (you
only need your IBAN). No fees will be subtracted, so you can do more good!
- Donation Receipts
+ Donation Receipts
deSEC e.V. is registered as a charitable organization in Germany. If you pay taxes here, your donation is
tax-deductible, and we're happy to provide you with a donation receipt for that purpose. Note that for
diff --git a/www/webapp/src/views/DynSetup.vue b/www/webapp/src/views/DynSetup.vue
index f11a547ed..8f4f095ae 100644
--- a/www/webapp/src/views/DynSetup.vue
+++ b/www/webapp/src/views/DynSetup.vue
@@ -25,7 +25,7 @@
Congratulations, you are now the owner of {{ $route.params.domain }}!
- Set Up Your Domain
+ Set Up Your Domain
All operations on your domain require the following authorization token secret shown below:
@@ -42,7 +42,7 @@
- Configure Your Router
+ Configure Your Router
To continuously update your domain to point to your home router, configure your
@@ -75,7 +75,7 @@
- One-Off Manual Update
+ One-Off Manual Update
Your domain can be configured to your current public IP address as seen by our servers.
@@ -87,7 +87,7 @@
- Alternative IP Update Approaches
+ Alternative IP Update Approaches
For alternative approaches to updating your IP address and for a
@@ -102,7 +102,7 @@
that someone had the same question before.
- Check Domain Status
+ Check Domain Status
Currently, no IPv4 or IPv6 address is associated with
@@ -110,7 +110,7 @@
Please verify that your client is using the credentials provided by deSEC and then come back to check
again.
- Check Again
+ Check Again
@@ -129,7 +129,7 @@
Enjoy!
- Update
+ Update
Please note that deSEC only assigns your IP address to your domain name.
@@ -138,24 +138,24 @@
-
Optional: Assign deSEC Account Password
+
Optional: Assign deSEC Account Password
To use more features of deSEC, assign a password to your account. This is not required for using deSEC
for dynamic DNS only, but enables to you add more domains and other DNS information.
You can also assign a password later at any time.
-
+
Assign Account Password
- Keep deSEC Going
+ Keep deSEC Going
To offer free DNS hosting for everyone, deSEC relies on donations only.
If you like our service, please consider donating.
- Donate
+ Donate
diff --git a/www/webapp/src/views/Home.vue b/www/webapp/src/views/Home.vue
index b89ede082..de896f801 100644
--- a/www/webapp/src/views/Home.vue
+++ b/www/webapp/src/views/Home.vue
@@ -1,11 +1,11 @@
-
+
- Modern DNS Hosting for Everyone
+ Modern DNS Hosting for Everyone
deSEC is a free DNS hosting service, designed with security in mind.
@@ -16,7 +16,7 @@
-
+
@@ -25,28 +25,27 @@
class="pb-2"
hide-details
row
- @change="$router.push({query: {domainType: domainType}})"
+ @update:model-value="$router.push({query: {domainType: domainType}})"
>
Create Account
@@ -63,14 +62,14 @@
- {{f.icon}}
- {{f.title}}
+ {{f.icon}}
+ {{f.title}}
-
+
@@ -84,7 +83,7 @@
- SSE supports us with staff for
+ SSE supports us with staff for
software development and our standardization activities within the IETF and ICANN.
We trust them because creating and auditing security solutions is their daily business.
@@ -96,7 +95,7 @@
- Through their Community Projects Fund, RIPE NCC
+ Through their Community Projects Fund, RIPE NCC
supports the ongoing operation of our DNS platform and covers global Anycast network expenses in
particular. We greatly appreciate their support.
@@ -118,21 +117,21 @@
-
+
-