3a072b88368ae6495a3fa9a8a4ff8e8ae87d6101
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

1) <?php
Bernd Wurst Added license tags for CC0,...

Bernd Wurst authored 12 years ago

2) /*
3) This file belongs to the Webinterface of schokokeks.org Hosting
4) 
Bernd Wurst Copyright year update

Bernd Wurst authored 6 years ago

5) Written 2008-2018 by schokokeks.org Hosting, namely
Bernd Wurst Added license tags for CC0,...

Bernd Wurst authored 12 years ago

6)   Bernd Wurst <bernd@schokokeks.org>
7)   Hanno Böck <hanno@schokokeks.org>
8) 
9) To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
10) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

11) You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see
Bernd Wurst Added license tags for CC0,...

Bernd Wurst authored 12 years ago

12) http://creativecommons.org/publicdomain/zero/1.0/
13) 
14) Nevertheless, in case you use a significant part of this code, we ask (but not require, see the license) that you keep the authors' names in place and return your changes to the public. We would be especially happy if you tell us what you're going to do with this code.
15) */
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

16) 
17) require_once("inc/base.php");
18) require_once("inc/error.php");
19) require_once("inc/security.php");
20) 
21) require_once('class/domain.php');
22) 
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

23) require_once("certs.php");
24) 
bernd Aliases editieren

bernd authored 17 years ago

25) 
Bernd Wurst read available php versions...

Bernd Wurst authored 6 years ago

26) function valid_php_versions() {
27)     $tags = explode(',', config('php_versions'));
28)     $ret = array();
29)     foreach ($tags as $t) {
30)         $key = str_replace('*', '', $t);
31)         $ret[$key] = array('major' => null, 'minor' => null, 'status' => 'regular');
32)         /* Wir nehmen an, dass unsere Tags immer an zweitletzter Stelle die Major-Version und 
33)         an letzter Stelle die Minor-Version enthalten */
34)         $ret[$key]['major'] = substr(str_replace('*', '', $t), -2, 1);
35)         $ret[$key]['minor'] = substr(str_replace('*', '', $t), -1, 1);
36)         if (substr($t, -1) === '*') {
37)             $ret[$key]['status'] = 'deprecated';
38)         }
39)     }
Bernd Wurst Bestandsschutz für eigentli...

Bernd Wurst authored 6 years ago

40)     /* Bis hier: aus der Datenbank ausgelesen */
Bernd Wurst read available php versions...

Bernd Wurst authored 6 years ago

41)     DEBUG($ret);
Bernd Wurst Bestandsschutz für eigentli...

Bernd Wurst authored 6 years ago

42)     /* Sonderfall: Wenn ein User noch Vhosts einer anderen Version hat, dann bleibt diese erlaubt */
43)     $list = list_vhosts();
44)     foreach ($list as $vhost) {
45)         if ($vhost['php'] && !array_key_exists($vhost['php'], $ret)) {
46)             $key = $vhost['php'];
47)             $ret = array($key => array('major' => null, 'minor' => null, 'status' => 'regular')) + $ret;
48)             /* Wir nehmen an, dass unsere Tags immer an zweitletzter Stelle die Major-Version und 
49)             an letzter Stelle die Minor-Version enthalten */
50)             $ret[$key]['major'] = substr($key, -2, 1);
51)             $ret[$key]['minor'] = substr($key, -1, 1);
52)             $ret[$key]['status'] = 'used';
53)         }
54)     }
Bernd Wurst read available php versions...

Bernd Wurst authored 6 years ago

55)     return $ret;
56) }
57) 
58) 
Bernd Wurst Traffic-Statistik im Webint...

Bernd Wurst authored 11 years ago

59) function traffic_month($vhost_id)
60) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

61)     $vhost_id = (int) $vhost_id;
62)     $result = db_query("SELECT sum(mb_in+mb_out) as mb FROM vhosts.traffic where date > CURDATE() - INTERVAL 1 MONTH AND vhost_id = ?", array($vhost_id));
63)     $data = $result->fetch();
64)     return $data['mb'];
Bernd Wurst Traffic-Statistik im Webint...

Bernd Wurst authored 11 years ago

65) }
66) 
bernd Zusätzlicher Haken für eige...

bernd authored 14 years ago

