Browse code

Großer VMail-move

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1012 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on03/04/2008 10:38:22
Showing1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,189 +0,0 @@
1
-<?php
2
-
3
-require_once('inc/debug.php');
4
-require_once('inc/db_connect.php');
5
-require_once('inc/base.php');
6
-require_once('inc/security.php');
7
-
8
-require_once('class/domain.php');
9
-
10
-function mailaccounts($uid)
11
-{
12
-  $uid = (int) $uid;
13
-  $result = db_query("SELECT m.id,concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.uid=$uid");
14
-  DEBUG("Found ".@mysql_num_rows($result)." rows!");
15
-  $accounts = array();
16
-  if (@mysql_num_rows($result) > 0)
17
-    while ($acc = @mysql_fetch_object($result))
18
-      array_push($accounts, array('id'=> $acc->id, 'account' => $acc->account, 'mailbox' => $acc->maildir, 'cryptpass' => $acc->cryptpass, 'enabled' => ($acc->aktiv == 1)));
19
-  return $accounts;
20
-}
21
-
22
-function get_mailaccount($id)
23
-{
24
-  $uid = (int) $uid;
25
-  $result = db_query("SELECT concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.id=$id");
26
-  DEBUG("Found ".mysql_num_rows($result)." rows!");
27
-  $acc = mysql_fetch_object($result);
28
-  $ret = array('account' => $acc->account, 'mailbox' => $acc->maildir,  'enabled' => ($acc->aktiv == 1));
29
-  DEBUG(print_r($ret, true));
30
-  return $ret;
31
-}
32
-
33
-function encrypt_mail_password($pw)
34
-{
35
-  DEBUG("unencrypted PW: ".$pw);
36
-  require_once('inc/base.php');
37
-  $salt = random_string(8);
38
-  $encpw = crypt($pw, "\$1\${$salt}\$");
39
-  DEBUG("encrypted PW: ".$encpw);
40
-  return chop($encpw);
41
-
42
-}
43
-
44
-function change_mailaccount($id, $arr)
45
-{
46
-  $id = (int) $id;
47
-  $conditions = array();
48
-
49
-  if (isset($arr['account']))
50
-  {
51
-    list($local, $domain) = explode('@', $arr['account'], 2);
52
-    $domain = new Domain( (string) $domain);
53
-    if ($domain->id == NULL)
54
-      array_push($conditions, "domain=NULL");
55
-    else
56
-      array_push($conditions, "domain={$domain->id}");
57
-
58
-    array_push($conditions, "local='".mysql_real_escape_string($local)."'");
59
-  }
60
-  if (isset($arr['mailbox']))
61
-    if ($arr['mailbox'] == '')
62
-      array_push($conditions, "`maildir`=NULL");
63
-    else
64
-      array_push($conditions, "`maildir`='".mysql_real_escape_string($arr['mailbox'])."'");
65
-
66
-  if (isset($arr['password']))
67
-  {
68
-    $encpw = encrypt_mail_password($arr['password']);
69
-    array_push($conditions, "`password`='$encpw'");
70
-  }
71
-
72
-  if (isset($arr['enabled']))
73
-    array_push($conditions, "`aktiv`=".($arr['enabled'] == 'Y' ? "1" : "0"));
74
-
75
-
76
-  db_query("UPDATE mail.mailaccounts SET ".implode(",", $conditions)." WHERE id='$id' LIMIT 1");
77
-  logger("modules/imap/include/mailaccounts.php", "imap", "updated account »{$arr['account']}«");
78
-
79
-}
80
-
81
-function create_mailaccount($arr)
82
-{
83
-  $values = array();
84
-
85
-  if (($arr['account']) == '')
86
-    system_failure('empty account name!');
87
-
88
-  $values['uid'] = (int) $_SESSION['userinfo']['uid'];
89
-
90
-  list($local, $domain) = explode('@', $arr['account'], 2);
91
-  $domain = new Domain( (string) $domain);
92
-  if ($domain->id == NULL)
93
-    $values['domain'] = "NULL";
94
-  else
95
-    $values['domain'] = $domain->id;
96
-
97
-  $values['local'] = "'".mysql_real_escape_string($local)."'";
98
-
99
-  if (isset($arr['mailbox']))
100
-    if ($arr['mailbox'] == '')
101
-      $values['maildir'] = 'NULL';
102
-    else
103
-      $values['maildir']= "'".mysql_real_escape_string($arr['mailbox'])."'";
104
-
105
-
106
-  if (isset($arr['password']))
107
-  {
108
-    $values['password'] = "'".encrypt_mail_password($arr['password'])."'";
109
-  }
110
-
111
-  if (isset($arr['enabled']))
112
-    $values['aktiv'] = ($arr['enabled'] == 'Y' ? "1" : "0" );
113
-
114
-
115
-  db_query("INSERT INTO mail.mailaccounts (".implode(',', array_keys($values)).") VALUES (".implode(",", array_values($values)).")");
116
-  logger("modules/imap/include/mailaccounts.php", "imap", "created account »{$arr['account']}«");
117
-
118
-}
119
-
120
-    
121
-function get_mailaccount_id($accountname)
122
-{
123
-  list($local, $domain) = explode('@', $accountname, 2);
124
-  if ($domain == 'schokokeks.org')
125
-    $domain = '';
126
-
127
-  $local = mysql_real_escape_string($local);
128
-  $domain = maybe_null($domain);
129
-
130
-  $result = db_query("SELECT acc.id FROM mail.mailaccounts AS acc LEFT JOIN mail.v_domains AS dom ON (dom.id=acc.domain) WHERE local='{$local}' AND dom.domainname={$domain}");
131
-  if (mysql_num_rows($result) != 1)
132
-    system_failure('account nicht eindeutig');
133
-  $acc = mysql_fetch_assoc($result);
134
-  return $acc['id'];
135
-}
136
-    
137
-
138
-function delete_mailaccount($id)
139
-{
140
-  $id = (int) $id;
141
-  db_query("DELETE FROM mail.mailaccounts WHERE id=".$id." LIMIT 1");
142
-  logger("modules/imap/include/mailaccounts.php", "imap", "deleted account »{$id}«");
143
-}
144
-
145
-
146
-function check_valid($acc)
147
-{
148
-  $user = $_SESSION['userinfo'];
149
-  DEBUG("Account-data: ".print_r($acc, true));
150
-  DEBUG("User-data: ".print_r($user, true));
151
-  if ($acc['mailbox'] != '')
152
-  {
153
-    if (substr($acc['mailbox'], 0, strlen($user['homedir'])+1) != $user['homedir'].'/')
154
-      return "Die Mailbox muss innerhalb des Home-Verzeichnisses liegen. Sie haben »".$acc['mailbox']."« als Mailbox angegeben, Ihr Home-Verzeichnis ist »".$user['homedir']."/«.";
155
-    if (! check_path($acc['mailbox']))
156
-      return "Sie verwenden ungültige Zeichen in Ihrem Mailbox-Pfad.";
157
-  }
158
-
159
-  if ($acc['account'] == '' || strpos($acc['account'], '@') == 0)
160
-    return "Es wurde kein Benutzername angegeben!";
161
-  if (strpos($acc['account'], '@') === false)
162
-    return "Es wurde kein Domain-Teil im Account-Name angegeben. Account-Namen müssen einen Domain-Teil enthalten. Im Zweifel versuchen Sie »@schokokeks.org«.";
163
-
164
-  list($local, $domain) = explode('@', $acc['account'], 2);
165
-  verify_input_username($local);
166
-  $tmpdomains = get_domain_list($user['customerno'], $user['uid']);
167
-  $domains = array();
168
-  foreach ($tmpdomains as $dom)
169
-    $domains[] = $dom->fqdn;
170
-
171
-  if (array_search($domain, $domains) === false)
172
-  {
173
-    if ($domain == "schokokeks.org")
174
-    {
175
-      if (substr($local, 0, strlen($user['username'])) != $user['username'] || ($acc['account'][strlen($user['username'])] != '-' && $acc['account'][strlen($user['username'])] != '@'))
176
-      {
177
-        return "Sie haben »@schokokeks.org« als Domain-Teil angegeben, aber der Benutzer-Teil beginnt nicht mit Ihrem Benutzername!";
178
-      }
179
-    }
180
-    else
181
-      return "Der angegebene Domain-Teil (»".htmlentities($domain, ENT_QUOTES, "UTF-8")."«) ist nicht für Ihren Account eingetragen. Sollte dies ein Fehler sein, wenden sie sich bitte an einen Administrator!";
182
-  }
183
-
184
-  return '';
185
-}
186
-
187
-
188
-
189
-?>
Browse code

