bernd commited on 2008-04-03 10:38:22
Zeige 14 geänderte Dateien mit 244 Einfügungen und 23 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1012 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -0,0 +1,23 @@ |
1 |
+<?php |
|
2 |
+ |
|
3 |
+require_once('session/start.php'); |
|
4 |
+require_once('vmail.php'); |
|
5 |
+ |
|
6 |
+require_once("inc/debug.php"); |
|
7 |
+global $debugmode; |
|
8 |
+ |
|
9 |
+require_role(ROLE_SYSTEMUSER); |
|
10 |
+ |
|
11 |
+check_form_token('vmail_domainchange'); |
|
12 |
+ |
|
13 |
+if (! $_POST['type'] || ! $_POST['id']) |
|
14 |
+ system_failure("Unvollständige POST-Daten"); |
|
15 |
+ |
|
16 |
+change_domain($_POST['id'], $_POST['type']); |
|
17 |
+ |
|
18 |
+if (!$debugmode) { |
|
19 |
+ header('Location: domains.php'); |
|
20 |
+ die(); |
|
21 |
+} |
|
22 |
+ |
|
23 |
+ |
... | ... |
@@ -0,0 +1,52 @@ |
1 |
+<?php |
|
2 |
+ |
|
3 |
+require_once('inc/base.php'); |
|
4 |
+require_once('inc/security.php'); |
|
5 |
+require_role(ROLE_SYSTEMUSER); |
|
6 |
+ |
|
7 |
+require_once('vmail.php'); |
|
8 |
+ |
|
9 |
+$settings = domainsettings(); |
|
10 |
+ |
|
11 |
+$domains = $settings['domains']; |
|
12 |
+$subdomains = $settings['subdomains']; |
|
13 |
+ |
|
14 |
+DEBUG($settings); |
|
15 |
+ |
|
16 |
+output('<h3>E-Mail-Verwaltung</h3> |
|
17 |
+<p>Sie können bei schokokeks.org die E-Mails Ihrer Domains auf zwei unterschiedliche Arten empfangen.</p> |
|
18 |
+<ol><li>Sie können einfache E-Mail-Konten erstellen, die ankommende E-Mails speichern oder weiterleiten.</li> |
|
19 |
+<li>Sie können die manuelle Verwaltung wählen, bei der Sie passende .courier-Dateien für den Empfang und |
|
20 |
+manuelle POP3/IMAP-Konten für den Abruf erstellen können.</li></ol> |
|
21 |
+<p>Diese Wahlmöglichkeit haben Sie pro Domain bzw. Subdomain. Subdomains können grundsätzlich nur durch Administratoren eingerichtet und verändert werden.</p> |
|
22 |
+ |
|
23 |
+<h4>Ihre Domains sind momentan wie folgt konfiguriert:</h4> |
|
24 |
+ |
|
25 |
+<table> |
|
26 |
+ <tr><th>Domainname</th><th>Einstellung</th><th></th></tr> |
|
27 |
+'); |
|
28 |
+ |
|
29 |
+foreach ($domains AS $id => $dom) { |
|
30 |
+ $type = maildomain_type($dom['type']); |
|
31 |
+ $edit = html_form('vmail_domainchange', 'domainchange.php', '', html_select('type', array('virtual' => 'Webinterface-Verwaltung', 'auto' => '.courier-Dateien', 'none' => 'keine E-Mails empfangen'), $dom['type']).' <input type="hidden" name="id" value="'.$id.'" /><input type="submit" value="ändern" />'); |
|
32 |
+ if ($dom['type'] == 'manual') |
|
33 |
+ $edit = 'Kann nur von Admins geändert werden'; |
|
34 |
+ if (domain_has_vmail_accounts($id)) |
|
35 |
+ $edit = 'Keine Änderung möglich, so lange noch <a href="vmail.php">E-Mail-Konten</a> für diese Domain eingerichtet sind.'; |
|
36 |
+ output("<tr><td>{$dom['name']}</td><td>{$type}</td><td>{$edit}</td></tr>\n"); |
|
37 |
+ if (array_key_exists($id, $subdomains)) { |
|
38 |
+ foreach ($subdomains[$id] AS $subdom) { |
|
39 |
+ $type = maildomain_type($subdom['type']); |
|
40 |
+ output("<tr><td>{$subdom['name']}.{$dom['name']}</td><td>{$type}</td><td>Subdomains können nur von Admins geändert werden!</td></tr>\n"); |
|
41 |
+ } |
|
42 |
+ } |
|
43 |
+} |
|
44 |
+output('</table> |
|
45 |
+<br />'); |
|
46 |
+ |
|
47 |
+output('<p><strong>Sicherheitshinweis:</strong> Während der Umstellung der Empfangsart ist Ihre Domain eventuell für einige Minuten in einem undefinierten Zustand. In dieser Zeit kann es passieren, dass E-Mails nicht korrekt zugestellt oder sogar ganz zurückgewiesen werden. Sie sollten diese Einstellungen daher nicht mehr ändern, wenn die Domain aktiv für den E-Mail-Verkehr benutzt wird.</p> |
|
48 |
+'); |
|
49 |
+ |
|
50 |
+ |
|
51 |
+ |
|
52 |
+?> |
... | ... |
@@ -77,7 +77,7 @@ elseif (isset($_GET['action']) && $_GET['action'] == 'create') |
77 | 77 |
|
78 | 78 |
output('<h3>E-Mail-Account anlegen</h3> |
79 | 79 |
<p>Hier können Sie ein neues POP3/IMAP-Konto anlegen.</p> |
80 |
-<p style="border: 2px solid red; background-color: white; padding:1em;"><strong>ACHTUNG:</strong> ein POP3-/IMAP-Account ist <strong>keine E-Mail-Adresse</strong>. Wenn Sie sich nicht sicher sind, lesen Sie bitte die Anleitung <a href="https://wiki.schokokeks.org/E-Mail/Konfiguration">in unserem Wiki</a>. Sie können Ihre E-Mail-Konten auch über eine einfachere Möglichkeit verwalten, dann ist eine Einrichtung über diese Weboberfläche möglich. Die Umstellung erfolgt manuell pro Domain und kann bei den Admins angefordert werden.</p> |
|
80 |
+<p style="border: 2px solid red; background-color: white; padding:1em;"><strong>ACHTUNG:</strong> ein POP3-/IMAP-Account ist <strong>keine E-Mail-Adresse</strong>. Wenn Sie sich nicht sicher sind, lesen Sie bitte die Anleitung <a href="https://wiki.schokokeks.org/E-Mail/Konfiguration">in unserem Wiki</a>. Sie können Ihre E-Mail-Konten auch über eine einfachere Möglichkeit verwalten, dann ist eine Einrichtung über diese Weboberfläche möglich. Die Umstellung erfolgt <a href="../vmail/domains.php">unter Domains</a>.</p> |
|
81 | 81 |
'.html_form('imap_accounts_create', 'accounts.php', 'action=save', ' |
82 | 82 |
<table style="margin-bottom: 1em;"> |
83 | 83 |
<tr><th>Einstellung:</th><th>Wert:</th><th> </th></tr> |
... | ... |
@@ -262,4 +262,117 @@ function delete_account($id) |
262 | 262 |
} |
263 | 263 |
|
264 | 264 |
|
265 |
-?> |
|
265 |
+ |
|
266 |
+function domainsettings($only_domain=NULL) { |
|
267 |
+ $uid = (int) $_SESSION['userinfo']['uid']; |
|
268 |
+ if ($domain) |
|
269 |
+ $only_domain = (int) $only_domain; |
|
270 |
+ $result = db_query("SELECT d.id, CONCAT_WS('.',d.domainname,d.tld) AS name, d.mail, m.id AS m_id, v.id AS v_id, IF(ISNULL(v.hostname),m.subdomain,v.hostname) AS hostname FROM kundendaten.domains AS d LEFT JOIN mail.virtual_mail_domains AS v ON (d.id=v.domain) LEFT JOIN mail.custom_mappings AS m ON (d.id=m.domain) WHERE d.useraccount={$uid} OR m.uid={$uid};"); |
|
271 |
+ $domains = array(); |
|
272 |
+ $subdomains = array(); |
|
273 |
+ while ($mydom = mysql_fetch_assoc($result)) { |
|
274 |
+ if (! array_key_exists($mydom['id'], $domains)) { |
|
275 |
+ if ($mydom['v_id'] && ! $mydom['hostname']) |
|
276 |
+ $mydom['mail'] = 'virtual'; |
|
277 |
+ $domains[$mydom['id']] = array( |
|
278 |
+ "name" => $mydom['name'], |
|
279 |
+ "type" => $mydom['mail'] |
|
280 |
+ ); |
|
281 |
+ if ($only_domain && $only_domain == $mydom['id']) |
|
282 |
+ return $domains[$only_domain]; |
|
283 |
+ } |
|
284 |
+ if ($mydom['hostname']) { |
|
285 |
+ if (! array_key_exists($mydom['id'], $subdomains)) |
|
286 |
+ $subdomains[$mydom['id']] = array(); |
|
287 |
+ |
|
288 |
+ $type = 'auto'; |
|
289 |
+ if ($mydom['v_id']) |
|
290 |
+ $type = 'virtual'; |
|
291 |
+ $subdomains[$mydom['id']][] = array( |
|
292 |
+ "name" => $mydom['hostname'], |
|
293 |
+ "type" => $type |
|
294 |
+ ); |
|
295 |
+ } |
|
296 |
+ } |
|
297 |
+ return array("domains" => $domains, "subdomains" => $subdomains); |
|
298 |
+} |
|
299 |
+ |
|
300 |
+ |
|
301 |
+function domain_has_vmail_accounts($domid) |
|
302 |
+{ |
|
303 |
+ $domid = (int) $domid; |
|
304 |
+ $result = db_query("SELECT dom.id FROM mail.vmail_accounts AS acc LEFT JOIN mail.virtual_mail_domains AS dom ON (dom.id=acc.domain) WHERE dom.domain={$domid}"); |
|
305 |
+ return (mysql_num_rows($result) > 0); |
|
306 |
+} |
|
307 |
+ |
|
308 |
+ |
|
309 |
+function change_domain($id, $type) |
|
310 |
+{ |
|
311 |
+ $id = (int) $id; |
|
312 |
+ $type = mysql_real_escape_string($type); |
|
313 |
+ if (domain_has_vmail_accounts($id)) |
|
314 |
+ system_failure("Sie müssen zuerst alle E-Mail-Konten mit dieser Domain löschen, bevor Sie die Webinterface-Verwaltung für diese Domain abschalten können."); |
|
315 |
+ |
|
316 |
+ if (! in_array($type, array('none','auto','virtual'))) |
|
317 |
+ system_failure("Ungültige Aktion"); |
|
318 |
+ |
|
319 |
+ $old = domainsettings($id); |
|
320 |
+ if ($old['type'] == $type) |
|
321 |
+ system_failure('Domain ist bereits so konfiguriert'); |
|
322 |
+ |
|
323 |
+ if ($type == 'none') { |
|
324 |
+ db_query("DELETE FROM mail.virtual_mail_domains WHERE domain={$id} AND hostname IS NULL LIMIT 1;"); |
|
325 |
+ db_query("DELETE FROM mail.custom_mappings WHERE domain={$id} AND subdomain IS NULL LIMIT 1;"); |
|
326 |
+ db_query("UPDATE kundendaten.domains SET mail='none' WHERE id={$id} LIMIT 1;"); |
|
327 |
+ } |
|
328 |
+ elseif ($type == 'virtual') { |
|
329 |
+ db_query("DELETE FROM mail.custom_mappings WHERE domain={$id} AND subdomain IS NULL LIMIT 1;"); |
|
330 |
+ db_query("UPDATE kundendaten.domains SET mail='auto' WHERE id={$id} LIMIT 1;"); db_query("INSERT INTO mail.virtual_mail_domains (domain) VALUES ({$id});"); |
|
331 |
+ } |
|
332 |
+ elseif ($type == 'auto') { |
|
333 |
+ db_query("DELETE FROM mail.virtual_mail_domains WHERE domain={$id} AND hostname IS NULL LIMIT 1;"); |
|
334 |
+ db_query("DELETE FROM mail.custom_mappings WHERE domain={$id} AND subdomain IS NULL LIMIT 1;"); |
|
335 |
+ db_query("UPDATE kundendaten.domains SET mail='auto' WHERE id={$id} LIMIT 1;"); |
|
336 |
+ } |
|
337 |
+} |
|
338 |
+ |
|
339 |
+ |
|
340 |
+/* |
|
341 |
+function maildomain_type($type) { |
|
342 |
+ switch ($type) { |
|
343 |
+ case 'none': |
|
344 |
+ $type = 'Diese Domain empfängt keine E-Mails'; |
|
345 |
+ break; |
|
346 |
+ case 'auto': |
|
347 |
+ $type = 'E-Mail-Adressen werden manuell über .courier-Dateien verwaltet'; |
|
348 |
+ break; |
|
349 |
+ case 'virtual': |
|
350 |
+ $type = 'E-Mail-Adressen werden über Webinterface verwaltet'; |
|
351 |
+ break; |
|
352 |
+ case 'manual': |
|
353 |
+ $type = 'Manuelle Konfiguration, kann nur von den Admins geändert werden'; |
|
354 |
+ break; |
|
355 |
+ } |
|
356 |
+ return $type; |
|
357 |
+} |
|
358 |
+*/ |
|
359 |
+ |
|
360 |
+function maildomain_type($type) { |
|
361 |
+ switch ($type) { |
|
362 |
+ case 'none': |
|
363 |
+ $type = 'Deaktiviert'; |
|
364 |
+ break; |
|
365 |
+ case 'auto': |
|
366 |
+ $type = '.courier-Dateien'; |
|
367 |
+ break; |
|
368 |
+ case 'virtual': |
|
369 |
+ $type = 'Webinterface'; |
|
370 |
+ break; |
|
371 |
+ case 'manual': |
|
372 |
+ $type = 'Manuell'; |
|
373 |
+ break; |
|
374 |
+ } |
|
375 |
+ return $type; |
|
376 |
+} |
|
377 |
+ |
|
378 |
+ |
... | ... |
@@ -0,0 +1,24 @@ |
1 |
+<?php |
|
2 |
+ |
|
3 |
+$role = $_SESSION['role']; |
|
4 |
+ |
|
5 |
+require_once('include/hasdomain.php'); |
|
6 |
+require_once('include/hasaccount.php'); |
|
7 |
+ |
|
8 |
+if ($role & ROLE_SYSTEMUSER) { |
|
9 |
+ $menu["email_vmail"] = array("label" => "E-Mail", "file" => "vmail.php", "weight" => 3); |
|
10 |
+} |
|
11 |
+if ($role & (ROLE_VMAIL_ACCOUNT | ROLE_MAILACCOUNT)) |
|
12 |
+{ |
|
13 |
+ $menu['email_chpass'] = array("label" => "Passwort ändern", "file" => "chpass.php", "weight" => 15); |
|
14 |
+} |
|
15 |
+if ($role & ROLE_SYSTEMUSER) { |
|
16 |
+ $menu["email_domains"] = array("label" => "Mail-Verwaltung", "file" => "domains.php", "weight" => 2, "submenu" => "domains_domains"); |
|
17 |
+} |
|
18 |
+if ($role & ROLE_SYSTEMUSER && (user_has_accounts() || ! user_has_vmail_domain() || user_has_regular_domain() ) ) |
|
19 |
+{ |
|
20 |
+ $menu["email_imap"] = array("label" => "IMAP/POP3", "file" => "imap.php", "weight" => 10, 'submenu' => "email_vmail"); |
|
21 |
+} |
|
22 |
+ |
|
23 |
+ |
|
24 |
+?> |
... | ... |
@@ -57,7 +57,7 @@ if ($_GET['action'] == 'edit') |
57 | 57 |
save_vmail_account($account); |
58 | 58 |
|
59 | 59 |
if (! ($debugmode || we_have_an_error())) |
60 |
- header('Location: accounts.php'); |
|
60 |
+ header('Location: vmail.php'); |
|
61 | 61 |
} |
62 | 62 |
elseif ($_GET['action'] == 'delete') |
63 | 63 |
{ |
... | ... |
@@ -84,12 +84,12 @@ elseif ($_GET['action'] == 'delete') |
84 | 84 |
{ |
85 | 85 |
delete_account($account['id']); |
86 | 86 |
if (! $debugmode) |
87 |
- header("Location: accounts.php"); |
|
87 |
+ header("Location: vmail.php"); |
|
88 | 88 |
} |
89 | 89 |
elseif ($sure === false) |
90 | 90 |
{ |
91 | 91 |
if (! $debugmode) |
92 |
- header("Location: accounts.php"); |
|
92 |
+ header("Location: vmail.php"); |
|
93 | 93 |
} |
94 | 94 |
|
95 | 95 |
} |
... | ... |
@@ -4,6 +4,31 @@ require_once('inc/base.php'); |
4 | 4 |
require_once('inc/security.php'); |
5 | 5 |
require_role(ROLE_SYSTEMUSER); |
6 | 6 |
|
7 |
+require_once('hasdomain.php'); |
|
8 |
+ |
|
9 |
+if (! user_has_vmail_domain()) { |
|
10 |
+ output("<h3>E-Mail-Verwaltung</h3>"); |
|
11 |
+ |
|
12 |
+ output(' |
|
13 |
+<p>Sie können bei schokokeks.org die E-Mails Ihrer Domains auf zwei unterschiedliche Arten empfangen.</p> |
|
14 |
+<ol><li>Sie können einfache E-Mail-Konten erstellen, die ankommende E-Mails speichern oder weiterleiten.</li> |
|
15 |
+<li>Sie können die manuelle Verwaltung wählen, bei der Sie passende .courier-Dateien für den Empfang und |
|
16 |
+manuelle POP3/IMAP-Konten für den Abruf erstellen können.</li></ol> |
|
17 |
+<p>Diese Wahlmöglichkeit haben Sie pro Domain bzw. Subdomain. Subdomains können grundsätzlich nur durch Administratoren eingerichtet und verändert werden.</p> |
|
18 |
+<p>Sie haben bisher keine Domains, die auf Web-basierte Verwaltung von E-Mail-Adressen eingerichtet sind.</p> |
|
19 |
+ |
|
20 |
+<p> </p> |
|
21 |
+ |
|
22 |
+<p>Besuchen Sie die <a href="domains.php">Domain-Einstellungen</a> um diese Auswahl für Ihre Domains zu ändern.</p> |
|
23 |
+ |
|
24 |
+<p>Wenn Sie die manuelle Einrichtung möchten oder keine eigene Domain nutzen, können Sie unter <a href="imap.php">POP3/IMAP</a> manuelle POP3-/IMAP-Konten erstellen.</p> |
|
25 |
+ |
|
26 |
+'); |
|
27 |
+} |
|
28 |
+else |
|
29 |
+{ |
|
30 |
+ |
|
31 |
+ |
|
7 | 32 |
require_once('vmail.php'); |
8 | 33 |
|
9 | 34 |
$domains = get_vmail_domains(); |
... | ... |
@@ -77,6 +102,6 @@ output('<p><a href="edit.php">Neuen Account anlegen</a></p>'); |
77 | 102 |
/* FIXME: Das sollte nur kommen, wenn der IMAP/POP3-Menü-Eintrag nicht da ist */ |
78 | 103 |
output('<p style="font-size: 90%;padding-top: 0.5em; border-top: 1px solid black;">Hinweis: schokokeks.org bietet für fortgeschrittene Nutzer die manuelle Einrichtung von POP3/IMAP-Accounts.<br/><a href="'.$prefix.'go/imap/accounts.php?action=create">Neuen POP3/IMAP-Account anlegen</a></p>'); |
79 | 104 |
|
80 |
- |
|
105 |
+} |
|
81 | 106 |
|
82 | 107 |
?> |
... | ... |
@@ -4,7 +4,7 @@ $role = $_SESSION['role']; |
4 | 4 |
|
5 | 5 |
if ($role & ROLE_SYSTEMUSER) |
6 | 6 |
{ |
7 |
- $menu['greylisting_whitelist'] = array("label" => "Greylisting", "file" => "whitelist.php", "weight" => 5); |
|
7 |
+ $menu['greylisting_whitelist'] = array("label" => "Greylisting", "file" => "whitelist.php", "weight" => 5, 'submenu' => 'email_vmail'); |
|
8 | 8 |
} |
9 | 9 |
|
10 | 10 |
?> |
... | ... |
@@ -1,16 +0,0 @@ |
1 |
-<?php |
|
2 |
- |
|
3 |
-$role = $_SESSION['role']; |
|
4 |
- |
|
5 |
-require_once('include/hasdomain.php'); |
|
6 |
- |
|
7 |
-if (($role & ROLE_SYSTEMUSER) && user_has_vmail_domain()) |
|
8 |
-{ |
|
9 |
- $menu["vmail_accounts"] = array("label" => "E-Mail", "file" => "accounts.php", "weight" => 3); |
|
10 |
-} |
|
11 |
-if ($role & ROLE_VMAIL_ACCOUNT) |
|
12 |
-{ |
|
13 |
- $menu['vmail_chpass'] = array("label" => "Passwort ändern", "file" => "chpass.php", "weight" => 15); |
|
14 |
-} |
|
15 |
- |
|
16 |
-?> |
|
17 | 0 |