Modul ftpusers auf prepared statements umgestellt
Bernd Wurst

Bernd Wurst commited on 2014-02-06 09:18:29
Zeige 1 geänderte Dateien mit 33 Einfügungen und 31 Löschungen.

... ...
@@ -19,7 +19,7 @@ require_once('inc/base.php');
19 19
 function list_ftpusers()
20 20
 {
21 21
   $uid = (int) $_SESSION['userinfo']['uid'];
22
-  $result = db_query("SELECT id, username, homedir, active, forcessl FROM system.ftpusers WHERE uid=$uid");
22
+  $result = db_query("SELECT id, username, homedir, active, forcessl FROM system.ftpusers WHERE uid=?", array($uid));
23 23
   $ftpusers = array();
24 24
   while ($u = $result->fetch()) {
25 25
     $ftpusers[] = $u;
... ...
@@ -37,9 +37,8 @@ function load_ftpuser($id)
37 37
 {
38 38
   if ($id == 0)
39 39
     return empty_ftpuser();
40
-  $uid = (int) $_SESSION['userinfo']['uid'];
41
-  $id = (int) $id;
42
-  $result = db_query("SELECT id, username, password, homedir, active, forcessl, server FROM system.ftpusers WHERE uid={$uid} AND id='{$id}' LIMIT 1");
40
+  $args = array(":id" => $id, ":uid" => $_SESSION['userinfo']['uid']);
41
+  $result = db_query("SELECT id, username, password, homedir, active, forcessl, server FROM system.ftpusers WHERE uid=:uid AND id=:id", $args);
43 42
   if ($result->rowCount() != 1)
44 43
     system_failure("Fehler beim auslesen des Accounts");
45 44
   $account = $result->fetch();
... ...
@@ -50,21 +49,15 @@ function load_ftpuser($id)
50 49
 
51 50
 function save_ftpuser($data)
52 51
 {
53
-  $uid = (int) $_SESSION['userinfo']['uid'];
54
-  $id = (int) $data['id'];
55 52
   verify_input_username($data['username']);
56 53
   if ($data['username'] == '')
57 54
     system_failure('Bitte geben Sie eine Erweiterung für den Benutzernamen an!');
58
-  $username = $_SESSION['userinfo']['username'].'-'.$data['username'];
59 55
   $homedir = filter_input_general($data['homedir']);
60 56
   if (substr($homedir, 0, 1) == '/')
61 57
     $homedir = substr($homedir, 1);
62 58
   $homedir = $_SESSION['userinfo']['homedir'].'/'.$homedir;
63 59
   if (! in_homedir($homedir))
64 60
     system_failure('Pfad scheint nicht in Ihrem Home zu sein oder enthielt ungültige Zeichen.');
65
-  $active = ($data['active'] == 1 ? '1' : '0');
66
-
67
-  $forcessl = ($data['forcessl'] == 0 ? '0' : '1');
68 61
 
69 62
   $server = NULL;
70 63
   if ($data['server'] == my_server_id())
... ...
@@ -75,9 +68,8 @@ function save_ftpuser($data)
75 68
   {
76 69
     $server = (int) $data['server'];
77 70
   }
78
-  $server = maybe_null($server);
79 71
 
80
-  $password_query = '';
72
+  $set_password = false;
81 73
   $password_hash = '';
82 74
   if ($data['password'] != '')
83 75
   {
... ...
@@ -92,33 +84,46 @@ function save_ftpuser($data)
92 84
       $salt = random_string(8);
93 85
       $password_hash = crypt($data['password'], "\$1\${$salt}\$");
94 86
     }
87
+    $set_pasword = true;
95 88
     $password_query = "password='{$password_hash}', ";
96 89
   }
97
-  elseif (! $id)
90
+  elseif (! $data['id'])
98 91
   {
99 92
     system_failure('Wenn Sie einen neuen Zugang anlegen, müssen Sie ein Passwort setzen');
100 93
   }
101 94
     
95
+  $args = array(":username" => $_SESSION['userinfo']['username'].'-'.$data['username'],
96
+                ":homedir" => $homedir,
97
+                ":active" => ($data['active'] == 1 ? 1 : 0),
98
+                ":forcessl" => ($data['forcessl'] == 0 ? 0 : 1),
99
+                ":server" => $server,
100
+                ":uid" => $_SESSION['userinfo']['uid']);
102 101
   
103
-  if ($id)
104
-    db_query("UPDATE system.ftpusers SET username='{$username}', {$password_query} homedir='{$homedir}', active='{$active}', forcessl='{$forcessl}', server={$server} WHERE id={$id} AND uid={$uid} LIMIT 1");
105
-  else
106
-    db_query("INSERT INTO system.ftpusers (username, password, homedir, uid, active, forcessl, server) VALUES ('{$username}', '{$password_hash}', '{$homedir}', '{$uid}', '{$active}', '{$forcessl}', {$server})");
102
+  if ($data['id']) {
103
+    $args[":id"] = $data['id'];
104
+    if ($set_password) {
105
+      $args[':password'] = $password_hash;
106
+      db_query("UPDATE system.ftpusers SET username=:username, password=:password, homedir=:homedir, active=:active, forcessl=:forcessl, server=:server WHERE id=:id AND uid=:uid", $args);
107
+    } else {
108
+      db_query("UPDATE system.ftpusers SET username=:username, homedir=:homedir, active=:active, forcessl=:forcessl, server=:server WHERE id=:id AND uid=:uid", $args);
109
+    }
110
+  }  else {
111
+    $args[':password'] = $password_hash;
112
+    db_query("INSERT INTO system.ftpusers (username, password, homedir, uid, active, forcessl, server) VALUES (:username, :password, :homedir, :uid, :active, :forcessl, :server)", $args);
113
+  }
107 114
 }
108 115
 
109 116
 
110 117
 function delete_ftpuser($id)
111 118
 {
112
-  $uid = (int) $_SESSION['userinfo']['uid'];
113
-  $id = (int) $id;
114
-  db_query("DELETE FROM system.ftpusers WHERE id='{$id}' AND uid={$uid} LIMIT 1");
119
+  $args = array(":id" => $id, ":uid" => $_SESSION['userinfo']['uid']);
120
+  db_query("DELETE FROM system.ftpusers WHERE id=:id AND uid=:uid", $args);
115 121
 }
116 122
 
117 123
 
118 124
 function get_gid($groupname)
119 125
 {
120
-  $groupname = db_escape_string($groupname);
121
-  $result = db_query("SELECT gid FROM system.gruppen WHERE name='{$groupname}' LIMIT 1");
126
+  $result = db_query("SELECT gid FROM system.gruppen WHERE name=?", array($groupname));
122 127
   if ($result->rowCount() != 1)
123 128
     system_failure('cannot determine gid of ftpusers group');
124 129
   $a = $result->fetch();
... ...
@@ -131,9 +136,8 @@ function get_gid($groupname)
131 136
 
132 137
 function have_regular_ftp()
133 138
 {
134
-  $gid = get_gid('ftpusers');
135
-  $uid = (int) $_SESSION['userinfo']['uid'];
136
-  $result = db_query("SELECT * FROM system.gruppenzugehoerigkeit WHERE gid='$gid' AND uid='$uid'");
139
+  $args = array(":gid" => get_gid('ftpusers'), ":uid" => $_SESSION['userinfo']['uid']);
140
+  $result = db_query("SELECT * FROM system.gruppenzugehoerigkeit WHERE gid=:gid AND uid=:uid", $args);
137 141
   return ($result->rowCount() > 0);
138 142
 }
139 143
 
... ...
@@ -141,16 +145,14 @@ function have_regular_ftp()
141 145
 function enable_regular_ftp()
142 146
 {
143 147
   require_role(ROLE_SYSTEMUSER);
144
-  $gid = get_gid('ftpusers');
145
-  $uid = (int) $_SESSION['userinfo']['uid'];
146
-  db_query("REPLACE INTO system.gruppenzugehoerigkeit (gid, uid) VALUES ('$gid', '$uid')");
148
+  $args = array(":gid" => get_gid('ftpusers'), ":uid" => $_SESSION['userinfo']['uid']);
149
+  db_query("REPLACE INTO system.gruppenzugehoerigkeit (gid, uid) VALUES (:gid, :uid)", $args);
147 150
 }
148 151
 
149 152
 function disable_regular_ftp()
150 153
 {
151
-  $gid = get_gid('ftpusers');
152
-  $uid = (int) $_SESSION['userinfo']['uid'];
153
-  db_query("DELETE FROM system.gruppenzugehoerigkeit WHERE gid='$gid' AND uid='$uid'");
154
+  $args = array(":gid" => get_gid('ftpusers'), ":uid" => $_SESSION['userinfo']['uid']);
155
+  db_query("DELETE FROM system.gruppenzugehoerigkeit WHERE gid=:gid AND uid=:uid", $args);
154 156
 }
155 157
 
156 158
 
157 159