67) function autoipv6_address($vhost_id, $mode = 1)
bernd IPv6-Regelbetrieb vorbereit...

bernd authored 14 years ago

68) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

69)     $result = db_query("SELECT uid, v6_prefix FROM vhosts.v_vhost LEFT JOIN system.servers ON (servers.hostname = server) WHERE v_vhost.id=?", array($vhost_id));
70)     $data = $result->fetch();
71)     if (!$data['v6_prefix']) {
72)         warning("IPv6-Adresse nicht verfügbar, Server unterstützt kein IPv6");
73)         return "";
74)     }
75)     list($prefix, $null) = explode('/', $data['v6_prefix']);
76)     $vh = ':1';
77)     if ($mode == 2) {
78)         $vh = implode(':', str_split(sprintf("%08x", $vhost_id), 4));
79)     }
80)     $ipv6 = $prefix . sprintf("%04s", $data['uid']) . ':' . $vh;
81)     return $ipv6;
bernd IPv6-Regelbetrieb vorbereit...

bernd authored 14 years ago

82) }
83) 
84) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

85) function list_vhosts($filter=null)
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

86) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

87)     $uid = (int) $_SESSION['userinfo']['uid'];
88)     $query = "SELECT vh.id,fqdn,domain,docroot,docroot_is_default,php,cgi,vh.certid AS cert, vh.ssl, vh.options,logtype,errorlog,IF(dav.id IS NULL OR dav.type='svn', 0, 1) AS is_dav,IF(dav.id IS NULL OR dav.type='dav', 0, 1) AS is_svn, IF(webapps.id IS NULL, 0, 1) AS is_webapp, stats FROM vhosts.v_vhost AS vh LEFT JOIN vhosts.dav ON (dav.vhost=vh.id) LEFT JOIN vhosts.webapps ON (webapps.vhost = vh.id) WHERE uid=:uid ORDER BY domain,hostname";
89)     $params = array(":uid" => $uid);
90)     if ($filter) {
91)         $query = "SELECT vh.id,fqdn,domain,docroot,docroot_is_default,php,cgi,vh.certid AS cert, vh.ssl, vh.options,logtype,errorlog,IF(dav.id IS NULL OR dav.type='svn', 0, 1) AS is_dav,IF(dav.id IS NULL OR dav.type='dav', 0, 1) AS is_svn, IF(webapps.id IS NULL, 0, 1) AS is_webapp, stats FROM vhosts.v_vhost AS vh LEFT JOIN vhosts.dav ON (dav.vhost=vh.id) LEFT JOIN vhosts.webapps ON (webapps.vhost = vh.id) WHERE (vh.fqdn LIKE :filter OR vh.id IN (SELECT vhost FROM vhosts.v_alias WHERE fqdn LIKE :filter)) AND uid=:uid ORDER BY hostname";
92)         $params[":filter"] = "%$filter%";
93)     }
94)     $result = db_query($query, $params);
95)     $ret = array();
96)     while ($item = $result->fetch()) {
97)         array_push($ret, $item);
98)     }
99)     return $ret;
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

100) }
101) 
bernd IPv6-fähigkeit auch richtig...

bernd authored 14 years ago

102) function ipv6_possible($server)
bernd IPv6-Option nur anzeigen we...

bernd authored 14 years ago

103) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

104)     $args = array(":server" => $server);
105)     $result = db_query("SELECT v6_prefix FROM system.servers WHERE id=:server OR hostname=:server", $args);
106)     $line = $result->fetch();
107)     DEBUG("Server {$server} is v6-capable: ". ($line['v6_prefix'] != null));
108)     return ($line['v6_prefix'] != null);
bernd IPv6-Option nur anzeigen we...

bernd authored 14 years ago

109) }
110) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

111) function empty_vhost()
112) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

113)     $vhost['id'] = null;
114)     $vhost['hostname'] = null;
Hanno remove whitespace in empty...

Hanno authored 6 years ago

115) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

116)     $vhost['domain_id'] = null;
117)     $vhost['domain'] = null;
Hanno remove whitespace in empty...

Hanno authored 6 years ago

118) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

119)     $vhost['homedir'] = $_SESSION['userinfo']['homedir'];
120)     $vhost['docroot'] = null;
Bernd Wurst read available php versions...

