Add translation
This commit is contained in:
parent
32cbcc35cc
commit
a8ebc0d9bb
14 changed files with 2344 additions and 346 deletions
|
@ -8,6 +8,13 @@ Installation Instructions:
|
||||||
|
|
||||||
TODO
|
TODO
|
||||||
|
|
||||||
|
Translating:
|
||||||
|
------------
|
||||||
|
|
||||||
|
The scrip `update-translations.sh` can be used to update the language template and translation files from source.
|
||||||
|
It will generate the file `locale/mail-hosting.pot` which you can then use as basis to create a new language file in `YOUR_LANG_CODE/LC_MESSAGES/mail-hosting.po` and edit it with a translation program, such as [Poedit](https://poedit.net/).
|
||||||
|
Once you are done, you can open a pull request, or [email me](mailto:daniel@danwin1210.de), to include the translation.
|
||||||
|
|
||||||
Live demo:
|
Live demo:
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,64 @@ const DBVERSION = 1; // Database schema version
|
||||||
const PERSISTENT = true; // persistent database connection
|
const PERSISTENT = true; // persistent database connection
|
||||||
const CAPTCHA_DIFFICULTY = 1; // captcha difficulty from 0 to 3
|
const CAPTCHA_DIFFICULTY = 1; // captcha difficulty from 0 to 3
|
||||||
const RESERVED_USERNAMES = ['about', 'abuse', 'admin', 'administrator', 'billing', 'contact', 'daemon', 'ftp', 'help', 'hostmaster', 'info', 'legal', 'list', 'list-request', 'lists', 'maildaemon', 'mailerdaemon', 'mailer-daemon', 'marketing', 'media', 'news', 'newsletter', 'nobody', 'noc', 'noreply', 'no-reply', 'notification', 'notifications', 'notify', 'offer', 'offers', 'office', 'official', 'order', 'orders', 'phish', 'phishing', 'postmaster', 'root', 'sale', 'sales', 'security', 'service', 'services', 'shop', 'shopping', 'spam', 'staff', 'support', 'survey', 'system', 'team', 'teams', 'unsbubscribe', 'uucp', 'usenet', 'user', 'username', 'users', 'web', 'webmail', 'webmaster', 'webmasters', 'welcome', 'www']; // list of reserved usernames that can mot be used on public registration
|
const RESERVED_USERNAMES = ['about', 'abuse', 'admin', 'administrator', 'billing', 'contact', 'daemon', 'ftp', 'help', 'hostmaster', 'info', 'legal', 'list', 'list-request', 'lists', 'maildaemon', 'mailerdaemon', 'mailer-daemon', 'marketing', 'media', 'news', 'newsletter', 'nobody', 'noc', 'noreply', 'no-reply', 'notification', 'notifications', 'notify', 'offer', 'offers', 'office', 'official', 'order', 'orders', 'phish', 'phishing', 'postmaster', 'root', 'sale', 'sales', 'security', 'service', 'services', 'shop', 'shopping', 'spam', 'staff', 'support', 'survey', 'system', 'team', 'teams', 'unsbubscribe', 'uucp', 'usenet', 'user', 'username', 'users', 'web', 'webmail', 'webmaster', 'webmasters', 'welcome', 'www']; // list of reserved usernames that can mot be used on public registration
|
||||||
|
const CANONICAL_URL = 'https://danwin1210.de/mail/'; // our preferred URL prefix for search engines
|
||||||
|
const PRIVACY_POLICY_URL = '/privacy.php'; // URL to privacy policy
|
||||||
|
const WEB_XMPP_URL = 'https://danwin1210.de:5281/conversejs'; // URL to Web-XMPP
|
||||||
|
const XMPP_BOSH_URL = 'https://danwin1210.de:5281/http-bind'; // XMPP BOSH URL
|
||||||
|
const XMPP_FILE_PROXY = 'proxy.danwin1210.de'; // File proxy domain
|
||||||
|
const ROOT_URL = '/mail/'; // Relative root URL under which the mail hosting is installed
|
||||||
|
const CONTACT_URL = '/contact.php'; // URL to get in contact with you
|
||||||
|
const CLEARNET_SERVER = 'danwin1210.de'; // Clearnet domain of the mail server
|
||||||
|
const ONION_SERVER = 'danielas3rtn54uwmofdo3x2bsdifr47huasnmbgqzfrec5ubupvtpid.onion'; // Onion domain of the mail server
|
||||||
|
const DBHOST_PROSODY = 'localhost'; // Database host
|
||||||
|
const DBUSER_PROSODY = 'prosody'; // Database user
|
||||||
|
const DBPASS_PROSODY = 'YOUR_PASSWORD'; // Database password
|
||||||
|
const DBNAME_PROSODY = 'prosody'; // Database
|
||||||
|
|
||||||
|
const LANGUAGES = [
|
||||||
|
'de' => ['name' => 'Deutsch', 'locale' => 'de_DE', 'flag' => '🇩🇪', 'show_in_menu' => true, 'dir' => 'ltr'],
|
||||||
|
'en' => ['name' => 'English', 'locale' => 'en_GB', 'flag' => '🇬🇧', 'show_in_menu' => true, 'dir' => 'ltr'],
|
||||||
|
];
|
||||||
|
$language = 'en';
|
||||||
|
$locale = 'en_GB';
|
||||||
|
$dir = 'ltr';
|
||||||
|
|
||||||
|
if(isset($_REQUEST['lang']) && isset(LANGUAGES[$_REQUEST['lang']])){
|
||||||
|
$locale = LANGUAGES[$_REQUEST['lang']]['locale'];
|
||||||
|
$language = $_REQUEST['lang'];
|
||||||
|
$dir = LANGUAGES[$_REQUEST['lang']]['dir'];
|
||||||
|
setcookie('language', $_REQUEST['lang'], ['expires' => 0, 'path' => '/', 'domain' => '', 'secure' => ($_SERVER['HTTPS'] ?? '' === 'on'), 'httponly' => true, 'samesite' => 'Strict']);
|
||||||
|
}elseif(isset($_COOKIE['language']) && isset(LANGUAGES[$_COOKIE['language']])){
|
||||||
|
$locale = LANGUAGES[$_COOKIE['language']]['locale'];
|
||||||
|
$language = $_COOKIE['language'];
|
||||||
|
$dir = LANGUAGES[$_COOKIE['language']]['dir'];
|
||||||
|
}elseif(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
|
||||||
|
$prefLocales = array_reduce(
|
||||||
|
explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']),
|
||||||
|
function (array $res, string $el) {
|
||||||
|
list($l, $q) = array_merge(explode(';q=', $el), [1]);
|
||||||
|
$res[$l] = (float) $q;
|
||||||
|
return $res;
|
||||||
|
}, []);
|
||||||
|
arsort($prefLocales);
|
||||||
|
foreach($prefLocales as $l => $q){
|
||||||
|
$lang = locale_lookup(array_keys(LANGUAGES), $l);
|
||||||
|
if(!empty($lang)){
|
||||||
|
$locale = LANGUAGES[$lang]['locale'];
|
||||||
|
$language = $lang;
|
||||||
|
$dir = LANGUAGES[$lang]['dir'];
|
||||||
|
setcookie('language', $lang, ['expires' => 0, 'path' => '/', 'domain' => '', 'secure' => ($_SERVER['HTTPS'] ?? '' === 'on'), 'httponly' => true, 'samesite' => 'Strict']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
putenv('LC_ALL='.$locale);
|
||||||
|
setlocale(LC_ALL, $locale);
|
||||||
|
|
||||||
|
bindtextdomain('mail-hosting', __DIR__.'/locale');
|
||||||
|
bind_textdomain_codeset('mail-hosting', 'UTF-8');
|
||||||
|
textdomain('mail-hosting');
|
||||||
|
|
||||||
require_once( 'vendor/autoload.php' );
|
require_once( 'vendor/autoload.php' );
|
||||||
|
|
||||||
|
@ -26,7 +84,7 @@ function get_db_instance(): PDO
|
||||||
$db = new PDO( 'mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => PERSISTENT ] );
|
$db = new PDO( 'mysql:host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => PERSISTENT ] );
|
||||||
} catch ( PDOException ) {
|
} catch ( PDOException ) {
|
||||||
http_response_code( 500 );
|
http_response_code( 500 );
|
||||||
die( 'No Connection to MySQL database!' );
|
die( _('No Connection to MySQL database!') );
|
||||||
}
|
}
|
||||||
return $db;
|
return $db;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +133,7 @@ function send_captcha(): void
|
||||||
$time = time();
|
$time = time();
|
||||||
$stmt = $db->prepare( 'INSERT INTO captcha (id, time, code) VALUES (?, ?, ?);' );
|
$stmt = $db->prepare( 'INSERT INTO captcha (id, time, code) VALUES (?, ?, ?);' );
|
||||||
$stmt->execute( [ $randid, $time, $code ] );
|
$stmt->execute( [ $randid, $time, $code ] );
|
||||||
echo '<div class="row"><div class="col"><td>Copy:<br>';
|
echo '<div class="row"><div class="col"><td>'._('Copy:').'<br>';
|
||||||
if ( CAPTCHA_DIFFICULTY === 1 ) {
|
if ( CAPTCHA_DIFFICULTY === 1 ) {
|
||||||
$im = imagecreatetruecolor( 55, 24 );
|
$im = imagecreatetruecolor( 55, 24 );
|
||||||
$bg = imagecolorallocate( $im, 0, 0, 0 );
|
$bg = imagecolorallocate( $im, 0, 0, 0 );
|
||||||
|
@ -194,7 +252,7 @@ function validate_email_list( array $targets, string &$msg = '' ): string
|
||||||
if ( $validator->isValid( $email, new NoRFCWarningsValidation() ) ) {
|
if ( $validator->isValid( $email, new NoRFCWarningsValidation() ) ) {
|
||||||
$alias_goto .= ",$email";
|
$alias_goto .= ",$email";
|
||||||
} else {
|
} else {
|
||||||
$msg .= '<div class="red" role="alert">Oops, the email "' . htmlspecialchars( $email ) . '" doesn\' look like a valid email address and thus wasn\'t added to the forwarding list.</div>';
|
$msg .= '<div class="red" role="alert">'.sprintf(_('Oops, the email "%s" doesn\' look like a valid email address and thus wasn\'t added to the forwarding list.'), htmlspecialchars( $email ) ) . '</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ltrim( $alias_goto, ',' );
|
return ltrim( $alias_goto, ',' );
|
||||||
|
@ -220,7 +278,7 @@ function check_domain_access( string &$email, string &$msg = '' ): bool
|
||||||
$managed_domains [] = $tmp[ 'domain' ];
|
$managed_domains [] = $tmp[ 'domain' ];
|
||||||
}
|
}
|
||||||
if ( ! in_array( $domain, $managed_domains, true ) ) {
|
if ( ! in_array( $domain, $managed_domains, true ) ) {
|
||||||
$msg .= '<div class="red" role="alert">You are not allowed to manage this domain.</div>';
|
$msg .= '<div class="red" role="alert">'._('You are not allowed to manage this domain.').'</div>';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -231,8 +289,20 @@ function check_email_valid( string $email, string &$msg = '' ): bool
|
||||||
{
|
{
|
||||||
$validator = new EmailValidator();
|
$validator = new EmailValidator();
|
||||||
if ( ! $validator->isValid( $email, new NoRFCWarningsValidation() ) ) {
|
if ( ! $validator->isValid( $email, new NoRFCWarningsValidation() ) ) {
|
||||||
$msg .= '<div class="red" role="alert">Invalid email address.</div>';
|
$msg .= '<div class="red" role="alert">'._('Invalid email address.').'</div>';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function alt_links(): void
|
||||||
|
{
|
||||||
|
global $language;
|
||||||
|
foreach(LANGUAGES as $lang => $data) {
|
||||||
|
if($lang === $language){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
echo '<link rel="alternate" href="?lang='.$lang.'" hreflang="'.$lang.'" />';
|
||||||
|
echo '<meta property="og:locale:alternate" content="'.$data['locale'].'">';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"egulias/email-validator": "^3.1",
|
"egulias/email-validator": "^3.2",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"ext-pdo": "*",
|
"ext-pdo": "*",
|
||||||
"ext-gnupg": "*"
|
"ext-gnupg": "*",
|
||||||
}
|
"ext-gettext": "*",
|
||||||
|
"ext-intl": "*"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
6
cron.php
6
cron.php
|
@ -2,17 +2,13 @@
|
||||||
if ( php_sapi_name() !== 'cli' ) {
|
if ( php_sapi_name() !== 'cli' ) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
const DBHOST_PROSODY = 'localhost'; // Database host
|
|
||||||
const DBUSER_PROSODY = 'prosody'; // Database user
|
|
||||||
const DBPASS_PROSODY = 'YOUR_PASSWORD'; // Database password
|
|
||||||
const DBNAME_PROSODY = 'prosody'; // Database
|
|
||||||
|
|
||||||
require_once 'common_config.php';
|
require_once 'common_config.php';
|
||||||
$db = get_db_instance();
|
$db = get_db_instance();
|
||||||
try {
|
try {
|
||||||
$db_prosody = new PDO( 'mysql:host=' . DBHOST_PROSODY . ';dbname=' . DBNAME_PROSODY, DBUSER_PROSODY, DBPASS_PROSODY, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ] );
|
$db_prosody = new PDO( 'mysql:host=' . DBHOST_PROSODY . ';dbname=' . DBNAME_PROSODY, DBUSER_PROSODY, DBPASS_PROSODY, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ] );
|
||||||
} catch ( PDOException $e ) {
|
} catch ( PDOException $e ) {
|
||||||
die( 'No Connection to MySQL database!' );
|
die( _('No Connection to MySQL database!') . PHP_EOL);
|
||||||
}
|
}
|
||||||
setlocale( LC_CTYPE, 'C.UTF-8' ); // make sure to use UTF-8 locale. Non UTF-8 locales can cause serious issues when handling UTF-8 file names
|
setlocale( LC_CTYPE, 'C.UTF-8' ); // make sure to use UTF-8 locale. Non UTF-8 locales can cause serious issues when handling UTF-8 file names
|
||||||
|
|
||||||
|
|
BIN
locale/de_DE/LC_MESSAGES/mail-hosting.mo
Normal file
BIN
locale/de_DE/LC_MESSAGES/mail-hosting.mo
Normal file
Binary file not shown.
990
locale/de_DE/LC_MESSAGES/mail-hosting.po
Normal file
990
locale/de_DE/LC_MESSAGES/mail-hosting.po
Normal file
|
@ -0,0 +1,990 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-12-31 21:17+0100\n"
|
||||||
|
"PO-Revision-Date: 2022-12-31 21:23+0100\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: de_DE\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Generator: Poedit 3.1.1\n"
|
||||||
|
|
||||||
|
#: www/index.php:6 www/index.php:15
|
||||||
|
msgid "E-Mail and XMPP"
|
||||||
|
msgstr "E-Mail und XMPP"
|
||||||
|
|
||||||
|
#: www/index.php:10 www/index.php:16
|
||||||
|
msgid "Get a free and anonymous E-Mail address and an XMPP/Jabber account"
|
||||||
|
msgstr ""
|
||||||
|
"Bekomme eine kostenlose und anonyme E-Mail Adresse und ein XMPP/Jabber Konto"
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:236 www/register.php:94
|
||||||
|
msgid "Info"
|
||||||
|
msgstr "Info"
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:240 www/register.php:94
|
||||||
|
#: www/register.php:121
|
||||||
|
msgid "Register"
|
||||||
|
msgstr "Registrieren"
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:241 www/register.php:94
|
||||||
|
msgid "Webmail-Login"
|
||||||
|
msgstr "Webmail-Anmeldung"
|
||||||
|
|
||||||
|
#: www/index.php:21 www/register.php:95
|
||||||
|
msgid "Manage account"
|
||||||
|
msgstr "Konto verwalten"
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:247 www/register.php:95
|
||||||
|
msgid "Web-XMPP"
|
||||||
|
msgstr "Web-XMPP"
|
||||||
|
|
||||||
|
#: www/index.php:22
|
||||||
|
msgid "What you will get"
|
||||||
|
msgstr "Was du bekommst"
|
||||||
|
|
||||||
|
#: www/index.php:23
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"You get a free anonymous E-Mail address and an XMPP/Jabber account using the "
|
||||||
|
"same details. Your Jabber ID is user@%1$s and can be connected to directly "
|
||||||
|
"from clearnet or via Tor hidden service (%2$s)."
|
||||||
|
msgstr ""
|
||||||
|
"Du bekommst eine kostenlose, anonymes E-Mail Adresse und ein XMPP/Jabber "
|
||||||
|
"Konto mit den gleichen Daten. Deine Jabber ID ist user@%1$s und kann direkt "
|
||||||
|
"über Clearnet zu verbunden werden, oder über den Tor hidden service (%2$s)."
|
||||||
|
|
||||||
|
#: www/index.php:24
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"You will have 50MB of disk space available for your mails. If you need more "
|
||||||
|
"space, just <a href=\"%1$s\">contact me</a>. Your E-Mail address will be %2$s"
|
||||||
|
msgstr ""
|
||||||
|
"Du wirst 50MB Speicherplatz für deine E-Mails haben. Wenn du mehr Speicher "
|
||||||
|
"brauchst, <a href=\"%1$s\">schreib mir</a> einfach. Deine E-Mail Adresse "
|
||||||
|
"wird %2$s sein"
|
||||||
|
|
||||||
|
#: www/index.php:25
|
||||||
|
msgid ""
|
||||||
|
"For privacy, please use PGP mail encryption, if you can. This prevents "
|
||||||
|
"others from reading your mails (including me and/or LEA). GnuPGs official "
|
||||||
|
"home: <a href=\"https://gnupg.org\" target=\"_blank\" rel=\"noopener "
|
||||||
|
"noreferrer\">https://gnupg.org</a> Windows GUI: <a href=\"https://gpg4usb."
|
||||||
|
"org\" target=\"_blank\" rel=\"noopener noreferrer\">https://gpg4usb.org</a>"
|
||||||
|
msgstr ""
|
||||||
|
"Für Privatsphäre, nutze bitte PGP Mail Verschlüsselung, wenn du kannst. Dies "
|
||||||
|
"hindert andere am Lesen deiner E-Mails (inklusive mir und/oder "
|
||||||
|
"Strafverfolgungsbehörden). Die offizielle GnuPG Seite: <a href=\"https://"
|
||||||
|
"gnupg.org\" target=\"_blank\" rel=\"noopener noreferrer\">https://gnupg.org</"
|
||||||
|
"a> Windows GUI: <a href=\"https://gpg4usb.org\" target=\"_blank\" "
|
||||||
|
"rel=\"noopener noreferrer\">https://gpg4usb.org</a>"
|
||||||
|
|
||||||
|
#: www/index.php:26
|
||||||
|
msgid "E-Mail Setup"
|
||||||
|
msgstr "E-Mail Einrichtung"
|
||||||
|
|
||||||
|
#: www/index.php:28
|
||||||
|
#, php-format
|
||||||
|
msgid "SMTP: %s Port 465 (SSL/TLS) or 587 (StartTLS)"
|
||||||
|
msgstr "SMTP: %s Port 465 (SSL/TLS) oder 587 (StartTLS)"
|
||||||
|
|
||||||
|
#: www/index.php:29
|
||||||
|
#, php-format
|
||||||
|
msgid "IMAP: %s Port 993 (SSL/TLS) or 143 (StartTLS)"
|
||||||
|
msgstr "IMAP: %s Port 993 (SSL/TLS) oder 143 (StartTLS)"
|
||||||
|
|
||||||
|
#: www/index.php:30
|
||||||
|
#, php-format
|
||||||
|
msgid "POP3: %s Port 995 (SSL/TLS) or 110 (StartTLS)"
|
||||||
|
msgstr "POP3: %s Port 995 (SSL/TLS) oder 110 (StartTLS)"
|
||||||
|
|
||||||
|
#: www/index.php:31
|
||||||
|
msgid "Authentication: PLAIN, LOGIN"
|
||||||
|
msgstr "Authentifizierung: PLAIN, LOGIN"
|
||||||
|
|
||||||
|
#: www/index.php:33
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"You can also connect on the same ports via the Tor onion address %s, but you "
|
||||||
|
"will have to accept an SSL certificate only valid for the clearnet domain."
|
||||||
|
msgstr ""
|
||||||
|
"Du kannst dich auch mit den gleichen Ports über die Tor Onion-Adresse %s "
|
||||||
|
"verbinden, aber du wirst ein Zertifikat akzeptieren müssen, welches nur für "
|
||||||
|
"die Clearnet-Domain gültig ist."
|
||||||
|
|
||||||
|
#: www/index.php:34
|
||||||
|
msgid "XMPP setup"
|
||||||
|
msgstr "XMPP-Einrichtung"
|
||||||
|
|
||||||
|
#: www/index.php:35
|
||||||
|
#, php-format
|
||||||
|
msgid "Domain: %s"
|
||||||
|
msgstr "Domain: %s"
|
||||||
|
|
||||||
|
#: www/index.php:36
|
||||||
|
#, php-format
|
||||||
|
msgid "Connect server: %s (optional for torification)"
|
||||||
|
msgstr "Verbindungs-Server: %s (Optional für Torifzierung)"
|
||||||
|
|
||||||
|
#: www/index.php:37
|
||||||
|
#, php-format
|
||||||
|
msgid "File transfer proxy: %s"
|
||||||
|
msgstr "Datentransfer-Proxy: %s"
|
||||||
|
|
||||||
|
#: www/index.php:38
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"BOSH URL: %s (only enable if you have to, as it is slower than directly "
|
||||||
|
"using xmpp)"
|
||||||
|
msgstr ""
|
||||||
|
"BOSH URL: %s (aktiviere diese nur, wenn du musst, da BOSH langsamer als "
|
||||||
|
"direktes Nutzen von XMPP ist)"
|
||||||
|
|
||||||
|
#: www/manage_account.php:17 www/admin.php:21
|
||||||
|
msgid "It looks like your user no longer exists!"
|
||||||
|
msgstr "Es sieht so aus, dass dein Nutzer nicht mehr existiert!"
|
||||||
|
|
||||||
|
#: www/manage_account.php:30
|
||||||
|
msgid "Wrong 2FA code"
|
||||||
|
msgstr "Falscher 2FA Code"
|
||||||
|
|
||||||
|
#: www/manage_account.php:38 www/admin.php:33
|
||||||
|
msgid "Successfully logged out"
|
||||||
|
msgstr "Erfolgreich abgemeldet"
|
||||||
|
|
||||||
|
#: www/manage_account.php:43 www/register.php:22
|
||||||
|
msgid "Invalid captcha"
|
||||||
|
msgstr "Ungültiges Captcha"
|
||||||
|
|
||||||
|
#: www/manage_account.php:47 www/admin.php:37
|
||||||
|
msgid "Invalid username"
|
||||||
|
msgstr "Ungültiger Nutzername"
|
||||||
|
|
||||||
|
#: www/manage_account.php:63 www/manage_account.php:81 www/admin.php:43
|
||||||
|
#: www/admin.php:55
|
||||||
|
msgid "Incorrect username or password"
|
||||||
|
msgstr "Ungültiger Nutzername oder Passwort"
|
||||||
|
|
||||||
|
#: www/manage_account.php:100 www/admin.php:175 www/admin.php:343
|
||||||
|
#: www/register.php:33
|
||||||
|
msgid "Passwords empty or don't match"
|
||||||
|
msgstr "Passwörter leer oder stimmen nicht überein"
|
||||||
|
|
||||||
|
#: www/manage_account.php:105 www/admin.php:348
|
||||||
|
msgid "Successfully updated password"
|
||||||
|
msgstr "Passwort erfolgreich aktualisiert"
|
||||||
|
|
||||||
|
#: www/manage_account.php:108
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permenently delete your account and all your data. Anyone "
|
||||||
|
"can immediately register with this user again. It cannot be reversed. Are "
|
||||||
|
"you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
"Warnung: Dies löscht dein Konto und alle deine Daten permanent. Jeder kann "
|
||||||
|
"direkt mit dem gleichen Nutzer erneut registrieren. Dies kann nicht "
|
||||||
|
"rückgängig gemacht werden. Bist du absolut sicher?"
|
||||||
|
|
||||||
|
#: www/manage_account.php:110
|
||||||
|
msgid "Yes, I want to permanently delete my account"
|
||||||
|
msgstr "Ja, ich will mein Konto permanent löschen"
|
||||||
|
|
||||||
|
#: www/manage_account.php:112
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will disable your account for a year and delete all your data. "
|
||||||
|
"After a year it is available for registrations again. It cannot be reversed. "
|
||||||
|
"Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
"Warnung: Dies deaktiviert dein Konto für ein Jahr und alle deine Daten "
|
||||||
|
"werden gelöscht. Nach einem Jahr ist es für die Registrierung wieder "
|
||||||
|
"verfügbar. Dies kann nicht rückgängig gemacht werden. Bist du absolut sicher?"
|
||||||
|
|
||||||
|
#: www/manage_account.php:114
|
||||||
|
msgid "Yes, I want to disable my account"
|
||||||
|
msgstr "Ja, ich möchte mein Konto deaktivieren"
|
||||||
|
|
||||||
|
#: www/manage_account.php:123
|
||||||
|
msgid "Successfully deleted account"
|
||||||
|
msgstr "Konto erfolgreich gelöscht"
|
||||||
|
|
||||||
|
#: www/manage_account.php:132
|
||||||
|
msgid "Successfully disabled account"
|
||||||
|
msgstr "Konto erfolgreich deaktiviert"
|
||||||
|
|
||||||
|
#: www/manage_account.php:136
|
||||||
|
msgid "Successfully removed the key"
|
||||||
|
msgstr "Schlüssel erfolgreich entfernt"
|
||||||
|
|
||||||
|
#: www/manage_account.php:145
|
||||||
|
msgid "There was an error importing the key"
|
||||||
|
msgstr "Es gab einen Fehler beim Importieren des Schlüssels"
|
||||||
|
|
||||||
|
#: www/manage_account.php:158
|
||||||
|
msgid "Successfully imported the key"
|
||||||
|
msgstr "Schlüssel erfolgreich importiert"
|
||||||
|
|
||||||
|
#: www/manage_account.php:162
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Oops, looks like the key is missing this email address as user id. Please "
|
||||||
|
"add your address \"%s\" as user ID to your pgp key or create a new key pair."
|
||||||
|
msgstr ""
|
||||||
|
"Ups, sieht so aus, dass dem Schlüssel diese E-Mail Adresse als User-ID "
|
||||||
|
"fehlt. Bitte füge deine Adresse \"%s\" als User-ID zu deinem PGP-Schlüssel "
|
||||||
|
"hinzu oder erstelle ein neues Schlüsselpaar."
|
||||||
|
|
||||||
|
#: www/manage_account.php:168
|
||||||
|
msgid "Sorry, the code was incorrect"
|
||||||
|
msgstr "Leider wer der Code falsch"
|
||||||
|
|
||||||
|
#: www/manage_account.php:172
|
||||||
|
msgid "Successfully enabled 2FA"
|
||||||
|
msgstr "2FA erfolgreich aktiviert"
|
||||||
|
|
||||||
|
#: www/manage_account.php:181 www/manage_account.php:191
|
||||||
|
msgid "E-Mail and XMPP - Manage account"
|
||||||
|
msgstr "E-Mail und XMPP - Konto verwalten"
|
||||||
|
|
||||||
|
#: www/manage_account.php:186 www/manage_account.php:192
|
||||||
|
msgid ""
|
||||||
|
"Manage your free and anonymous E-Mail address and an XMPP/Jabber account. "
|
||||||
|
"Add forwarding addresses, change your password or disable/delete your "
|
||||||
|
"account."
|
||||||
|
msgstr ""
|
||||||
|
"Verwalte deine kostenlose und anonyme E-Mail Adresse und ein XMPP/Jabber "
|
||||||
|
"Konto. Füge eine Weiterleitungsadresse hinzu, ändere dein Passwort oder "
|
||||||
|
"deaktiviere/lösche dein Konto."
|
||||||
|
|
||||||
|
#: www/manage_account.php:213
|
||||||
|
msgid ""
|
||||||
|
"To login, please enter the following code to confirm ownership of your key:"
|
||||||
|
msgstr ""
|
||||||
|
"Um dich anzumelden, gib bitte folgenden Code zur Bestätigung ein, um den "
|
||||||
|
"Besitz deines Schlüssels zu bestätigen:"
|
||||||
|
|
||||||
|
#: www/manage_account.php:215
|
||||||
|
msgid ""
|
||||||
|
"To login, please decrypt the following PGP encrypted message and confirm the "
|
||||||
|
"code:"
|
||||||
|
msgstr ""
|
||||||
|
"Um dich anzumelden, entschlüssel bitte die folgende PGP-verschlüsselte "
|
||||||
|
"Nachricht und bestätige den Code:"
|
||||||
|
|
||||||
|
#: www/manage_account.php:221 www/manage_account.php:370
|
||||||
|
msgid "2FA code"
|
||||||
|
msgstr "2FA Code"
|
||||||
|
|
||||||
|
#: www/manage_account.php:223 www/manage_account.php:372
|
||||||
|
msgid "Confirm"
|
||||||
|
msgstr "Bestätigen"
|
||||||
|
|
||||||
|
#: www/manage_account.php:238 www/admin.php:388
|
||||||
|
#, php-format
|
||||||
|
msgid "Logged in as %s"
|
||||||
|
msgstr "Angemeldet als %s"
|
||||||
|
|
||||||
|
#: www/manage_account.php:244 www/admin.php:389
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr "Abmelden"
|
||||||
|
|
||||||
|
#: www/manage_account.php:254 www/admin.php:406 www/admin.php:582
|
||||||
|
#: www/admin.php:912 www/admin.php:941 www/register.php:101
|
||||||
|
msgid "Username"
|
||||||
|
msgstr "Nutzername"
|
||||||
|
|
||||||
|
#: www/manage_account.php:259 www/manage_account.php:322 www/admin.php:410
|
||||||
|
#: www/admin.php:503 www/admin.php:586 www/admin.php:945 www/admin.php:1030
|
||||||
|
#: www/register.php:106
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "Passwort"
|
||||||
|
|
||||||
|
#: www/manage_account.php:265 www/admin.php:415
|
||||||
|
msgid "Login"
|
||||||
|
msgstr "Anmelden"
|
||||||
|
|
||||||
|
#: www/manage_account.php:282
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr "Einstellungen"
|
||||||
|
|
||||||
|
#: www/manage_account.php:283
|
||||||
|
msgid "Delivery"
|
||||||
|
msgstr "Zustellung"
|
||||||
|
|
||||||
|
#: www/manage_account.php:284
|
||||||
|
msgid ""
|
||||||
|
"Change how your mail is delivered. You can add forwarding addresses one per "
|
||||||
|
"line, or comma seperated. When you disable the \"keep a local copy\" "
|
||||||
|
"checkbox, your mail will only be sent to your forwarding addresses."
|
||||||
|
msgstr ""
|
||||||
|
"Ändere wie deine E-Mail zugestellt wird. Du kannst eine "
|
||||||
|
"Weiterleitungsadresse pro Zeile, oder Komma-separiert, einfügen. Wenn du "
|
||||||
|
"\"Lokale Kopie behalten\" deaktivierst, wird deine E-Mail nur an die "
|
||||||
|
"Weiterleitungsadressen gesendet."
|
||||||
|
|
||||||
|
#: www/manage_account.php:287 www/admin.php:953 www/admin.php:994
|
||||||
|
msgid "Forward to"
|
||||||
|
msgstr "Weiterleiten an"
|
||||||
|
|
||||||
|
#: www/manage_account.php:292 www/admin.php:957 www/admin.php:999
|
||||||
|
msgid "Keep a local copy"
|
||||||
|
msgstr "Lokale Kopie behalten"
|
||||||
|
|
||||||
|
#: www/manage_account.php:297
|
||||||
|
msgid "Encryption"
|
||||||
|
msgstr "Verschlüsselung"
|
||||||
|
|
||||||
|
#: www/manage_account.php:298
|
||||||
|
msgid ""
|
||||||
|
"If you are having issues sending or receiving mails with some other "
|
||||||
|
"provider, you can try disabling forced encryption here. But be aware, that "
|
||||||
|
"this makes it possible for 3rd parties on the network to read your emails. "
|
||||||
|
"Make sure to ask your correspondent to demand encryption support from their "
|
||||||
|
"provider for a safer internet."
|
||||||
|
msgstr ""
|
||||||
|
"Wenn du Probleme mit dem E-Mail Versand oder Empfang mit einigen anderen "
|
||||||
|
"Providern hast, kannst du hier die erzwungene Verschlüsselung deaktivieren. "
|
||||||
|
"Aber sei dir dabei im klaren, dass es damit für Drittparteien im Netzwerk "
|
||||||
|
"möglich wird E-Mails mitzulesen. Frage deine Kommunikationspartner in dem "
|
||||||
|
"Falle, dass sie von ihrem E-Mail Provider Unterstützung für Verschlüsselung, "
|
||||||
|
"für ein sichereres Internet, einfordern sollen."
|
||||||
|
|
||||||
|
#: www/manage_account.php:300 www/admin.php:964 www/admin.php:1011
|
||||||
|
msgid "Enforce encryption for incoming mail"
|
||||||
|
msgstr "Verschlüsselung für eingehende E-Mails erzwingen"
|
||||||
|
|
||||||
|
#: www/manage_account.php:306 www/admin.php:968 www/admin.php:1016
|
||||||
|
msgid "Enforce encryption for outgoing mail"
|
||||||
|
msgstr "Verschlüsselung für ausgehende E-Mails erzwingen"
|
||||||
|
|
||||||
|
#: www/manage_account.php:313
|
||||||
|
msgid "Update settings"
|
||||||
|
msgstr "Einstellungen aktualisieren"
|
||||||
|
|
||||||
|
#: www/manage_account.php:318 www/manage_account.php:333 www/admin.php:1025
|
||||||
|
#: www/admin.php:1041
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr "Passwort ändern"
|
||||||
|
|
||||||
|
#: www/manage_account.php:327 www/admin.php:508 www/admin.php:591
|
||||||
|
#: www/admin.php:949 www/admin.php:1035 www/register.php:110
|
||||||
|
msgid "Password again"
|
||||||
|
msgstr "Passwort erneut"
|
||||||
|
|
||||||
|
#: www/manage_account.php:344
|
||||||
|
msgid "Yay, PGP based 2FA is enabled!"
|
||||||
|
msgstr "Yay, PGP basierende 2FA ist aktiviert!"
|
||||||
|
|
||||||
|
#: www/manage_account.php:354
|
||||||
|
msgid ""
|
||||||
|
"Sorry, this key can't be used to encrypt a message to you. Your key may have "
|
||||||
|
"expired or has been revoked."
|
||||||
|
msgstr ""
|
||||||
|
"Tut uns leid, dieser Schlüssel kann nicht verwendet um eine Nachricht an "
|
||||||
|
"dich zu verschlüsseln. Dein Schlüssel ist vielleicht abgelaufen oder wurde "
|
||||||
|
"widerrufen."
|
||||||
|
|
||||||
|
#: www/manage_account.php:362
|
||||||
|
msgid ""
|
||||||
|
"To enable 2FA, please enter the following code to confirm ownership of your "
|
||||||
|
"key:"
|
||||||
|
msgstr ""
|
||||||
|
"Um 2FA zu aktivieren, gib bitte folgenden Code ein, um zu bestätigen, dass "
|
||||||
|
"der Schlüssel dir gehört:"
|
||||||
|
|
||||||
|
#: www/manage_account.php:363
|
||||||
|
msgid "Enable 2FA"
|
||||||
|
msgstr "2FA aktivieren"
|
||||||
|
|
||||||
|
#: www/manage_account.php:364
|
||||||
|
msgid ""
|
||||||
|
"To enable 2FA using your PGP key, please decrypt the following PGP encrypted "
|
||||||
|
"message and confirm the code:"
|
||||||
|
msgstr ""
|
||||||
|
"Um 2FA mit deinem PGP-Schlüssel zu aktivieren, entschlüssle bitte folgende "
|
||||||
|
"PGP-verschlüsselte Nachricht und bestätige den Code:"
|
||||||
|
|
||||||
|
#: www/manage_account.php:383
|
||||||
|
msgid "Add PGP key for 2FA and end-to-end encryption"
|
||||||
|
msgstr "Füge einen PGP-Schlüssel für 2FA und End-to-End Verschlüsselung hinzu"
|
||||||
|
|
||||||
|
#: www/manage_account.php:388
|
||||||
|
msgid "PGP key"
|
||||||
|
msgstr "PGP-Schlüssel"
|
||||||
|
|
||||||
|
#: www/manage_account.php:393
|
||||||
|
msgid "Update PGP key"
|
||||||
|
msgstr "PGP-Schlüssel aktualisieren"
|
||||||
|
|
||||||
|
#: www/manage_account.php:399
|
||||||
|
msgid "Disable/Delete account"
|
||||||
|
msgstr "Konto deaktivieren/löschen"
|
||||||
|
|
||||||
|
#: www/manage_account.php:400
|
||||||
|
msgid ""
|
||||||
|
"Warning, this is permanent and cannot be undone. Disabling an account will "
|
||||||
|
"delete your email data from the server, but leave the account blocked in the "
|
||||||
|
"database for a year, so no one else can use it. Deleting your account will "
|
||||||
|
"completely wipe all records of it and it will be available for new "
|
||||||
|
"registrations again."
|
||||||
|
msgstr ""
|
||||||
|
"Warnung, dies ist permanent und kann nicht rückgängig gemacht werden. Das "
|
||||||
|
"Deaktivieren eines Kontos löscht deine Daten vom Server, aber behält das "
|
||||||
|
"Konto für ein Jahr in der Datenbank blockiert, damit niemand anderes es "
|
||||||
|
"nutzen kann. Löschen entfernt dein Konto komplett und es ist wieder "
|
||||||
|
"verfügbar zur Registrierung."
|
||||||
|
|
||||||
|
#: www/manage_account.php:404
|
||||||
|
msgid "Disable account"
|
||||||
|
msgstr "Konto deaktivieren"
|
||||||
|
|
||||||
|
#: www/manage_account.php:409
|
||||||
|
msgid "Delete account"
|
||||||
|
msgstr "Konto löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:72
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the admin account \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
"Warnung: Dies löscht das Admin-Konto \"%s\" permanent. Dies kann nicht "
|
||||||
|
"rückgängig gemacht werden. Bist du absolut sicher?"
|
||||||
|
|
||||||
|
#: www/admin.php:75
|
||||||
|
msgid "Yes, I want to permanently delete this admin account"
|
||||||
|
msgstr "Ja, ich will dieses Admin-Konto permanent löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:77
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the domain \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
"Warnung: Dies löscht die Domain \"%s\" permanent. Dies kann nicht rückgängig "
|
||||||
|
"gemacht werden. Bist du absolut sicher?"
|
||||||
|
|
||||||
|
#: www/admin.php:80
|
||||||
|
msgid "Yes, I want to permanently delete this domain"
|
||||||
|
msgstr "Ja, ich will diesee Domain permanent löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:82
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the alias domain \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
"Warnung: Dies löscht das Domain-Alias \"%s\" permanent. Dies kann nicht "
|
||||||
|
"rückgängig gemacht werden. Bist du absolut sicher?"
|
||||||
|
|
||||||
|
#: www/admin.php:85
|
||||||
|
msgid "Yes, I want to permanently delete this alias domain"
|
||||||
|
msgstr "Ja, ich will dieses Domain-Alias permanent löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:87
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the alias \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
"Warnung: Dies löscht das Alias \"%s\" permanent. Dies kann nicht rückgängig "
|
||||||
|
"gemacht werden. Bist du absolut sicher?"
|
||||||
|
|
||||||
|
#: www/admin.php:90
|
||||||
|
msgid "Yes, I want to permanently delete this alias"
|
||||||
|
msgstr "Ja, ich will dieses Alias permanent löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:92
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the mailbox \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
"Warnung: Dies löscht die Mailbox \"%s\" permanent. Dies kann nicht "
|
||||||
|
"rückgängig gemacht werden. Bist du absolut sicher?"
|
||||||
|
|
||||||
|
#: www/admin.php:95
|
||||||
|
msgid "Yes, I want to permanently delete this mailbox"
|
||||||
|
msgstr "Ja, ich will diese Mailbox permanent löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:98
|
||||||
|
msgid "You can't delete your own admin account!"
|
||||||
|
msgstr "Du kannst dein eigenes Admin-Konto nicht löschen!"
|
||||||
|
|
||||||
|
#: www/admin.php:102
|
||||||
|
msgid "Successfully deleted admin account."
|
||||||
|
msgstr "Admin-Konto erfolgreich gelöscht."
|
||||||
|
|
||||||
|
#: www/admin.php:107
|
||||||
|
msgid "Successfully deleted domain."
|
||||||
|
msgstr "Domain erfolgreich gelöscht."
|
||||||
|
|
||||||
|
#: www/admin.php:111
|
||||||
|
msgid "Successfully deleted alias domain."
|
||||||
|
msgstr "Alias-Domain erfolgreich gelöscht."
|
||||||
|
|
||||||
|
#: www/admin.php:116
|
||||||
|
msgid "Successfully deleted alias."
|
||||||
|
msgstr "Alias erfolgreich gelöscht."
|
||||||
|
|
||||||
|
#: www/admin.php:122
|
||||||
|
msgid "Successfully deleted mailbox."
|
||||||
|
msgstr "Mailbox erfolgreich gelöscht."
|
||||||
|
|
||||||
|
#: www/admin.php:128
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the admin account \"%s\" doesn't exist."
|
||||||
|
msgstr "Ups, das Admin-Konto \"%s\" schient nicht zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:132
|
||||||
|
msgid "Passwords don't match!"
|
||||||
|
msgstr "Passwörter stimmen nicht überein!"
|
||||||
|
|
||||||
|
#: www/admin.php:137
|
||||||
|
msgid "Successfully updated password."
|
||||||
|
msgstr "Passwort erfolgreich aktualisiert."
|
||||||
|
|
||||||
|
#: www/admin.php:166
|
||||||
|
msgid "Successfully edited admin account."
|
||||||
|
msgstr "Admin-Konto erfolgreich bearbeitet."
|
||||||
|
|
||||||
|
#: www/admin.php:172
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the admin account \"%s\" already exists."
|
||||||
|
msgstr "Ups, das Admin-Konto \"%s\" schient bereits zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:182
|
||||||
|
msgid "Successfully created admin account."
|
||||||
|
msgstr "Admin-Konto erfolgreich erstellt."
|
||||||
|
|
||||||
|
#: www/admin.php:189
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the domain \"%s\" doesn't exists."
|
||||||
|
msgstr "Ups, die Domain \"%s\" schient nicht zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:194
|
||||||
|
msgid "Successfully updated domain."
|
||||||
|
msgstr "Domain erfolgreich aktualisiert."
|
||||||
|
|
||||||
|
#: www/admin.php:200
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the alias domain \"%s\" doesn't exists."
|
||||||
|
msgstr "Ups, die Alias-Domain \"%s\" schient nicht zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:205
|
||||||
|
msgid "Successfully updated alias domain."
|
||||||
|
msgstr "Alias-Domain erfolgreich aktualisiert."
|
||||||
|
|
||||||
|
#: www/admin.php:211
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the domain \"%s\" already exists."
|
||||||
|
msgstr "Ups, die Domain \"%s\" schient bereits zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:222
|
||||||
|
msgid "Successfully created domain."
|
||||||
|
msgstr "Domain erfolgreich erstellt."
|
||||||
|
|
||||||
|
#: www/admin.php:228
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the alias domain \"%s\" already exists."
|
||||||
|
msgstr "Ups, die Alias-Domain \"%s\" schient bereits zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:239
|
||||||
|
msgid "Successfully created alias domain."
|
||||||
|
msgstr "Alias-Domain erfolgreich erstellt."
|
||||||
|
|
||||||
|
#: www/admin.php:252
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the alias \"%s\" already exists."
|
||||||
|
msgstr "Ups, das Alias \"%s\" schient bereits zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:261
|
||||||
|
msgid "Successfully added alias."
|
||||||
|
msgstr "Alias erfolgreich hinzugefügt."
|
||||||
|
|
||||||
|
#: www/admin.php:276
|
||||||
|
msgid "Successfully updated alias."
|
||||||
|
msgstr "Alias erfolgreich aktualisiert."
|
||||||
|
|
||||||
|
#: www/admin.php:298
|
||||||
|
msgid "Successfully updated mailbox."
|
||||||
|
msgstr "Mailbox erfolgreich aktualisiert."
|
||||||
|
|
||||||
|
#: www/admin.php:311 www/register.php:62
|
||||||
|
msgid "Sorry, this user already exists"
|
||||||
|
msgstr "Sorry, dieser Nutzer existiert bereits"
|
||||||
|
|
||||||
|
#: www/admin.php:333 www/register.php:70
|
||||||
|
msgid "Successfully created new mailbox!"
|
||||||
|
msgstr "Neue Mailbox erfolgreich erstellt!"
|
||||||
|
|
||||||
|
#: www/admin.php:359
|
||||||
|
msgid "Successfully disabled two-factor authentication"
|
||||||
|
msgstr "Zwei-Faktor Authentifizierung erfolgreich deaktiviert"
|
||||||
|
|
||||||
|
#: www/admin.php:369 www/admin.php:378 www/admin.php:384
|
||||||
|
msgid "E-Mail and XMPP - Admin management"
|
||||||
|
msgstr "E-Mail und XMPP - Admin Verwaltung"
|
||||||
|
|
||||||
|
#: www/admin.php:373 www/admin.php:379
|
||||||
|
msgid "Lets domain owners manage their email domain and user accounts."
|
||||||
|
msgstr "Lässt Domain-Inhaber ihre E-Mail Domain und Nutzer-Konten verwalten."
|
||||||
|
|
||||||
|
#: www/admin.php:391
|
||||||
|
msgid "Manage admins"
|
||||||
|
msgstr "Admins verwalten"
|
||||||
|
|
||||||
|
#: www/admin.php:392
|
||||||
|
msgid "Manage alias domains"
|
||||||
|
msgstr "Alias-Domains verwalten"
|
||||||
|
|
||||||
|
#: www/admin.php:394
|
||||||
|
msgid "Manage your admin account"
|
||||||
|
msgstr "Verwalte dein Konto"
|
||||||
|
|
||||||
|
#: www/admin.php:396
|
||||||
|
msgid "Manage domains"
|
||||||
|
msgstr "Domains verwalten"
|
||||||
|
|
||||||
|
#: www/admin.php:397
|
||||||
|
msgid "Manage aliases"
|
||||||
|
msgstr "Aliase verwalten"
|
||||||
|
|
||||||
|
#: www/admin.php:398
|
||||||
|
msgid "Manage mailboxes"
|
||||||
|
msgstr "Mailboxen verwalten"
|
||||||
|
|
||||||
|
#: www/admin.php:421
|
||||||
|
msgid ""
|
||||||
|
"Welcome to the admin management interface. You can configure your domain(s) "
|
||||||
|
"and accounts here. Please select an option from the menu."
|
||||||
|
msgstr ""
|
||||||
|
"Wilkommen in der Admin-Verwaltungsoberfläche. Hier kannst du deine Domain(s) "
|
||||||
|
"und Konten konfigurieren. Bitte wähle eine Option vom Menü."
|
||||||
|
|
||||||
|
#: www/admin.php:453
|
||||||
|
msgid ""
|
||||||
|
"Oops, it looks like the page you tried to access does not exist or you do "
|
||||||
|
"not have permission to access it."
|
||||||
|
msgstr ""
|
||||||
|
"Ups, es scheint dass die Seite, auf die du versucht hast zuzugreifen "
|
||||||
|
"entweder nicht existiert, oder du keine Berechtigung hast darauf zuzugreifen."
|
||||||
|
|
||||||
|
#: www/admin.php:466 www/admin.php:485
|
||||||
|
msgid "Create new admin"
|
||||||
|
msgstr "Neuen Admin erstellen"
|
||||||
|
|
||||||
|
#: www/admin.php:471
|
||||||
|
msgid "Admin"
|
||||||
|
msgstr "Admin"
|
||||||
|
|
||||||
|
#: www/admin.php:472 www/admin.php:521 www/admin.php:534 www/admin.php:600
|
||||||
|
#: www/admin.php:624 www/admin.php:656 www/admin.php:680 www/admin.php:714
|
||||||
|
#: www/admin.php:748 www/admin.php:778 www/admin.php:811 www/admin.php:843
|
||||||
|
#: www/admin.php:877 www/admin.php:913 www/admin.php:961 www/admin.php:1006
|
||||||
|
msgid "Active"
|
||||||
|
msgstr "Aktiv"
|
||||||
|
|
||||||
|
#: www/admin.php:473 www/admin.php:625 www/admin.php:715 www/admin.php:812
|
||||||
|
#: www/admin.php:914
|
||||||
|
msgid "Last modified"
|
||||||
|
msgstr "Zuletzt geändert"
|
||||||
|
|
||||||
|
#: www/admin.php:474
|
||||||
|
msgid "Edit account"
|
||||||
|
msgstr "Konto bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:482 www/admin.php:636 www/admin.php:724 www/admin.php:821
|
||||||
|
#: www/admin.php:927
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr "Bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:497
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit admin account %s"
|
||||||
|
msgstr "Adminkonto %s bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:515 www/admin.php:528 www/admin.php:596
|
||||||
|
msgid "Superadmin"
|
||||||
|
msgstr "Superadmin"
|
||||||
|
|
||||||
|
#: www/admin.php:517 www/admin.php:529 www/admin.php:597
|
||||||
|
msgid "Superadmins can manage other admins"
|
||||||
|
msgstr "Superadmins können andere Admins verwalten"
|
||||||
|
|
||||||
|
#: www/admin.php:538
|
||||||
|
msgid "Managed domains"
|
||||||
|
msgstr "Domains verwalten"
|
||||||
|
|
||||||
|
#: www/admin.php:558 www/admin.php:685 www/admin.php:783 www/admin.php:886
|
||||||
|
msgid "Save changes"
|
||||||
|
msgstr "Änderungen speichern"
|
||||||
|
|
||||||
|
#: www/admin.php:564
|
||||||
|
msgid "Delete admin"
|
||||||
|
msgstr "Admin löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:571 www/admin.php:696
|
||||||
|
msgid "Oops, this admin doesn't seem to exist."
|
||||||
|
msgstr "Ups, dieser Admin scheint nicht zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:578
|
||||||
|
msgid "Create new admin account"
|
||||||
|
msgstr "Neues Admin-Konto erstellen"
|
||||||
|
|
||||||
|
#: www/admin.php:604
|
||||||
|
msgid "Add admin"
|
||||||
|
msgstr "Admin hinzufügen"
|
||||||
|
|
||||||
|
#: www/admin.php:617 www/admin.php:640 www/admin.php:648
|
||||||
|
msgid "Create new domain"
|
||||||
|
msgstr "Neue Domain erstellen"
|
||||||
|
|
||||||
|
#: www/admin.php:623 www/admin.php:652
|
||||||
|
msgid "Domain"
|
||||||
|
msgstr "Domain"
|
||||||
|
|
||||||
|
#: www/admin.php:626
|
||||||
|
msgid "Edit domain"
|
||||||
|
msgstr "Domain bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:660
|
||||||
|
msgid "Add domain"
|
||||||
|
msgstr "Domain hinzufügen"
|
||||||
|
|
||||||
|
#: www/admin.php:674
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit domain %s"
|
||||||
|
msgstr "Domain %s bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:690
|
||||||
|
msgid "Delete domain"
|
||||||
|
msgstr "Domain löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:706 www/admin.php:728 www/admin.php:736
|
||||||
|
msgid "Create new alias domain"
|
||||||
|
msgstr "Neue Alias-Domain erstellen"
|
||||||
|
|
||||||
|
#: www/admin.php:712 www/admin.php:740
|
||||||
|
msgid "Alias Domain"
|
||||||
|
msgstr "Alias-Domain"
|
||||||
|
|
||||||
|
#: www/admin.php:713 www/admin.php:744 www/admin.php:772
|
||||||
|
msgid "Target Domain"
|
||||||
|
msgstr "Ziel-Domain"
|
||||||
|
|
||||||
|
#: www/admin.php:716
|
||||||
|
msgid "Edit alias domain"
|
||||||
|
msgstr "Alias-Domain bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:752
|
||||||
|
msgid "Add alias domain"
|
||||||
|
msgstr "Alias-Domain hinzufügen"
|
||||||
|
|
||||||
|
#: www/admin.php:766
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit alias domain %s"
|
||||||
|
msgstr "Alias-Domain %s bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:788
|
||||||
|
msgid "Delete alias domain"
|
||||||
|
msgstr "Alias-Domain löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:794
|
||||||
|
msgid "Oops, this alias domain doesn't seem to exist."
|
||||||
|
msgstr "Ups, diese Alias-Domain schient nicht zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:804 www/admin.php:824 www/admin.php:831
|
||||||
|
msgid "Create new alias"
|
||||||
|
msgstr "Neuen Alias erstellen"
|
||||||
|
|
||||||
|
#: www/admin.php:809 www/admin.php:835
|
||||||
|
msgid "Alias"
|
||||||
|
msgstr "Alias"
|
||||||
|
|
||||||
|
#: www/admin.php:810 www/admin.php:839 www/admin.php:870
|
||||||
|
msgid "Target"
|
||||||
|
msgstr "Ziel"
|
||||||
|
|
||||||
|
#: www/admin.php:813
|
||||||
|
msgid "Edit alias"
|
||||||
|
msgstr "Alias bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:846 www/admin.php:882
|
||||||
|
msgid "Enforce encryption"
|
||||||
|
msgstr "Verschlüsselung erzwingen"
|
||||||
|
|
||||||
|
#: www/admin.php:851
|
||||||
|
msgid "Add alias"
|
||||||
|
msgstr "Alias hinzufügen"
|
||||||
|
|
||||||
|
#: www/admin.php:865
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit alias %s"
|
||||||
|
msgstr "Alias %s bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:891
|
||||||
|
msgid "Delete alias"
|
||||||
|
msgstr "Alias löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:897
|
||||||
|
msgid "Oops, this alias doesn't seem to exist."
|
||||||
|
msgstr "Ups, dieses Alias schient nicht zu existieren."
|
||||||
|
|
||||||
|
#: www/admin.php:907 www/admin.php:930 www/admin.php:937
|
||||||
|
msgid "Create new mailbox"
|
||||||
|
msgstr "Neue Mailbox erstellen"
|
||||||
|
|
||||||
|
#: www/admin.php:915
|
||||||
|
msgid "Edit mailbox"
|
||||||
|
msgstr "Mailbox bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:973
|
||||||
|
msgid "Add mailbox"
|
||||||
|
msgstr "Mailbox hinzufügen"
|
||||||
|
|
||||||
|
#: www/admin.php:989
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit mailbox %s"
|
||||||
|
msgstr "Mailbox %s bearbeiten"
|
||||||
|
|
||||||
|
#: www/admin.php:1021
|
||||||
|
msgid "Save mailbox"
|
||||||
|
msgstr "Mailbox speichern"
|
||||||
|
|
||||||
|
#: www/admin.php:1045
|
||||||
|
msgid "Delete mailbox / Disable two-factor authentication"
|
||||||
|
msgstr "Mailbox löschen / Zwei-Faktor Autorisierung deaktivieren"
|
||||||
|
|
||||||
|
#: www/admin.php:1051
|
||||||
|
msgid "Disable two-factor authentication"
|
||||||
|
msgstr "Zwei-Faktor Autorisierung deaktivieren"
|
||||||
|
|
||||||
|
#: www/admin.php:1056
|
||||||
|
msgid "Delete mailbox"
|
||||||
|
msgstr "Mailbox löschen"
|
||||||
|
|
||||||
|
#: www/admin.php:1062
|
||||||
|
msgid "Oops, this mailbox doesn't seem to exist."
|
||||||
|
msgstr "Ups, diese Mailbox schient nicht zu existieren."
|
||||||
|
|
||||||
|
#: www/register.php:18
|
||||||
|
msgid "Invalid CSRF token"
|
||||||
|
msgstr "Ungültiger CSRF Token"
|
||||||
|
|
||||||
|
#: www/register.php:27
|
||||||
|
msgid "Invalid username. It may not contain a +, ', \" or /."
|
||||||
|
msgstr "Ungültiger Nutzername. Dieser darf keine +, ', \" oder / enthalten."
|
||||||
|
|
||||||
|
#: www/register.php:44
|
||||||
|
msgid "The domain you specified is not allowed"
|
||||||
|
msgstr "Die angegebene Domain ist nicht erlaubt"
|
||||||
|
|
||||||
|
#: www/register.php:49
|
||||||
|
msgid "The email address you specified is not valid"
|
||||||
|
msgstr "Deine angegebene E-Mail Adresse ist nicht gültig"
|
||||||
|
|
||||||
|
#: www/register.php:52
|
||||||
|
msgid "The username you specified is reserved"
|
||||||
|
msgstr "Dein eingegebener Nutzername ist reserviert"
|
||||||
|
|
||||||
|
#: www/register.php:78 www/register.php:87
|
||||||
|
msgid "E-Mail and XMPP - Register"
|
||||||
|
msgstr "E-Mail und XMPP - Registreiren"
|
||||||
|
|
||||||
|
#: www/register.php:82 www/register.php:88
|
||||||
|
msgid ""
|
||||||
|
"Register for a free and anonymous E-Mail address and an XMPP/Jabber account"
|
||||||
|
msgstr ""
|
||||||
|
"Registriere dich für eine kostenloses und anonyme E-Mail Adresse und ein "
|
||||||
|
"XMPP/Jabber Konto"
|
||||||
|
|
||||||
|
#: www/register.php:114
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"I have read and agreed to the <a href=\"%s\" target=\"_blank\">Privacy "
|
||||||
|
"Policy</a>"
|
||||||
|
msgstr ""
|
||||||
|
"Ich habe die <a href=\"%s\" target=\"_blank\">Datenschutzerklärung</a> "
|
||||||
|
"gelesen und akzeptiere diese"
|
||||||
|
|
||||||
|
#: cron.php:11 common_config.php:87 setup.php:20 setup.php:23
|
||||||
|
msgid "No Connection to MySQL database!"
|
||||||
|
msgstr "Keine Verbindung zur MySQL Datenbank!"
|
||||||
|
|
||||||
|
#: tools/delete_leftover_files.php:14
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"%s does not seem to have any accounts, but has a directory. Consider "
|
||||||
|
"deleting it."
|
||||||
|
msgstr ""
|
||||||
|
"%s scheint keine Konten zu haben, aber ein Verzeichnis. Denk darüber nach es "
|
||||||
|
"zu löschen."
|
||||||
|
|
||||||
|
#: tools/delete_leftover_files.php:20
|
||||||
|
#, php-format
|
||||||
|
msgid "Deleted: %s"
|
||||||
|
msgstr "Gelöscht: %s"
|
||||||
|
|
||||||
|
#: tools/delete_leftover_files.php:22
|
||||||
|
#, php-format
|
||||||
|
msgid "File found in mail directory location: \"%s\". Consider deleting it."
|
||||||
|
msgstr ""
|
||||||
|
"Datei im Mailverzeichnis \"%s\" gefunden. Denke darüber nach diese zu "
|
||||||
|
"löschen."
|
||||||
|
|
||||||
|
#: common_config.php:136
|
||||||
|
msgid "Copy:"
|
||||||
|
msgstr "Kopieren:"
|
||||||
|
|
||||||
|
#: common_config.php:255
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Oops, the email \"%s\" doesn' look like a valid email address and thus "
|
||||||
|
"wasn't added to the forwarding list."
|
||||||
|
msgstr ""
|
||||||
|
"Ups, die E-Mail \"%s\" sieht nicht nach einer gültigen E-Mail Adresse aus "
|
||||||
|
"und wurde deshalb nicht zur Weiterleitungsliste hinzugefügt."
|
||||||
|
|
||||||
|
#: common_config.php:281
|
||||||
|
msgid "You are not allowed to manage this domain."
|
||||||
|
msgstr "Du darfst diese Domain nicht verwalten."
|
||||||
|
|
||||||
|
#: common_config.php:292
|
||||||
|
msgid "Invalid email address."
|
||||||
|
msgstr "Ungültige E-Mail Adresse."
|
||||||
|
|
||||||
|
#: setup.php:8
|
||||||
|
#, php-format
|
||||||
|
msgid "The %s extension of PHP is required. Please install it first."
|
||||||
|
msgstr "Die %s PHP-Erweiterung wird benötigt. Bitte installiere diese zuerst."
|
||||||
|
|
||||||
|
#: setup.php:35
|
||||||
|
msgid "Database has successfully been updated."
|
||||||
|
msgstr "Datenbank wurde erfolgreich aktualisiert."
|
||||||
|
|
||||||
|
#: setup.php:37
|
||||||
|
msgid "Database is already up-to-date."
|
||||||
|
msgstr "Datenbank ist bereits aktuell."
|
||||||
|
|
||||||
|
#: setup.php:40
|
||||||
|
msgid "Error updating database:"
|
||||||
|
msgstr "Fehler beim Aktualisieren der Datenbank:"
|
||||||
|
|
||||||
|
#: setup.php:57
|
||||||
|
msgid "Database has successfully been set up."
|
||||||
|
msgstr "Datenbank wurde erfolgreich erstellt."
|
||||||
|
|
||||||
|
#: setup.php:59
|
||||||
|
msgid "Error setting up database:"
|
||||||
|
msgstr "Fehler beim Erstellen der Datenbank:"
|
||||||
|
|
||||||
|
#~ msgid "Invalid username."
|
||||||
|
#~ msgstr "Ungültiger Nutzername"
|
906
locale/mail-hosting.pot
Normal file
906
locale/mail-hosting.pot
Normal file
|
@ -0,0 +1,906 @@
|
||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||||
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2022-12-31 21:17+0100\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: www/index.php:6 www/index.php:15
|
||||||
|
msgid "E-Mail and XMPP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:10 www/index.php:16
|
||||||
|
msgid "Get a free and anonymous E-Mail address and an XMPP/Jabber account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:236 www/register.php:94
|
||||||
|
msgid "Info"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:240 www/register.php:94
|
||||||
|
#: www/register.php:121
|
||||||
|
msgid "Register"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:241 www/register.php:94
|
||||||
|
msgid "Webmail-Login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:21 www/register.php:95
|
||||||
|
msgid "Manage account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:21 www/manage_account.php:247 www/register.php:95
|
||||||
|
msgid "Web-XMPP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:22
|
||||||
|
msgid "What you will get"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:23
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"You get a free anonymous E-Mail address and an XMPP/Jabber account using the "
|
||||||
|
"same details. Your Jabber ID is user@%1$s and can be connected to directly "
|
||||||
|
"from clearnet or via Tor hidden service (%2$s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:24
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"You will have 50MB of disk space available for your mails. If you need more "
|
||||||
|
"space, just <a href=\"%1$s\">contact me</a>. Your E-Mail address will be %2$s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:25
|
||||||
|
msgid ""
|
||||||
|
"For privacy, please use PGP mail encryption, if you can. This prevents "
|
||||||
|
"others from reading your mails (including me and/or LEA). GnuPGs official "
|
||||||
|
"home: <a href=\"https://gnupg.org\" target=\"_blank\" rel=\"noopener "
|
||||||
|
"noreferrer\">https://gnupg.org</a> Windows GUI: <a href=\"https://gpg4usb."
|
||||||
|
"org\" target=\"_blank\" rel=\"noopener noreferrer\">https://gpg4usb.org</a>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:26
|
||||||
|
msgid "E-Mail Setup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:28
|
||||||
|
#, php-format
|
||||||
|
msgid "SMTP: %s Port 465 (SSL/TLS) or 587 (StartTLS)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:29
|
||||||
|
#, php-format
|
||||||
|
msgid "IMAP: %s Port 993 (SSL/TLS) or 143 (StartTLS)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:30
|
||||||
|
#, php-format
|
||||||
|
msgid "POP3: %s Port 995 (SSL/TLS) or 110 (StartTLS)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:31
|
||||||
|
msgid "Authentication: PLAIN, LOGIN"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:33
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"You can also connect on the same ports via the Tor onion address %s, but you "
|
||||||
|
"will have to accept an SSL certificate only valid for the clearnet domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:34
|
||||||
|
msgid "XMPP setup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:35
|
||||||
|
#, php-format
|
||||||
|
msgid "Domain: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:36
|
||||||
|
#, php-format
|
||||||
|
msgid "Connect server: %s (optional for torification)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:37
|
||||||
|
#, php-format
|
||||||
|
msgid "File transfer proxy: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/index.php:38
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"BOSH URL: %s (only enable if you have to, as it is slower than directly "
|
||||||
|
"using xmpp)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:17 www/admin.php:21
|
||||||
|
msgid "It looks like your user no longer exists!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:30
|
||||||
|
msgid "Wrong 2FA code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:38 www/admin.php:33
|
||||||
|
msgid "Successfully logged out"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:43 www/register.php:22
|
||||||
|
msgid "Invalid captcha"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:47 www/admin.php:37
|
||||||
|
msgid "Invalid username"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:63 www/manage_account.php:81 www/admin.php:43
|
||||||
|
#: www/admin.php:55
|
||||||
|
msgid "Incorrect username or password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:100 www/admin.php:175 www/admin.php:343
|
||||||
|
#: www/register.php:33
|
||||||
|
msgid "Passwords empty or don't match"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:105 www/admin.php:348
|
||||||
|
msgid "Successfully updated password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:108
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permenently delete your account and all your data. Anyone "
|
||||||
|
"can immediately register with this user again. It cannot be reversed. Are "
|
||||||
|
"you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:110
|
||||||
|
msgid "Yes, I want to permanently delete my account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:112
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will disable your account for a year and delete all your data. "
|
||||||
|
"After a year it is available for registrations again. It cannot be reversed. "
|
||||||
|
"Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:114
|
||||||
|
msgid "Yes, I want to disable my account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:123
|
||||||
|
msgid "Successfully deleted account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:132
|
||||||
|
msgid "Successfully disabled account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:136
|
||||||
|
msgid "Successfully removed the key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:145
|
||||||
|
msgid "There was an error importing the key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:158
|
||||||
|
msgid "Successfully imported the key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:162
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Oops, looks like the key is missing this email address as user id. Please "
|
||||||
|
"add your address \"%s\" as user ID to your pgp key or create a new key pair."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:168
|
||||||
|
msgid "Sorry, the code was incorrect"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:172
|
||||||
|
msgid "Successfully enabled 2FA"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:181 www/manage_account.php:191
|
||||||
|
msgid "E-Mail and XMPP - Manage account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:186 www/manage_account.php:192
|
||||||
|
msgid ""
|
||||||
|
"Manage your free and anonymous E-Mail address and an XMPP/Jabber account. "
|
||||||
|
"Add forwarding addresses, change your password or disable/delete your "
|
||||||
|
"account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:213
|
||||||
|
msgid ""
|
||||||
|
"To login, please enter the following code to confirm ownership of your key:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:215
|
||||||
|
msgid ""
|
||||||
|
"To login, please decrypt the following PGP encrypted message and confirm the "
|
||||||
|
"code:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:221 www/manage_account.php:370
|
||||||
|
msgid "2FA code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:223 www/manage_account.php:372
|
||||||
|
msgid "Confirm"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:238 www/admin.php:388
|
||||||
|
#, php-format
|
||||||
|
msgid "Logged in as %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:244 www/admin.php:389
|
||||||
|
msgid "Logout"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:254 www/admin.php:406 www/admin.php:582
|
||||||
|
#: www/admin.php:912 www/admin.php:941 www/register.php:101
|
||||||
|
msgid "Username"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:259 www/manage_account.php:322 www/admin.php:410
|
||||||
|
#: www/admin.php:503 www/admin.php:586 www/admin.php:945 www/admin.php:1030
|
||||||
|
#: www/register.php:106
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:265 www/admin.php:415
|
||||||
|
msgid "Login"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:282
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:283
|
||||||
|
msgid "Delivery"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:284
|
||||||
|
msgid ""
|
||||||
|
"Change how your mail is delivered. You can add forwarding addresses one per "
|
||||||
|
"line, or comma seperated. When you disable the \"keep a local copy\" "
|
||||||
|
"checkbox, your mail will only be sent to your forwarding addresses."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:287 www/admin.php:953 www/admin.php:994
|
||||||
|
msgid "Forward to"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:292 www/admin.php:957 www/admin.php:999
|
||||||
|
msgid "Keep a local copy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:297
|
||||||
|
msgid "Encryption"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:298
|
||||||
|
msgid ""
|
||||||
|
"If you are having issues sending or receiving mails with some other "
|
||||||
|
"provider, you can try disabling forced encryption here. But be aware, that "
|
||||||
|
"this makes it possible for 3rd parties on the network to read your emails. "
|
||||||
|
"Make sure to ask your correspondent to demand encryption support from their "
|
||||||
|
"provider for a safer internet."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:300 www/admin.php:964 www/admin.php:1011
|
||||||
|
msgid "Enforce encryption for incoming mail"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:306 www/admin.php:968 www/admin.php:1016
|
||||||
|
msgid "Enforce encryption for outgoing mail"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:313
|
||||||
|
msgid "Update settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:318 www/manage_account.php:333 www/admin.php:1025
|
||||||
|
#: www/admin.php:1041
|
||||||
|
msgid "Change password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:327 www/admin.php:508 www/admin.php:591
|
||||||
|
#: www/admin.php:949 www/admin.php:1035 www/register.php:110
|
||||||
|
msgid "Password again"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:344
|
||||||
|
msgid "Yay, PGP based 2FA is enabled!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:354
|
||||||
|
msgid ""
|
||||||
|
"Sorry, this key can't be used to encrypt a message to you. Your key may have "
|
||||||
|
"expired or has been revoked."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:362
|
||||||
|
msgid ""
|
||||||
|
"To enable 2FA, please enter the following code to confirm ownership of your "
|
||||||
|
"key:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:363
|
||||||
|
msgid "Enable 2FA"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:364
|
||||||
|
msgid ""
|
||||||
|
"To enable 2FA using your PGP key, please decrypt the following PGP encrypted "
|
||||||
|
"message and confirm the code:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:383
|
||||||
|
msgid "Add PGP key for 2FA and end-to-end encryption"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:388
|
||||||
|
msgid "PGP key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:393
|
||||||
|
msgid "Update PGP key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:399
|
||||||
|
msgid "Disable/Delete account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:400
|
||||||
|
msgid ""
|
||||||
|
"Warning, this is permanent and cannot be undone. Disabling an account will "
|
||||||
|
"delete your email data from the server, but leave the account blocked in the "
|
||||||
|
"database for a year, so no one else can use it. Deleting your account will "
|
||||||
|
"completely wipe all records of it and it will be available for new "
|
||||||
|
"registrations again."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:404
|
||||||
|
msgid "Disable account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/manage_account.php:409
|
||||||
|
msgid "Delete account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:72
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the admin account \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:75
|
||||||
|
msgid "Yes, I want to permanently delete this admin account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:77
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the domain \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:80
|
||||||
|
msgid "Yes, I want to permanently delete this domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:82
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the alias domain \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:85
|
||||||
|
msgid "Yes, I want to permanently delete this alias domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:87
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the alias \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:90
|
||||||
|
msgid "Yes, I want to permanently delete this alias"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:92
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Warning: This will permanently delete the mailbox \"%s\". It cannot be "
|
||||||
|
"reversed. Are you absolutely sure?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:95
|
||||||
|
msgid "Yes, I want to permanently delete this mailbox"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:98
|
||||||
|
msgid "You can't delete your own admin account!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:102
|
||||||
|
msgid "Successfully deleted admin account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:107
|
||||||
|
msgid "Successfully deleted domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:111
|
||||||
|
msgid "Successfully deleted alias domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:116
|
||||||
|
msgid "Successfully deleted alias."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:122
|
||||||
|
msgid "Successfully deleted mailbox."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:128
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the admin account \"%s\" doesn't exist."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:132
|
||||||
|
msgid "Passwords don't match!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:137
|
||||||
|
msgid "Successfully updated password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:166
|
||||||
|
msgid "Successfully edited admin account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:172
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the admin account \"%s\" already exists."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:182
|
||||||
|
msgid "Successfully created admin account."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:189
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the domain \"%s\" doesn't exists."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:194
|
||||||
|
msgid "Successfully updated domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:200
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the alias domain \"%s\" doesn't exists."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:205
|
||||||
|
msgid "Successfully updated alias domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:211
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the domain \"%s\" already exists."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:222
|
||||||
|
msgid "Successfully created domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:228
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the alias domain \"%s\" already exists."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:239
|
||||||
|
msgid "Successfully created alias domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:252
|
||||||
|
#, php-format
|
||||||
|
msgid "Oops, it looks like the alias \"%s\" already exists."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:261
|
||||||
|
msgid "Successfully added alias."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:276
|
||||||
|
msgid "Successfully updated alias."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:298
|
||||||
|
msgid "Successfully updated mailbox."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:311 www/register.php:62
|
||||||
|
msgid "Sorry, this user already exists"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:333 www/register.php:70
|
||||||
|
msgid "Successfully created new mailbox!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:359
|
||||||
|
msgid "Successfully disabled two-factor authentication"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:369 www/admin.php:378 www/admin.php:384
|
||||||
|
msgid "E-Mail and XMPP - Admin management"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:373 www/admin.php:379
|
||||||
|
msgid "Lets domain owners manage their email domain and user accounts."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:391
|
||||||
|
msgid "Manage admins"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:392
|
||||||
|
msgid "Manage alias domains"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:394
|
||||||
|
msgid "Manage your admin account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:396
|
||||||
|
msgid "Manage domains"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:397
|
||||||
|
msgid "Manage aliases"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:398
|
||||||
|
msgid "Manage mailboxes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:421
|
||||||
|
msgid ""
|
||||||
|
"Welcome to the admin management interface. You can configure your domain(s) "
|
||||||
|
"and accounts here. Please select an option from the menu."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:453
|
||||||
|
msgid ""
|
||||||
|
"Oops, it looks like the page you tried to access does not exist or you do "
|
||||||
|
"not have permission to access it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:466 www/admin.php:485
|
||||||
|
msgid "Create new admin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:471
|
||||||
|
msgid "Admin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:472 www/admin.php:521 www/admin.php:534 www/admin.php:600
|
||||||
|
#: www/admin.php:624 www/admin.php:656 www/admin.php:680 www/admin.php:714
|
||||||
|
#: www/admin.php:748 www/admin.php:778 www/admin.php:811 www/admin.php:843
|
||||||
|
#: www/admin.php:877 www/admin.php:913 www/admin.php:961 www/admin.php:1006
|
||||||
|
msgid "Active"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:473 www/admin.php:625 www/admin.php:715 www/admin.php:812
|
||||||
|
#: www/admin.php:914
|
||||||
|
msgid "Last modified"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:474
|
||||||
|
msgid "Edit account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:482 www/admin.php:636 www/admin.php:724 www/admin.php:821
|
||||||
|
#: www/admin.php:927
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:497
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit admin account %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:515 www/admin.php:528 www/admin.php:596
|
||||||
|
msgid "Superadmin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:517 www/admin.php:529 www/admin.php:597
|
||||||
|
msgid "Superadmins can manage other admins"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:538
|
||||||
|
msgid "Managed domains"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:558 www/admin.php:685 www/admin.php:783 www/admin.php:886
|
||||||
|
msgid "Save changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:564
|
||||||
|
msgid "Delete admin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:571 www/admin.php:696
|
||||||
|
msgid "Oops, this admin doesn't seem to exist."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:578
|
||||||
|
msgid "Create new admin account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:604
|
||||||
|
msgid "Add admin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:617 www/admin.php:640 www/admin.php:648
|
||||||
|
msgid "Create new domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:623 www/admin.php:652
|
||||||
|
msgid "Domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:626
|
||||||
|
msgid "Edit domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:660
|
||||||
|
msgid "Add domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:674
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit domain %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:690
|
||||||
|
msgid "Delete domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:706 www/admin.php:728 www/admin.php:736
|
||||||
|
msgid "Create new alias domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:712 www/admin.php:740
|
||||||
|
msgid "Alias Domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:713 www/admin.php:744 www/admin.php:772
|
||||||
|
msgid "Target Domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:716
|
||||||
|
msgid "Edit alias domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:752
|
||||||
|
msgid "Add alias domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:766
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit alias domain %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:788
|
||||||
|
msgid "Delete alias domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:794
|
||||||
|
msgid "Oops, this alias domain doesn't seem to exist."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:804 www/admin.php:824 www/admin.php:831
|
||||||
|
msgid "Create new alias"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:809 www/admin.php:835
|
||||||
|
msgid "Alias"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:810 www/admin.php:839 www/admin.php:870
|
||||||
|
msgid "Target"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:813
|
||||||
|
msgid "Edit alias"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:846 www/admin.php:882
|
||||||
|
msgid "Enforce encryption"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:851
|
||||||
|
msgid "Add alias"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:865
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit alias %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:891
|
||||||
|
msgid "Delete alias"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:897
|
||||||
|
msgid "Oops, this alias doesn't seem to exist."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:907 www/admin.php:930 www/admin.php:937
|
||||||
|
msgid "Create new mailbox"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:915
|
||||||
|
msgid "Edit mailbox"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:973
|
||||||
|
msgid "Add mailbox"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:989
|
||||||
|
#, php-format
|
||||||
|
msgid "Edit mailbox %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:1021
|
||||||
|
msgid "Save mailbox"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:1045
|
||||||
|
msgid "Delete mailbox / Disable two-factor authentication"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:1051
|
||||||
|
msgid "Disable two-factor authentication"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:1056
|
||||||
|
msgid "Delete mailbox"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/admin.php:1062
|
||||||
|
msgid "Oops, this mailbox doesn't seem to exist."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:18
|
||||||
|
msgid "Invalid CSRF token"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:27
|
||||||
|
msgid "Invalid username. It may not contain a +, ', \" or /."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:44
|
||||||
|
msgid "The domain you specified is not allowed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:49
|
||||||
|
msgid "The email address you specified is not valid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:52
|
||||||
|
msgid "The username you specified is reserved"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:78 www/register.php:87
|
||||||
|
msgid "E-Mail and XMPP - Register"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:82 www/register.php:88
|
||||||
|
msgid ""
|
||||||
|
"Register for a free and anonymous E-Mail address and an XMPP/Jabber account"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: www/register.php:114
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"I have read and agreed to the <a href=\"%s\" target=\"_blank\">Privacy "
|
||||||
|
"Policy</a>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cron.php:11 common_config.php:87 setup.php:20 setup.php:23
|
||||||
|
msgid "No Connection to MySQL database!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: tools/delete_leftover_files.php:14
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"%s does not seem to have any accounts, but has a directory. Consider "
|
||||||
|
"deleting it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: tools/delete_leftover_files.php:20
|
||||||
|
#, php-format
|
||||||
|
msgid "Deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: tools/delete_leftover_files.php:22
|
||||||
|
#, php-format
|
||||||
|
msgid "File found in mail directory location: \"%s\". Consider deleting it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common_config.php:136
|
||||||
|
msgid "Copy:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common_config.php:255
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Oops, the email \"%s\" doesn' look like a valid email address and thus "
|
||||||
|
"wasn't added to the forwarding list."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common_config.php:281
|
||||||
|
msgid "You are not allowed to manage this domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: common_config.php:292
|
||||||
|
msgid "Invalid email address."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: setup.php:8
|
||||||
|
#, php-format
|
||||||
|
msgid "The %s extension of PHP is required. Please install it first."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: setup.php:35
|
||||||
|
msgid "Database has successfully been updated."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: setup.php:37
|
||||||
|
msgid "Database is already up-to-date."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: setup.php:40
|
||||||
|
msgid "Error updating database:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: setup.php:57
|
||||||
|
msgid "Database has successfully been set up."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: setup.php:59
|
||||||
|
msgid "Error setting up database:"
|
||||||
|
msgstr ""
|
31
setup.php
31
setup.php
|
@ -1,21 +1,26 @@
|
||||||
<?php
|
<?php
|
||||||
|
if(!extension_loaded('gettext')){
|
||||||
|
die('The gettext extension of PHP is required. Please install it first.' . PHP_EOL);
|
||||||
|
}
|
||||||
require('common_config.php');
|
require('common_config.php');
|
||||||
if(!extension_loaded('pdo_mysql')){
|
foreach(['pdo_mysql', 'mbstring', 'pcre', 'gnupg', 'intl'] as $required_extension) {
|
||||||
die("Error: You need to install and enable the PDO php module\n");
|
if ( ! extension_loaded( $required_extension ) ) {
|
||||||
|
die( sprintf( _( 'The %s extension of PHP is required. Please install it first.' ), $required_extension ) . PHP_EOL );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
try{
|
try{
|
||||||
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
|
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
|
||||||
}catch(PDOException $e){
|
}catch(PDOException){
|
||||||
try{
|
try{
|
||||||
//Attempt to create database
|
//Attempt to create database
|
||||||
$db=new PDO('mysql:host=' . DBHOST . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
|
$db=new PDO('mysql:host=' . DBHOST . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
|
||||||
if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){
|
if(false!==$db->exec('CREATE DATABASE ' . DBNAME)){
|
||||||
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
|
$db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
|
||||||
}else{
|
}else{
|
||||||
die("Error: No database connection!\n");
|
die( _('No Connection to MySQL database!') . PHP_EOL);
|
||||||
}
|
}
|
||||||
}catch(PDOException $e){
|
}catch(PDOException){
|
||||||
die("Error: No database connection!\n");
|
die( _('No Connection to MySQL database!') . PHP_EOL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try{
|
try{
|
||||||
|
@ -27,13 +32,13 @@ try{
|
||||||
$stmt->execute([DBVERSION]);
|
$stmt->execute([DBVERSION]);
|
||||||
$db->commit();
|
$db->commit();
|
||||||
if($version < DBVERSION){
|
if($version < DBVERSION){
|
||||||
echo "Database has successfully been updated.\n";
|
echo _('Database has successfully been updated.') . PHP_EOL;
|
||||||
} else {
|
} else {
|
||||||
echo "Database is already up-to-date.\n";
|
echo _('Database is already up-to-date.') . PHP_EOL;
|
||||||
}
|
}
|
||||||
} catch(PDOException $e){
|
} catch(PDOException $e){
|
||||||
echo "Error updating database:\n";
|
echo _('Error updating database:') . PHP_EOL;
|
||||||
echo $e->getMessage() . "\n";
|
echo $e->getMessage() . PHP_EOL;
|
||||||
$db->rollBack();
|
$db->rollBack();
|
||||||
}
|
}
|
||||||
} catch(PDOException){
|
} catch(PDOException){
|
||||||
|
@ -49,9 +54,9 @@ try{
|
||||||
$db->exec('CREATE TABLE settings (setting varchar(50) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL PRIMARY KEY, value text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;');
|
$db->exec('CREATE TABLE settings (setting varchar(50) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL PRIMARY KEY, value text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;');
|
||||||
$stmt=$db->prepare("INSERT INTO settings (setting, value) VALUES ('version', ?);");
|
$stmt=$db->prepare("INSERT INTO settings (setting, value) VALUES ('version', ?);");
|
||||||
$stmt->execute([DBVERSION]);
|
$stmt->execute([DBVERSION]);
|
||||||
echo "Database has successfully been set up.\n";
|
echo _('Database has successfully been set up.') . PHP_EOL;
|
||||||
} catch(PDOException $e){
|
} catch(PDOException $e){
|
||||||
echo "Error setting up database:\n";
|
echo _('Error setting up database:') . PHP_EOL;
|
||||||
echo $e->getMessage() . "\n";
|
echo $e->getMessage() . PHP_EOL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,15 +11,15 @@ $dirs = [];
|
||||||
foreach ( $domains as $domain ) {
|
foreach ( $domains as $domain ) {
|
||||||
if ( is_dir( '/var/mail/vmail/' . basename( $domain ) ) ) {
|
if ( is_dir( '/var/mail/vmail/' . basename( $domain ) ) ) {
|
||||||
if ( ! isset( $mailboxes[ $domain ] ) ) {
|
if ( ! isset( $mailboxes[ $domain ] ) ) {
|
||||||
echo "$domain does not seem to have any accounts, but has a directory. Consider deleting it.\n";
|
echo sprintf(_('%s does not seem to have any accounts, but has a directory. Consider deleting it.'), $domain).PHP_EOL;
|
||||||
} else {
|
} else {
|
||||||
$accounts = array_diff( scandir( '/var/mail/vmail/' . basename( $domain ) ), array( '..', '.' ) );
|
$accounts = array_diff( scandir( '/var/mail/vmail/' . basename( $domain ) ), array( '..', '.' ) );
|
||||||
foreach ( $accounts as $account ) {
|
foreach ( $accounts as $account ) {
|
||||||
if ( ! isset( $mailboxes[ $domain ][ $account ] ) && is_dir( '/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ) ) ) {
|
if ( ! isset( $mailboxes[ $domain ][ $account ] ) && is_dir( '/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ) ) ) {
|
||||||
exec( 'rm -r ' . escapeshellarg('/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account )));
|
exec( 'rm -r ' . escapeshellarg('/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account )));
|
||||||
echo "Deleted: /var/mail/vmail/" . basename( $domain ) . '/' . basename( $account ) . "\n";
|
echo sprintf(_('Deleted: %s'), '/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account )) . PHP_EOL;
|
||||||
} elseif( is_file('/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ))){
|
} elseif( is_file('/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ))){
|
||||||
echo 'File found in mail directory location: "/var/mail/vmail/' . basename( $domain ) . '/' . basename( $account ) . "\". Consider deleting it.\n";
|
echo sprintf(_('File found in mail directory location: "%s". Consider deleting it.'), '/var/mail/vmail/'. basename( $domain ) . '/' . basename( $account ) ) . PHP_EOL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
3
update-translation.sh
Executable file
3
update-translation.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
xgettext -o locale/mail-hosting.pot `find . -iname '*.php'`
|
||||||
|
for translation in `find locale -iname '*.po'`; do msgmerge -U "$translation" locale/mail-hosting.pot; msgfmt -o ${translation:0:-2}mo "$translation"; done
|
388
www/admin.php
388
www/admin.php
File diff suppressed because it is too large
Load diff
|
@ -1,28 +1,40 @@
|
||||||
<?php include_once('../common_config.php'); ?>
|
<?php
|
||||||
<!DOCTYPE html><html lang="en-gb"><head>
|
include_once('../common_config.php');
|
||||||
<title>Daniel - E-Mail and XMPP</title>
|
global $language, $dir, $locale;
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html><html lang="<?php echo $language; ?>" dir="<?php echo $dir; ?>"><head>
|
||||||
|
<title><?php echo _('E-Mail and XMPP'); ?></title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta name="author" content="Daniel Winzen">
|
<meta name="author" content="Daniel Winzen">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="description" content="Get a free and anonymous E-Mail address and an XMPP/Jabber account">
|
<meta name="description" content="<?php echo _('Get a free and anonymous E-Mail address and an XMPP/Jabber account'); ?>">
|
||||||
<link rel="canonical" href="https://danwin1210.de/mail/">
|
<link rel="canonical" href="<?php echo CANONICAL_URL; ?>">
|
||||||
|
<link rel="alternate" href="<?php echo CANONICAL_URL; ?>" hreflang="x-default">
|
||||||
|
<?php alt_links(); ?>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="<?php echo _('E-Mail and XMPP'); ?>">
|
||||||
|
<meta property="og:description" content="<?php echo _('Get a free and anonymous E-Mail address and an XMPP/Jabber account'); ?>">
|
||||||
|
<meta property="og:url" content="<?php echo CANONICAL_URL; ?>">
|
||||||
|
<meta property="og:locale" content="<?php echo $locale; ?>">
|
||||||
</head><body>
|
</head><body>
|
||||||
<main>
|
<main>
|
||||||
<p>Info | <a href="/mail/register.php">Register</a> | <a href="/mail/squirrelmail/src/login.php" target="_blank">Webmail-Login</a> | <a href="/mail/manage_account.php">Manage account</a> | <a href="https://danwin1210.de:5281/conversejs" target="_blank" rel="noopener">Web-XMPP</a></p>
|
<p><?php echo _('Info'); ?> | <a href="<?php echo ROOT_URL; ?>register.php"><?php echo _('Register'); ?></a> | <a href="<?php echo ROOT_URL; ?>squirrelmail/src/login.php" target="_blank"><?php echo _('Webmail-Login'); ?></a> | <a href="<?php echo ROOT_URL; ?>manage_account.php"><?php echo _('Manage account'); ?></a> | <a href="<?php echo WEB_XMPP_URL; ?>" target="_blank" rel="noopener"><?php echo _('Web-XMPP'); ?></a></p>
|
||||||
<h2>What you will get</h2>
|
<h2><?php echo _('What you will get'); ?></h2>
|
||||||
<p>You get a free anonymous E-Mail address and an XMPP/Jabber account using the same details. Your Jabber ID is user@danwin1210.de and can be connected to directly from clearnet or via TOR hidden service (danielas3rtn54uwmofdo3x2bsdifr47huasnmbgqzfrec5ubupvtpid.onion).</p>
|
<p><?php printf(_('You get a free anonymous E-Mail address and an XMPP/Jabber account using the same details. Your Jabber ID is user@%1$s and can be connected to directly from clearnet or via Tor hidden service (%2$s).'), CLEARNET_SERVER, ONION_SERVER); ?></p>
|
||||||
<p>You will have 50MB of disk space available for your mails. If you desperately need more space, just <a href="/contact.php">contact me</a>. Your E-Mail address will be user@danwin1210.de</p>
|
<p><?php printf(_('You will have 50MB of disk space available for your mails. If you need more space, just <a href="%1$s">contact me</a>. Your E-Mail address will be %2$s'), CONTACT_URL, CLEARNET_SERVER); ?></p>
|
||||||
<p>For privacy, please use PGP mail encryption, if you can. This prevents others from reading your mails (including me and/or LEA). GnuPGs official home: <a href="https://gnupg.org">https://gnupg.org</a> Windows GUI: <a href="https://gpg4usb.org">https://gpg4usb.org</a></p>
|
<p><?php echo _('For privacy, please use PGP mail encryption, if you can. This prevents others from reading your mails (including me and/or LEA). GnuPGs official home: <a href="https://gnupg.org" target="_blank" rel="noopener noreferrer">https://gnupg.org</a> Windows GUI: <a href="https://gpg4usb.org" target="_blank" rel="noopener noreferrer">https://gpg4usb.org</a>'); ?></p>
|
||||||
<h2>E-Mail Setup</h2>
|
<h2><?php echo _('E-Mail Setup'); ?></h2>
|
||||||
<p>SMTP: danwin1210.de Port 465 (SSL/TLS) or 587 (StartTLS)<br>
|
<p>
|
||||||
IMAP: danwin1210.de Port 993 (SSL/TLS) or 143 (StartTLS)<br>
|
<?php printf(_('SMTP: %s Port 465 (SSL/TLS) or 587 (StartTLS)'), CLEARNET_SERVER); ?><br>
|
||||||
POP3: danwin1210.de Port 995 (SSL/TLS) or 110 (StartTLS)<br>
|
<?php printf(_('IMAP: %s Port 993 (SSL/TLS) or 143 (StartTLS)'), CLEARNET_SERVER); ?><br>
|
||||||
Authentication: PLAIN, LOGIN</p>
|
<?php printf(_('POP3: %s Port 995 (SSL/TLS) or 110 (StartTLS)'), CLEARNET_SERVER); ?><br>
|
||||||
<p>You can also connect on the same ports via the tor onion address danielas3rtn54uwmofdo3x2bsdifr47huasnmbgqzfrec5ubupvtpid.onion, but you will have to accept an SSL certificate only valid for the clearnet domain.</p>
|
<?php echo _('Authentication: PLAIN, LOGIN'); ?>
|
||||||
<h2>XMPP setup</h2>
|
</p>
|
||||||
<p>Domain: danwin1210.de<br>
|
<p><?php printf(_('You can also connect on the same ports via the Tor onion address %s, but you will have to accept an SSL certificate only valid for the clearnet domain.'), ONION_SERVER); ?></p>
|
||||||
Connect server: danielas3rtn54uwmofdo3x2bsdifr47huasnmbgqzfrec5ubupvtpid.onion (optional for torification)<br>
|
<h2><?php echo _('XMPP setup'); ?></h2>
|
||||||
File transfer proxy: proxy.danwin1210.de<br>
|
<p><?php printf(_('Domain: %s'), CLEARNET_SERVER); ?><br>
|
||||||
BOSH URL: https://danwin1210.de:5281/http-bind (only enable if you have to, as it is slower than directly using xmpp)</p>
|
<?php printf(_('Connect server: %s (optional for torification)'), ONION_SERVER); ?><br>
|
||||||
|
<?php printf(_('File transfer proxy: %s'), XMPP_FILE_PROXY); ?><br>
|
||||||
|
<?php printf(_('BOSH URL: %s (only enable if you have to, as it is slower than directly using xmpp)'), XMPP_BOSH_URL); ?></p>
|
||||||
</main>
|
</main>
|
||||||
</body></html>
|
</body></html>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
require_once( '../common_config.php' );
|
require_once( '../common_config.php' );
|
||||||
|
global $language, $dir, $locale;
|
||||||
session_start();
|
session_start();
|
||||||
if ( empty( $_SESSION[ 'csrf_token' ] ) ) {
|
if ( empty( $_SESSION[ 'csrf_token' ] ) ) {
|
||||||
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
||||||
|
@ -14,20 +14,20 @@ if ( ! empty( $_SESSION[ 'email_user' ] ) ) {
|
||||||
$_SESSION = [];
|
$_SESSION = [];
|
||||||
session_regenerate_id( true );
|
session_regenerate_id( true );
|
||||||
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
||||||
$msg .= '<div class="red" role="alert">It looks like your user no longer exists!</div>';
|
$msg .= '<div class="red" role="alert">'._('It looks like your user no longer exists!').'</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
if ( $_SESSION[ 'csrf_token' ] !== $_POST[ 'csrf_token' ] ?? '' ) {
|
if ( $_SESSION[ 'csrf_token' ] !== $_POST[ 'csrf_token' ] ?? '' ) {
|
||||||
die( 'Invalid csfr token' );
|
die( 'Invalid CSRF token' );
|
||||||
}
|
}
|
||||||
if ( isset( $_SESSION[ '2fa_code' ] ) ) {
|
if ( isset( $_SESSION[ '2fa_code' ] ) ) {
|
||||||
if ( ! empty( $_POST[ '2fa_code' ] ) && $_POST[ '2fa_code' ] === $_SESSION[ '2fa_code' ] ) {
|
if ( ! empty( $_POST[ '2fa_code' ] ) && $_POST[ '2fa_code' ] === $_SESSION[ '2fa_code' ] ) {
|
||||||
unset( $_SESSION[ '2fa_code' ] );
|
unset( $_SESSION[ '2fa_code' ] );
|
||||||
unset( $_SESSION[ 'pgp_key' ] );
|
unset( $_SESSION[ 'pgp_key' ] );
|
||||||
} else {
|
} else {
|
||||||
$msg .= '<p style="color:red">Wrong 2FA code</p>';
|
$msg .= '<p style="color:red">'._('Wrong 2FA code').'</p>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( ! isset( $_SESSION[ '2fa_code' ] ) && isset( $_POST[ 'action' ] ) ) {
|
if ( ! isset( $_SESSION[ '2fa_code' ] ) && isset( $_POST[ 'action' ] ) ) {
|
||||||
|
@ -35,16 +35,16 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
$_SESSION = [];
|
$_SESSION = [];
|
||||||
session_regenerate_id( true );
|
session_regenerate_id( true );
|
||||||
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
||||||
$msg .= '<div class="green" role="alert">Successfully logged out</div>';
|
$msg .= '<div class="green" role="alert">'._('Successfully logged out').'</div>';
|
||||||
} elseif ( $_POST[ 'action' ] === 'login' ) {
|
} elseif ( $_POST[ 'action' ] === 'login' ) {
|
||||||
$ok = true;
|
$ok = true;
|
||||||
if ( ! check_captcha( $_POST[ 'challenge' ] ?? '', $_POST[ 'captcha' ] ?? '' ) ) {
|
if ( ! check_captcha( $_POST[ 'challenge' ] ?? '', $_POST[ 'captcha' ] ?? '' ) ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Invalid captcha</div>';
|
$msg .= '<div class="red" role="alert">'._('Invalid captcha').'</div>';
|
||||||
}
|
}
|
||||||
if ( empty( $_POST[ 'user' ] ) || ! preg_match( '/^([^+]+?)(@([^@]+))?$/i', $_POST[ 'user' ], $match ) ) {
|
if ( empty( $_POST[ 'user' ] ) || ! preg_match( '/^([^+]+?)(@([^@]+))?$/i', $_POST[ 'user' ], $match ) ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Invalid username.</div>';
|
$msg .= '<div class="red" role="alert">'._('Invalid username').'</div>';
|
||||||
}
|
}
|
||||||
if ( $ok ) {
|
if ( $ok ) {
|
||||||
$db = get_db_instance();
|
$db = get_db_instance();
|
||||||
|
@ -60,7 +60,7 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
if ( $tmp = $stmt->fetch( PDO::FETCH_ASSOC ) ) {
|
if ( $tmp = $stmt->fetch( PDO::FETCH_ASSOC ) ) {
|
||||||
if ( empty( $_POST[ 'pwd' ] ) || ! password_verify( $_POST[ 'pwd' ], $tmp[ 'password' ] ) ) {
|
if ( empty( $_POST[ 'pwd' ] ) || ! password_verify( $_POST[ 'pwd' ], $tmp[ 'password' ] ) ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Incorrect username or password</div>';
|
$msg .= '<div class="red" role="alert">'._('Incorrect username or password').'</div>';
|
||||||
} else {
|
} else {
|
||||||
$_SESSION[ 'email_user' ] = $tmp[ 'username' ];
|
$_SESSION[ 'email_user' ] = $tmp[ 'username' ];
|
||||||
$stmt = $db->prepare( 'UPDATE mailbox SET last_login = ? WHERE username = ? AND active = 1;' );
|
$stmt = $db->prepare( 'UPDATE mailbox SET last_login = ? WHERE username = ? AND active = 1;' );
|
||||||
|
@ -78,7 +78,7 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$msg .= '<div class="red" role="alert">Incorrect username or password</div>';
|
$msg .= '<div class="red" role="alert">'._('Incorrect username or password').'</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'update_settings' ) {
|
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'update_settings' ) {
|
||||||
|
@ -97,21 +97,21 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
$stmt->execute( [ ( isset( $_POST[ 'enforce_tls_in' ] ) ? 1 : 0 ), ( isset( $_POST[ 'enforce_tls_out' ] ) ? 1 : 0 ), $_SESSION[ 'email_user' ] ] );
|
$stmt->execute( [ ( isset( $_POST[ 'enforce_tls_in' ] ) ? 1 : 0 ), ( isset( $_POST[ 'enforce_tls_out' ] ) ? 1 : 0 ), $_SESSION[ 'email_user' ] ] );
|
||||||
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'update_password' ) {
|
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'update_password' ) {
|
||||||
if ( empty( $_POST[ 'pass_update' ] ) || empty( $_POST[ 'pass_update2' ] ) || $_POST[ 'pass_update' ] !== $_POST[ 'pass_update2' ] ) {
|
if ( empty( $_POST[ 'pass_update' ] ) || empty( $_POST[ 'pass_update2' ] ) || $_POST[ 'pass_update' ] !== $_POST[ 'pass_update2' ] ) {
|
||||||
$msg .= '<div class="red" role="alert">Passwords empty or don\'t match</div>';
|
$msg .= '<div class="red" role="alert">'._('Passwords empty or don\'t match').'</div>';
|
||||||
} else {
|
} else {
|
||||||
$hash = password_hash( $_POST[ 'pass_update' ], PASSWORD_ARGON2ID );
|
$hash = password_hash( $_POST[ 'pass_update' ], PASSWORD_ARGON2ID );
|
||||||
$stmt = $db->prepare( 'UPDATE mailbox SET password_hash_type = "{ARGON2ID}", password = ? WHERE username = ? AND active = 1;' );
|
$stmt = $db->prepare( 'UPDATE mailbox SET password_hash_type = "{ARGON2ID}", password = ? WHERE username = ? AND active = 1;' );
|
||||||
$stmt->execute( [ $hash, $_SESSION[ 'email_user' ] ] );
|
$stmt->execute( [ $hash, $_SESSION[ 'email_user' ] ] );
|
||||||
$msg .= '<div class="green" role="alert">Successfully updated password</div>';
|
$msg .= '<div class="green" role="alert">'._('Successfully updated password').'</div>';
|
||||||
}
|
}
|
||||||
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'delete_account' ) {
|
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'delete_account' ) {
|
||||||
$msg .= '<div class="red" role="alert">Warning: This will permenently delete your account and all your data. Anyone can immediately register with this user again. It cannot be reversed. Are you absolutely sure?</div>';
|
$msg .= '<div class="red" role="alert">'._('Warning: This will permenently delete your account and all your data. Anyone can immediately register with this user again. It cannot be reversed. Are you absolutely sure?').'</div>';
|
||||||
$msg .= '<form method="post"><input type="hidden" name="csrf_token" value="' . $_SESSION[ 'csrf_token' ] . '">';
|
$msg .= '<form method="post"><input type="hidden" name="csrf_token" value="' . $_SESSION[ 'csrf_token' ] . '">';
|
||||||
$msg .= '<button type="submit" name="action" value="delete_account2">Yes, I want to permanently delete my account</button></form>';
|
$msg .= '<button type="submit" name="action" value="delete_account2">'._('Yes, I want to permanently delete my account').'</button></form>';
|
||||||
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'disable_account' ) {
|
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'disable_account' ) {
|
||||||
$msg .= '<div class="red" role="alert">Warning: This will disable your account for a year and delete all your data. After a year it is available for registrations again. It cannot be reversed. Are you absolutely sure?</div>';
|
$msg .= '<div class="red" role="alert">'._('Warning: This will disable your account for a year and delete all your data. After a year it is available for registrations again. It cannot be reversed. Are you absolutely sure?').'</div>';
|
||||||
$msg .= '<form method="post"><input type="hidden" name="csrf_token" value="' . $_SESSION[ 'csrf_token' ] . '">';
|
$msg .= '<form method="post"><input type="hidden" name="csrf_token" value="' . $_SESSION[ 'csrf_token' ] . '">';
|
||||||
$msg .= '<button type="submit" name="action" value="disable_account2">Yes, I want to disable my account</button></form>';
|
$msg .= '<button type="submit" name="action" value="disable_account2">'._('Yes, I want to disable my account').'</button></form>';
|
||||||
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'delete_account2' ) {
|
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'delete_account2' ) {
|
||||||
$stmt = $db->prepare( 'DELETE FROM alias WHERE address = ?;' );
|
$stmt = $db->prepare( 'DELETE FROM alias WHERE address = ?;' );
|
||||||
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
||||||
|
@ -120,7 +120,7 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
$_SESSION = [];
|
$_SESSION = [];
|
||||||
session_regenerate_id( true );
|
session_regenerate_id( true );
|
||||||
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
||||||
$msg .= '<div class="green" role="alert">Successfully deleted account</div>';
|
$msg .= '<div class="green" role="alert">'._('Successfully deleted account').'</div>';
|
||||||
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'disable_account2' ) {
|
} elseif ( ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'disable_account2' ) {
|
||||||
$stmt = $db->prepare( 'UPDATE alias SET active = 0 WHERE address = ?;' );
|
$stmt = $db->prepare( 'UPDATE alias SET active = 0 WHERE address = ?;' );
|
||||||
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
||||||
|
@ -129,11 +129,11 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
$_SESSION = [];
|
$_SESSION = [];
|
||||||
session_regenerate_id( true );
|
session_regenerate_id( true );
|
||||||
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
||||||
$msg .= '<div class="green" role="alert">Successfully disabled account</div>';
|
$msg .= '<div class="green" role="alert">'._('Successfully disabled account').'</div>';
|
||||||
} elseif ( isset( $_POST[ 'pgp_key' ] ) && ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'update_pgp_key' ) {
|
} elseif ( isset( $_POST[ 'pgp_key' ] ) && ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'update_pgp_key' ) {
|
||||||
$pgp_key = trim( $_POST[ 'pgp_key' ] );
|
$pgp_key = trim( $_POST[ 'pgp_key' ] );
|
||||||
if ( empty( $pgp_key ) ) {
|
if ( empty( $pgp_key ) ) {
|
||||||
$msg .= "<p class=\"green\">Successfully removed the key</p>";
|
$msg .= '<p class="green">'._('Successfully removed the key').'</p>';
|
||||||
$stmt = $db->prepare( 'UPDATE mailbox SET pgp_key = "", tfa = 0, pgp_verified = 0 WHERE username = ?;' );
|
$stmt = $db->prepare( 'UPDATE mailbox SET pgp_key = "", tfa = 0, pgp_verified = 0 WHERE username = ?;' );
|
||||||
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
||||||
} else {
|
} else {
|
||||||
|
@ -142,7 +142,7 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
gnupg_setarmor( $gpg, 1 );
|
gnupg_setarmor( $gpg, 1 );
|
||||||
$imported_key = gnupg_import( $gpg, $pgp_key );
|
$imported_key = gnupg_import( $gpg, $pgp_key );
|
||||||
if ( ! $imported_key ) {
|
if ( ! $imported_key ) {
|
||||||
$msg .= "<p class=\"red\">There was an error importing the key</p>";
|
$msg .= '<p class="red">'._('There was an error importing the key').'</p>';
|
||||||
} else {
|
} else {
|
||||||
$has_this_email = false;
|
$has_this_email = false;
|
||||||
$key_info = gnupg_keyinfo( $gpg, $imported_key[ 'fingerprint' ] );
|
$key_info = gnupg_keyinfo( $gpg, $imported_key[ 'fingerprint' ] );
|
||||||
|
@ -155,36 +155,43 @@ if ( $_SERVER[ 'REQUEST_METHOD' ] === 'POST' ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( $has_this_email ) {
|
if ( $has_this_email ) {
|
||||||
$msg .= "<p class=\"green\">Successfully imported the key</p>";
|
$msg .= '<p class="green">'._('Successfully imported the key').'</p>';
|
||||||
$stmt = $db->prepare( 'UPDATE mailbox SET pgp_key = ?, tfa = 0, pgp_verified = 0 WHERE username = ?;' );
|
$stmt = $db->prepare( 'UPDATE mailbox SET pgp_key = ?, tfa = 0, pgp_verified = 0 WHERE username = ?;' );
|
||||||
$stmt->execute( [ $pgp_key, $_SESSION[ 'email_user' ] ] );
|
$stmt->execute( [ $pgp_key, $_SESSION[ 'email_user' ] ] );
|
||||||
} else {
|
} else {
|
||||||
$msg .= sprintf( '<p class="red">Oops, looks like the key is missing this email address as user id. Please add your address "%s" as user ID to your pgp key or create a new key pair.</p>', htmlspecialchars( $_SESSION[ 'email_user' ] ) );
|
$msg .= '<p class="red">' . sprintf( _('Oops, looks like the key is missing this email address as user id. Please add your address "%s" as user ID to your pgp key or create a new key pair.'), htmlspecialchars( $_SESSION[ 'email_user' ] ) ) . '</p>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ( isset( $_POST[ 'enable_2fa_code' ] ) && ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'enable_2fa' ) {
|
} elseif ( isset( $_POST[ 'enable_2fa_code' ] ) && ! empty( $_SESSION[ 'email_user' ] ) && $_POST[ 'action' ] === 'enable_2fa' ) {
|
||||||
if ( $_POST[ 'enable_2fa_code' ] !== $_SESSION[ 'enable_2fa_code' ] ) {
|
if ( $_POST[ 'enable_2fa_code' ] !== $_SESSION[ 'enable_2fa_code' ] ) {
|
||||||
$msg .= "<p class=\"red\">Sorry, the code was incorrect</p>";
|
$msg .= '<p class="red">'._('Sorry, the code was incorrect').'</p>';
|
||||||
} else {
|
} else {
|
||||||
$stmt = $db->prepare( 'UPDATE mailbox SET tfa = 1, pgp_verified = 1 WHERE username = ?;' );
|
$stmt = $db->prepare( 'UPDATE mailbox SET tfa = 1, pgp_verified = 1 WHERE username = ?;' );
|
||||||
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
$stmt->execute( [ $_SESSION[ 'email_user' ] ] );
|
||||||
$msg .= "<p class=\"green\">Successfully enabled 2FA</p>";
|
$msg .= '<p class="green">'._('Successfully enabled 2FA').'</p>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en-gb">
|
<html lang="<?php echo $language; ?>" dir="<?php echo $dir; ?>">
|
||||||
<head>
|
<head>
|
||||||
<title>Daniel - E-Mail and XMPP - Manage account</title>
|
<title><?php echo _('E-Mail and XMPP - Manage account'); ?></title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta name="author" content="Daniel Winzen">
|
<meta name="author" content="Daniel Winzen">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="description"
|
<meta name="description"
|
||||||
content="Manage your free and anonymous E-Mail address and an XMPP/Jabber account. Add forwarding addresses, change your password or disable/delete your account.">
|
content="<?php echo _('Manage your free and anonymous E-Mail address and an XMPP/Jabber account. Add forwarding addresses, change your password or disable/delete your account.'); ?>">
|
||||||
<link rel="canonical" href="https://danwin1210.de/mail/manage_account.php">
|
<link rel="canonical" href="<?php echo CANONICAL_URL; ?>manage_account.php">
|
||||||
|
<link rel="alternate" href="<?php echo CANONICAL_URL; ?>manage_account.php" hreflang="x-default">
|
||||||
|
<?php alt_links(); ?>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="<?php echo _('E-Mail and XMPP - Manage account'); ?>">
|
||||||
|
<meta property="og:description" content="<?php echo _('Manage your free and anonymous E-Mail address and an XMPP/Jabber account. Add forwarding addresses, change your password or disable/delete your account.'); ?>">
|
||||||
|
<meta property="og:url" content="<?php echo CANONICAL_URL; ?>manage_account.php">
|
||||||
|
<meta property="og:locale" content="<?php echo $locale; ?>">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main>
|
<main>
|
||||||
|
@ -203,21 +210,21 @@ foreach ( $key_info as $key ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$encrypted = gnupg_encrypt( $gpg, "To login, please enter the following code to confirm ownership of your key:\n\n" . $_SESSION[ '2fa_code' ] . "\n" );
|
$encrypted = gnupg_encrypt( $gpg, _('To login, please enter the following code to confirm ownership of your key:')."\n\n" . $_SESSION[ '2fa_code' ] . "\n" );
|
||||||
echo $msg;
|
echo $msg;
|
||||||
echo "<p>To login, please decrypt the following PGP encrypted message and confirm the code:</p>";
|
echo '<p>'._('To login, please decrypt the following PGP encrypted message and confirm the code:').'</p>';
|
||||||
echo "<pre>$encrypted</pre>";
|
echo "<pre>$encrypted</pre>";
|
||||||
?>
|
?>
|
||||||
<form class="form_limit" action="manage_account.php" method="post">
|
<form class="form_limit" action="manage_account.php" method="post">
|
||||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><input type="text" name="2fa_code" aria-label="2FA code"></div>
|
<div class="col"><input type="text" name="2fa_code" aria-label="<?php echo _('2FA code'); ?>"></div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button type="submit">Confirm</button>
|
<button type="submit"><?php echo _('Confirm'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</maim></body>
|
</main></body>
|
||||||
</html>
|
</html>
|
||||||
<?php
|
<?php
|
||||||
exit;
|
exit;
|
||||||
|
@ -226,36 +233,36 @@ exit;
|
||||||
if ( ! empty( $_SESSION[ 'email_user' ] ) ){ ?>
|
if ( ! empty( $_SESSION[ 'email_user' ] ) ){ ?>
|
||||||
<form method="post"><input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<form method="post"><input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<p><a href="/mail/">Info</a> |<?php
|
<p><a href="<?php echo ROOT_URL; ?>"><?php echo _('Info'); ?></a> |<?php
|
||||||
if ( ! empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
if ( ! empty( $_SESSION[ 'email_user' ] ) ) {
|
||||||
Logged in as <?php echo htmlspecialchars( $_SESSION[ 'email_user' ] );
|
printf(_('Logged in as %s'), htmlspecialchars( $_SESSION[ 'email_user' ] ) );
|
||||||
} else { ?>
|
} else { ?>
|
||||||
<a href="/mail/register.php">Register</a>
|
<a href="<?php echo ROOT_URL; ?>register.php"><?php echo _('Register'); ?></a>
|
||||||
<?php } ?> | <a href="/mail/squirrelmail/src/login.php" target="_blank">Webmail-Login</a> <?php
|
<?php } ?> | <a href="<?php echo ROOT_URL; ?>squirrelmail/src/login.php" target="_blank"><?php echo _('Webmail-Login'); ?></a> <?php
|
||||||
if ( ! empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
if ( ! empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
||||||
|
|
|
|
||||||
<button name="action" value="logout" type="submit">Logout</button>
|
<button name="action" value="logout" type="submit"><?php echo _('Logout'); ?></button>
|
||||||
<?php } else { ?>
|
<?php } else { ?>
|
||||||
| Manage account<?php
|
| Manage account');
|
||||||
} ?> | <a href="https://danwin1210.de:5281/conversejs" target="_blank" rel="noopener">Web-XMPP</a></p>
|
} ?> | <a href="<?php echo WEB_XMPP_URL; ?>" target="_blank" rel="noopener"><?php echo _('Web-XMPP'); ?></a></p>
|
||||||
<?php if ( ! empty( $_SESSION[ 'email_user' ] ) ){ ?></form><?php }
|
<?php if ( ! empty( $_SESSION[ 'email_user' ] ) ){ ?></form><?php }
|
||||||
echo "<p>$msg</p>";
|
echo "<p>$msg</p>";
|
||||||
if ( empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
if ( empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
||||||
<form class="form_limit" action="manage_account.php" method="post">
|
<form class="form_limit" action="manage_account.php" method="post">
|
||||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="user">Username</label></div>
|
<div class="col"><label for="user"><?php echo _('Username'); ?></label></div>
|
||||||
<div class="col"><input type="text" name="user" id="user" autocomplete="username" required
|
<div class="col"><input type="text" name="user" id="user" autocomplete="username" required
|
||||||
value="<?php echo htmlspecialchars( $_POST[ 'user' ] ?? '' ); ?>"></div>
|
value="<?php echo htmlspecialchars( $_POST[ 'user' ] ?? '' ); ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="pwd">Password</label></div>
|
<div class="col"><label for="pwd"><?php echo _('Password'); ?></label></div>
|
||||||
<div class="col"><input type="password" name="pwd" id="pwd" autocomplete="new-password" required></div>
|
<div class="col"><input type="password" name="pwd" id="pwd" autocomplete="new-password" required></div>
|
||||||
</div>
|
</div>
|
||||||
<?php send_captcha(); ?>
|
<?php send_captcha(); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button name="action" value="login" type="submit">Login</button>
|
<button name="action" value="login" type="submit"><?php echo _('Login'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -272,62 +279,58 @@ if ( empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
||||||
$tls_status = $stmt->fetch( PDO::FETCH_ASSOC );
|
$tls_status = $stmt->fetch( PDO::FETCH_ASSOC );
|
||||||
?>
|
?>
|
||||||
<form class="form_limit" action="manage_account.php" method="post">
|
<form class="form_limit" action="manage_account.php" method="post">
|
||||||
<h2>Settings</h2>
|
<h2><?php echo _('Settings'); ?></h2>
|
||||||
<h3>Delivery</h3>
|
<h3><?php echo _('Delivery'); ?></h3>
|
||||||
<p>Edit how your mail is delivered. You can add forwarding addresses one per line, or comma seperated. When you
|
<p><?php echo _('Change how your mail is delivered. You can add forwarding addresses one per line, or comma seperated. When you disable the "keep a local copy" checkbox, your mail will only be sent to your forwarding addresses.'); ?></p>
|
||||||
disable the "keep a local copy" checkbox, your mail will only be sent to your forwarding addresses.</p>
|
|
||||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="alias_to">Forward to</label></div>
|
<div class="col"><label for="alias_to"><?php echo _('Forward to'); ?></label></div>
|
||||||
<div class="col"><textarea name="alias_to"
|
<div class="col"><textarea name="alias_to"
|
||||||
id="alias_to"><?php echo htmlspecialchars( $aliases_to ); ?></textarea></div>
|
id="alias_to"><?php echo htmlspecialchars( $aliases_to ); ?></textarea></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="alias_keep_copy">Keep a local copy</label></div>
|
<div class="col"><label for="alias_keep_copy"><?php echo _('Keep a local copy'); ?></label></div>
|
||||||
<div class="col"><input type="checkbox" name="alias_keep_copy"
|
<div class="col"><input type="checkbox" name="alias_keep_copy"
|
||||||
id="alias_keep_copy"<?php echo in_array( $_SESSION[ 'email_user' ], $aliases, true ) ? ' checked' : ''; ?>>
|
id="alias_keep_copy"<?php echo in_array( $_SESSION[ 'email_user' ], $aliases, true ) ? ' checked' : ''; ?>>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h3>Encryption</h3>
|
<h3><?php echo _('Encryption'); ?></h3>
|
||||||
<p>If you are having issues sending or receiving mails with some other provider, you can try disabling forced
|
<p><?php echo _('If you are having issues sending or receiving mails with some other provider, you can try disabling forced encryption here. But be aware, that this makes it possible for 3rd parties on the network to read your emails. Make sure to ask your correspondent to demand encryption support from their provider for a safer internet.'); ?></p>
|
||||||
encryption here. But be aware, that this makes it possible for 3rd parties on the network to read your
|
|
||||||
emails. Make sure to ask your correspondent to demand encryption support from their provider for a safer
|
|
||||||
internet.</p>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="enforce_tls_in">Enforce encryption for incoming mail</label></div>
|
<div class="col"><label for="enforce_tls_in"><?php echo _('Enforce encryption for incoming mail'); ?></label></div>
|
||||||
<div class="col"><input type="checkbox" name="enforce_tls_in"
|
<div class="col"><input type="checkbox" name="enforce_tls_in"
|
||||||
id="enforce_tls_in"<?php echo ! empty( $tls_status[ 'enforce_tls_in' ] ) ? ' checked' : ''; ?>>
|
id="enforce_tls_in"<?php echo ! empty( $tls_status[ 'enforce_tls_in' ] ) ? ' checked' : ''; ?>>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="enforce_tls_out">Enforce encryption for outgoing mail</label></div>
|
<div class="col"><label for="enforce_tls_out"><?php echo _('Enforce encryption for outgoing mail'); ?></label></div>
|
||||||
<div class="col"><input type="checkbox" name="enforce_tls_out"
|
<div class="col"><input type="checkbox" name="enforce_tls_out"
|
||||||
id="enforce_tls_out"<?php echo ! empty( $tls_status[ 'enforce_tls_out' ] ) ? ' checked' : ''; ?>>
|
id="enforce_tls_out"<?php echo ! empty( $tls_status[ 'enforce_tls_out' ] ) ? ' checked' : ''; ?>>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button name="action" value="update_settings" type="submit">Update settings</button>
|
<button name="action" value="update_settings" type="submit"><?php echo _('Update settings'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<h2>Change password</h2>
|
<h2><?php echo _('Change password'); ?></h2>
|
||||||
<form class="form_limit" action="manage_account.php" method="post">
|
<form class="form_limit" action="manage_account.php" method="post">
|
||||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="pass_update">Password</label></div>
|
<div class="col"><label for="pass_update"><?php echo _('Password'); ?></label></div>
|
||||||
<div class="col"><input type="password" name="pass_update" id="pass_update" autocomplete="new-password"
|
<div class="col"><input type="password" name="pass_update" id="pass_update" autocomplete="new-password"
|
||||||
required></div>
|
required></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="pass_update2">Password again</label></div>
|
<div class="col"><label for="pass_update2"><?php echo _('Password again'); ?></label></div>
|
||||||
<div class="col"><input type="password" name="pass_update2" id="pass_update2" autocomplete="new-password"
|
<div class="col"><input type="password" name="pass_update2" id="pass_update2" autocomplete="new-password"
|
||||||
required></div>
|
required></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button name="action" value="update_password" type="submit">Change password</button>
|
<button name="action" value="update_password" type="submit"><?php echo _('Change password'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -338,7 +341,7 @@ if ( empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
||||||
$pgp_status = $stmt->fetch( PDO::FETCH_ASSOC );
|
$pgp_status = $stmt->fetch( PDO::FETCH_ASSOC );
|
||||||
if ( ! empty( $pgp_status[ 'pgp_key' ] ) ) {
|
if ( ! empty( $pgp_status[ 'pgp_key' ] ) ) {
|
||||||
if ( $pgp_status[ 'tfa' ] === 1 ) {
|
if ( $pgp_status[ 'tfa' ] === 1 ) {
|
||||||
echo "<p class=\"green\">Yay, PGP based 2FA is enabled!</p>";
|
echo '<p class="green">'._('Yay, PGP based 2FA is enabled!').'</p>';
|
||||||
} else {
|
} else {
|
||||||
$gpg = gnupg_init();
|
$gpg = gnupg_init();
|
||||||
gnupg_seterrormode( $gpg, GNUPG_ERROR_WARNING );
|
gnupg_seterrormode( $gpg, GNUPG_ERROR_WARNING );
|
||||||
|
@ -348,7 +351,7 @@ if ( empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
||||||
$key_info = gnupg_keyinfo( $gpg, $imported_key[ 'fingerprint' ] );
|
$key_info = gnupg_keyinfo( $gpg, $imported_key[ 'fingerprint' ] );
|
||||||
foreach ( $key_info as $key ) {
|
foreach ( $key_info as $key ) {
|
||||||
if ( ! $key[ 'can_encrypt' ] ) {
|
if ( ! $key[ 'can_encrypt' ] ) {
|
||||||
echo "<p>Sorry, this key can't be used to encrypt a message to you. Your key may have expired or has been revoked.</p>";
|
echo '<p>'._('Sorry, this key can\'t be used to encrypt a message to you. Your key may have expired or has been revoked.').'</p>';
|
||||||
} else {
|
} else {
|
||||||
foreach ( $key[ 'subkeys' ] as $subkey ) {
|
foreach ( $key[ 'subkeys' ] as $subkey ) {
|
||||||
gnupg_addencryptkey( $gpg, $subkey[ 'fingerprint' ] );
|
gnupg_addencryptkey( $gpg, $subkey[ 'fingerprint' ] );
|
||||||
|
@ -356,17 +359,17 @@ if ( empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$_SESSION[ 'enable_2fa_code' ] = bin2hex( random_bytes( 3 ) );
|
$_SESSION[ 'enable_2fa_code' ] = bin2hex( random_bytes( 3 ) );
|
||||||
if ( $encrypted = gnupg_encrypt( $gpg, "To enable 2FA, please enter the following code to confirm ownership of your key:\n\n$_SESSION[enable_2fa_code]\n" ) ) {
|
if ( $encrypted = gnupg_encrypt( $gpg, _('To enable 2FA, please enter the following code to confirm ownership of your key:'). "\n\n$_SESSION[enable_2fa_code]\n" ) ) {
|
||||||
echo '<h2>Enable 2FA</h2>';
|
echo '<h2>'._( 'Enable 2FA').'</h2>';
|
||||||
echo "<p>To enable 2FA using your PGP key, please decrypt the following PGP encrypted message and confirm the code:</p>";
|
echo '<p>'._('To enable 2FA using your PGP key, please decrypt the following PGP encrypted message and confirm the code:').'</p>';
|
||||||
echo "<pre>$encrypted</pre>";
|
echo "<pre>$encrypted</pre>";
|
||||||
?>
|
?>
|
||||||
<form class="form_limit" action="manage_account.php" method="post">
|
<form class="form_limit" action="manage_account.php" method="post">
|
||||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><input type="text" name="enable_2fa_code" aria-label="2FA Code"></div>
|
<div class="col"><input type="text" name="enable_2fa_code" aria-label="<?php echo _('2FA code'); ?>"></div>
|
||||||
<div>
|
<div>
|
||||||
<button type="submit" name="action" value="enable_2fa">Confirm</button>
|
<button type="submit" name="action" value="enable_2fa"><?php echo _('Confirm'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -377,39 +380,36 @@ if ( empty( $_SESSION[ 'email_user' ] ) ) { ?>
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<h2>Add PGP key for 2FA and end-to-end encryption</h2>
|
<h2><?php echo _('Add PGP key for 2FA and end-to-end encryption'); ?></h2>
|
||||||
<form class="form_limit" action="manage_account.php" method="post">
|
<form class="form_limit" action="manage_account.php" method="post">
|
||||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><textarea name="pgp_key" rows="10" cols="50"
|
<div class="col"><textarea name="pgp_key" rows="10" cols="50"
|
||||||
aria-label="PGP key"><?php echo htmlspecialchars( $pgp_status[ 'pgp_key' ] ?? '' ); ?></textarea>
|
aria-label="<?php echo _('PGP key'); ?>"><?php echo htmlspecialchars( $pgp_status[ 'pgp_key' ] ?? '' ); ?></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<button type="submit" name="action" value="update_pgp_key">Update PGP key</button>
|
<button type="submit" name="action" value="update_pgp_key"><?php echo _('Update PGP key'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form class="form_limit" action="manage_account.php" method="post">
|
<form class="form_limit" action="manage_account.php" method="post">
|
||||||
<h2>Disable/Delete account</h2>
|
<h2><?php echo _('Disable/Delete account'); ?></h2>
|
||||||
<p>Warning, this is permanent and cannot be undone. Disabling an account will delete your email data from the
|
<p><?php echo _('Warning, this is permanent and cannot be undone. Disabling an account will delete your email data from the server, but leave the account blocked in the database for a year, so no one else can use it. Deleting your account will completely wipe all records of it and it will be available for new registrations again.'); ?></p>
|
||||||
server, but leave the account blocked in the database for a year, so no one else can use it. Deleting your
|
|
||||||
account will completely wipe all records of it and it will be available for new registrations again.</p>
|
|
||||||
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION[ 'csrf_token' ]; ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button type="submit" name="action" value="disable_account">Disable account</button>
|
<button type="submit" name="action" value="disable_account"><?php echo _('Disable account'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button type="submit" name="action" value="delete_account">Delete account</button>
|
<button type="submit" name="action" value="delete_account"><?php echo _('Delete account'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</main>
|
</main>
|
||||||
</body></html>
|
</body></html>
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ use Egulias\EmailValidator\EmailValidator;
|
||||||
use Egulias\EmailValidator\Validation\NoRFCWarningsValidation;
|
use Egulias\EmailValidator\Validation\NoRFCWarningsValidation;
|
||||||
|
|
||||||
require_once( '../common_config.php' );
|
require_once( '../common_config.php' );
|
||||||
|
global $language, $dir, $locale;
|
||||||
session_start();
|
session_start();
|
||||||
if ( empty( $_SESSION[ 'csrf_token' ] ) || $_SESSION[ 'UA' ] !== $_SERVER[ 'HTTP_USER_AGENT' ] ) {
|
if ( empty( $_SESSION[ 'csrf_token' ] ) || $_SESSION[ 'UA' ] !== $_SERVER[ 'HTTP_USER_AGENT' ] ) {
|
||||||
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
$_SESSION[ 'csrf_token' ] = sha1( uniqid() );
|
||||||
|
@ -14,22 +15,22 @@ if ( isset( $_POST[ 'user' ] ) ) {
|
||||||
$ok = true;
|
$ok = true;
|
||||||
if ( $_SESSION[ 'csrf_token' ] !== $_POST[ 'csrf_token' ] ?? '' ) {
|
if ( $_SESSION[ 'csrf_token' ] !== $_POST[ 'csrf_token' ] ?? '' ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Invalid csfr token</div>';
|
$msg .= '<div class="red" role="alert">'._('Invalid CSRF token').'</div>';
|
||||||
}
|
}
|
||||||
if ( ! check_captcha( $_POST[ 'challenge' ] ?? '', $_POST[ 'captcha' ] ?? '' ) ) {
|
if ( ! check_captcha( $_POST[ 'challenge' ] ?? '', $_POST[ 'captcha' ] ?? '' ) ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Invalid captcha</div>';
|
$msg .= '<div class="red" role="alert">'._('Invalid captcha').'</div>';
|
||||||
}
|
}
|
||||||
$db = get_db_instance();
|
$db = get_db_instance();
|
||||||
if ( ! preg_match( '/^([^+\/\'"]+?)(@([^@]+))?$/iu', $_POST[ 'user' ], $match ) ) {
|
if ( ! preg_match( '/^([^+\/\'"]+?)(@([^@]+))?$/iu', $_POST[ 'user' ], $match ) ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Invalid username. It may not contain a +, \', " or /.</div>';
|
$msg .= '<div class="red" role="alert">'._('Invalid username. It may not contain a +, \', " or /.').'</div>';
|
||||||
}
|
}
|
||||||
$user = mb_strtolower( $match[ 1 ] ?? '' );
|
$user = mb_strtolower( $match[ 1 ] ?? '' );
|
||||||
$domain = $match[ 3 ] ?? 'danwin1210.de';
|
$domain = $match[ 3 ] ?? 'danwin1210.de';
|
||||||
if ( $ok && ( empty( $_POST[ 'pwd' ] ) || empty( $_POST[ 'pwd2' ] ) || $_POST[ 'pwd' ] !== $_POST[ 'pwd2' ] ) ) {
|
if ( $ok && ( empty( $_POST[ 'pwd' ] ) || empty( $_POST[ 'pwd2' ] ) || $_POST[ 'pwd' ] !== $_POST[ 'pwd2' ] ) ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Passwords empty or don\'t match</div>';
|
$msg .= '<div class="red" role="alert">'._('Passwords empty or don\'t match').'</div>';
|
||||||
} elseif ( $ok ) {
|
} elseif ( $ok ) {
|
||||||
$stmt = $db->prepare( 'SELECT target_domain FROM alias_domain WHERE alias_domain = ? AND active=1;' );
|
$stmt = $db->prepare( 'SELECT target_domain FROM alias_domain WHERE alias_domain = ? AND active=1;' );
|
||||||
$stmt->execute( [ $domain ] );
|
$stmt->execute( [ $domain ] );
|
||||||
|
@ -40,15 +41,15 @@ if ( isset( $_POST[ 'user' ] ) ) {
|
||||||
$stmt->execute( [ $domain ] );
|
$stmt->execute( [ $domain ] );
|
||||||
if ( ! $stmt->fetch() ) {
|
if ( ! $stmt->fetch() ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">The domain you specified is not allowed</div>';
|
$msg .= '<div class="red" role="alert">'._('The domain you specified is not allowed').'</div>';
|
||||||
} else {
|
} else {
|
||||||
$validator = new EmailValidator();
|
$validator = new EmailValidator();
|
||||||
if ( ! $validator->isValid( "$user@$domain", new NoRFCWarningsValidation() ) ) {
|
if ( ! $validator->isValid( "$user@$domain", new NoRFCWarningsValidation() ) ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">The email address you specified is not valid</div>';
|
$msg .= '<div class="red" role="alert">'._('The email address you specified is not valid').'</div>';
|
||||||
} elseif(in_array($user, RESERVED_USERNAMES, true)){
|
} elseif(in_array($user, RESERVED_USERNAMES, true)){
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">The user name you specified is reserved</div>';
|
$msg .= '<div class="red" role="alert">'._('The username you specified is reserved').'</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -58,7 +59,7 @@ if ( isset( $_POST[ 'user' ] ) ) {
|
||||||
$stmt->execute( [ "$user@$domain", "$user@$domain" ] );
|
$stmt->execute( [ "$user@$domain", "$user@$domain" ] );
|
||||||
if ( $stmt->fetch() ) {
|
if ( $stmt->fetch() ) {
|
||||||
$ok = false;
|
$ok = false;
|
||||||
$msg .= '<div class="red" role="alert">Sorry, this user already exists</div>';
|
$msg .= '<div class="red" role="alert">'._('Sorry, this user already exists').'</div>';
|
||||||
}
|
}
|
||||||
if ( $ok ) {
|
if ( $ok ) {
|
||||||
$hash = password_hash( $_POST[ 'pwd' ], PASSWORD_ARGON2ID );
|
$hash = password_hash( $_POST[ 'pwd' ], PASSWORD_ARGON2ID );
|
||||||
|
@ -66,52 +67,58 @@ if ( isset( $_POST[ 'user' ] ) ) {
|
||||||
$stmt->execute( [ "$user@$domain", "$user@$domain", $domain ] );
|
$stmt->execute( [ "$user@$domain", "$user@$domain", $domain ] );
|
||||||
$stmt = $db->prepare( 'INSERT INTO mailbox (username, password, quota, local_part, domain, created, modified, password_hash_type, openpgpkey_wkd) VALUES(?, ?, 51200000, ?, ?, NOW(), NOW(), ?, ?);' );
|
$stmt = $db->prepare( 'INSERT INTO mailbox (username, password, quota, local_part, domain, created, modified, password_hash_type, openpgpkey_wkd) VALUES(?, ?, 51200000, ?, ?, NOW(), NOW(), ?, ?);' );
|
||||||
$stmt->execute( [ "$user@$domain", $hash, $user, $domain, '{ARGON2ID}', z_base32_encode( hash( 'sha1', mb_strtolower( $user ), true ) ) ] );
|
$stmt->execute( [ "$user@$domain", $hash, $user, $domain, '{ARGON2ID}', z_base32_encode( hash( 'sha1', mb_strtolower( $user ), true ) ) ] );
|
||||||
$msg .= '<div class="green" role="alert">Successfully created new mailbox!</div>';
|
$msg .= '<div class="green" role="alert">'._('Successfully created new mailbox!').'</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en-gb">
|
<html lang="<?php echo $language; ?>" dir="<?php echo $dir; ?>">
|
||||||
<head>
|
<head>
|
||||||
<title>Daniel - E-Mail and XMPP - Register</title>
|
<title><?php echo _('E-Mail and XMPP - Register'); ?></title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta name="author" content="Daniel Winzen">
|
<meta name="author" content="Daniel Winzen">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="description" content="Register for a free and anonymous E-Mail address and an XMPP/Jabber account">
|
<meta name="description" content="<?php echo _('Register for a free and anonymous E-Mail address and an XMPP/Jabber account'); ?>">
|
||||||
<link rel="canonical" href="https://danwin1210.de/mail/register.php">
|
<link rel="canonical" href="<?php echo CANONICAL_URL; ?>register.php">
|
||||||
|
<link rel="alternate" href="<?php echo CANONICAL_URL; ?>register.php" hreflang="x-default">
|
||||||
|
<?php alt_links(); ?>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="<?php echo _('E-Mail and XMPP - Register'); ?>">
|
||||||
|
<meta property="og:description" content="<?php echo _('Register for a free and anonymous E-Mail address and an XMPP/Jabber account'); ?>">
|
||||||
|
<meta property="og:url" content="<?php echo CANONICAL_URL; ?>register.php">
|
||||||
|
<meta property="og:locale" content="<?php echo $locale; ?>">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main>
|
<main>
|
||||||
<p><a href="/mail/">Info</a> | Register | <a href="/mail/squirrelmail/src/login.php" target="_blank">Webmail-Login</a> |
|
<p><a href="<?php echo ROOT_URL; ?>"><?php echo _('Info'); ?></a> | <?php echo _('Register'); ?> | <a href="<?php echo ROOT_URL; ?>squirrelmail/src/login.php" target="_blank"><?php echo _('Webmail-Login'); ?></a> |
|
||||||
<a href="/mail/manage_account.php">Manage account</a> | <a href="https://danwin1210.de:5281/conversejs" target="_blank" rel="noopener">Web-XMPP</a>
|
<a href="<?php echo ROOT_URL; ?>manage_account.php"><?php echo _('Manage account'); ?></a> | <a href="<?php echo WEB_XMPP_URL; ?>" target="_blank" rel="noopener"><?php echo _('Web-XMPP'); ?></a>
|
||||||
</p>
|
</p>
|
||||||
<?php echo "<p>$msg</p>"; ?>
|
<?php echo "<p>$msg</p>"; ?>
|
||||||
<form class="form_limit" action="register.php" method="post"><input type="hidden" name="csrf_token"
|
<form class="form_limit" action="register.php" method="post"><input type="hidden" name="csrf_token"
|
||||||
value="<?php echo $_SESSION[ 'csrf_token' ] ?>">
|
value="<?php echo $_SESSION[ 'csrf_token' ] ?>">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="user">Username</label></div>
|
<div class="col"><label for="user"><?php echo _('Username'); ?></label></div>
|
||||||
<div class="col"><input type="text" name="user" id="user" autocomplete="username" required
|
<div class="col"><input type="text" name="user" id="user" autocomplete="username" required
|
||||||
value="<?php echo htmlspecialchars( $_POST[ 'user' ] ?? '' ); ?>"></div>
|
value="<?php echo htmlspecialchars( $_POST[ 'user' ] ?? '' ); ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="pwd">Password</label></div>
|
<div class="col"><label for="pwd"><?php echo _('Password'); ?></label></div>
|
||||||
<div class="col"><input type="password" name="pwd" id="pwd" autocomplete="new-password" required></div>
|
<div class="col"><input type="password" name="pwd" id="pwd" autocomplete="new-password" required></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="pwd2">Password again</label></div>
|
<div class="col"><label for="pwd2"><?php echo _('Password again'); ?></label></div>
|
||||||
<div class="col"><input type="password" name="pwd2" id="pwd2" autocomplete="new-password" required></div>
|
<div class="col"><input type="password" name="pwd2" id="pwd2" autocomplete="new-password" required></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col"><label for="accept_privacy">I have read and agreed to the <a href="/privacy.php"
|
<div class="col"><label for="accept_privacy"><?php echo _('I have read and agreed to the <a href="%s" target="_blank">Privacy Policy</a>', PRIVACY_POLICY_URL); ?></label>
|
||||||
target="_blank">Privacy Policy</a></label>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col"><input type="checkbox" id="accept_privacy" name="accept_privacy" required></div>
|
<div class="col"><input type="checkbox" id="accept_privacy" name="accept_privacy" required></div>
|
||||||
</div>
|
</div>
|
||||||
<?php send_captcha(); ?>
|
<?php send_captcha(); ?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<button type="submit">Register</button>
|
<button type="submit"><?php echo _('Register'); ?></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
Loading…
Reference in a new issue