bernd commited on 2007-08-09 19:04:25
Zeige 7 geänderte Dateien mit 94 Einfügungen und 47 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@604 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -39,6 +39,23 @@ p.warning { |
39 | 39 |
} |
40 | 40 |
|
41 | 41 |
|
42 |
+div.confirmation { |
|
43 |
+} |
|
44 |
+ |
|
45 |
+div.confirmation div.question { |
|
46 |
+ padding: 10px; |
|
47 |
+ color: #000000; |
|
48 |
+ border: 1px solid #FF0000; |
|
49 |
+ background-color: #FFFFFF; |
|
50 |
+ font-weight: bold; |
|
51 |
+ margin-bottom: 1em; |
|
52 |
+} |
|
53 |
+ |
|
54 |
+div.confirmation p.buttons input { |
|
55 |
+ width: 10em; |
|
56 |
+} |
|
57 |
+ |
|
58 |
+ |
|
42 | 59 |
span.login_label { |
43 | 60 |
display: block; |
44 | 61 |
float: left; |
... | ... |
@@ -67,10 +67,17 @@ function are_you_sure($query_string, $question) |
67 | 67 |
$query_string = 'debug&'.$query_string; |
68 | 68 |
$token = random_string(20); |
69 | 69 |
$_SESSION['are_you_sure_token'] = $token; |
70 |
- output("<form action=\"?{$query_string}\" method=\"post\">\n"); |
|
71 |
- output("<p class=\"confirmation\">{$question}<br />\n"); |
|
72 |
- output("<input type=\"hidden\" name=\"random_token\" value=\"{$token}\" />\n"); |
|
73 |
- output("<input type=\"submit\" name=\"really\" value=\"Ja\" />\n<input type=\"submit\" name=\"not_really\" value=\"Nein\" /></p>\n"); |
|
70 |
+ output("<h3>Sicherheitsabfrage</h3> |
|
71 |
+ <form action=\"?{$query_string}\" method=\"post\"> |
|
72 |
+ <div class=\"confirmation\"> |
|
73 |
+ <div class=\"question\">{$question}</div> |
|
74 |
+ <p class=\"buttons\"> |
|
75 |
+ <input type=\"hidden\" name=\"random_token\" value=\"{$token}\" /> |
|
76 |
+ <input type=\"submit\" name=\"really\" value=\"Ja\" /> |
|
77 |
+ |
|
78 |
+ <input type=\"submit\" name=\"not_really\" value=\"Nein\" /> |
|
79 |
+ </p> |
|
80 |
+ </div>"); |
|
74 | 81 |
output("</form>\n"); |
75 | 82 |
} |
76 | 83 |
|
... | ... |
@@ -103,19 +110,19 @@ function generate_form_token($form_id) |
103 | 110 |
} |
104 | 111 |
if (! isset($_SESSION['session_token'])) |
105 | 112 |
$_SESSION['session_token'] = random_string(10); |
106 |
- $formtoken = hash('sha256', $sessid.$form_id.$_SESSION['session_token']); |
|
107 |
- return '<p style="display: none;"><input type="hidden" name="formtoken" value="'.$formtoken.'" /></p>'."\n"; |
|
113 |
+ return hash('sha256', $sessid.$form_id.$_SESSION['session_token']); |
|
108 | 114 |
} |
109 | 115 |
|
110 | 116 |
|
111 |
-function check_form_token($form_id) |
|
117 |
+function check_form_token($form_id, $formtoken = NULL) |
|
112 | 118 |
{ |
119 |
+ if ($formtoken == NULL) |
|
113 | 120 |
$formtoken = $_POST['formtoken']; |
114 | 121 |
$sessid = session_id(); |
115 | 122 |
if ($sessid == "") |
116 | 123 |
{ |
117 | 124 |
DEBUG("Uh? Session not running? Wtf?"); |
118 |
- system_failure("Internal error!"); |
|
125 |
+ system_failure("Internal error! (Session not running)"); |
|
119 | 126 |
} |
120 | 127 |
|
121 | 128 |
$correct_formtoken = hash('sha256', $sessid.$form_id.$_SESSION['session_token']); |
... | ... |
@@ -147,7 +154,7 @@ function html_form($form_id, $scriptname, $querystring, $content) |
147 | 154 |
$querystring = str_replace('&', '&', $querystring); |
148 | 155 |
$ret = ''; |
149 | 156 |
$ret .= '<form action="'.$scriptname.'?'.$debugstr.$querystring.'" method="post">'."\n"; |
150 |
- $ret .= generate_form_token($form_id); |
|
157 |
+ $ret .= '<p style="display: none;"><input type="hidden" name="formtoken" value="'.generate_form_token($form_id).'" /></p>'."\n"; |
|
151 | 158 |
$ret .= $content; |
152 | 159 |
$ret .= '</form>'; |
153 | 160 |
return $ret; |
... | ... |
@@ -1,5 +1,7 @@ |
1 | 1 |
<?php |
2 | 2 |
|
3 |
+require_once('inc/error.php'); |
|
4 |
+ |
|
3 | 5 |
|
4 | 6 |
function strong_password($password) |
5 | 7 |
{ |
... | ... |
@@ -35,17 +37,32 @@ function filter_input_general( $input ) |
35 | 37 |
} |
36 | 38 |
|
37 | 39 |
|
40 |
+function verify_input_general( $input ) |
|
41 |
+{ |
|
42 |
+ if (filter_input_general($input) != $input) |
|
43 |
+ system_failure("Ihre Daten enthielten ungültige Zeichen!"); |
|
44 |
+} |
|
45 |
+ |
|
46 |
+ |
|
47 |
+ |
|
38 | 48 |
function filter_input_username( $input ) |
39 | 49 |
{ |
40 |
- return ereg_replace("[^[:alnum:]\_\.\+\-]", "", $input ); |
|
50 |
+ if (ereg_replace("[^[:alnum:]\_\.\+\-]", "", $input ) != $input) |
|
51 |
+ system_failure("Ihre Daten enthielten ungültige Zeichen!"); |
|
41 | 52 |
} |
42 | 53 |
|
54 |
+ |
|
55 |
+ |
|
43 | 56 |
function filter_input_hostname( $input ) |
44 | 57 |
{ |
45 |
- $input = strtolower($input); |
|
46 |
- return ereg_replace("[^[:alnum:]äöü\.\-]", "", $input ); |
|
58 |
+ $input = str_replace(array('Ä', 'Ö', 'Ü'), array('ä', 'ö', 'ü'), strtolower($input)); |
|
59 |
+ if (ereg_replace("[^[:alnum:]äöü\.\-]", "", $input ) != $input) |
|
60 |
+ system_failure("Ihre Daten enthielten ungültige Zeichen!"); |
|
61 |
+ return $input; |
|
47 | 62 |
} |
48 | 63 |
|
64 |
+ |
|
65 |
+ |
|
49 | 66 |
function filter_quotes( $input ) |
50 | 67 |
{ |
51 | 68 |
return ereg_replace('["\'`]', '', $input ); |
... | ... |
@@ -56,6 +75,14 @@ function filter_shell( $input ) |
56 | 75 |
return ereg_replace('[^-[:alnum:]\_\.\+ßäöüÄÖÜ/%§=]', '', $input ); |
57 | 76 |
} |
58 | 77 |
|
78 |
+function verify_shell( $input ) |
|
79 |
+{ |
|
80 |
+ if (filter_shell($input) != $input) |
|
81 |
+ system_failure("Ihre Daten enthielten ungültige Zeichen!"); |
|
82 |
+} |
|
83 |
+ |
|
84 |
+ |
|
85 |
+ |
|
59 | 86 |
function check_path( $input ) |
60 | 87 |
{ |
61 | 88 |
DEBUG("checking {$input} for valid path name"); |
... | ... |
@@ -18,11 +18,11 @@ $title = "Domainüberblick"; |
18 | 18 |
output('<h3>Domains</h3> |
19 | 19 |
<p>In Ihrem Account werden die folgenden Domains verwaltet:</p> |
20 | 20 |
<table> |
21 |
-<tr><th>Domainname</th><th>Reg-Datum</th><th>Kündigungsdatum</th></tr> |
|
21 |
+<tr><th>Domainname</th><th>Reg-Datum</th><th>Kündigungsdatum</th><th> </th></tr> |
|
22 | 22 |
'); |
23 | 23 |
foreach ($user_domains as $domain) |
24 | 24 |
{ |
25 |
- output(" <tr><td><a href=\"http://www.{$domain->fqdn}\">{$domain->fqdn}</a></td><td>{$domain->reg_date}</td><td>{$domain->cancel_date}</td></tr>\n"); |
|
25 |
+ output(" <tr><td>{$domain->fqdn}</td><td>{$domain->reg_date}</td><td>{$domain->cancel_date}</td><td><a href=\"http://www.{$domain->fqdn}\">WWW-Seite aufrufen</a></td></tr>\n"); |
|
26 | 26 |
} |
27 | 27 |
output('</table>'); |
28 | 28 |
output("<br />"); |
... | ... |
@@ -9,10 +9,6 @@ require_role(ROLE_SYSTEMUSER); |
9 | 9 |
|
10 | 10 |
$user = $_SESSION['userinfo']; |
11 | 11 |
|
12 |
-$param = ''; |
|
13 |
-if ($debugmode) |
|
14 |
- $param="debug"; |
|
15 |
- |
|
16 | 12 |
$title = "E-Mail-Accounts"; |
17 | 13 |
|
18 | 14 |
|
... | ... |
@@ -33,7 +29,6 @@ if (isset($_GET['action']) && $_GET['action'] == 'save') |
33 | 29 |
if ($error != "") |
34 | 30 |
{ |
35 | 31 |
input_error($error); |
36 |
- $section = "mail"; |
|
37 | 32 |
$title = "E-Mail-Accounts"; |
38 | 33 |
output(""); |
39 | 34 |
} |
... | ... |
@@ -110,24 +105,15 @@ elseif (isset($_GET['action']) && $_GET['action'] == 'create') |
110 | 105 |
} |
111 | 106 |
elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && $_GET['account'] != '') |
112 | 107 |
{ |
113 |
- if ($_POST['confirm'] == 'yes') |
|
114 |
- { |
|
115 |
- check_form_token('imap_accounts_delete'); |
|
116 |
- delete_mailaccount($_GET['account']); |
|
117 |
- if (! $debugmode) |
|
118 |
- header('Location: accounts.php'); |
|
119 |
- die(); |
|
120 |
- } |
|
121 |
- else |
|
108 |
+ $sure = user_is_sure(); |
|
109 |
+ if ($sure === NULL) |
|
122 | 110 |
{ |
123 |
- output('<h3>E-Mail-Account löschen</h3> |
|
124 |
- <p>Soll der folgende Account wirklich gelöscht werden?</p> |
|
125 |
- '); |
|
126 | 111 |
$_GET['account'] = (int) $_GET['account']; |
127 | 112 |
$account = get_mailaccount($_GET['account']); |
128 | 113 |
$enabled = ($account['enabled'] ? 'Ja' : 'Nein'); |
129 |
- output(html_form('imap_accounts_delete', "accounts.php", "action=delete&account=".$_GET['account'], |
|
130 |
- '<table style="margin-bottom: 1em;"> |
|
114 |
+ are_you_sure("action=delete&account={$_GET['account']}", ' |
|
115 |
+ <p>Soll der folgende Account wirklich gelöscht werden?</p> |
|
116 |
+ <table style="margin-bottom: 1em;"> |
|
131 | 117 |
<tr><td>Benutzername:</td> |
132 | 118 |
<td>'.filter_input_general($account['account']).'</td> |
133 | 119 |
</tr> |
... | ... |
@@ -138,10 +124,20 @@ elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && $_GET['account' |
138 | 124 |
<td>'.$enabled.'</td> |
139 | 125 |
</tr> |
140 | 126 |
</table> |
141 |
- <p><input type="hidden" name="confirm" value="yes" /> |
|
142 |
- <input type="submit" value="Wirklich löschen" /> |
|
143 |
- </p> |
|
144 |
- ')); |
|
127 |
+'); |
|
128 |
+ } |
|
129 |
+ elseif ($sure === true) |
|
130 |
+ { |
|
131 |
+ delete_mailaccount($_GET['account']); |
|
132 |
+ if (! $debugmode) |
|
133 |
+ header('Location: accounts.php'); |
|
134 |
+ die(); |
|
135 |
+ } |
|
136 |
+ elseif ($sure === false) |
|
137 |
+ { |
|
138 |
+ if (! $debugmode) |
|
139 |
+ header("Location: accounts.php"); |
|
140 |
+ die(); |
|
145 | 141 |
} |
146 | 142 |
} |
147 | 143 |
elseif (isset($_GET['edit'])) |
... | ... |
@@ -153,24 +149,23 @@ elseif (isset($_GET['edit'])) |
153 | 149 |
$account = get_mailaccount($_GET['edit']); |
154 | 150 |
list($username, $domain) = explode('@', $account['account'], 2); |
155 | 151 |
$enabled = ($account['enabled'] ? ' checked="checked"' : ''); |
156 |
- output('<form action="accounts.php?action=save&id='.$_GET['edit'].'&'.$param.'" method="post"> |
|
157 |
- '.generate_form_token('imap_accounts_edit').' |
|
152 |
+ $form = ' |
|
158 | 153 |
<table style="margin-bottom: 1em;"> |
159 | 154 |
<tr><th>Einstellung:</th><th>alter Wert:</th><th>neuer Wert:</th><th> </th></tr> |
160 | 155 |
<tr><td>Benutzername:</td><td><input type="text" id="old_account" name="old_account" value="'.$account['account'].'" readonly="readonly" style="background-color: #C0C0C0;" /></td> |
161 | 156 |
<td><input type="text" id="user" name="user" value="'.$username.'" />@<select name="domain" id="domain" size="1"> |
162 | 157 |
<option value="schokokeks.org">schokokeks.org</option> |
163 |
- '); |
|
158 |
+ '; |
|
164 | 159 |
$domains = get_domain_list($user['customerno'], $user['uid']); |
165 | 160 |
if (count($domains) > 0) |
166 |
- output('<option>----------------------------</option>'); |
|
161 |
+ $form .= '<option>----------------------------</option>'; |
|
167 | 162 |
foreach ($domains as $dom) |
168 | 163 |
if ($domain == $dom->fqdn) |
169 |
- output('<option value="'.$dom->fqdn.'" selected="selected">'.$dom->fqdn.'</option>'); |
|
164 |
+ $form .= '<option value="'.$dom->fqdn.'" selected="selected">'.$dom->fqdn.'</option>'; |
|
170 | 165 |
else |
171 |
- output('<option value="'.$dom->fqdn.'">'.$dom->fqdn.'</option>'); |
|
166 |
+ $form .= '<option value="'.$dom->fqdn.'">'.$dom->fqdn.'</option>'; |
|
172 | 167 |
|
173 |
- output('</select></td> |
|
168 |
+ $form .= '</select></td> |
|
174 | 169 |
<td><input type="button" onclick="document.getElementById(\'user\').value = \''.$username.'\' ; document.getElementById(\'domain\').value = \''.$domain.'\'" value="Zeile zurücksetzen" /></td></tr> |
175 | 170 |
<tr><td>Mailbox:</td><td><input type="text" id="old_mailbox" name="old_mailbox" value="'.$account['mailbox'].'" readonly="readonly" style="background-color: #C0C0C0;" /></td> |
176 | 171 |
<td><input type="text" id="mailbox" name="mailbox" value="'.$account['mailbox'].'" /></td> |
... | ... |
@@ -186,8 +181,8 @@ elseif (isset($_GET['edit'])) |
186 | 181 |
<p><input type="submit" value="Änderungen speichern" /><br /> |
187 | 182 |
Hinweis: Das Passwort wird nur geändert, wenn Sie auf dieser Seite eines eingeben. Geben Sie keines an, wird das bisherige beibehalten!</p> |
188 | 183 |
</form> |
189 |
- '); |
|
190 |
- |
|
184 |
+ '; |
|
185 |
+ output(html_form('imap_accounts_edit', 'accounts.php', 'action=save&id='.$_GET['edit'], $form)); |
|
191 | 186 |
} |
192 | 187 |
else |
193 | 188 |
{ |
... | ... |
@@ -48,6 +48,9 @@ elseif ($_GET['action'] == 'chpass') |
48 | 48 |
} |
49 | 49 |
elseif ($_GET['action'] == 'delete') |
50 | 50 |
{ |
51 |
+ $title = "Jabber-Account löschen"; |
|
52 |
+ $section = 'jabber_accounts'; |
|
53 |
+ |
|
51 | 54 |
$account = get_jabberaccount_details($_GET['account']); |
52 | 55 |
$account_string = filter_input_general( $account['local'].'@'.$account['domain'] ); |
53 | 56 |
$sure = user_is_sure(); |
... | ... |
@@ -113,7 +113,7 @@ if ($output_something) |
113 | 113 |
output('<h3>MySQL-Datenbanken</h3> |
114 | 114 |
<p>Hier können Sie Ihre MySQL-Datenbanken verwalten. Die Einstellungen werden mit einer leichten Verzögerung (maximal 1 Minute) in das System übertragen. Bitte beachten Sie, dass neue Zugänge also nicht umgehend funktionieren.</p> |
115 | 115 |
<p><strong>Hinweis:</strong> In dieser Matrix sehen Sie links die Datenbanken und oben die Benutzer, die Sie eingerichtet haben. |
116 |
- In die leeren Eingabefelder können Sie den Namen eines neuen Benutzers bzw. einer neuen Datenbank eintragen. Sofern Sie noch keine Datenbank(en) oder Benutzer eingerichtet haben, erscheinen nur die Eingabefelder. Vergessen Sie nicht, nach der Erstellung eines neuen Benutzerkontos dem betreffenden Benutzer ein Passwort zu setzen (s. unten auf dieser Seite). Der Name von Datenbanken und Benutzern muss mit dem Namen des System-Benutzeraccounts übereinstimmen oder mit diesem und einem Nachfolgenden Unterstrich beginnen. Z.B. kann der System-Benutzer <em>bernd</em> die MySQL-Accounts <em>bernd</em> und <em>bernd_2</em> erzeugen.</p>'); |
|
116 |
+ In die leeren Eingabefelder können Sie den Namen eines neuen Benutzers bzw. einer neuen Datenbank eintragen. Sofern Sie noch keine Datenbank(en) oder Benutzer eingerichtet haben, erscheinen nur die Eingabefelder. Vergessen Sie nicht, nach der Erstellung eines neuen Benutzerkontos dem betreffenden Benutzer ein Passwort zu setzen (s. unten auf dieser Seite). Der Name von Datenbanken und Datenbank-Benutzern muss mit dem Namen des System-Benutzeraccounts übereinstimmen oder mit diesem und einem nachfolgenden Unterstrich beginnen. Z.B. kann der System-Benutzer <em>bernd</em> die MySQL-Accounts <em>bernd</em> und <em>bernd_2</em> erzeugen. Aufgrund einer Beschränkung des MySQL-Servers dürfen Benutzernamen allerdings zur Zeit nur 16 Zeichen lang sein.</p>'); |
|
117 | 117 |
|
118 | 118 |
output('<form action="'.($debugmode ? '?debug': '').'" method="post"> |
119 | 119 |
'.generate_form_token('mysql_databases_access').' |
120 | 120 |