Bernd Wurst authored 6 years ago

121)     $phpversions = explode(',', config('php_versions'));
122)     $vhost['php'] = end($phpversions);
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

123)     $vhost['cgi'] = 1;
124)     $vhost['ssl'] = null;
125)     $vhost['hsts'] = -1;
126)     $vhost['suexec_user'] = null;
127)     $vhost['server'] = null;
128)     $vhost['logtype'] = null;
129)     $vhost['errorlog'] = 0;
130)     $vhost['is_dav'] = 0;
131)     $vhost['is_svn'] = 0;
132)     $vhost['is_webapp'] = 0;
133)     $vhost['webapp_id'] = null;
Hanno remove whitespace in empty...

Hanno authored 6 years ago

134) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

135)     $vhost['cert'] = null;
136)     $vhost['certid'] = null;
137)     $vhost['ipv4'] = null;
138)     $vhost['autoipv6'] = 2; // 1 => Eine IP pro User, 2 => Eine IP pro VHost
139) 
140)     $vhost['options'] = 'forwardwww';
141)     $vhost['stats'] = null;
142)     return $vhost;
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

143) }
144) 
145) 
bernd Aliases editieren

bernd authored 17 years ago

146) function empty_alias()
147) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

148)     $alias['hostname'] = null;
Hanno remove whitespace in empty...

Hanno authored 6 years ago

149) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

150)     $alias['domain_id'] = -1;
151)     $alias['domain'] = $_SESSION['userinfo']['username'].'.'.config('masterdomain');
Hanno remove whitespace in empty...

Hanno authored 6 years ago

152) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

153)     $alias['options'] = null;
154)     return $alias;
bernd Aliases editieren

bernd authored 17 years ago

155) }
156) 
157) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

158) function userdomain()
159) {
160)     if (config('user_vhosts_domain') === null) {
161)         return null;
162)     }
163)     $result = db_query("SELECT id,name FROM vhosts.v_domains WHERE name=:dom", array(":dom" => config('user_vhosts_domain')));
164)     $res = $result->fetch();
165)     return $res;
Bernd Wurst Ermögliche dem user Hosts m...

Bernd Wurst authored 10 years ago

166) }
167) 
Bernd Wurst Zeige Userdomains nur noch...

Bernd Wurst authored 9 years ago

168) function user_uses_userdomain()
169) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

170)     global $config;
171)     $uid = (int) $_SESSION['userinfo']['uid'];
172)     $userdomain = userdomain();
173)     $result = db_query("SELECT id FROM vhosts.vhost WHERE domain=:domid AND user=:uid", array(":uid" => $uid, ":domid" => $userdomain['id']));
174)     if ($result->rowCount() > 0) {
175)         DEBUG("User hat ".$result->rowCount()." Domains *.schokokeks.net");
176)         return true;
177)     }
178)     DEBUG("User hat keine Domains *.schokokeks.net");
179)     return false;
Bernd Wurst Zeige Userdomains nur noch...

Bernd Wurst authored 9 years ago

180) }
Bernd Wurst Ermögliche dem user Hosts m...

Bernd Wurst authored 10 years ago

181) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

182) function domainselect($selected = null, $selectattribute = '')
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

183) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