Auch mailaccounts können sich einloggen

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@625 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on13/08/2007 13:15:55
Showing1 changed files
... ...
@@ -117,6 +117,23 @@ function create_mailaccount($arr)
117 117
 
118 118
 }
119 119
 
120
+    
121
+function get_mailaccount_id($accountname)
122
+{
123
+  list($local, $domain) = explode('@', $accountname, 2);
124
+  if ($domain == 'schokokeks.org')
125
+    $domain = '';
126
+
127
+  $local = mysql_real_escape_string($local);
128
+  $domain = maybe_null($domain);
129
+
130
+  $result = db_query("SELECT acc.id FROM mail.mailaccounts AS acc LEFT JOIN mail.v_domains AS dom ON (dom.id=acc.domain) WHERE local='{$local}' AND dom.domainname={$domain}");
131
+  if (mysql_num_rows($result) != 1)
132
+    system_failure('account nicht eindeutig');
133
+  $acc = mysql_fetch_assoc($result);
134
+  return $acc['id'];
135
+}
136
+    
120 137
 
121 138
 function delete_mailaccount($id)
122 139
 {
Browse code

Hatte die Kompatibilität gebrochen, fixed.

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@607 87cf0b9e-d624-0410-a070-f6ee81989793

hanno authored on09/08/2007 19:13:23
Showing1 changed files
... ...
@@ -145,8 +145,7 @@ function check_valid($acc)
145 145
     return "Es wurde kein Domain-Teil im Account-Name angegeben. Account-Namen müssen einen Domain-Teil enthalten. Im Zweifel versuchen Sie »@schokokeks.org«.";
146 146
 
147 147
   list($local, $domain) = explode('@', $acc['account'], 2);
148
-  if ($local != filter_input_username($local))
149
-    return "Sie haben ungültige Zeichen im Accountname benutzt!";
148
+  verify_input_username($local);
150 149
   $tmpdomains = get_domain_list($user['customerno'], $user['uid']);
151 150
   $domains = array();
152 151
   foreach ($tmpdomains as $dom)
Browse code

XSS/CSRF-Bugs behoben

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@574 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on30/07/2007 17:15:58
Showing1 changed files
... ...
@@ -3,6 +3,7 @@
3 3
 require_once('inc/debug.php');
4 4
 require_once('inc/db_connect.php');
5 5
 require_once('inc/base.php');
6
+require_once('inc/security.php');
6 7
 
7 8
 require_once('class/domain.php');
8 9
 
... ...
@@ -133,17 +134,19 @@ function check_valid($acc)
133 134
   if ($acc['mailbox'] != '')
134 135
   {
135 136
     if (substr($acc['mailbox'], 0, strlen($user['homedir'])+1) != $user['homedir'].'/')
136
-      return "Die Mailbox muss innerhalb des Home-Verzeichnisses liegen. Sie haben \"".$acc['mailbox']."\" als Mailbox angegeben, Ihre Home-Verzeichnis ist \"".$user['homedir']."/\".";
137
-    if (strstr($acc['mailbox'], '..') or ! preg_match('/^[a-z0-9.\/_-]*$/', $acc['mailbox']))
137
+      return "Die Mailbox muss innerhalb des Home-Verzeichnisses liegen. Sie haben »".$acc['mailbox']."« als Mailbox angegeben, Ihr Home-Verzeichnis ist »".$user['homedir']."/«.";
138
+    if (! check_path($acc['mailbox']))
138 139
       return "Sie verwenden ungültige Zeichen in Ihrem Mailbox-Pfad.";
139 140
   }
140 141
 
141 142
   if ($acc['account'] == '' || strpos($acc['account'], '@') == 0)
142 143
     return "Es wurde kein Benutzername angegeben!";
143 144
   if (strpos($acc['account'], '@') === false)
144
-    return "Es wurde kein Domain-Teil im Account-Name angegeben. Account-Namen m&uuml;ssen einen Domain-Teil enthalten. Im Zweifel versuchen Sie &quot;@schokokeks.org&quot;.";
145
+    return "Es wurde kein Domain-Teil im Account-Name angegeben. Account-Namen müssen einen Domain-Teil enthalten. Im Zweifel versuchen Sie »@schokokeks.org«.";
145 146
 
146 147
   list($local, $domain) = explode('@', $acc['account'], 2);
148
+  if ($local != filter_input_username($local))
149
+    return "Sie haben ungültige Zeichen im Accountname benutzt!";
147 150
   $tmpdomains = get_domain_list($user['customerno'], $user['uid']);
148 151
   $domains = array();
149 152
   foreach ($tmpdomains as $dom)
... ...
@@ -155,11 +158,11 @@ function check_valid($acc)
155 158
     {
156 159
       if (substr($local, 0, strlen($user['username'])) != $user['username'] || ($acc['account'][strlen($user['username'])] != '-' && $acc['account'][strlen($user['username'])] != '@'))
157 160
       {
158
-        return "Sie haben &quot;@schokokeks.org&quot; als Domain-Teil angegeben, aber der Benutzer-Teil beginnt nicht mit Ihrem Benutzername!";
161
+        return "Sie haben »@schokokeks.org« als Domain-Teil angegeben, aber der Benutzer-Teil beginnt nicht mit Ihrem Benutzername!";
159 162
       }
160 163
     }
161 164
     else
162
-      return "Der angegebene Domain-Teil (".htmlentities($domain, ENT_QUOTES, "UTF-8").") ist nicht f&uuml;r Ihren Account eingetragen. Sollte dies ein Fehler sein, wenden sie sich bitte an einen Administrator!";
165
+      return "Der angegebene Domain-Teil (»".htmlentities($domain, ENT_QUOTES, "UTF-8")."«) ist nicht für Ihren Account eingetragen. Sollte dies ein Fehler sein, wenden sie sich bitte an einen Administrator!";
163 166
   }
