diff --git a/api/requirements.txt b/api/requirements.txt
index 3fa6af9be..4f711b70a 100644
--- a/api/requirements.txt
+++ b/api/requirements.txt
@@ -1,5 +1,5 @@
captcha~=0.7.1
-celery~=5.4.0
+celery~=5.5.1
coverage~=7.8.0
cryptography~=44.0.2
Django~=5.1.7
@@ -7,7 +7,7 @@ django-cors-headers~=4.7.0
djangorestframework~=3.14.0
django-celery-email~=3.0.0
django-netfields~=1.3.2
-django-pgtrigger~=4.13.3
+django-pgtrigger~=4.14.0
django-prometheus~=2.3.1
dnspython~=2.7.0
pyotp~=2.9.0
@@ -17,4 +17,4 @@ pylibmc~=1.6.3
pyyaml~=6.0.2
requests~=2.32.3
responses~=0.25.7
-uwsgi~=2.0.28
+uwsgi~=2.0.29
diff --git a/api/uwsgi.ini b/api/uwsgi.ini
index 58a403da8..6d38c230c 100644
--- a/api/uwsgi.ini
+++ b/api/uwsgi.ini
@@ -2,7 +2,7 @@
socket = [::]:3031
chdir = /usr/src/app/
wsgi-file = api/wsgi.py
-processes = 128
+processes = 128 # make sure to adjust nginx workers and dbapi max_connections
threads = 1
uid = nobody
gid = nogroup
diff --git a/www/webapp/src/views/ImpressumPage.vue b/www/webapp/src/views/ImpressumPage.vue
index 1059dab99..953146834 100644
--- a/www/webapp/src/views/ImpressumPage.vue
+++ b/www/webapp/src/views/ImpressumPage.vue
@@ -14,16 +14,18 @@
Dr. Peter Thomassen
Wolfgang Studier
- Registergericht / Registration court
- AG Berlin (Charlottenburg)
VR 37525
- Gemeinnützigkeit / Charitable status
+ Registration and Tax Information (Gemeinnützigkeit / Charitable Status)
+
+ Registergericht / Registration court: AG Berlin (Charlottenburg), VR 37525
+ Steuernummer / Tax number: 27/663/65101, UStID-Nr.: DE363934139
+
Der Verein wurde vom Finanzamt für Körperschaften I, Berlin, als gemeinnützig anerkannt
- (Freistellungsbescheid vom 01.11.2019, Steuernummer 27/663/65101).
+ (Freistellungsbescheid vom 01.11.2019, seitdem aktualisiert).
The organization has been recognized as charitable by the competent tax office
- (Finanzamt für Körperschaften I, Berlin; exemption notice dated November 1, 2019, tax number 27/663/65101).
+ (Finanzamt für Körperschaften I, Berlin; exemption notice dated November 1, 2019, since renewed).
diff --git a/www/webapp/src/views/SignUp.vue b/www/webapp/src/views/SignUp.vue
index 144a84fb1..529e7645a 100644
--- a/www/webapp/src/views/SignUp.vue
+++ b/www/webapp/src/views/SignUp.vue
@@ -55,13 +55,49 @@
+
+
+
+ Limitations of Domains Registered under {{ LOCAL_PUBLIC_SUFFIXES[0] }}
+
+ deSEC provides dynDNS service with DNSSEC protection for residential Internet users.
+ These domains are subject to the following limitations:
+
+
+ - Only one {{ LOCAL_PUBLIC_SUFFIXES[0] }} domain is provided per user. (You can set up subdomains under it.)
+ - You cannot change NS records. External delegation is not supported.
+ - Based on historical abuse, certain IP addresses cannot be used in A/AAAA records.
+ - It is required to update your IP address regularly, as is typical in residential networks.
+
+
+ If these limitations don't work for you or your use case is different, please register a domain name elsewhere.
+
+
+
+ I am OK with these limitations.
+
+
+
+
+
+
({
- valid: false,
- working: false,
- errors: [],
- LOCAL_PUBLIC_SUFFIXES: LOCAL_PUBLIC_SUFFIXES,
+ data: function () {
+ const self = this;
+ return {
+ valid: false,
+ working: false,
+ errors: [],
+ LOCAL_PUBLIC_SUFFIXES: LOCAL_PUBLIC_SUFFIXES,
+
+ mdiDns: mdiDns,
+ mdiEmail: mdiEmail,
- mdiDns: mdiDns,
- mdiEmail: mdiEmail,
+ /* email field */
+ email: '',
+ email_rules: [v => !!email_pattern.test(v || '') || 'We need an email address for account recovery and technical support.'],
+ email_errors: [],
- /* email field */
- email: '',
- email_rules: [v => !!email_pattern.test(v || '') || 'We need an email address for account recovery and technical support.'],
- email_errors: [],
+ /* captcha field */
+ captchaID: null,
+ captchaSolution: '',
- /* captcha field */
- captchaID: null,
- captchaSolution: '',
+ /* outreach preference */
+ outreach_preference: true,
- /* outreach preference */
- outreach_preference: true,
+ /* terms field */
+ terms: false,
+ terms_rules: [v => !!v || 'You can only use our service if you agree with the terms'],
- /* terms field */
- terms: false,
- terms_rules: [v => !!v || 'You can only use our service if you agree with the terms'],
+ /* domain field */
+ domain: '',
+ domainType: null,
+ domain_rules: [v => !!v && !!domain_pattern.test(v) || 'Domain names can only contain letters, numbers, dots (.), and dashes (-), and must end with a top-level domain.'],
+ dyn_domain_rules: [v => !!v && v.indexOf('.') < 0 && !!domain_pattern.test(v + '.' + LOCAL_PUBLIC_SUFFIXES[0]) || 'Your domain name can only contain letters, numbers, and dashes (-).'],
+ domain_errors: [],
- /* domain field */
- domain: '',
- domainType: null,
- domain_rules: [v => !!v && !!domain_pattern.test(v) || 'Domain names can only contain letters, numbers, dots (.), and dashes (-), and must end with a top-level domain.'],
- dyn_domain_rules: [v => !!v && v.indexOf('.') < 0 && !!domain_pattern.test(v + '.' + LOCAL_PUBLIC_SUFFIXES[0]) || 'Your domain name can only contain letters, numbers, and dashes (-).'],
- domain_errors: [],
- }),
+ /* dynDNS limitations */
+ limitationsAccepted: false,
+ limitationsAccepted_rules: [v => (self.domainType !== 'dynDNS' || !!v)],
+ }
+ },
async mounted() {
if ('email' in this.$route.params && this.$route.params.email !== undefined) {
this.email = this.$route.params.email;