184)     global $domainlist, $config;
185)     if ($domainlist == null) {
186)         $domainlist = get_domain_list(
187)         $_SESSION['customerinfo']['customerno'],
188)                                   $_SESSION['userinfo']['uid']
189)     );
190)     }
191)     $selected = (int) $selected;
192) 
193)     $ret = '<select id="domain" name="domain" size="1" '.$selectattribute.' >';
194)     $found = false;
195)     foreach ($domainlist as $dom) {
196)         $s = '';
197)         if ($selected == $dom->id) {
198)             $s = ' selected="selected" ';
199)             $found = true;
200)         }
201)         $ret .= "<option value=\"{$dom->id}\"{$s}>{$dom->fqdn}</option>\n";
202)     }
203)     $userdomain = userdomain();
204)     $user_needs_userdomain = $userdomain && (count($domainlist) == 0 || user_uses_userdomain());
205)     $user_needs_userdomain = $user_needs_userdomain || ($selected == -2);
206)     if (count($domainlist) > 0 && $user_needs_userdomain) {
207)         $ret .= ' <option value="" disabled="disabled">--------------------------------</option>';
208)     }
209)     if ($userdomain && (count($domainlist) == 0 || user_uses_userdomain())) {
210)         $s = ($selected == -1 ? ' selected="selected"' : '');
211)         $ret .= ' <option value="-1"'.$s.'>'.$_SESSION['userinfo']['username'].'.'.$userdomain['name'].'</option>';
212)     }
213)     if ($selected == -2) {
214)         $s = ($selected == -2 ? ' selected="selected"' : '');
215)         $ret .= ' <option value="-2"'.$s.'>'.$_SESSION['userinfo']['username'].'.'.config('masterdomain').' (Bitte nicht mehr benutzen!)</option>';
216)         if ($selected > 0 and ! $found) {
217)             system_failure("Hier wird eine Domain benutzt, die nicht zu diesem Benutzeraccount gehört. Bearbeiten würde Daten zerstören!");
218)         }
219)     }
220)     $ret .= '</select>';
221)     return $ret;
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

222) }
223) 
224) 
225) 
226) function get_vhost_details($id)
227) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

228)     DEBUG("Lese #{$id}...");
229)     $id = (int) $id;
230)     $uid = (int) $_SESSION['userinfo']['uid'];
231)     $result = db_query("SELECT vh.*,IF(dav.id IS NULL OR dav.type='svn', 0, 1) AS is_dav,IF(dav.id IS NULL OR dav.type='dav', 0, 1) AS is_svn, IF(webapps.id IS NULL, 0, 1) AS is_webapp FROM vhosts.v_vhost AS vh LEFT JOIN vhosts.dav ON (dav.vhost=vh.id) LEFT JOIN vhosts.webapps ON (webapps.vhost = vh.id) WHERE uid=:uid AND vh.id=:id", array(":uid" => $uid, ":id" => $id));
232)     if ($result->rowCount() != 1) {
233)         system_failure('Interner Fehler beim Auslesen der Daten');
234)     }
235) 
236)     $ret = $result->fetch();
237) 
238)     if ($ret['domain_id'] === null) {
239)         $ret['domain_id'] = -2;
240)     }
241)     $ret['cert'] = $ret['certid'];
242)     $userdomain = userdomain();
243)     if ($ret['domain_id'] == $userdomain['id']) {
244)         $user = $_SESSION['userinfo']['username'];
245)         $ret['domain_id'] = -1;
246)         if ($ret['hostname'] == $user) {
247)             $ret['hostname'] = null;
248)         } elseif (substr($ret['hostname'], -strlen($user), strlen($user)) == $user) {
249)             $ret['hostname'] = substr($ret['hostname'], 0, -strlen($user)-1); // Punkt mit entfernen!
250)         } else {
251)             system_failure('Userdomain ohne Username!');
252)         }
253)     }
254)     if ($ret['hsts'] === null) {
255)         DEBUG('HSTS: '.$ret['hsts']);
256)         $ret['hsts'] = -1;
257)     }
258)     $ret['server'] = $ret['server_id'];
259)     DEBUG($ret);
260)     return $ret;
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

261) }
262) 
263) 
264) function get_aliases($vhost)
265) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

266)     $result = db_query("SELECT id,fqdn,options FROM vhosts.v_alias WHERE vhost=?", array($vhost));
267)     $ret = array();
268)     while ($item = $result->fetch()) {
269)         array_push($ret, $item);
270)     }
271)     return $ret;
bernd Aliases editieren

bernd authored 17 years ago

272) }
273) 
274) 
275) 
276) function get_all_aliases($vhost)
277) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

278)     //$vhost = get_vhost_details( (int) $vhost );
279)     $aliases = get_aliases($vhost['id']);
280)     $ret = array();
281)     if (strstr($vhost['options'], 'aliaswww')) {
282)         array_push($ret, array('id' => 'www', 'fqdn' => 'www.'.$vhost['fqdn'], 'options' => (strstr($vhost['options'], 'forwardwww') ? 'forward' : null)));
283)     }
284)     foreach ($aliases as $item) {
285)         array_push($ret, $item);
286)         if (strstr($item['options'], 'aliaswww')) {
287)             array_push($ret, array('id' => 'www_'.$item['id'], 'fqdn' => 'www.'.$item['fqdn'], 'options' => (strstr($item['options'], 'forward') ? 'forward' : null)));
288)         }
289)     }
290)     return $ret;
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

