910257ef95d34e6f889505c1dca6805b4d0d84fa
bernd Verwaltung von FTP-Accounts...

bernd authored 15 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)   {
bernd Auch FTP-User-Passwörter mi...

bernd authored 14 years ago

68)     if (defined("CRYPT_SHA512") && CRYPT_SHA512 == 1)
69)     {
70)       $rounds = rand(1000, 5000);
71)       $salt = "rounds=".$rounds."$".random_string(8);
72)       $password_hash = crypt($data['password'], "\$6\${$salt}\$");
73)     }
74)     else
75)     {
76)       $salt = random_string(8);
77)       $password_hash = crypt($data['password'], "\$1\${$salt}\$");
78)     }
bernd Verwaltung von FTP-Accounts...

bernd authored 15 years ago

79)     $password_query = "password='{$password_hash}', ";
80)   }
81)   elseif (! $id)
82)   {
83)     system_failure('Wenn Sie einen neuen Zugang anlegen, müssen Sie ein Passwort setzen');
84)   }
85)     
86)   
87)   if ($id)
88)     db_query("UPDATE system.ftpusers SET username='{$username}', {$password_query} homedir='{$homedir}', active='{$active}', server={$server} WHERE id={$id} AND uid={$uid} LIMIT 1");
89)   else
90)     db_query("INSERT INTO system.ftpusers (username, password, homedir, uid, active, server) VALUES ('{$username}', '{$password_hash}', '{$homedir}', '{$uid}', '{$active}', {$server})");
91) }
92) 
93) 
94) function delete_ftpuser($id)
95) {
96)   $uid = (int) $_SESSION['userinfo']['uid'];
97)   $id = (int) $id;
98)   db_query("DELETE FROM system.ftpusers WHERE id='{$id}' AND uid={$uid} LIMIT 1");
99) }
100) 
101) 
102) function get_gid($groupname)
103) {
104)   $groupname = mysql_real_escape_string($groupname);
105)   $result = db_query("SELECT gid FROM system.gruppen WHERE name='{$groupname}' LIMIT 1");
106)   if (mysql_num_rows($result) != 1)
107)     system_failure('cannot determine gid of ftpusers group');
108)   $a = mysql_fetch_assoc($result);
109)   $gid = (int) $a['gid'];
110)   if ($gid == 0)
111)     system_failure('error on determining gid of ftpusers group');
112)   return $gid;
113) }
114) 
115) 
116) function have_regular_ftp()
117) {
118)   $gid = get_gid('ftpusers');
119)   $uid = (int) $_SESSION['userinfo']['uid'];
120)   $result = db_query("SELECT * FROM system.gruppenzugehoerigkeit WHERE gid='$gid' AND uid='$uid'");
121)   return (mysql_num_rows($result) > 0);
122) }
123) 
124) 
125) function enable_regular_ftp()
126) {
bernd Security-enhancements und a...

bernd authored 15 years ago

127)   require_role(ROLE_SYSTEMUSER);