164 167
 
165 168
   return '';
Browse code

Domain-Klasse benutzen

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@536 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on05/07/2007 18:43:18
Showing1 changed files
... ...
@@ -4,6 +4,8 @@ require_once('inc/debug.php');
4 4
 require_once('inc/db_connect.php');
5 5
 require_once('inc/base.php');
6 6
 
7
+require_once('class/domain.php');
8
+
7 9
 function mailaccounts($uid)
8 10
 {
9 11
   $uid = (int) $uid;
... ...
@@ -38,16 +40,6 @@ function encrypt_mail_password($pw)
38 40
 
39 41
 }
40 42
 
41
-function get_domain_id($domain) 
42
-{
43
-  $domain = mysql_real_escape_string($domain);
44
-  $result = db_query("SELECT id FROM mail.v_domains WHERE domainname = '{$domain}';");
45
-  if (mysql_num_rows($result) == 0)
46
-    return NULL;
47
-  return mysql_fetch_object($result)->id;
48
-}
49
-
50
-
51 43
 function change_mailaccount($id, $arr)
52 44
 {
53 45
   $id = (int) $id;
... ...
@@ -56,10 +48,13 @@ function change_mailaccount($id, $arr)
56 48
   if (isset($arr['account']))
57 49
   {
58 50
     list($local, $domain) = explode('@', $arr['account'], 2);
59
-    $domainid = get_domain_id($domain);
60
-    if ($domainid == NULL)
61
-      $domainid='NULL';
62
-    array_push($conditions, "local='".mysql_real_escape_string($local)."', domain=$domainid");
51
+    $domain = new Domain( (string) $domain);
52
+    if ($domain->id == NULL)
53
+      array_push($conditions, "domain=NULL");
54
+    else
55
+      array_push($conditions, "domain={$domain->id}");
56
+
57
+    array_push($conditions, "local='".mysql_real_escape_string($local)."'");
63 58
   }
64 59
   if (isset($arr['mailbox']))
65 60
     if ($arr['mailbox'] == '')
... ...
@@ -92,11 +87,13 @@ function create_mailaccount($arr)
92 87
   $values['uid'] = (int) $_SESSION['userinfo']['uid'];
93 88
 
94 89
   list($local, $domain) = explode('@', $arr['account'], 2);
95
-  $domainid = get_domain_id($domain);
96
-  if ($domainid == NULL)
97
-    $domainid='NULL';
90
+  $domain = new Domain( (string) $domain);
91
+  if ($domain->id == NULL)
92
+    $values['domain'] = "NULL";
93
+  else
94
+    $values['domain'] = $domain->id;
95
+
98 96
   $values['local'] = "'".mysql_real_escape_string($local)."'";
99
-  $values['domain'] = $domainid;
100 97
 
101 98
   if (isset($arr['mailbox']))
102 99
     if ($arr['mailbox'] == '')
... ...
@@ -147,11 +144,10 @@ function check_valid($acc)
147 144
     return "Es wurde kein Domain-Teil im Account-Name angegeben. Account-Namen m&uuml;ssen einen Domain-Teil enthalten. Im Zweifel versuchen Sie &quot;@schokokeks.org&quot;.";
148 145
 
149 146
   list($local, $domain) = explode('@', $acc['account'], 2);
150
-  require_once('domains.php');
151
-  $tmpdomains = get_domain_names($user['customerno'], $user['uid']);
147
+  $tmpdomains = get_domain_list($user['customerno'], $user['uid']);
152 148
   $domains = array();
153 149
   foreach ($tmpdomains as $dom)
154
-    array_push($domains, $dom['domainname']);
150
+    $domains[] = $dom->fqdn;
155 151
 
156 152
   if (array_search($domain, $domains) === false)
157 153
   {
Browse code

sql-abfragen abstrahiert

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@512 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on18/06/2007 08:19:16
Showing1 changed files
... ...
@@ -7,11 +7,7 @@ require_once('inc/base.php');
7 7
 function mailaccounts($uid)
8 8
 {
9 9
   $uid = (int) $uid;
10
-  $query = "SELECT m.id,concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.uid=$uid";
11
-  DEBUG("SQL-Query: {$query}");
12
-  $result = @mysql_query($query);
13
-  if (mysql_error())
14
-    system_failure(mysql_error());
10
+  $result = db_query("SELECT m.id,concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.uid=$uid");
15 11
   DEBUG("Found ".@mysql_num_rows($result)." rows!");
16 12
   $accounts = array();
17 13
   if (@mysql_num_rows($result) > 0)
... ...
@@ -23,8 +19,7 @@ function mailaccounts($uid)
23 19
 function get_mailaccount($id)
24 20
 {
25 21
   $uid = (int) $uid;
26
-  $query = "SELECT concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.id=$id";
27
-  $result = mysql_query($query);
22
+  $result = db_query("SELECT concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.id=$id");
28 23
   DEBUG("Found ".mysql_num_rows($result)." rows!");
29 24
   $acc = mysql_fetch_object($result);
30 25
   $ret = array('account' => $acc->account, 'mailbox' => $acc->maildir,  'enabled' => ($acc->aktiv == 1));
... ...
@@ -46,7 +41,7 @@ function encrypt_mail_password($pw)
46 41
 function get_domain_id($domain) 
47 42
 {
48 43
   $domain = mysql_real_escape_string($domain);
49
-  $result = mysql_query("SELECT id FROM mail.v_domains WHERE domainname = '{$domain}';");
44
+  $result = db_query("SELECT id FROM mail.v_domains WHERE domainname = '{$domain}';");
50 45
   if (mysql_num_rows($result) == 0)
51 46
     return NULL;
52 47
   return mysql_fetch_object($result)->id;
... ...
@@ -82,12 +77,7 @@ function change_mailaccount($id, $arr)
82 77
     array_push($conditions, "`aktiv`=".($arr['enabled'] == 'Y' ? "1" : "0"));
83 78
 
84 79
 
85
-  $query = "UPDATE mail.mailaccounts SET ".implode(",", $conditions)." WHERE id='$id' LIMIT 1";
86
-  DEBUG("Query: ".$query);
87
-
88
-  mysql_query($query);
89
-  if (mysql_error())
90
-    system_failure('Beim &Auml;ndern der Account-Daten ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
80
+  db_query("UPDATE mail.mailaccounts SET ".implode(",", $conditions)." WHERE id='$id' LIMIT 1");
91 81
   logger("modules/imap/include/mailaccounts.php", "imap", "updated account »{$arr['account']}«");
92 82
 
93 83
 }
... ...
@@ -124,12 +114,7 @@ function create_mailaccount($arr)
124 114
     $values['aktiv'] = ($arr['enabled'] == 'Y' ? "1" : "0" );
125 115
 
126 116
 
127
-  $query = "INSERT INTO mail.mailaccounts (".implode(',', array_keys($values)).") VALUES (".implode(",", array_values($values)).")";
128
-  DEBUG("Query: ".$query);
129
-
130
-  mysql_query($query);
131
-  if (mysql_error())
132
-    system_failure('Beim Anlegen des Kontos ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
117
+  db_query("INSERT INTO mail.mailaccounts (".implode(',', array_keys($values)).") VALUES (".implode(",", array_values($values)).")");
133 118
   logger("modules/imap/include/mailaccounts.php", "imap", "created account »{$arr['account']}«");
134 119
 
135 120
 }
... ...
@@ -138,10 +123,7 @@ function create_mailaccount($arr)
138 123
 function delete_mailaccount($id)
139 124
 {
140 125
   $id = (int) $id;
141
-  $query = "DELETE FROM mail.mailaccounts WHERE id=".$id." LIMIT 1";
142
-  mysql_query($query);
143
-  if (mysql_error())
144
-    system_failure('Beim L&ouml;schen des Kontos ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
126
+  db_query("DELETE FROM mail.mailaccounts WHERE id=".$id." LIMIT 1");
145 127
   logger("modules/imap/include/mailaccounts.php", "imap", "deleted account »{$id}«");
146 128
 }
147 129
 
Browse code

Logging aktiviert

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@509 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on17/06/2007 08:58:53
Showing1 changed files
... ...
@@ -2,6 +2,7 @@
2 2
 
3 3
 require_once('inc/debug.php');
4 4
 require_once('inc/db_connect.php');
5
+require_once('inc/base.php');
5 6
 
6 7
 function mailaccounts($uid)
7 8
 {
... ...
@@ -87,6 +88,7 @@ function change_mailaccount($id, $arr)
87 88
   mysql_query($query);
88 89
   if (mysql_error())
89 90
     system_failure('Beim &Auml;ndern der Account-Daten ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
91
+  logger("modules/imap/include/mailaccounts.php", "imap", "updated account »{$arr['account']}«");
90 92
 
91 93
 }
92 94
 
... ...
@@ -128,6 +130,7 @@ function create_mailaccount($arr)
128 130
   mysql_query($query);
129 131
   if (mysql_error())
130 132
     system_failure('Beim Anlegen des Kontos ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
133
+  logger("modules/imap/include/mailaccounts.php", "imap", "created account »{$arr['account']}«");
131 134
 
132 135
 }
133 136
 
... ...
@@ -139,6 +142,7 @@ function delete_mailaccount($id)
139 142
   mysql_query($query);
140 143
   if (mysql_error())
141 144
     system_failure('Beim L&ouml;schen des Kontos ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
145
+  logger("modules/imap/include/mailaccounts.php", "imap", "deleted account »{$id}«");
142 146
 }
143 147
 
144 148
 
Browse code

pashword-hashing ohne Aufruf von externem Programm

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@448 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on03/05/2007 17:59:19
Showing1 changed files
... ...
@@ -31,23 +31,13 @@ function get_mailaccount($id)
31 31
   return $ret;
32 32
 }
33 33
 
34
-/*
35
-  FIXME: Hier auch die crypt-Funktion nehmen wie beim systemuser-Passwort
36
-*/
37 34
 function encrypt_mail_password($pw)
38 35
 {
39 36
   DEBUG("unencrypted PW: ".$pw);
40
-  $descriptorspec = array(
41
-    0 => array("pipe", "r"),
42
-    1 => array("pipe", "w")
43
-    );
44
-  $process = proc_open("/usr/local/bin/exec/userdbpw -md5", $descriptorspec, $pipes);
45
-  fwrite($pipes[0], $pw);
46
-  fclose($pipes[0]);
47
-  $encpw = fgets($pipes[1]);
37
+  require_once('inc/base.php');
38
+  $salt = random_string(8);
39
+  $encpw = crypt($pw, "\$1\${$salt}\$");
48 40
   DEBUG("encrypted PW: ".$encpw);
49
-  fclose($pipes[1]);
50
-  proc_close($process);
51 41
   return chop($encpw);
52 42
 
53 43
 }
Browse code

webinterface => /webinterface

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@362 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on27/03/2007 07:40:51
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,198 @@
1
+<?php
2
+
3
+require_once('inc/debug.php');
4
+require_once('inc/db_connect.php');
5
+
6
+function mailaccounts($uid)
7
+{
8
+  $uid = (int) $uid;
9
+  $query = "SELECT m.id,concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.uid=$uid";
10
+  DEBUG("SQL-Query: {$query}");
11
+  $result = @mysql_query($query);
12
+  if (mysql_error())
13
+    system_failure(mysql_error());
14
+  DEBUG("Found ".@mysql_num_rows($result)." rows!");
15
+  $accounts = array();
16
+  if (@mysql_num_rows($result) > 0)
17
+    while ($acc = @mysql_fetch_object($result))
18
+      array_push($accounts, array('id'=> $acc->id, 'account' => $acc->account, 'mailbox' => $acc->maildir, 'cryptpass' => $acc->cryptpass, 'enabled' => ($acc->aktiv == 1)));
19
+  return $accounts;
20
+}
21
+
22
+function get_mailaccount($id)
23
+{
24
+  $uid = (int) $uid;
25
+  $query = "SELECT concat_ws('@',`m`.`local`,if(isnull(`m`.`domain`),_utf8'schokokeks.org',`d`.`domainname`)) AS `account`, `m`.`password` AS `cryptpass`,`m`.`maildir` AS `maildir`,aktiv from (`mail`.`mailaccounts` `m` left join `mail`.`v_domains` `d` on((`d`.`id` = `m`.`domain`))) WHERE m.id=$id";
26
+  $result = mysql_query($query);
27
+  DEBUG("Found ".mysql_num_rows($result)." rows!");
28
+  $acc = mysql_fetch_object($result);
29
+  $ret = array('account' => $acc->account, 'mailbox' => $acc->maildir,  'enabled' => ($acc->aktiv == 1));
30
+  DEBUG(print_r($ret, true));
31
+  return $ret;
32
+}
33
+
34
+/*
35
+  FIXME: Hier auch die crypt-Funktion nehmen wie beim systemuser-Passwort
36
+*/
37
+function encrypt_mail_password($pw)
38
+{
39
+  DEBUG("unencrypted PW: ".$pw);
40
+  $descriptorspec = array(
41
+    0 => array("pipe", "r"),
42
+    1 => array("pipe", "w")
43
+    );
44
+  $process = proc_open("/usr/local/bin/exec/userdbpw -md5", $descriptorspec, $pipes);
45
+  fwrite($pipes[0], $pw);
46
+  fclose($pipes[0]);
47
+  $encpw = fgets($pipes[1]);
48
+  DEBUG("encrypted PW: ".$encpw);
49
+  fclose($pipes[1]);
50
+  proc_close($process);
51
+  return chop($encpw);
52
+
53
+}
54
+
55
+function get_domain_id($domain) 
56
+{
57
+  $domain = mysql_real_escape_string($domain);
58
+  $result = mysql_query("SELECT id FROM mail.v_domains WHERE domainname = '{$domain}';");
59
+  if (mysql_num_rows($result) == 0)
60
+    return NULL;
61
+  return mysql_fetch_object($result)->id;
62
+}
63
+
64
+
65
+function change_mailaccount($id, $arr)
66
+{
67
+  $id = (int) $id;
68
+  $conditions = array();
69
+
70
+  if (isset($arr['account']))
71
+  {
72
+    list($local, $domain) = explode('@', $arr['account'], 2);
73
+    $domainid = get_domain_id($domain);
74
+    if ($domainid == NULL)
75
+      $domainid='NULL';
76
+    array_push($conditions, "local='".mysql_real_escape_string($local)."', domain=$domainid");
77
+  }
78
+  if (isset($arr['mailbox']))
79
+    if ($arr['mailbox'] == '')
80
+      array_push($conditions, "`maildir`=NULL");
81
+    else
82
+      array_push($conditions, "`maildir`='".mysql_real_escape_string($arr['mailbox'])."'");
83
+
84
+  if (isset($arr['password']))
85
+  {
86
+    $encpw = encrypt_mail_password($arr['password']);
87
+    array_push($conditions, "`password`='$encpw'");
88
+  }
89
+
90
+  if (isset($arr['enabled']))
91
+    array_push($conditions, "`aktiv`=".($arr['enabled'] == 'Y' ? "1" : "0"));
92
+
93
+
94
+  $query = "UPDATE mail.mailaccounts SET ".implode(",", $conditions)." WHERE id='$id' LIMIT 1";
95
+  DEBUG("Query: ".$query);
96
+
97
+  mysql_query($query);
98
+  if (mysql_error())
99
+    system_failure('Beim &Auml;ndern der Account-Daten ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
100
+
101
+}
102
+
103
+function create_mailaccount($arr)
104
+{
105
+  $values = array();
106
+
107
+  if (($arr['account']) == '')
108
+    system_failure('empty account name!');
109
+
110
+  $values['uid'] = (int) $_SESSION['userinfo']['uid'];
111
+
112
+  list($local, $domain) = explode('@', $arr['account'], 2);
113
+  $domainid = get_domain_id($domain);
114
+  if ($domainid == NULL)
115
+    $domainid='NULL';
116
+  $values['local'] = "'".mysql_real_escape_string($local)."'";
117
+  $values['domain'] = $domainid;
118
+
119
+  if (isset($arr['mailbox']))
120
+    if ($arr['mailbox'] == '')
121
+      $values['maildir'] = 'NULL';
122
+    else
123
+      $values['maildir']= "'".mysql_real_escape_string($arr['mailbox'])."'";
124
+
125
+
126
+  if (isset($arr['password']))
127
+  {
128
+    $values['password'] = "'".encrypt_mail_password($arr['password'])."'";
129
+  }
130
+
131
+  if (isset($arr['enabled']))
132
+    $values['aktiv'] = ($arr['enabled'] == 'Y' ? "1" : "0" );
133
+
134
+
135
+  $query = "INSERT INTO mail.mailaccounts (".implode(',', array_keys($values)).") VALUES (".implode(",", array_values($values)).")";
136
+  DEBUG("Query: ".$query);
137
+
138
+  mysql_query($query);
139
+  if (mysql_error())
140
+    system_failure('Beim Anlegen des Kontos ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
141
+
142
+}
143
+
144
+
145
+function delete_mailaccount($id)
146
+{
147
+  $id = (int) $id;
148
+  $query = "DELETE FROM mail.mailaccounts WHERE id=".$id." LIMIT 1";
149
+  mysql_query($query);
150
+  if (mysql_error())
151
+    system_failure('Beim L&ouml;schen des Kontos ist ein Fehler aufgetreten. Sollte dies wiederholt vorkommen, senden Sie bitte die Fehlermeldung ('.mysql_error().') an einen Administrator.');
152
+}
153
+
154
+
155
+function check_valid($acc)
156
+{
157
+  $user = $_SESSION['userinfo'];
158
+  DEBUG("Account-data: ".print_r($acc, true));
159
+  DEBUG("User-data: ".print_r($user, true));
160
+  if ($acc['mailbox'] != '')
161
+  {
162
+    if (substr($acc['mailbox'], 0, strlen($user['homedir'])+1) != $user['homedir'].'/')
163
+      return "Die Mailbox muss innerhalb des Home-Verzeichnisses liegen. Sie haben \"".$acc['mailbox']."\" als Mailbox angegeben, Ihre Home-Verzeichnis ist \"".$user['homedir']."/\".";
164
+    if (strstr($acc['mailbox'], '..') or ! preg_match('/^[a-z0-9.\/_-]*$/', $acc['mailbox']))
165
+      return "Sie verwenden ungültige Zeichen in Ihrem Mailbox-Pfad.";
166
+  }
167
+
168
+  if ($acc['account'] == '' || strpos($acc['account'], '@') == 0)
169
+    return "Es wurde kein Benutzername angegeben!";
170
+  if (strpos($acc['account'], '@') === false)
171
+    return "Es wurde kein Domain-Teil im Account-Name angegeben. Account-Namen m&uuml;ssen einen Domain-Teil enthalten. Im Zweifel versuchen Sie &quot;@schokokeks.org&quot;.";
172
+
173
+  list($local, $domain) = explode('@', $acc['account'], 2);
174
+  require_once('domains.php');
175
+  $tmpdomains = get_domain_names($user['customerno'], $user['uid']);
176
+  $domains = array();
177
+  foreach ($tmpdomains as $dom)
178
+    array_push($domains, $dom['domainname']);
179
+
180
+  if (array_search($domain, $domains) === false)
181
+  {
182
+    if ($domain == "schokokeks.org")
183
+    {
184
+      if (substr($local, 0, strlen($user['username'])) != $user['username'] || ($acc['account'][strlen($user['username'])] != '-' && $acc['account'][strlen($user['username'])] != '@'))
185
+      {
186
+        return "Sie haben &quot;@schokokeks.org&quot; als Domain-Teil angegeben, aber der Benutzer-Teil beginnt nicht mit Ihrem Benutzername!";
187
+      }
188
+    }
189
+    else
190
+      return "Der angegebene Domain-Teil (".htmlentities($domain, ENT_QUOTES, "UTF-8").") ist nicht f&uuml;r Ihren Account eingetragen. Sollte dies ein Fehler sein, wenden sie sich bitte an einen Administrator!";
191
+  }
192
+
193
+  return '';
194
+}
195
+
196
+
197
+
198
+?>