291) }
292) 
bernd Aliases editieren

bernd authored 17 years ago

293) 
bernd Webapps implementiert

bernd authored 17 years ago

294) function list_available_webapps()
295) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

296)     $result = db_query("SELECT id,displayname FROM vhosts.global_webapps");
297)     $ret = array();
298)     while ($item = $result->fetch()) {
299)         array_push($ret, $item);
300)     }
301)     return $ret;
bernd Webapps implementiert

bernd authored 17 years ago

302) }
303) 
304) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

305) function delete_vhost($id)
306) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

307)     $id = (int) $id;
308)     if ($id == 0) {
309)         system_failure("id == 0");
310)     }
311)     $vhost = get_vhost_details($id);
312)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Removing vhost #'.$id.' ('.$vhost['hostname'].'.'.$vhost['domain'].')');
313)     db_query("DELETE FROM vhosts.vhost WHERE id=?", array($vhost['id']));
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

314) }
315) 
bernd Aliases editieren

bernd authored 17 years ago

316) 
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

317) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

318) function make_svn_vhost($id)
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

319) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

320)     $id = (int) $id;
321)     if ($id == 0) {
322)         system_failure("id == 0");
323)     }
324)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Converting vhost #'.$id.' to SVN');
325)     db_query("REPLACE INTO vhosts.dav (vhost, type) VALUES (?, 'svn')", array($id));
326)     db_query("DELETE FROM vhosts.webapps WHERE vhost=?", array($id));
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

327) }
328) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

329) function make_dav_vhost($id)
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

330) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

331)     $id = (int) $id;
332)     if ($id == 0) {
333)         system_failure("id == 0");
334)     }
335)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Converting vhost #'.$id.' to WebDAV');
336)     db_query("REPLACE INTO vhosts.dav (vhost, type, options) VALUES (?, 'dav', 'nouserfile')", array($id));
337)     db_query("DELETE FROM vhosts.webapps WHERE vhost=?", array($id));
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

338) }
339) 
bernd Webapps implementiert

bernd authored 17 years ago

340) function make_regular_vhost($id)
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

341) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

342)     $id = (int) $id;
343)     if ($id == 0) {
344)         system_failure("id == 0");
345)     }
346)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Converting vhost #'.$id.' to regular');
347)     db_query("DELETE FROM vhosts.dav WHERE vhost=?", array($id));
348)     db_query("DELETE FROM vhosts.webapps WHERE vhost=?", array($id));
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

349) }
350) 
351) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

352) function make_webapp_vhost($id, $webapp)
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

353) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

354)     $id = (int) $id;
355)     $webapp = (int) $webapp;
356)     if ($id == 0) {
357)         system_failure("id == 0");
358)     }
359)     $result = db_query("SELECT displayname FROM vhosts.global_webapps WHERE id=?", array($webapp));
360)     if ($result->rowCount() == 0) {
361)         system_failure("webapp-id invalid");
362)     }
363)     $webapp_name = $result->fetch(PDO::FETCH_OBJ)->displayname;
364)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Setting up webapp '.$webapp_name.' on vhost #'.$id);
365)     db_query("REPLACE INTO vhosts.webapps (vhost, webapp) VALUES (?, ?)", array($id, $webapp));
366)     mail('webapps-setup@schokokeks.org', 'setup', 'setup');
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

367) }
368) 
369) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

370) function check_hostname_collision($hostname, $domain)
Bernd Wurst Kollissionsprüfung auf Alia...

Bernd Wurst authored 11 years ago

371) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

