926f25dbc24be93a66113cbe3fcfdc316dc22981
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

1) <?php
2) 
3) require_once("inc/base.php");
4) require_once("inc/error.php");
5) require_once("inc/security.php");
6) 
7) require_once('class/domain.php');
8) 
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

9) require_once("certs.php");
10) 
bernd Aliases editieren

bernd authored 17 years ago

11) 
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

12) function list_vhosts()
13) {
14)   $uid = (int) $_SESSION['userinfo']['uid'];
bernd CGI abschaltbar

bernd authored 14 years ago

15)   $result = db_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");
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

16)   $ret = array();
17)   while ($item = mysql_fetch_assoc($result))
18)     array_push($ret, $item);
19)   return $ret;
20) }
21) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

22) function empty_vhost()
23) {
bernd neue Bilder, mehr SSL-Zerti...

bernd authored 15 years ago

24)   $vhost['id'] = NULL;
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

25)   $vhost['hostname'] = '';
26)   
bernd domain = NULL ==> user-subd...

bernd authored 17 years ago

27)   $vhost['domain_id'] = -1;
bernd Mehr config-optionen und co...

bernd authored 15 years ago

28)   $vhost['domain'] = $_SESSION['userinfo']['username'].'.'.config('masterdomain');
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

29)   
30)   $vhost['homedir'] = $_SESSION['userinfo']['homedir'];
31)   $vhost['docroot'] = NULL;
bernd PHP 5.3 als Default

bernd authored 14 years ago

32)   $vhost['php'] = 'php53';
bernd CGI abschaltbar

bernd authored 14 years ago

33)   $vhost['cgi'] = 1;
bernd SSL auch über webinterface...

bernd authored 17 years ago

34)   $vhost['ssl'] = NULL;
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

35)   $vhost['logtype'] = NULL;
bernd Einige notices (undefined i...

bernd authored 15 years ago

36)   $vhost['errorlog'] = 0;
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

37)   $vhost['is_dav'] = 0;
38)   $vhost['is_svn'] = 0;
39)   $vhost['is_webapp'] = 0;
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

40)   $vhost['webapp_id'] = NULL;
41)   
42)   $vhost['cert'] = NULL;
bernd Einige notices (undefined i...

bernd authored 15 years ago

43)   $vhost['certid'] = NULL;
bernd IP-Adressen aktivieren

bernd authored 15 years ago

44)   $vhost['ipv4'] = NULL;
bernd IPv6

bernd authored 14 years ago

45)   $vhost['autoipv6'] = 0;
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

46) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

47)   $vhost['options'] = '';
bernd Webalizer/Statistik-Funktio...

bernd authored 14 years ago

48)   $vhost['stats'] = NULL;
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

49)   return $vhost;
50) }
51) 
52) 
bernd Aliases editieren

bernd authored 17 years ago

53) function empty_alias()
54) {
55)   $alias['hostname'] = '';
56)   
bernd domain = NULL ==> user-subd...

bernd authored 17 years ago

57)   $alias['domain_id'] = -1;
bernd Mehr config-optionen und co...

bernd authored 15 years ago

58)   $alias['domain'] = $_SESSION['userinfo']['username'].'.'.config('masterdomain');
bernd Aliases editieren

bernd authored 17 years ago

59)   
60)   $alias['options'] = '';
61)   return $alias;
62) }
63) 
64) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

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

bernd authored 17 years ago

66) {
bernd Mehr config-optionen und co...

bernd authored 15 years ago

67)   global $domainlist, $config;
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

68)   if ($domainlist == NULL)
69)     $domainlist = get_domain_list($_SESSION['customerinfo']['customerno'],
70)                                   $_SESSION['userinfo']['uid']);
71)   $selected = (int) $selected;
72) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

73)   $ret = '<select id="domain" name="domain" size="1" '.$selectattribute.' >';
bernd Mehr config-optionen und co...

bernd authored 15 years ago

74)   $ret .= ' <option value="-1">'.$_SESSION['userinfo']['username'].'.'.config('masterdomain').'</option>';
bernd domain = NULL ==> user-subd...

bernd authored 17 years ago

