fad6059b7395ad283aaea0a305d630cb597b6838
bernd Verwaltung von FTP-Accounts...

bernd authored 14 years ago

1) <?php
2) 
3) require_once('inc/base.php');
4) 
5) function list_ftpusers()
6) {
7)   $uid = (int) $_SESSION['userinfo']['uid'];
8)   $result = db_query("SELECT id, username, homedir, active FROM system.ftpusers WHERE uid=$uid");
9)   $ftpusers = array();
10)   while ($u = mysql_fetch_assoc($result)) {
11)     $ftpusers[] = $u;
12)   }
13)   return $ftpusers;
14) }
15) 
16) function empty_ftpuser()
17) {
18)   $myserver = my_server_id();
19)   return array("id" => "0", "username" => "", "password" => "", "homedir" => "", "active" => "1", "server" => $myserver);
20) }
21) 
22) function load_ftpuser($id)
23) {
24)   if ($id == 0)
25)     return empty_ftpuser();
26)   $uid = (int) $_SESSION['userinfo']['uid'];
27)   $id = (int) $id;
28)   $result = db_query("SELECT id, username, password, homedir, active, server FROM system.ftpusers WHERE uid={$uid} AND id='{$id}' LIMIT 1");
29)   if (mysql_num_rows($result) != 1)
30)     system_failure("Fehler beim auslesen des Accounts");
31)   $account = mysql_fetch_assoc($result);
32)   DEBUG($account);
33)   return $account;
34) }
35) 
36) 
37) function save_ftpuser($data)
38) {
39)   $uid = (int) $_SESSION['userinfo']['uid'];
40)   $id = (int) $data['id'];
41)   verify_input_username($data['username']);
42)   if ($data['username'] == '')
43)     system_failure('Bitte geben Sie eine Erweiterung für den Benutzernamen an!');
44)   $username = $_SESSION['userinfo']['username'].'-'.$data['username'];
45)   $homedir = filter_input_general($data['homedir']);
46)   if (substr($homedir, 0, 1) == '/')
47)     $homedir = substr($homedir, 1);
48)   $homedir = $_SESSION['userinfo']['homedir'].'/'.$homedir;
49)   if (! in_homedir($homedir))
50)     system_failure('Pfad scheint nicht in Ihrem Home zu sein oder enthielt ungültige Zeichen.');
51)   $active = ($data['active'] == 1 ? '1' : '0');
52) 
53)   $server = NULL;
54)   if ($data['server'] == my_server_id())
55)   {
56)     $server = NULL;
57)   }
58)   elseif (in_array($data['server'], additional_servers()))
59)   {
60)     $server = (int) $data['server'];
61)   }
62)   $server = maybe_null($server);
63) 
64)   $password_query = '';
65)   $password_hash = '';
66)   if ($data['password'] != '')
67)   {
68)     $salt = random_string(8);
69)     $password_hash = crypt($data['password'], "\$1\${$salt}\$");
70)     $password_query = "password='{$password_hash}', ";
71)   }
72)   elseif (! $id)
73)   {
74)     system_failure('Wenn Sie einen neuen Zugang anlegen, müssen Sie ein Passwort setzen');
75)   }
76)     
77)   
78)   if ($id)
79)     db_query("UPDATE system.ftpusers SET username='{$username}', {$password_query} homedir='{$homedir}', active='{$active}', server={$server} WHERE id={$id} AND uid={$uid} LIMIT 1");
80)   else
81)     db_query("INSERT INTO system.ftpusers (username, password, homedir, uid, active, server) VALUES ('{$username}', '{$password_hash}', '{$homedir}', '{$uid}', '{$active}', {$server})");
82) }
83) 
84) 
85) function delete_ftpuser($id)
86) {
87)   $uid = (int) $_SESSION['userinfo']['uid'];
88)   $id = (int) $id;
89)   db_query("DELETE FROM system.ftpusers WHERE id='{$id}' AND uid={$uid} LIMIT 1");
90) }
91) 
92) 
93) function get_gid($groupname)
94) {
95)   $groupname = mysql_real_escape_string($groupname);
96)   $result = db_query("SELECT gid FROM system.gruppen WHERE name='{$groupname}' LIMIT 1");
97)   if (mysql_num_rows($result) != 1)
98)     system_failure('cannot determine gid of ftpusers group');
99)   $a = mysql_fetch_assoc($result);
100)   $gid = (int) $a['gid'];
101)   if ($gid == 0)
102)     system_failure('error on determining gid of ftpusers group');
103)   return $gid;
104) }
105) 
106) 
107) function have_regular_ftp()
108) {
109)   $gid = get_gid('ftpusers');
110)   $uid = (int) $_SESSION['userinfo']['uid'];
111)   $result = db_query("SELECT * FROM system.gruppenzugehoerigkeit WHERE gid='$gid' AND uid='$uid'");
112)   return (mysql_num_rows($result) > 0);
113) }
114) 
115) 
116) function enable_regular_ftp()
117) {
bernd Security-enhancements und a...

bernd authored 14 years ago

118)   require_role(ROLE_SYSTEMUSER);