Browse code

Umbenennung Google-Auth nach TOTP

Bernd Wurst authored on20/09/2012 16:28:48
Showing10 changed files
1 1
similarity index 81%
2 2
rename from modules/googleauth/delete.php
3 3
rename to modules/webmailtotp/delete.php
... ...
@@ -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
 }
38 38
similarity index 76%
39 39
rename from modules/googleauth/generate.php
40 40
rename to modules/webmailtotp/generate.php
... ...
@@ -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
 ?>
55 55
similarity index 77%
56 56
rename from modules/googleauth/include/googleauth.php
57 57
rename to modules/webmailtotp/include/totp.php
... ...
@@ -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
 
231 231
similarity index 86%
232 232
rename from modules/googleauth/menu.php
233 233
rename to modules/webmailtotp/menu.php
... ...
@@ -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
 
24 24
similarity index 68%
25 25
rename from modules/googleauth/overview.php
26 26
rename to modules/webmailtotp/overview.php
... ...
@@ -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
   }
107 107
similarity index 77%
108 108
rename from modules/googleauth/setup.php
109 109
rename to modules/webmailtotp/setup.php
... ...
@@ -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
 ?>
40 40
similarity index 83%
41 41
rename from modules/googleauth/test.php
42 42
rename to modules/webmailtotp/test.php
... ...
@@ -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']))
50 50
similarity index 89%
51 51
rename from themes/default/page-googleauth-login.tpl.php
52 52
rename to themes/default/page-webmailtotp-login.tpl.php
... ...
@@ -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">&#160;</span> <input type="submit" value="Prüfen" /></p>
60 60
 </form>
61 61