75)   $ret .= ' <option value="" disabled="disabled">--------------------------------</option>';
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

76)   foreach ($domainlist as $dom)
77)   {
bernd Aliases editieren

bernd authored 17 years ago

78)     $s = ($selected == $dom->id) ? ' selected="selected" ': '';
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

79)     $ret .= "<option value=\"{$dom->id}\"{$s}>{$dom->fqdn}</option>\n";
80)   }
81)   $ret .= '</select>';
82)   return $ret;
83) }
84) 
85) 
86) 
87) function get_vhost_details($id)
88) {
89)   $id = (int) $id;
90)   $uid = (int) $_SESSION['userinfo']['uid'];
bernd VHosts-Modul mit neuem Layo...

bernd authored 17 years ago

91)   $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}");
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

92)   if (mysql_num_rows($result) != 1)
93)     system_failure('Interner Fehler beim Auslesen der Daten');
94) 
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

95)   $ret = mysql_fetch_assoc($result);
96)   DEBUG($ret);
97)   return $ret;
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

98) }
99) 
100) 
101) function get_aliases($vhost)
102) {
103)   $result = db_query("SELECT id,fqdn,options FROM vhosts.v_alias WHERE vhost={$vhost}");
104)   $ret = array();
bernd Aliases editieren

bernd authored 17 years ago

105)   while ($item = mysql_fetch_assoc($result)) {
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

106)     array_push($ret, $item);
bernd Aliases editieren

bernd authored 17 years ago

107)   }
108)   return $ret;
109) }
110) 
111) 
112) 
113) function get_all_aliases($vhost)
114) {
bernd Weniger Datenbankzugriffe b...

bernd authored 14 years ago

115)   //$vhost = get_vhost_details( (int) $vhost );
bernd Aliases editieren

bernd authored 17 years ago

116)   $aliases = get_aliases($vhost['id']);
117)   $ret = array();
118)   if (strstr($vhost['options'], 'aliaswww')) {
119)     array_push($ret, array('id' => 'www', 'fqdn' => 'www.'.$vhost['fqdn'], 'options' => (strstr($vhost['options'], 'forwardwww') ? 'forward' : '')));
120)   }
121)   foreach ($aliases as $item) {
122)     array_push($ret, $item);
123)     if (strstr($item['options'], 'aliaswww')) {
124)       array_push($ret, array('id' => 'www_'.$item['id'], 'fqdn' => 'www.'.$item['fqdn'], 'options' => (strstr($item['options'], 'forward') ? 'forward' : '')));
125)     }
126)   }
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

127)   return $ret;
128) }
129) 
bernd Aliases editieren

bernd authored 17 years ago

130) 
bernd Webapps implementiert

bernd authored 17 years ago

131) function list_available_webapps()
132) {
133)   $result = db_query("SELECT id,displayname FROM vhosts.global_webapps");
134)   $ret = array();
135)   while ($item = mysql_fetch_assoc($result))
136)     array_push($ret, $item);
137)   return $ret;
138) }
139) 
140) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

141) function delete_vhost($id)
142) {
143)   $id = (int) $id;
144)   if ($id == 0)
145)     system_failure("id == 0");
146)   $vhost = get_vhost_details($id);
bernd Logger mit Logleveln

bernd authored 15 years ago

147)   logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Removing vhost #'.$id.' ('.$vhost['hostname'].'.'.$vhost['domain'].')');
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

148)   db_query("DELETE FROM vhosts.vhost WHERE id={$vhost['id']} LIMIT 1");
149) }
150) 
bernd Aliases editieren

bernd authored 17 years ago

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

bernd authored 17 years ago

152) 
153) function make_svn_vhost($id) 
154) {
155)   $id = (int) $id;
156)   if ($id == 0)
157)     system_failure("id == 0");
bernd Logger mit Logleveln

bernd authored 15 years ago

158)   logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Converting vhost #'.$id.' to SVN');
bernd letzter commit rückgängig

bernd authored 16 years ago

159)   db_query("REPLACE INTO vhosts.dav (vhost, type) VALUES ({$id}, 'svn')");
bernd Webapps implementiert