372)     $uid = (int) $_SESSION['userinfo']['uid'];
373)     # Neuer vhost => Prüfe Duplikat
374)     $args = array(":hostname" => $hostname, ":domain" => $domain, ":uid" => $uid);
375)     $domaincheck = "domain=:domain";
376)     if ($domain == -1) {
377)         $userdomain = userdomain();
378)         if ($hostname) {
379)             $hostname .= ".".$_SESSION['userinfo']['username'];
380)         }
381)         $args[":domain"] = $userdomain['id'];
382)     }
383)     if ($domain == -2) {
384)         unset($args[":domain"]);
385)         $domaincheck = "domain IS NULL";
386)     }
387)     $hostnamecheck = "hostname=:hostname";
388)     if (! $hostname) {
389)         $hostnamecheck = "hostname IS NULL";
390)         unset($args[":hostname"]);
391)     }
392)     $result = db_query("SELECT id FROM vhosts.vhost WHERE {$hostnamecheck} AND {$domaincheck} AND user=:uid", $args);
393)     if ($result->rowCount() > 0) {
394)         system_failure('Eine Konfiguration mit diesem Namen gibt es bereits.');
395)     }
396)     if ($domain <= -1) {
397)         return ;
398)     }
399)     unset($args[":uid"]);
400)     $result = db_query("SELECT id, vhost FROM vhosts.v_alias WHERE {$hostnamecheck} AND {$domaincheck}", $args);
401)     if ($result->rowCount() > 0) {
402)         $data = $result->fetch();
403)         $vh = get_vhost_details($data['vhost']);
404)         system_failure('Dieser Hostname ist bereits als Alias für »'.$vh['fqdn'].'« eingerichtet');
405)     }
Bernd Wurst Kollissionsprüfung auf Alia...

Bernd Wurst authored 11 years ago

406) }
407) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

408) function save_vhost($vhost)
409) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

410)     if (! is_array($vhost)) {
411)         system_failure('$vhost kein array!');
412)     }
413)     $id = (int) $vhost['id'];
414)     $hostname = $vhost['hostname'];
415)     $domain = (int) $vhost['domain_id'];
416)     if ($domain == 0) {
417)         system_failure('$domain == 0');
418)     }
419)     if ($vhost['domain_id'] == -2) {
420)         $domain = null;
421)     }
422)     if ($id == 0) {
423)         check_hostname_collision($vhost['hostname'], $vhost['domain_id']);
424)     }
425)     $hsts = (int) $vhost['hsts'];
426)     if ($hsts < 0) {
427)         $hsts = null;
Bernd Wurst * Weitere Module auf prepar...

Bernd Wurst authored 10 years ago

428)     }
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

429)     $suexec_user = null;
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

430) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

431)     $available_suexec = available_suexec_users();
432)     foreach ($available_suexec as $u) {
433)         if ($u['uid'] == $vhost['suexec_user']) {
434)             $suexec_user = $u['uid'];
435)         }
436)     }
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

437) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

438)     $server = null;
439)     $available_servers = additional_servers();
440)     if (in_array($vhost['server'], $available_servers)) {
441)         $server = (int) $vhost['server'];
442)     }
443)     if ($server == my_server_id()) {
444)         $server = null;
445)     }
446) 
447)     if ($vhost['is_svn']) {
448)         if (! $vhost['options']) {
449)             $vhost['options']='nodocroot';
450)         } else {
451)             $vhost['options'].=",nodocroot";
452)         }
453)     }
454) 
455)     $cert = null;
456)     $certs = user_certs();
457)     foreach ($certs as $c) {
458)         if ($c['id'] == $vhost['cert']) {
459)             $cert = $c['id'];
460)         }
461)     }
462) 
463)     $ipv4 = null;
464)     $ipv4_avail = user_ipaddrs();
465)     if (in_array($vhost['ipv4'], $ipv4_avail)) {
466)         $ipv4 = $vhost['ipv4'];
467)     }
bernd IPv6

bernd authored 14 years ago

468) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

469)     $autoipv6 = 1;
470)     if ($vhost['autoipv6'] == 0 ||  $vhost['autoipv6'] == 2) {
471)         $autoipv6 = $vhost['autoipv6'];
472)     }
bernd IPv6

bernd authored 14 years ago

473) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

474)     if (!($vhost['ssl'] == 'forward' || $vhost['ssl'] == 'http' ||
Bernd Wurst Typo korrigiert

Bernd Wurst authored 10 years ago

475)         $vhost['ssl'] == 'https')) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

476)         $vhost['ssl'] = null;
477)     }
Bernd Wurst Setze SSL-Option beim erste...

Bernd Wurst authored 10 years ago

478) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

479)     $args = array(":hostname" => ($hostname ? $hostname : null),
Bernd Wurst * Weitere Module auf prepar...

Bernd Wurst authored 10 years ago

480)                 ":domain" => $domain,
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

481)                 ":docroot" => ($vhost['docroot'] ? $vhost['docroot'] : null),
Bernd Wurst * Weitere Module auf prepar...

Bernd Wurst authored 10 years ago

482)                 ":php" => $vhost['php'],
483)                 ":cgi" => ($vhost['cgi'] == 1 ? 1 : 0),
484)                 ":ssl" => $vhost['ssl'],
485)                 ":hsts" => $hsts,
486)                 ":suexec_user" => $suexec_user,
487)                 ":server" => $server,
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

488)                 ":logtype" => ($vhost['logtype'] ? $vhost['logtype'] : null),
Bernd Wurst * Weitere Module auf prepar...

Bernd Wurst authored 10 years ago

489)                 ":errorlog" => (int) $vhost['errorlog'],
490)                 ":cert" => $cert,
491)                 ":ipv4" => $ipv4,
492)                 ":autoipv6" => $autoipv6,
Bernd Wurst $vhost["options"] darf in d...

Bernd Wurst authored 10 years ago

493)                 ":options" => $vhost['options'],
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

494)                 ":stats" => ($vhost['stats'] ? $vhost['stats'] : null),
Bernd Wurst * Weitere Module auf prepar...

Bernd Wurst authored 10 years ago

495)                 ":id" => $id);
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

496)     if ($id != 0) {
497)         logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Updating vhost #'.$id.' ('.$vhost['hostname'].'.'.$vhost['domain'].')');
498)         db_query("UPDATE vhosts.vhost SET hostname=:hostname, domain=:domain, docroot=:docroot, php=:php, cgi=:cgi, `ssl`=:ssl, hsts=:hsts, `suexec_user`=:suexec_user, `server`=:server, logtype=:logtype, errorlog=:errorlog, certid=:cert, ipv4=:ipv4, autoipv6=:autoipv6, options=:options, stats=:stats WHERE id=:id", $args);
499)     } else {
500)         $args[":user"] = $_SESSION['userinfo']['uid'];
501)         unset($args[":id"]);
502)         logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Creating vhost '.$vhost['hostname'].'.'.$vhost['domain'].'');
503)         $result = db_query("INSERT INTO vhosts.vhost (user, hostname, domain, docroot, php, cgi, `ssl`, hsts, `suexec_user`, `server`, logtype, errorlog, certid, ipv4, autoipv6, options, stats) VALUES ".
Bernd Wurst * Weitere Module auf prepar...

Bernd Wurst authored 10 years ago

504)                        "(:user, :hostname, :domain, :docroot, :php, :cgi, :ssl, :hsts, :suexec_user, :server, :logtype, :errorlog, :cert, :ipv4, :autoipv6, :options, :stats)", $args);
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

505)         $id = db_insert_id();
506)     }
507)     $oldvhost = get_vhost_details($id);
508)     /*
509)       these vars may be 0 or 1.
510)       So newval > oldval means that it has been switched on yet.
511)     */
512)     if ($vhost['is_dav'] > $oldvhost['is_dav']) {
513)         make_dav_vhost($id);
514)     } elseif ($vhost['is_svn'] > $oldvhost['is_svn']) {
515)         make_svn_vhost($id);
516)     } elseif ($vhost['is_webapp'] > $oldvhost['is_webapp']) {
517)         make_webapp_vhost($id, $vhost['webapp_id']);
518)     } elseif ($vhost['is_dav'] == 0 && $vhost['is_svn'] == 0 && $vhost['is_webapp'] == 0) {
519)         make_regular_vhost($id);
520)     }
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

521) }
522) 
523) 
bernd Aliases editieren

bernd authored 17 years ago

524) function get_alias_details($id)
525) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

526)     $id = (int) $id;
527)     $uid = (int) $_SESSION['userinfo']['uid'];
528)     $result = db_query("SELECT * FROM vhosts.v_alias WHERE id=?", array($id));
Hanno remove whitespace in empty...

Hanno authored 6 years ago

529) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

