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) {
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) {
|