bernd authored 17 years ago

160)   db_query("DELETE FROM vhosts.webapps WHERE vhost={$id}");
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

161) }
162) 
163) function make_dav_vhost($id) 
164) {
165)   $id = (int) $id;
166)   if ($id == 0)
167)     system_failure("id == 0");
bernd Logger mit Logleveln

bernd authored 15 years ago

168)   logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Converting vhost #'.$id.' to WebDAV');
bernd Docroot auch bei WebDAV anz...

bernd authored 17 years ago

169)   db_query("REPLACE INTO vhosts.dav (vhost, type, options) VALUES ({$id}, 'dav', 'nouserfile')");
bernd Webapps implementiert

bernd authored 17 years ago

170)   db_query("DELETE FROM vhosts.webapps WHERE vhost={$id}");
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

171) }
172) 
bernd Webapps implementiert

bernd authored 17 years ago

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

bernd authored 17 years ago

174) {
175)   $id = (int) $id;
176)   if ($id == 0)
177)     system_failure("id == 0");
bernd Logger mit Logleveln

bernd authored 15 years ago

178)   logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Converting vhost #'.$id.' to regular');
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

179)   db_query("DELETE FROM vhosts.dav WHERE vhost={$id}");
bernd Webapps implementiert

bernd authored 17 years ago

180)   db_query("DELETE FROM vhosts.webapps WHERE vhost={$id}");
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

181) }
182) 
183) 
184) function make_webapp_vhost($id, $webapp) 
185) {
186)   $id = (int) $id;
187)   $webapp = (int) $webapp;
188)   if ($id == 0)
189)     system_failure("id == 0");
bernd Webapps implementiert

bernd authored 17 years ago

190)   $result = db_query("SELECT displayname FROM vhosts.global_webapps WHERE id={$webapp};");
191)   if (mysql_num_rows($result) == 0)
192)     system_failure("webapp-id invalid");
193)   $webapp_name = mysql_fetch_object($result)->displayname;
bernd Logger mit Logleveln

bernd authored 15 years ago

194)   logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Setting up webapp '.$webapp_name.' on vhost #'.$id);
bernd Webapps implementiert

bernd authored 17 years ago

195)   db_query("REPLACE INTO vhosts.webapps (vhost, webapp) VALUES ({$id}, {$webapp})");
196)   mail('webapps-setup@schokokeks.org', 'setup', 'setup');
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

197) }
198) 
199) 
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

200) function save_vhost($vhost)
201) {
202)   if (! is_array($vhost))
203)     system_failure('$vhost kein array!');
204)   $id = (int) $vhost['id'];
205)   $hostname = maybe_null($vhost['hostname']);
bernd Webalizer/Statistik-Funktio...

bernd authored 14 years ago

206)   $domain = (int) $vhost['domain_id'];
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

207)   if ($domain == 0)
bernd Aliases editieren

bernd authored 17 years ago

208)     system_failure('$domain == 0');
bernd Webalizer/Statistik-Funktio...

bernd authored 14 years ago

209)   if ($vhost['domain_id'] == -1)
bernd domain = NULL ==> user-subd...

bernd authored 17 years ago

210)     $domain = 'NULL';
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

211)   $docroot = maybe_null($vhost['docroot']);
212)   $php = maybe_null($vhost['php']);
bernd CGI abschaltbar

bernd authored 14 years ago

213)   $cgi = ($vhost['cgi'] == 1 ? 1 : 0);
bernd SSL auch über webinterface...

bernd authored 17 years ago

214)   $ssl = maybe_null($vhost['ssl']);
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

215)   $logtype = maybe_null($vhost['logtype']);
bernd error_log konfigurierbar

bernd authored 17 years ago

216)   $errorlog = (int) $vhost['errorlog'];
bernd fix für svn/nodocroot

bernd authored 16 years ago

217)   if ($vhost['is_svn']) {
bernd nodocroot für svn-hosts

bernd authored 16 years ago

218)     if (! $vhost['options']) $vhost['options']='nodocroot';
219)     else $vhost['options']+=",nodocroot";
220)   }
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

221)   $options = mysql_real_escape_string( $vhost['options'] );
222) 
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

