Bernd Wurst commited on 2012-09-20 16:28:48
Zeige 10 geänderte Dateien mit 74 Einfügungen und 74 Löschungen.
... | ... |
@@ -17,7 +17,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r |
17 | 17 |
require_once('inc/base.php'); |
18 | 18 |
require_role(ROLE_SYSTEMUSER); |
19 | 19 |
|
20 |
-require_once('googleauth.php'); |
|
20 |
+require_once('totp.php'); |
|
21 | 21 |
|
22 | 22 |
$id = (int) $_REQUEST['id']; |
23 | 23 |
|
... | ... |
@@ -25,13 +25,13 @@ $account = accountname($id); |
25 | 25 |
$sure = user_is_sure(); |
26 | 26 |
if ($sure === NULL) |
27 | 27 |
{ |
28 |
- $section='googleauth_overview'; |
|
29 |
- title("Sicherer Zugang zum Webmailer"); |
|
30 |
- are_you_sure("id={$id}", "Möchten Sie den Google-Authenticator-Schutz für das Postfach »{$account}« wirklich entfernen?"); |
|
28 |
+ $section='webmailtotp_overview'; |
|
29 |
+ title("Zwei-Faktor-Anmeldung am Webmailer"); |
|
30 |
+ are_you_sure("id={$id}", "Möchten Sie die Zwei-Faktor-Anmeldung für das Postfach »{$account}« wirklich entfernen?"); |
|
31 | 31 |
} |
32 | 32 |
elseif ($sure === true) |
33 | 33 |
{ |
34 |
- delete_googleauth($id); |
|
34 |
+ delete_totp($id); |
|
35 | 35 |
if (! $debugmode) |
36 | 36 |
header("Location: overview"); |
37 | 37 |
} |
... | ... |
@@ -17,7 +17,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r |
17 | 17 |
require_once('inc/base.php'); |
18 | 18 |
require_role(ROLE_SYSTEMUSER); |
19 | 19 |
|
20 |
-require_once('googleauth.php'); |
|
20 |
+require_once('totp.php'); |
|
21 | 21 |
|
22 | 22 |
$username = urldecode($_REQUEST['username']); |
23 | 23 |
|
... | ... |
@@ -31,24 +31,24 @@ if (! validate_password($username, $oldpw)) { |
31 | 31 |
store_webmail_password($username, $oldpw, $newpw); |
32 | 32 |
$secret = generate_secret($username); |
33 | 33 |
|
34 |
-$section='googleauth_overview'; |
|
35 |
-title("Sicherer Zugang zum Webmailer"); |
|
34 |
+$section='webmailtotp_overview'; |
|
35 |
+title("Zwei-Faktor-Anmeldung am Webmailer"); |
|
36 | 36 |
|
37 |
-output('<p>Bitte geben Sie den folgenden Initialisierungs-Code in Ihre Google-Authenticator-Software ein oder Scannen Sie den QR-Code mit der Google-Authenticator-App Ihres Mobiltelefons.</p>'); |
|
37 |
+output('<p>Bitte geben Sie den folgenden Initialisierungs-Code in Ihre TOTP-Software ein oder scannen Sie den QR-Code mit Ihrem Mobiltelefon.</p>'); |
|
38 | 38 |
|
39 | 39 |
$qrcode_image = generate_qrcode_image($secret); |
40 | 40 |
|
41 | 41 |
output('<h4>Ihr Initialisierungs-Code</h4><p style="font-size: 120%;">'.$secret.'</p><p><img src="data:image/png;base64,'.base64_encode($qrcode_image).'" /></p>'); |
42 | 42 |
|
43 |
-output('<h3>Testen Sie es...</h3><p>Nachdem Sie den Startwert in Ihren Google-Authenticator eingegeben haben bzw. den QRCode eingescannt haben, erhalten Sie umgehend einen Zugangscode. Geben Sie diesen hier ein um die Funktion zu testen:</p>'); |
|
43 |
+output('<h3>Testen Sie es...</h3><p>Nachdem Sie den Startwert in Ihren TOTP-Generator eingegeben haben bzw. den QRCode eingescannt haben, erhalten Sie umgehend einen Zugangscode. Geben Sie diesen hier ein um die Funktion zu testen:</p>'); |
|
44 | 44 |
|
45 | 45 |
$form = '<p>Ihr Webmail-Benutzername: <input type="text" name="username" value="'.filter_input_general($username).'" /></p> |
46 | 46 |
<p>Ihr neues Webmail-Passwort: <input type="password" name="webmailpass" /></p> |
47 |
-<p>Der aktuellste Einmal-Code von Google-Authenticator: <input type="text" name="ga_code" /></p> |
|
47 |
+<p>Der aktuellste Einmal-Code: <input type="text" name="totp_code" /></p> |
|
48 | 48 |
<p><input type="submit" value="Prüfen!" /></p>'; |
49 | 49 |
|
50 | 50 |
|
51 |
-output(html_form('googleauth_test', 'test', '', $form)); |
|
51 |
+output(html_form('webmailtotp_test', 'test', '', $form)); |
|
52 | 52 |
|
53 | 53 |
|
54 | 54 |
?> |
... | ... |
@@ -14,10 +14,10 @@ http://creativecommons.org/publicdomain/zero/1.0/ |
14 | 14 |
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. |
15 | 15 |
*/ |
16 | 16 |
|
17 |
-function account_has_googleauth($username) |
|
17 |
+function account_has_totp($username) |
|
18 | 18 |
{ |
19 | 19 |
$username = mysql_real_escape_string($username); |
20 |
- $result = db_query("SELECT id FROM mail.webmail_googleauth WHERE email='{$username}'"); |
|
20 |
+ $result = db_query("SELECT id FROM mail.webmail_totp WHERE email='{$username}'"); |
|
21 | 21 |
if (mysql_num_rows($result) > 0) { |
22 | 22 |
$tmp = mysql_fetch_assoc($result); |
23 | 23 |
$id = $tmp['id']; |
... | ... |
@@ -63,7 +63,7 @@ function store_webmail_password($username, $oldpw, $newpw) |
63 | 63 |
|
64 | 64 |
$uid = (int) $_SESSION['userinfo']['uid']; |
65 | 65 |
|
66 |
- db_query("REPLACE INTO mail.webmail_googleauth (useraccount, email, webmailpass) VALUES ({$uid}, '{$username}', '{$code}')"); |
|
66 |
+ db_query("REPLACE INTO mail.webmail_totp (useraccount, email, webmailpass) VALUES ({$uid}, '{$username}', '{$code}')"); |
|
67 | 67 |
} |
68 | 68 |
|
69 | 69 |
|
... | ... |
@@ -88,7 +88,7 @@ function decode_webmail_password($crypted, $webmailpw) |
88 | 88 |
|
89 | 89 |
function get_imap_password($username, $webmailpass) { |
90 | 90 |
$username = mysql_real_escape_string($username); |
91 |
- $result = db_query("SELECT webmailpass FROM mail.webmail_googleauth WHERE email='{$username}'"); |
|
91 |
+ $result = db_query("SELECT webmailpass FROM mail.webmail_totp WHERE email='{$username}'"); |
|
92 | 92 |
$tmp = mysql_fetch_assoc($result); |
93 | 93 |
|
94 | 94 |
$crypted = $tmp['webmailpass']; |
... | ... |
@@ -114,18 +114,18 @@ function generate_secret($username) |
114 | 114 |
$secret = $ga->createSecret(); |
115 | 115 |
DEBUG('GA-Secret: '.$secret); |
116 | 116 |
DEBUG('QrCode: '.$ga->getQRCodeGoogleUrl('Blog', $secret)); |
117 |
- db_query("UPDATE mail.webmail_googleauth SET ga_secret='{$secret}' WHERE email='{$username}'"); |
|
117 |
+ db_query("UPDATE mail.webmail_totp SET totp_secret='{$secret}' WHERE email='{$username}'"); |
|
118 | 118 |
return $secret; |
119 | 119 |
} |
120 | 120 |
|
121 | 121 |
function check_locked($username) |
122 | 122 |
{ |
123 | 123 |
$username = mysql_real_escape_string($username); |
124 |
- $result = db_query("SELECT 1 FROM mail.webmail_googleauth WHERE unlock_timestamp IS NOT NULL and unlock_timestamp > NOW() AND email='{$username}'"); |
|
124 |
+ $result = db_query("SELECT 1 FROM mail.webmail_totp WHERE unlock_timestamp IS NOT NULL and unlock_timestamp > NOW() AND email='{$username}'"); |
|
125 | 125 |
return (mysql_num_rows($result) > 0); |
126 | 126 |
} |
127 | 127 |
|
128 |
-function check_googleauth($username, $code) { |
|
128 |
+function check_totp($username, $code) { |
|
129 | 129 |
if (check_blacklist($username, $code)) { |
130 | 130 |
DEBUG('Replay-Attack'); |
131 | 131 |
return false; |
... | ... |
@@ -133,23 +133,23 @@ function check_googleauth($username, $code) { |
133 | 133 |
|
134 | 134 |
$username = mysql_real_escape_string($username); |
135 | 135 |
|
136 |
- $result = db_query("SELECT ga_secret, failures FROM mail.webmail_googleauth WHERE email='{$username}' AND (unlock_timestamp IS NULL OR unlock_timestamp <= NOW())"); |
|
136 |
+ $result = db_query("SELECT totp_secret, failures FROM mail.webmail_totp WHERE email='{$username}' AND (unlock_timestamp IS NULL OR unlock_timestamp <= NOW())"); |
|
137 | 137 |
$tmp = mysql_fetch_assoc($result); |
138 |
- $secret = $tmp['ga_secret']; |
|
138 |
+ $secret = $tmp['totp_secret']; |
|
139 | 139 |
|
140 | 140 |
require_once('external/googleauthenticator/GoogleAuthenticator.php'); |
141 | 141 |
$ga = new PHPGangsta_GoogleAuthenticator(); |
142 | 142 |
|
143 | 143 |
$checkResult = $ga->verifyCode($secret, $code, 2); // 2 = 2*30sec clock tolerance |
144 | 144 |
if ($checkResult) { |
145 |
- db_query("UPDATE mail.webmail_googleauth SET failures = 0, unlock_timestamp=NULL WHERE email='{$username}'"); |
|
145 |
+ db_query("UPDATE mail.webmail_totp SET failures = 0, unlock_timestamp=NULL WHERE email='{$username}'"); |
|
146 | 146 |
blacklist_token($username, $code); |
147 | 147 |
DEBUG('OK'); |
148 | 148 |
} else { |
149 | 149 |
if ($tmp['failures'] > 0 && $tmp['failures'] % 5 == 0) { |
150 |
- db_query("UPDATE mail.webmail_googleauth SET failures = failures+1, unlock_timestamp = NOW() + INTERVAL 5 MINUTE WHERE email='{$username}'"); |
|
150 |
+ db_query("UPDATE mail.webmail_totp SET failures = failures+1, unlock_timestamp = NOW() + INTERVAL 5 MINUTE WHERE email='{$username}'"); |
|
151 | 151 |
} else { |
152 |
- db_query("UPDATE mail.webmail_googleauth SET failures = failures+1 WHERE email='{$username}'"); |
|
152 |
+ db_query("UPDATE mail.webmail_totp SET failures = failures+1 WHERE email='{$username}'"); |
|
153 | 153 |
} |
154 | 154 |
|
155 | 155 |
DEBUG('FAILED'); |
... | ... |
@@ -196,19 +196,19 @@ function accountname($id) |
196 | 196 |
{ |
197 | 197 |
$id = (int) $id; |
198 | 198 |
$uid = (int) $_SESSION['userinfo']['uid']; |
199 |
- $result = db_query("SELECT email FROM mail.webmail_googleauth WHERE id={$id} AND useraccount={$uid}"); |
|
199 |
+ $result = db_query("SELECT email FROM mail.webmail_totp WHERE id={$id} AND useraccount={$uid}"); |
|
200 | 200 |
if ($tmp = mysql_fetch_assoc($result)) { |
201 | 201 |
return $tmp['email']; |
202 | 202 |
} |
203 | 203 |
} |
204 | 204 |
|
205 | 205 |
|
206 |
-function delete_googleauth($id) |
|
206 |
+function delete_totp($id) |
|
207 | 207 |
{ |
208 | 208 |
$id = (int) $id; |
209 | 209 |
$uid = (int) $_SESSION['userinfo']['uid']; |
210 | 210 |
|
211 |
- db_query("DELETE FROM mail.webmail_googleauth WHERE id={$id} AND useraccount={$uid}"); |
|
211 |
+ db_query("DELETE FROM mail.webmail_totp WHERE id={$id} AND useraccount={$uid}"); |
|
212 | 212 |
} |
213 | 213 |
|
214 | 214 |
|
... | ... |
@@ -216,15 +216,15 @@ function blacklist_token($email, $token) |
216 | 216 |
{ |
217 | 217 |
$email = mysql_real_escape_string($email); |
218 | 218 |
$token = mysql_real_escape_string($token); |
219 |
- db_query("INSERT INTO mail.webmail_googleauth_blacklist (timestamp, email, token) VALUES (NOW(), '{$email}', '{$token}')"); |
|
219 |
+ db_query("INSERT INTO mail.webmail_totp_blacklist (timestamp, email, token) VALUES (NOW(), '{$email}', '{$token}')"); |
|
220 | 220 |
} |
221 | 221 |
|
222 | 222 |
function check_blacklist($email, $token) |
223 | 223 |
{ |
224 | 224 |
$email = mysql_real_escape_string($email); |
225 | 225 |
$token = mysql_real_escape_string($token); |
226 |
- db_query("DELETE FROM mail.webmail_googleauth_blacklist WHERE timestamp < NOW() - INTERVAL 10 MINUTE"); |
|
227 |
- $result = db_query("SELECT id FROM mail.webmail_googleauth_blacklist WHERE email='{$email}' AND token='{$token}'"); |
|
226 |
+ db_query("DELETE FROM mail.webmail_totp_blacklist WHERE timestamp < NOW() - INTERVAL 10 MINUTE"); |
|
227 |
+ $result = db_query("SELECT id FROM mail.webmail_totp_blacklist WHERE email='{$email}' AND token='{$token}'"); |
|
228 | 228 |
return (mysql_num_rows($result) > 0); |
229 | 229 |
} |
230 | 230 |
|
... | ... |
@@ -17,7 +17,7 @@ Nevertheless, in case you use a significant part of this code, we ask (but not r |
17 | 17 |
$role = $_SESSION['role']; |
18 | 18 |
|
19 | 19 |
if ($role & (ROLE_SYSTEMUSER | ROLE_MAILACCOUNT | ROLE_VMAIL_ACCOUNT)) { |
20 |
- $menu["googleauth_overview"] = array("label" => "Sicheres Webmail", "file" => "overview", "weight" => 5, "submenu" => "email_vmail" ); |
|
20 |
+ $menu["webmailtotp_overview"] = array("label" => "Zwei-Faktor-Anmeldung", "file" => "overview", "weight" => 5, "submenu" => "email_vmail" ); |
|
21 | 21 |
} |
22 | 22 |
|
23 | 23 |
|
... | ... |
@@ -14,16 +14,16 @@ http://creativecommons.org/publicdomain/zero/1.0/ |
14 | 14 |
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. |
15 | 15 |
*/ |
16 | 16 |
|
17 |
-require_once('googleauth.php'); |
|
17 |
+require_once('totp.php'); |
|
18 | 18 |
require_role(ROLE_SYSTEMUSER); |
19 | 19 |
|
20 |
-title("Sicherer Zugang zum Webmailer"); |
|
20 |
+title("Zwei-Faktor-Anmeldung am Webmailer"); |
|
21 | 21 |
|
22 | 22 |
output('<p>Sie können bei '.config('company_name').' den Zugang zum Webmailer mit einem Zwei-Faktor-Prozess mit abweichendem Passwort schützen.</p> |
23 | 23 |
<p>Dieses System schützt Sie vor mitgelesenen Tastatureingaben in nicht vertrauenswürdiger Umgebung z.B. in einem Internet-Café.</p> |
24 |
-<p>Beim Zwei-Faktor-Prozess müssen Sie zum Login ein festes Webmail-Passwort und zusätzlich ein variabler Code, den beispielsweise Ihr Smartphone erzeugen kann, eingeben. Da sich dieser Code alle 30 Sekunden ändert, kann ein Angreifer sich nicht später mit einem abgehörten Passwort noch einmal anmelden. Zum Erzeugen des Einmal-Codes benötigen Sie ein Gerät, das <strong>Google-Authenticator</strong>-Codes erzeugen kann. Meist ist dies ein Smartphne mit einer entsprechenden App.</p> |
|
25 |
-<p><strong>Beachten Sie:</strong> Die Zwei-Faktor-Authentifizierung funktioniert nur für Webmail, beim Login via IMAP wird weiterhin nur das Passwort Ihres Postfachs benötigt. Damit dieses Passwort von einem Angreifer nicht mitgelesen werden kann, müssen Sie zur Zwei-Faktor-Authentifizierung unbedingt ein separates Passwort festlegen.</p> |
|
26 |
-<h3>Fügen Sie Zwei-Faktor-Authentifizierung zu Ihren bestehenden Postfächern hinzu</h3> |
|
24 |
+<p>Beim Zwei-Faktor-Prozess müssen Sie zum Login ein festes Webmail-Passwort und zusätzlich ein variabler Code, den beispielsweise Ihr Smartphone erzeugen kann, eingeben. Da sich dieser Code alle 30 Sekunden ändert, kann ein Angreifer sich nicht später mit einem abgehörten Passwort noch einmal anmelden. Zum Erzeugen des Einmal-Codes benötigen Sie ein Gerät, das <strong>TOTP-Einmalcodes nach RFC 6238</strong> erzeugt. Beispiele dafür sind <a href="https://code.google.com/p/google-authenticator/">Google-Authenticator</a> oder <a href="http://f-droid.org/repository/browse/?fdfilter=motp&fdid=org.cry.otp&fdpage=1">mOTP</a>. Meist ist dies ein Smartphone mit einer entsprechenden App.</p> |
|
25 |
+<p><strong>Beachten Sie:</strong> Die Zwei-Faktor-Anmeldung funktioniert nur für Webmail, beim Login via IMAP wird weiterhin nur das Passwort Ihres Postfachs benötigt. Damit dieses Passwort von einem Angreifer nicht mitgelesen werden kann, müssen Sie zur Zwei-Faktor-Anmeldung unbedingt ein separates Passwort festlegen.</p> |
|
26 |
+<h3>Fügen Sie Zwei-Faktor-Anmeldung zu Ihren bestehenden Postfächern hinzu</h3> |
|
27 | 27 |
'); |
28 | 28 |
|
29 | 29 |
|
... | ... |
@@ -68,11 +68,11 @@ if (count($sorted_by_domains) > 0) |
68 | 68 |
{ |
69 | 69 |
$username = $this_account['local'].'@'.$this_account['domainname']; |
70 | 70 |
output('<div style="margin-left: 2em;"><p style="margin-left: -2em;"><strong>'.$username.'</strong></p>'); |
71 |
- $id = account_has_googleauth($username); |
|
71 |
+ $id = account_has_totp($username); |
|
72 | 72 |
if ($id) { |
73 |
- output(addnew('delete', 'Sicheren Zugang für dieses Postfach abschalten', 'id='.$id, 'style="background-image: url('.$prefix.'images/delete.png); color: red;"')); |
|
73 |
+ output(addnew('delete', 'Zwei-Faktor-Anmeldung für dieses Postfach abschalten', 'id='.$id, 'style="background-image: url('.$prefix.'images/delete.png); color: red;"')); |
|
74 | 74 |
} else { |
75 |
- output(addnew('setup', 'Sicheren Zugang für dieses Postfach aktivieren', 'username='.urlencode($username))); |
|
75 |
+ output(addnew('setup', 'Zwei-Faktor-Anmeldung für dieses Postfach aktivieren', 'username='.urlencode($username))); |
|
76 | 76 |
} |
77 | 77 |
output('</div>'); |
78 | 78 |
} |
... | ... |
@@ -96,11 +96,11 @@ foreach ($accounts AS $acc) { |
96 | 96 |
if ($acc['mailbox']) { |
97 | 97 |
output('<div style="margin-left: 2em;"><p style="margin-left: -2em;"><strong>'.$acc['account'].'</strong></p>'); |
98 | 98 |
$username = $acc['account']; |
99 |
- $id = account_has_googleauth($username); |
|
99 |
+ $id = account_has_totp($username); |
|
100 | 100 |
if ($id) { |
101 |
- output(addnew('delete', 'Sicheren Zugang für dieses Postfach abschalten', 'id='.$id, 'style="background-image: url('.$prefix.'images/delete.png); color: red;"')); |
|
101 |
+ output(addnew('delete', 'Zwei-Faktor-Anmeldung für dieses Postfach abschalten', 'id='.$id, 'style="background-image: url('.$prefix.'images/delete.png); color: red;"')); |
|
102 | 102 |
} else { |
103 |
- output(addnew('setup', 'Sicheren Zugang für dieses Postfach aktivieren', 'username='.urlencode($username))); |
|
103 |
+ output(addnew('setup', 'Zwei-Faktor-Anmeldung für dieses Postfach aktivieren', 'username='.urlencode($username))); |
|
104 | 104 |
} |
105 | 105 |
output('</div>'); |
106 | 106 |
} |
... | ... |
@@ -20,11 +20,11 @@ require_role(ROLE_SYSTEMUSER); |
20 | 20 |
|
21 | 21 |
$username = urldecode($_REQUEST['username']); |
22 | 22 |
|
23 |
-$section='googleauth_overview'; |
|
24 |
-title("Sicherer Zugang zum Webmailer"); |
|
23 |
+$section='webmailtotp_overview'; |
|
24 |
+title("Zwei-Faktor-Anmeldung am Webmailer"); |
|
25 | 25 |
|
26 |
-output('<p><strong>Hinweise:</strong></p><ul><li>Nach Einrichtung der Zwei-Faktor-Authentifizierung funktioniert bei der Anmeldung über <a href="'.config('webmail_url').'">die zentrale Webmail-Login-Seite</a> nur noch dieses Passwort zusammen mit dem Einmal-Code, der mit dem Google-Authenticator erzeugt wird.</li> |
|
27 |
-<li>Ihr bestehendes IMAP-Passwort wird mit dem neuen Passwort verschlüsselt.</li><li>Über IMAP bzw. POP3 kann weiterhin nur mit dem bisherigen Passwort zugegriffen werden.</li><li>Wenn Sie ihr IMAP-Passwort ändern, wird diese Zwei-Faktor-Authentifizierung automatisch abgeschaltet.</li></ul>'); |
|
26 |
+output('<p><strong>Hinweise:</strong></p><ul><li>Nach Einrichtung der Zwei-Faktor-Anmeldung funktioniert bei der Anmeldung über <a href="'.config('webmail_url').'">die zentrale Webmail-Login-Seite</a> nur noch dieses Passwort zusammen mit dem Einmal-Code, der mit dem TOTP-Generator erzeugt wird.</li> |
|
27 |
+<li>Ihr bestehendes IMAP-Passwort wird mit dem neuen Passwort verschlüsselt.</li><li>Über IMAP bzw. POP3 kann weiterhin nur mit dem bisherigen Passwort zugegriffen werden.</li><li>Wenn Sie ihr IMAP-Passwort ändern, wird diese Zwei-Faktor-Anmeldung automatisch abgeschaltet.</li></ul>'); |
|
28 | 28 |
|
29 | 29 |
$form = '<p>Geben Sie zunächst bitte das bestehende Passwort des Postfachs <strong>'.filter_input_general($username).'</strong> ein:</p> |
30 | 30 |
<p>Postfach-Passwort: <input type="password" name="oldpw" /></p>'; |
... | ... |
@@ -34,6 +34,6 @@ $form .= '<p>Geben sie hier bitte das neue Passwort ein, mit dem sich der Benutz |
34 | 34 |
|
35 | 35 |
$form .= '<p><input type="submit" value="Einrichten" /></p>'; |
36 | 36 |
|
37 |
-output(html_form('googleauth_setup', 'generate', 'username='.urlencode($username), $form)); |
|
37 |
+output(html_form('webmailtotp_setup', 'generate', 'username='.urlencode($username), $form)); |
|
38 | 38 |
|
39 | 39 |
?> |
... | ... |
@@ -18,15 +18,15 @@ require_once('inc/base.php'); |
18 | 18 |
require_once('inc/icons.php'); |
19 | 19 |
require_role(ROLE_SYSTEMUSER); |
20 | 20 |
|
21 |
-require_once('googleauth.php'); |
|
21 |
+require_once('totp.php'); |
|
22 | 22 |
|
23 |
-$section='googleauth_overview'; |
|
24 |
-title('Test der Zwei-Faktor-authentifizierung'); |
|
23 |
+$section='webmailtotp_overview'; |
|
24 |
+title('Test der Zwei-Faktor-Anmeldung'); |
|
25 | 25 |
|
26 | 26 |
if (isset($_REQUEST['username'])) { |
27 | 27 |
$username = $_REQUEST['username']; |
28 | 28 |
$webmailpw = $_REQUEST['webmailpass']; |
29 |
- $ga_code = $_REQUEST['ga_code']; |
|
29 |
+ $ga_code = $_REQUEST['totp_code']; |
|
30 | 30 |
|
31 | 31 |
if (! strstr($username, '@')) { |
32 | 32 |
// Default-Domainname |
... | ... |
@@ -43,8 +43,8 @@ if (isset($_REQUEST['username'])) { |
43 | 43 |
if (check_locked($username)) { |
44 | 44 |
input_error('Aufgrund einiger Fehlversuche wurde dieses Konto übergangsweise deaktiviert. Bitte warten Sie ein paar Minuten.'); |
45 | 45 |
$success = false; |
46 |
- } elseif (! check_googleauth($username, $ga_code)) { |
|
47 |
- input_error('Der Google-Authenticator-Code wurde nicht akzeptiert.'); |
|
46 |
+ } elseif (! check_totp($username, $ga_code)) { |
|
47 |
+ input_error('Der TOTP-Code wurde nicht akzeptiert.'); |
|
48 | 48 |
$success = false; |
49 | 49 |
} |
50 | 50 |
|
... | ... |
@@ -64,11 +64,11 @@ if (isset($_REQUEST['username'])) { |
64 | 64 |
|
65 | 65 |
$form = '<p>Ihr Webmail-Benutzername: <input type="text" name="username" value="'.filter_input_general($username).'" /></p> |
66 | 66 |
<p>Ihr neues Webmail-Passwort: <input type="password" name="webmailpass" /></p> |
67 |
-<p>Der aktuellste Einmal-Code von Google-Authenticator: <input type="text" name="ga_code" /></p> |
|
67 |
+<p>Der aktuellste Einmal-Code: <input type="text" name="totp_code" /></p> |
|
68 | 68 |
<p><input type="submit" value="Prüfen!" /></p>'; |
69 | 69 |
|
70 | 70 |
|
71 |
-output(html_form('googleauth_test', 'test', '', $form)); |
|
71 |
+output(html_form('webmailtotp_test', 'test', '', $form)); |
|
72 | 72 |
|
73 | 73 |
|
74 | 74 |
?> |
... | ... |
@@ -99,13 +99,13 @@ function find_role($login, $password, $i_am_admin = False) |
99 | 99 |
if (! strstr($account, '@')) { |
100 | 100 |
$account .= '@'.config('masterdomain'); |
101 | 101 |
} |
102 |
- if (!$i_am_admin && have_module('googleauth')) { |
|
103 |
- require_once('modules/googleauth/include/googleauth.php'); |
|
104 |
- if (account_has_googleauth($account)) { |
|
102 |
+ if (!$i_am_admin && have_module('webmailtotp')) { |
|
103 |
+ require_once('modules/webmailtotp/include/totp.php'); |
|
104 |
+ if (account_has_totp($account)) { |
|
105 | 105 |
if (check_webmail_password($account, $password)) { |
106 |
- $_SESSION['googleauth_username'] = $account; |
|
107 |
- $_SESSION['googleauth'] = True; |
|
108 |
- show_page('googleauth-login'); |
|
106 |
+ $_SESSION['totp_username'] = $account; |
|
107 |
+ $_SESSION['totp'] = True; |
|
108 |
+ show_page('webmailtotp-login'); |
|
109 | 109 |
die(); |
110 | 110 |
} else { |
111 | 111 |
return NULL; |
... | ... |
@@ -23,27 +23,27 @@ if (!session_start()) |
23 | 23 |
|
24 | 24 |
DEBUG("<pre>POST-DATA: ".htmlspecialchars(print_r($_POST, true))."\nSESSION_DATA: ".htmlspecialchars(print_r($_SESSION, true))."</pre>"); |
25 | 25 |
|
26 |
-if (have_module('googleauth') && isset($_POST['webinterface_googlecode']) && isset($_SESSION['googleauth']) && isset($_SESSION['googleauth_username'])) { |
|
27 |
- require_once('modules/googleauth/include/googleauth.php'); |
|
26 |
+if (have_module('webmailtotp') && isset($_POST['webinterface_totpcode']) && isset($_SESSION['totp']) && isset($_SESSION['totp_username'])) { |
|
27 |
+ require_once('modules/webmailtotp/include/totp.php'); |
|
28 | 28 |
$role = NULL; |
29 |
- if (check_googleauth($_SESSION['googleauth_username'], $_POST['webinterface_googlecode'])) { |
|
30 |
- $role = find_role($_SESSION['googleauth_username'], '', true); |
|
29 |
+ if (check_totp($_SESSION['totp_username'], $_POST['webinterface_totpcode'])) { |
|
30 |
+ $role = find_role($_SESSION['totp_username'], '', true); |
|
31 | 31 |
} |
32 | 32 |
if ($role === NULL) |
33 | 33 |
{ |
34 | 34 |
$_SESSION['role'] = ROLE_ANONYMOUS; |
35 |
- logger(LOG_WARNING, "session/start", "login", "wrong googleauth code (username: »{$_SESSION['googleauth_username']}«)"); |
|
35 |
+ logger(LOG_WARNING, "session/start", "login", "wrong totp code (username: »{$_SESSION['totp_username']}«)"); |
|
36 | 36 |
warning('Ihre Anmeldung konnte nicht durchgeführt werden. Geben Sie bitte einen neuen Code ein.'); |
37 |
- show_page('googleauth-login'); |
|
37 |
+ show_page('webmailtotp-login'); |
|
38 | 38 |
die(); |
39 | 39 |
} |
40 | 40 |
else |
41 | 41 |
{ |
42 |
- setup_session($role, $_SESSION['googleauth_username']); |
|
42 |
+ setup_session($role, $_SESSION['totp_username']); |
|
43 | 43 |
} |
44 |
- unset($_POST['webinterface_googlecode']); |
|
45 |
- unset($_SESSION['googleauth']); |
|
46 |
- unset($_SESSION['googleauth_username']); |
|
44 |
+ unset($_POST['webinterface_totpcode']); |
|
45 |
+ unset($_SESSION['totp']); |
|
46 |
+ unset($_SESSION['totp_username']); |
|
47 | 47 |
} |
48 | 48 |
|
49 | 49 |
if (isset($_POST['webinterface_username']) && isset($_POST['webinterface_password'])) |
... | ... |
@@ -52,10 +52,10 @@ if ($messages) { |
52 | 52 |
} |
53 | 53 |
?> |
54 | 54 |
|
55 |
-<h3>Sicherheits-Code von Google-Authenticator</h3> |
|
56 |
-<p>Ihr Zugang ist mit einem zweistufigen Login-Prozess geschützt. Sie müssen daher jetzt noch den aktuellsten Code des Google-Authenticators eingeben.</p> |
|
55 |
+<h3>Sicherheits-Code</h3> |
|
56 |
+<p>Ihr Zugang ist mit Zwei-Faktor-Anmeldung geschützt. Sie müssen daher jetzt noch den aktuellsten Code Ihres TOTP-Geräts eingeben.</p> |
|
57 | 57 |
<form action="" method="post"> |
58 |
-<p><label for="code" class="login_label">Google-Authenticator-Code:</label> <input type="text" id="code" name="webinterface_googlecode" size="20" /></p> |
|
58 |
+<p><label for="code" class="login_label">Google-Authenticator-Code:</label> <input type="text" id="code" name="webinterface_totpcode" size="20" /></p> |
|
59 | 59 |
<p><span class="login_label"> </span> <input type="submit" value="Prüfen" /></p> |
60 | 60 |
</form> |
61 | 61 |
|
62 | 62 |