Browse code

vhost-Modul kann jetzt SVN- und WebDAV-Hosts erstellen und speichern. Mit neuem Layout.

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@838 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on06/12/2007 09:25:49
Showing4 changed files
... ...
@@ -99,6 +99,18 @@ input[type=text]:focus,input[type=password]:focus,textarea:focus {
99 99
         }
100 100
 
101 101
 
102
+div.vhostsidebyside {
103
+  max-width: 55em;
104
+}
105
+
106
+div.vhostoptions {
107
+  margin: 0;
108
+  padding: 0;
109
+  margin-left: 1em;
110
+  float: right;
111
+  width: 30em;
112
+  /*margin-left: 2em; position: absolute; left: 45em; */
113
+}
102 114
 
103 115
 
104 116
 
... ...
@@ -26,7 +26,8 @@ else {
26 26
 }
27 27
 
28 28
 output("<script type=\"text/javascript\">
29
-  
29
+  var default_docroot;
30
+ 
30 31
   function selectedDomain() {
31 32
     var selected;
32 33
     selected=document.getElementById('domain').options.selectedIndex;
... ...
@@ -39,7 +40,7 @@ output("<script type=\"text/javascript\">
39 40
       hostname = selectedDomain();
40 41
     else
41 42
       hostname = document.getElementById('hostname').value + '.' + selectedDomain();
42
-    document.getElementById('defaultdocroot').firstChild.nodeValue = 'websites/' + hostname + '/htdocs';
43
+    default_docroot = 'websites/' + hostname + '/htdocs';
43 44
     useDefaultDocroot();
44 45
   }
45 46
   
... ...
@@ -48,7 +49,7 @@ output("<script type=\"text/javascript\">
48 49
     var inputfield = document.getElementById('docroot');
49 50
     inputfield.disabled = do_it;
50 51
     if (do_it) {
51
-      document.getElementById('docroot').value = document.getElementById('defaultdocroot').firstChild.nodeValue;
52
+      document.getElementById('docroot').value = default_docroot;
52 53
     }
53 54
   }
54 55
   
... ...
@@ -101,7 +102,8 @@ $form = "
101 102
     <div style=\"margin-left: 2em;\"><input type=\"text\" name=\"hostname\" id=\"hostname\" size=\"10\" value=\"{$vhost['hostname']}\" onchange=\"defaultDocumentRoot()\" /><strong>.</strong>".domainselect($vhost['domain_id'], 'onchange="defaultDocumentRoot()"');
102 103
 $form .= "<br /><input type=\"checkbox\" name=\"options[]\" id=\"aliaswww\" value=\"aliaswww\" {$s}/> <label for=\"aliaswww\">Auch mit <strong>www</strong> davor.</label></div>
103 104
 
104
-<div id=\"options_regular\" style=\"margin-left: 2em; position: absolute; left: 45em; ".($vhost_type=='regular' ? '' : 'display: none;')."\">
105
+<div class=\"vhostsidebyside\">
106
+<div class=\"vhostoptions\" id=\"options_regular\" ".($vhost_type=='regular' ? '' : 'style="display: none;"').">
105 107
   <h4>Optionen</h4>
106 108
   <h5>Speicherort für Dateien (»Document Root«)</h5>
107 109
   <div style=\"margin-left: 2em;\">
... ...
@@ -114,15 +116,17 @@ $form .= "<br /><input type=\"checkbox\" name=\"options[]\" id=\"aliaswww\" valu
114 116
       <option value=\"none\" ".($vhost['php'] == NULL ? 'selected="selected"' : '')." >keine Scriptsprache</option>
115 117
       <option value=\"mod_php\" ".($vhost['php'] == 'mod_php' ? 'selected="selected"' : '')." >PHP als Apache-Modul</option>
116 118
       <option value=\"fastcgi\" ".($vhost['php'] == 'fastcgi' ? 'selected="selected"' : '')." >PHP als FastCGI</option>
117
-      <option value=\"rubyonrails\" ".($vhost['php'] == 'rubyonrails' ? 'selected="selected"' : '')." >Ruby-on-Rails</option>
119
+      <!--  <option value=\"rubyonrails\" ".($vhost['php'] == 'rubyonrails' ? 'selected="selected"' : '')." >Ruby-on-Rails</option> -->
118 120
     </select>
119 121
   </div>
120 122
 </div>
121 123
 
122
-<div id=\"options_webapp\" style=\"margin-left: 2em; position: absolute; left: 45em; ".($vhost_type=='webapp' ? '' : 'display: none;')."\">
124
+<div class=\"vhostoptions\" id=\"options_webapp\" ".($vhost_type=='webapp' ? '' : 'style="display: none;"').">
123 125
   <h4>Optionen</h4>
124 126
   <h5>Anwendung</h5>
125
-  <select name=\"webapp\" id=\"webapp\" size=\"1\"><option value=\"drupal-5\">Drupal 5.x</option></select>
127
+  <select name=\"webapp\" id=\"webapp\" size=\"1\">
128
+    <option value=\"1\">Drupal 5.x</option>
129
+  </select>
126 130
 </div>
127 131
 
128 132
 <h4>Verwendung</h4>
... ...
@@ -130,8 +134,12 @@ $form .= "<br /><input type=\"checkbox\" name=\"options[]\" id=\"aliaswww\" valu
130 134
 	  <input class=\"usageoption\" onclick=\"showAppropriateLines()\" type=\"radio\" name=\"vhost_type\" id=\"vhost_type_regular\" value=\"regular\" ".(($vhost_type=='regular') ? 'checked="checked" ' : '')."/><label for=\"vhost_type_regular\">&#160;Normal (selbst Dateien hinterlegen)</label><br />
131 135
 	  <input class=\"usageoption\" onclick=\"showAppropriateLines()\" type=\"radio\" name=\"vhost_type\" id=\"vhost_type_dav\" value=\"dav\" ".(($vhost_type=='dav') ? 'checked="checked" ' : '')."/><label for=\"vhost_type_dav\">&#160;WebDAV</label><br />
132 136
 	  <input class=\"usageoption\" onclick=\"showAppropriateLines()\" type=\"radio\" name=\"vhost_type\" id=\"vhost_type_svn\" value=\"svn\" ".(($vhost_type=='svn') ? 'checked="checked" ' : '')."/><label for=\"vhost_type_svn\">&#160;Subversion-Server</label><br />
133
-	  <input class=\"usageoption\" onclick=\"showAppropriateLines()\" type=\"radio\" name=\"vhost_type\" id=\"vhost_type_webapp\" value=\"webapp\" ".(($vhost_type=='webapp') ? 'checked="checked" ' : '')."/><label for=\"vhost_type_webapp\">&#160;Eine vorgefertigte Applikation nutzen</label>
137
+	  <div style=\"display: none\">
138
+	    <input class=\"usageoption\" onclick=\"showAppropriateLines()\" type=\"radio\" name=\"vhost_type\" id=\"vhost_type_webapp\" value=\"webapp\" ".(($vhost_type=='webapp') ? 'checked="checked" ' : '')."/><label for=\"vhost_type_webapp\">&#160;Eine vorgefertigte Applikation nutzen</label>
139
+	  </div>
134 140
 	</div>
141
+<br />
142
+</div>
135 143
 
136 144
 <h4 style=\"margin-top: 3em;\">Allgemeine Optionen</h4>
137 145
 <div style=\"margin-left: 2em;\">
... ...
@@ -30,6 +30,9 @@ function empty_vhost()
30 30
   $vhost['php'] = 'mod_php';
31 31
   $vhost['ssl'] = NULL;
32 32
   $vhost['logtype'] = NULL;
33
+  $vhost['is_dav'] = 0;
34
+  $vhost['is_svn'] = 0;
35
+  $vhost['is_webapp'] = 0;
33 36
     
34 37
   $vhost['options'] = '';
35 38
   return $vhost;
... ...
@@ -123,6 +126,49 @@ function delete_vhost($id)
123 126
 }
124 127
 
125 128
 
129
+
130
+function make_svn_vhost($id) 
131
+{
132
+  $id = (int) $id;
133
+  if ($id == 0)
134
+    system_failure("id == 0");
135
+  logger('modules/vhosts/include/vhosts.php', 'vhosts', 'Converting vhost #'.$id.' to SVN');
136
+  db_query("REPLACE INTO vhosts.dav (vhost, type) VALUES ({$id}, 'svn')");
137
+}
138
+
139
+function make_dav_vhost($id) 
140
+{
141
+  $id = (int) $id;
142
+  if ($id == 0)
143
+    system_failure("id == 0");
144
+  logger('modules/vhosts/include/vhosts.php', 'vhosts', 'Converting vhost #'.$id.' to WebDAV');
145
+  db_query("REPLACE INTO vhosts.dav (vhost, type) VALUES ({$id}, 'dav')");
146
+}
147
+
148
+function no_dav_or_svn($id)
149
+{
150
+  $id = (int) $id;
151
+  if ($id == 0)
152
+    system_failure("id == 0");
153
+  logger('modules/vhosts/include/vhosts.php', 'vhosts', 'Converting vhost #'.$id.' to regular');
154
+  db_query("DELETE FROM vhosts.dav WHERE vhost={$id}");
155
+}
156
+
157
+
158
+/*
159
+function make_webapp_vhost($id, $webapp) 
160
+{
161
+  $id = (int) $id;
162
+  $webapp = (int) $webapp;
163
+  if ($id == 0)
164
+    system_failure("id == 0");
165
+  logger('modules/vhosts/include/vhosts.php', 'vhosts', 'Setting up webapp # '.$webapp.' on vhost #'.$id);
166
+  db_query("INSERT INTO vhosts.webapps (vhost, webapp) VALUES ({$id}, {$webapp})");
167
+
168
+}
169
+*/
170
+
171
+
126 172
 function save_vhost($vhost)
127 173
 {
128 174
   if (! is_array($vhost))
... ...
@@ -147,8 +193,15 @@ function save_vhost($vhost)
147 193
   }
148 194
   else {
149 195
     logger('modules/vhosts/include/vhosts.php', 'vhosts', 'Creating vhost '.$vhost['hostname'].'.'.$vhost['domain'].'');
150
-    db_query("INSERT INTO vhosts.vhost (user, hostname, domain, docroot, php, `ssl`, logtype, errorlog, options) VALUES ({$_SESSION['userinfo']['uid']}, {$hostname}, {$domain}, {$docroot}, {$php}, {$ssl}, {$logtype}, {$errorlog}, '{$options}')");
196
+    $result = db_query("INSERT INTO vhosts.vhost (user, hostname, domain, docroot, php, `ssl`, logtype, errorlog, options) VALUES ({$_SESSION['userinfo']['uid']}, {$hostname}, {$domain}, {$docroot}, {$php}, {$ssl}, {$logtype}, {$errorlog}, '{$options}')");
197
+    $id = mysql_insert_id();
151 198
   }
199
+  if ($vhost['is_dav'] == 1)
200
+      make_dav_vhost($id);
201
+  elseif ($vhost['is_svn'] == 1)
202
+      make_svn_vhost($id);
203
+  else
204
+      no_dav_or_svn($id);
152 205
 }