223)   $cert = 0;
224)   $certs = user_certs();
225)   foreach ($certs as $c)
226)     if ($c['id'] == $vhost['cert'])
227)       $cert = $c['id'];
228)   if ($cert == 0)
229)     $cert = 'NULL';
230) 
bernd IP-Adressen aktivieren

bernd authored 15 years ago

231)   $ipv4 = 'NULL';
232)   $ipv4_avail = user_ipaddrs();
233)   if (in_array($vhost['ipv4'], $ipv4_avail))
234)   {
235)     $ipv4 = maybe_null($vhost['ipv4']);
236)   }
bernd IPv6

bernd authored 14 years ago

237) 
238)   $autoipv6 = ( $vhost['autoipv6'] == 1) ? '1' : '0';
239) 
bernd Webalizer/Statistik-Funktio...

bernd authored 14 years ago

240)   $stats = maybe_null($vhost['stats']);
bernd IP-Adressen aktivieren

bernd authored 15 years ago

241) 
bernd Logging

bernd authored 17 years ago

242)   if ($id != 0) {
bernd Logger mit Logleveln

bernd authored 15 years ago

243)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Updating vhost #'.$id.' ('.$vhost['hostname'].'.'.$vhost['domain'].')');
bernd CGI abschaltbar

bernd authored 14 years ago

244)     db_query("UPDATE vhosts.vhost SET hostname={$hostname}, domain={$domain}, docroot={$docroot}, php={$php}, cgi={$cgi}, `ssl`={$ssl}, logtype={$logtype}, errorlog={$errorlog}, certid={$cert}, ipv4={$ipv4}, autoipv6={$autoipv6}, options='{$options}', stats={$stats} WHERE id={$id} LIMIT 1");
bernd Logging

bernd authored 17 years ago

245)   }
246)   else {
bernd Logger mit Logleveln

bernd authored 15 years ago

247)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'vhosts', 'Creating vhost '.$vhost['hostname'].'.'.$vhost['domain'].'');
bernd CGI abschaltbar

bernd authored 14 years ago

248)     $result = db_query("INSERT INTO vhosts.vhost (user, hostname, domain, docroot, php, cgi, `ssl`, logtype, errorlog, certid, ipv4, autoipv6, options, stats) VALUES ({$_SESSION['userinfo']['uid']}, {$hostname}, {$domain}, {$docroot}, {$php}, {$cgi}, {$ssl}, {$logtype}, {$errorlog}, {$cert}, {$ipv4}, {$autoipv6}, '{$options}', {$stats})");
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

249)     $id = mysql_insert_id();
bernd Logging

bernd authored 17 years ago

250)   }
bernd Webapps implementiert

bernd authored 17 years ago

251)   $oldvhost = get_vhost_details($id);
252)   /*
253)     these vars may be 0 or 1.
254)     So newval > oldval means that it has been switched on yet.
255)   */
256)   if ($vhost['is_dav'] > $oldvhost['is_dav'])
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

257)       make_dav_vhost($id);
bernd Webapps implementiert

bernd authored 17 years ago

258)   elseif ($vhost['is_svn'] > $oldvhost['is_svn'])
bernd vhost-Modul kann jetzt SVN-...

bernd authored 17 years ago

259)       make_svn_vhost($id);
bernd Webapps implementiert

bernd authored 17 years ago

260)   elseif ($vhost['is_webapp'] > $oldvhost['is_webapp'])
261)       make_webapp_vhost($id, $vhost['webapp_id']);
262)   elseif ($vhost['is_dav'] == 0 && $vhost['is_svn'] == 0 && $vhost['is_webapp'] == 0)
263)       make_regular_vhost($id);
bernd VHosts können bearbeitet we...

bernd authored 17 years ago

264) }
265) 
266) 
bernd Aliases editieren

bernd authored 17 years ago

267) function get_alias_details($id)
268) {
269)   $id = (int) $id;
270)   $uid = (int) $_SESSION['userinfo']['uid'];
271)   $result = db_query("SELECT * FROM vhosts.v_alias WHERE id={$id}");
272)   
273)   if (mysql_num_rows($result) != 1)
274)     system_failure('Interner Fehler beim Auslesen der Alias-Daten');
275)   
276)   $alias = mysql_fetch_assoc($result);
bernd domain = NULL ==> user-subd...

