modules/email/imap.php
defbfa55
 <?php
c208bd90
 /*
 This file belongs to the Webinterface of schokokeks.org Hosting
 
cf54502a
 Written 2008-2018 by schokokeks.org Hosting, namely
c208bd90
   Bernd Wurst <bernd@schokokeks.org>
   Hanno Böck <hanno@schokokeks.org>
 
 To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
 
2626dd47
 You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see
c208bd90
 http://creativecommons.org/publicdomain/zero/1.0/
 
 Nevertheless, in case you use a significant part of this code, we ask (but not require, see the license) that you keep the authors' names in place and return your changes to the public. We would be especially happy if you tell us what you're going to do with this code.
 */
defbfa55
 
 require_once('session/start.php');
 
c0d71b32
 require_once('class/domain.php');
defbfa55
 require_once('mailaccounts.php');
 
da0e59cc
 require_once('inc/icons.php');
 
defbfa55
 require_role(ROLE_SYSTEMUSER);
 
738d6edb
 
defbfa55
 $user = $_SESSION['userinfo'];
 
f2550e90
 title("E-Mail-Accounts");
defbfa55
 
 
2626dd47
 if (isset($_GET['action']) && $_GET['action'] == 'save') {
     if (isset($_GET['id'])) {
         check_form_token('email_imap_edit');
         $account = $_POST['user'].'@'.$_POST['domain'];
         if (isset($_POST['enabled']) && $_POST['enabled'] == 'true') {
             $enabled = 'Y';
         } else {
             $enabled = 'N';
         }
         $acc = array('id' => $_GET['id'], 'account' => $account, 'mailbox' => $_POST['mailbox'], 'enabled' => $enabled);
         if ($_POST['password'] != '') {
             $acc['password'] = $_POST['password'];
         }
         $error = check_valid($acc);
         if ($error != "") {
             input_error($error);
             $title = "E-Mail-Accounts";
             output("");
         } else {
             change_mailaccount($_GET['id'], $acc);
             if (! $debugmode) {
                 header('Location: imap');
             }
             die();
         }
     } elseif (isset($_POST['create'])) {
         check_form_token('email_imap_create');
         $account = $_POST['user'].'@'.$_POST['domain'];
         if (isset($_POST['enabled']) && $_POST['enabled'] == 'true') {
             $enabled = 'Y';
         } else {
             $enabled = 'N';
         }
         $acc = array('account' => $account, 'mailbox' => $_POST['mailbox'], 'enabled' => $enabled);
         if ($_POST['password'] != '') {
             $acc['password'] = $_POST['password'];
         }
         $error = check_valid($acc);
         if ($error != "") {
             system_failure($error);
         } else {
             create_mailaccount($acc);
             if (! $debugmode) {
                 header('Location: imap');
             }
             die();
         }
defbfa55
     }
2626dd47
 } elseif (isset($_GET['action']) && $_GET['action'] == 'create') {
     $options = '';
     $domains = get_domain_list($user['customerno'], $user['uid']);
     if (count($domains) > 0) {
         $options .= '<option>----------------------------</option>';
defbfa55
     }
2626dd47
     foreach ($domains as $dom) {
         $options .= '<option value="'.$dom->fqdn.'">'.$dom->fqdn.'</option>';
defbfa55
     }
2626dd47
 
     title("IMAP-Account anlegen");
     output('<p>Hier können Sie ein neues POP3/IMAP-Konto anlegen.</p>
63a0529b
 <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 '.internal_link("../email/domains", "unter Domains").'.</p>
   '.html_form('email_imap_create', 'imap', 'action=save', '
defbfa55
   <table style="margin-bottom: 1em;">
ec0c81a8
   <tr><th>Einstellung:</th><th>Wert:</th><th>&#160;</th></tr>
defbfa55
   <tr>
     <td>Benutzername:</td>
     <td><input type="text" id="user" name="user" />@<select name="domain" size="1">
d96a86aa
     <option value="'.config('masterdomain').'">'.config('masterdomain').'</option>
af8c8976
   '.$options.'
     </select></td>
defbfa55
   </tr>
   <tr>
     <td>Mailbox:</td>
     <td><input type="text" id="mailbox" name="mailbox" value="'.$user['homedir'].'/" /></td>
   </tr>
   <tr>
     <td>Passwort:</td>
     <td><input type="password" id="password" name="password" value="" /></td>
   </tr>
   <tr>
     <td>Account sofort aktivieren:</td>
     <td><input type="checkbox" id="enabled" name="enabled" value="true" /></td>
   </tr>
   </table>
13cf6393
   <p><input type="submit" name="create" value="Anlegen" /></p>
af8c8976
   '));
2626dd47
 } elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && $_GET['account'] != '') {
     $sure = user_is_sure();
     if ($sure === null) {
         $_GET['account'] = (int) $_GET['account'];
         $account = get_mailaccount($_GET['account']);
         $enabled = ($account['enabled'] ? 'Ja' : 'Nein');
         are_you_sure("action=delete&account={$_GET['account']}", '
ec0c81a8
     <p>Soll der folgende Account wirklich gelöscht werden?</p>
33986238
     <table style="margin-bottom: 1em;">
       <tr><td>Benutzername:</td>
         <td>'.filter_input_general($account['account']).'</td>
       </tr>
       <tr><td>Mailbox:</td>
         <td>'.filter_input_general($account['mailbox']).'</td>
       </tr>
       <tr><td>Konto aktiv:</td>
         <td>'.$enabled.'</td>
       </tr>
     </table>
 ');
2626dd47
     } elseif ($sure === true) {
         delete_mailaccount($_GET['account']);
         if (! $debugmode) {
             header('Location: imap');
         }
         die();
     } elseif ($sure === false) {
         if (! $debugmode) {
             header("Location: imap");
         }
         die();
     }
 } elseif (isset($_GET['edit'])) {
     title("IMAP-Account bearbeiten");
     output('<p>Hier können Sie die Einstellungen des IMAP-Kontos bearbeiten.</p>
defbfa55
 ');
2626dd47
     $_GET['edit'] = (int) $_GET['edit'];
     $account = get_mailaccount($_GET['edit']);
     list($username, $domain) = explode('@', $account['account'], 2);
     $enabled = ($account['enabled'] ? ' checked="checked"' : '');
     $form = '
defbfa55
   <table style="margin-bottom: 1em;">
ec0c81a8
   <tr><th>Einstellung:</th><th>alter Wert:</th><th>neuer Wert:</th><th>&#160;</th></tr>
defbfa55
   <tr><td>Benutzername:</td><td><input type="text" id="old_account" name="old_account" value="'.$account['account'].'" readonly="readonly" style="background-color: #C0C0C0;" /></td>
           <td><input type="text" id="user" name="user" value="'.$username.'" />@<select name="domain" id="domain" size="1">
d96a86aa
     <option value="'.config('masterdomain').'">'.config('masterdomain').'</option>
33986238
     ';
c0d71b32
     $domains = get_domain_list($user['customerno'], $user['uid']);
2626dd47
     if (count($domains) > 0) {
         $form .= '<option>----------------------------</option>';
     }
     foreach ($domains as $dom) {
         if ($domain == $dom->fqdn) {
             $form .= '<option value="'.$dom->fqdn.'" selected="selected">'.$dom->fqdn.'</option>';
         } else {
             $form .= '<option value="'.$dom->fqdn.'">'.$dom->fqdn.'</option>';
         }
     }
defbfa55
 
33986238
     $form .= '</select></td>
ec0c81a8
           <td><input type="button" onclick="document.getElementById(\'user\').value = \''.$username.'\' ; document.getElementById(\'domain\').value = \''.$domain.'\'" value="Zeile zurücksetzen" /></td></tr>
defbfa55
   <tr><td>Mailbox:</td><td><input type="text" id="old_mailbox" name="old_mailbox" value="'.$account['mailbox'].'" readonly="readonly" style="background-color: #C0C0C0;" /></td>
           <td><input type="text" id="mailbox" name="mailbox" value="'.$account['mailbox'].'" /></td>
ec0c81a8
           <td><input type="button" onclick="document.getElementById(\'mailbox\').value = document.getElementById(\'old_mailbox\').value" value="Zeile zurücksetzen" /></td></tr>
defbfa55
   <tr><td>Passwort:</td><td><i>nicht angezeigt</i></td>
           <td><input type="password" id="password" name="password" value="" /></td>
ec0c81a8
           <td><input type="button" onclick="document.getElementById(\'password\').value = \'\'" value="Zeile zurücksetzen" /></td></tr>
defbfa55
   <tr><td>Konto aktiv:</td>
ec0c81a8
     <td>&#160;</td>
defbfa55
     <td><input type="checkbox" id="enabled" name="enabled" value="true"'.$enabled.' /></td>
ec0c81a8
     <td>&#160;</td></tr>
defbfa55
   </table>
ec0c81a8
   <p><input type="submit" value="Änderungen speichern" /><br />
   Hinweis: Das Passwort wird nur geändert, wenn Sie auf dieser Seite eines eingeben. Geben Sie keines an, wird das bisherige beibehalten!</p>
33986238
   ';
2626dd47
     output(html_form('email_imap_edit', 'imap', 'action=save&id='.$_GET['edit'], $form));
 } else {
     title("IMAP-Accounts");
     if (user_has_only_vmail_domains()) {
         output('<div class="error"><strong>Achtung:</strong> Alle Ihre Domains sind auf Webinterface-Verwaltung konfiguriert. Sie können dennoch manuelle IMAP-Konten für Ihre speziellen Konfigurationen anlegen, in der Regel sollten Sie aber hier keine IMAP-Acccounts anlegen. Dies kann zu Fehlfunktionen führen.</div>');
     }
     addnew("imap", "Neuen Account anlegen", "action=create");
     output('<p>Folgende POP3/IMAP-Konten sind eingerichtet:</p>
defbfa55
 <table style="margin-bottom: 1em;">
ec0c81a8
 <tr><th>Kontoname:</th><th>Mailbox-Pfad:</th><th>aktiv</th><th>&#160;</th></tr>
defbfa55
 ');
 
2626dd47
     foreach (mailaccounts($user['uid']) as $account) {
         $mailbox = $account['mailbox'];
         if (empty($mailbox)) {
             $mailbox = '<i>nicht festgelegt</i>';
         }
         output('<tr>
63a0529b
             <td>'.internal_link('imap', $account['account'], 'edit='.$account['id']).'</td>
defbfa55
             <td>'.$mailbox.'</td>
             <td><b>'.($account['enabled'] ? 'Ja' : 'Nein').'</b></td>
da0e59cc
             <td>'.internal_link("imap", icon_delete("»{$account['account']}« löschen"), "action=delete&account=".$account['id']).'</td></tr>');
2626dd47
     }
     output('</table>');
     if (imap_on_vmail_domain()) {
         output('<div class="error"><strong>Achtung:</strong> Es scheint als hätten Sie einen (manuellen) IMAP-Account mittels einer Domain angelegt, die für Webinterface-Verwaltung konfiguriert ist. Sollten Sie nicht genau wissen was Sie tun, ist das vermutlich falsch und wird zu Fehlfunktionen führen.</div>');
     }
     addnew("imap", "Neuen Account anlegen", "action=create");
defbfa55
 
2626dd47
     output('<p>'.other_icon('information.png', 'Zugangsdaten anzeigen').' <strong>'.internal_link('logindata', 'Zugangsdaten für E-Mail-Abruf anzeigen', 'server='.get_server_by_id($_SESSION['userinfo']['server']).'&type=manual').'</strong></p>');
 }