Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions api/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
captcha~=0.7.1
celery~=5.4.0
celery~=5.5.1
coverage~=7.8.0
cryptography~=44.0.2
Django~=5.1.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
Expand All @@ -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
2 changes: 1 addition & 1 deletion api/uwsgi.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 7 additions & 5 deletions www/webapp/src/views/ImpressumPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@
Dr. Peter Thomassen<br>
Wolfgang Studier
</p>
<h3>Registergericht / Registration court</h3>
<p>AG Berlin (Charlottenburg)<br>VR 37525<br></p>
<h3>Gemeinnützigkeit / Charitable status</h3>
<h3>Registration and Tax Information (Gemeinnützigkeit / Charitable Status)</h3>
<p>
Registergericht / Registration court: AG Berlin (Charlottenburg), VR 37525<br>
Steuernummer / Tax number: 27/663/65101, UStID-Nr.: DE363934139
</p>
<p>
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).
</p>
<p>
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).
</p>
</v-container>
</template>
Expand Down
97 changes: 70 additions & 27 deletions www/webapp/src/views/SignUp.vue
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,49 @@
<v-radio label="No, I'll add one later." value="none" tabindex="2"></v-radio>
</v-radio-group>

<v-expand-transition>
<div v-if="domainType === 'dynDNS'">
<v-alert
class="mb-2 ml-8 mt-0"
type="info"
outlined
>
<p class="text-h6">Limitations of Domains Registered under {{ LOCAL_PUBLIC_SUFFIXES[0] }}</p>
<p>
deSEC provides dynDNS service with DNSSEC protection for residential Internet users.
These domains are subject to the following limitations:
</p>
<ul class="mb-4">
<li>Only <strong>one {{ LOCAL_PUBLIC_SUFFIXES[0] }} domain</strong> is provided per user. (You can set up subdomains under it.)</li>
<li><strong>You cannot change NS records.</strong> External delegation is not supported.</li>
<li>Based on historical abuse, <strong>certain IP addresses cannot be used in A/AAAA records</strong>.</li>
<li>It is required to <strong>update your IP address regularly</strong>, as is typical in residential networks.</li>
</ul>
<p class="mb-2">
If these limitations don't work for you or your use case is different, please register a domain name elsewhere.
</p>
<v-checkbox
v-model="limitationsAccepted"
hide-details="auto"
type="checkbox"
:rules="limitationsAccepted_rules"
tabindex="6"
>
<template #label>
I am OK with these limitations.
</template>
</v-checkbox>
</v-alert>
</div>
</v-expand-transition>

<v-text-field
v-model="domain"
:label="domainType === 'dynDNS' ? 'DynDNS domain' : 'Domain name'"
prepend-icon="mdi-blank"
outlined
required
:disabled="domainType === 'none' || domainType === undefined"
:disabled="domainType === 'none' || domainType === undefined || (domainType === 'dynDNS' && !limitationsAccepted)"
:rules="domainType === 'dynDNS' ? dyn_domain_rules : (domainType === 'custom' ? domain_rules : [])"
:error-messages="domain_errors"
:suffix="domainType === 'dynDNS' ? ('.' + LOCAL_PUBLIC_SUFFIXES[0]) : ''"
Expand Down Expand Up @@ -155,38 +191,45 @@
GenericCaptcha,
ErrorAlert,
},
data: () => ({
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;
Expand Down
Loading