bernd authored 17 years ago

277)   
bernd auch aliases dürfen usernam...

bernd authored 17 years ago

278)   if ($alias['domain_id'] == NULL) {
bernd domain = NULL ==> user-subd...

bernd authored 17 years ago

279)     $alias['domain_id'] = -1;
bernd auch aliases dürfen usernam...

bernd authored 17 years ago

280)   }
bernd Aliases editieren

bernd authored 17 years ago

281) 
282)   /* Das bewirkt, dass nur die eigenen Aliase gesehen werden können */
283)   get_vhost_details( (int) $alias['vhost'] );
284) 
285)   return $alias;
286) }
287) 
288) 
289) function delete_alias($id)
290) {
291)   $id = (int) $id;
292)   $alias = get_alias_details($id);
293) 
bernd Logger mit Logleveln

bernd authored 15 years ago

294)   logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'aliases', 'Removing alias #'.$id.' ('.$alias['hostname'].'.'.$alias['domain'].')');
bernd Aliases editieren

bernd authored 17 years ago

295)   db_query("DELETE FROM vhosts.alias WHERE id={$id}");
296) }
297) 
298) function save_alias($alias)
299) {
300)   if (! is_array($alias))
301)     system_failure('$alias kein array!');
bernd Neue aliase haben keine ID

bernd authored 15 years ago

302)   $id = (isset($alias['id']) ? (int) $alias['id'] : 0);
bernd Aliases editieren

bernd authored 17 years ago

303)   $hostname = maybe_null($alias['hostname']);
bernd Webalizer/Statistik-Funktio...

bernd authored 14 years ago

304)   $domain = (int) $alias['domain_id'];
bernd Aliases editieren

bernd authored 17 years ago

305)   if ($domain == 0)
306)     system_failure('$domain == 0');
bernd Webalizer/Statistik-Funktio...

bernd authored 14 years ago

307)   if ($alias['domain_id'] == -1)
bernd domain = NULL ==> user-subd...

bernd authored 17 years ago

308)     $domain = 'NULL';
bernd Aliases editieren

bernd authored 17 years ago

309)   $vhost = get_vhost_details( (int) $alias['vhost']);
310)   $options = mysql_real_escape_string( $alias['options'] );
311)   if ($id == 0) {
bernd Logger mit Logleveln

bernd authored 15 years ago

312)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'aliases', 'Creating alias '.$alias['hostname'].'.'.$alias['domain'].' for VHost '.$vhost['id']);
bernd Aliases editieren

bernd authored 17 years ago

313)     db_query("INSERT INTO vhosts.alias (hostname, domain, vhost, options) VALUES ({$hostname}, {$domain}, {$vhost['id']}, '{$options}')");
314)   }
315)   else {
bernd Logger mit Logleveln

bernd authored 15 years ago

316)     logger(LOG_INFO, 'modules/vhosts/include/vhosts', 'aliases', 'Updating alias #'.$id.' ('.$alias['hostname'].'.'.$alias['domain'].')');
bernd Aliases editieren

bernd authored 17 years ago

317)     db_query("UPDATE vhosts.alias SET hostname={$hostname}, domain={$domain}, options='{$options}' WHERE id={$id} LIMIT 1");
318)   }
319) }
320) 
bernd neues VHosts-Modul (unbenut...

bernd authored 17 years ago

321) 
322) 
bernd Neue Zertifikatsverwaltung

bernd authored 15 years ago

323) 
324) function user_ipaddrs()
325) {
326)   $uid = (int) $_SESSION['userinfo']['uid'];
327)   $result = db_query("SELECT ipaddr FROM vhosts.ipaddr_available WHERE uid={$uid}");
328)   $ret = array();
329)   while ($i = mysql_fetch_assoc($result))
330)   {
331)     $ret[] = $i['ipaddr'];
332)   }
333)   DEBUG($ret);
334)   return $ret;
335) }
336) 
337)