153 206
 
154 207
 
... ...
@@ -36,29 +36,52 @@ if ($_GET['action'] == 'edit')
36 36
     $_POST['options'] = array();
37 37
   $aliaswww = in_array('aliaswww', $_POST['options']);
38 38
 
39
-  $defaultdocroot = $vhost['homedir'].'/websites/'.((strlen($hostname) > 0) ? $hostname.'.' : '').($domain->fqdn).'/htdocs';
40
-
41
-  if (! check_path( $_POST['docroot'] ))
42
-    system_failure("Eingegebener Pfad enthält ungültige Angaben");
43
-  $docroot = $vhost['homedir'].'/'.$_POST['docroot'];
44
-
45
-  if (($_POST['use_default_docroot'] == '1') || ($docroot == $defaultdocroot)) {
46
-    $docroot = '';
47
-  }
48
-
49
-  DEBUG("Document-Root: ".$docroot);
50
-
39
+  $docroot = '';
51 40
   $php = '';
52
-  switch ($_POST['php']) {
53
-    case 'mod_php':
54
-      $php = 'mod_php';
55
-      break;
56
-    case 'fastcgi':
57
-      $php = 'fastcgi';
58
-      break;
59
-    /* Wenn etwas anderes kommt, ist das "kein PHP". So einfach ist das. */
41
+  if ($_POST['vhost_type'] == 'regular')
42
+  {
43
+    $vhost['is_dav'] = 0;
44
+    $vhost['is_svn'] = 0;
45
+    $vhost['is_webapp'] = 0;
46
+    $defaultdocroot = $vhost['homedir'].'/websites/'.((strlen($hostname) > 0) ? $hostname.'.' : '').($domain->fqdn).'/htdocs';
47
+  
48
+    if (! check_path( $_POST['docroot'] ))
49
+      system_failure("Eingegebener Pfad enthält ungültige Angaben");
50
+    $docroot = $vhost['homedir'].'/'.$_POST['docroot'];
51
+  
52
+    if (($_POST['use_default_docroot'] == '1') || ($docroot == $defaultdocroot)) {
53
+      $docroot = '';
54
+    }
55
+  
56
+    DEBUG("Document-Root: ".$docroot);
57
+  
58
+    switch ($_POST['php']) {
59
+      case 'mod_php':
60
+        $php = 'mod_php';
61
+        break;
62
+      case 'fastcgi':
63
+        $php = 'fastcgi';
64
+        break;
65
+      /* Wenn etwas anderes kommt, ist das "kein PHP". So einfach ist das. */
66
+    }
67
+  }
68
+  elseif ($_POST['vhost_type'] == 'dav') {
69
+    $vhost['is_dav'] = 1;
70
+    $vhost['is_svn'] = 0;
71
+    $vhost['is_webapp'] = 0;
72
+  }
73
+  elseif ($_POST['vhost_type'] == 'svn') {
74
+    $vhost['is_dav'] = 0;
75
+    $vhost['is_svn'] = 1;
76
+    $vhost['is_webapp'] = 0;
77
+  }
78
+  elseif ($_POST['vhost_type'] == 'webapp') {
79
+    $vhost['is_dav'] = 0;
80
+    $vhost['is_svn'] = 0;
81
+    $vhost['is_webapp'] = 1;
60 82
   }
61 83
 
84
+  
62 85
   $ssl = '';
63 86
   switch ($_POST['ssl']) {
64 87
     case 'http':
... ...
@@ -114,6 +137,7 @@ if ($_GET['action'] == 'edit')
114 137
   $vhost['errorlog'] = $errorlog; 
115 138
   $vhost['options'] = $options;
116 139
     
140
+  DEBUG($vhost);
117 141
   save_vhost($vhost);
118 142
 
119 143
   if (! $debugmode)