530)     if ($result->rowCount() != 1) {
531)         system_failure('Interner Fehler beim Auslesen der Alias-Daten');
532)     }
Hanno remove whitespace in empty...

Hanno authored 6 years ago

533) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

534)     $alias = $result->fetch();
Hanno remove whitespace in empty...

Hanno authored 6 years ago

535) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

536)     if ($alias['domain_id'] == null) {
537)         $alias['domain_id'] = -1;
538)     }
bernd Aliases editieren

bernd authored 17 years ago

539) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

540)     /* Das bewirkt, dass nur die eigenen Aliase gesehen werden können */
541)     get_vhost_details((int) $alias['vhost']);
bernd Aliases editieren

bernd authored 17 years ago

542) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

543)     return $alias;
bernd Aliases editieren

bernd authored 17 years ago

544) }
545) 
546) 
547) function delete_alias($id)
548) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

549)     $id = (int) $id;
550)     $alias = get_alias_details($id);
bernd Aliases editieren

bernd authored 17 years ago

551) 
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

552)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'aliases', 'Removing alias #'.$id.' ('.$alias['hostname'].'.'.$alias['domain'].')');
553)     db_query("DELETE FROM vhosts.alias WHERE id=?", array($id));
bernd Aliases editieren

bernd authored 17 years ago

554) }
555) 
556) function save_alias($alias)
557) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

558)     if (! is_array($alias)) {
559)         system_failure('$alias kein array!');
560)     }
561)     $id = (isset($alias['id']) ? (int) $alias['id'] : 0);
562)     $domain = (int) $alias['domain_id'];
563)     if ($domain == 0) {
564)         system_failure('$domain == 0');
565)     }
566)     if ($alias['domain_id'] == -2) {
567)         $domain = null;
568)     }
569)     $vhost = get_vhost_details((int) $alias['vhost']);
570)     if (! $alias['hostname']) {
571)         $alias['hostname'] = null;
572)     }
573)     $args = array(":hostname" => $alias['hostname'],
Bernd Wurst * Weitere Module auf prepar...

Bernd Wurst authored 10 years ago

574)                 ":domain" => $domain,
575)                 ":vhost" => $vhost['id'],
576)                 ":options" => $alias['options'],
577)                 ":id" => $id);
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

578)     if ($id == 0) {
579)         unset($args[":id"]);
580)         logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'aliases', 'Creating alias '.$alias['hostname'].'.'.$alias['domain'].' for VHost '.$vhost['id']);
581)         db_query("INSERT INTO vhosts.alias (hostname, domain, vhost, options) VALUES (:hostname, :domain, :vhost, :options)", $args);
582)     } else {
583)         unset($args[":vhost"]);
584)         logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'aliases', 'Updating alias #'.$id.' ('.$alias['hostname'].'.'.$alias['domain'].')');
585)         db_query("UPDATE vhosts.alias SET hostname=:hostname, domain=:domain, options=:options WHERE id=:id", $args);
586)     }
bernd Aliases editieren

bernd authored 17 years ago

587) }
588) 
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

589) 
bernd SuExec-Useraccount einstellbar

bernd authored 14 years ago

590) function available_suexec_users()
591) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

592)     $uid = (int) $_SESSION['userinfo']['uid'];
593)     $result = db_query("SELECT uid, username FROM vhosts.available_users LEFT JOIN vhosts.v_useraccounts ON (uid = suexec_user) WHERE mainuser=?", array($uid));
594)     $ret = array();
595)     while ($i = $result->fetch()) {
596)         $ret[] = $i;
597)     }
598)     DEBUG('available suexec-users:');
599)     DEBUG($ret);
600)     return $ret;
bernd SuExec-Useraccount einstellbar

bernd authored 14 years ago

601) }
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

602) 
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

603) 
604) function user_ipaddrs()
605) {
Hanno Fix coding style with php-c...

Hanno authored 6 years ago

606)     $uid = (int) $_SESSION['userinfo']['uid'];
607)     $result = db_query("SELECT ipaddr FROM vhosts.ipaddr_available WHERE uid=?", array($uid));
608)     $ret = array();
609)     while ($i = $result->fetch()) {
610)         $ret[] = $i['ipaddr'];
611)     }
612)     DEBUG($ret);
613)     return $ret;