Aliases editieren
bernd

bernd commited on 2007-08-09 19:05:07
Zeige 4 geänderte Dateien mit 177 Einfügungen und 21 Löschungen.


git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@605 87cf0b9e-d624-0410-a070-f6ee81989793
... ...
@@ -5,7 +5,7 @@ require_once('inc/security.php');
5 5
 
6 6
 require_once('vhosts.php');
7 7
 
8
-$title = "VHost bearbeiten";
8
+$title = "Subdomain bearbeiten";
9 9
 $section = 'vhosts_vhosts';
10 10
 
11 11
 require_role(ROLE_SYSTEMUSER);
... ...
@@ -17,7 +17,13 @@ if ($id != 0)
17 17
   $vhost = get_vhost_details($id);
18 18
 
19 19
 DEBUG($vhost);
20
-output("<h3>VHost bearbeiten</h3>");
20
+if ($id == 0) {
21
+  output("<h3>Neue Subdomain anlegen</h3>");
22
+  $title = "Subdomain anlegen";
23
+}
24
+else {
25
+  output("<h3>Subdomain bearbeiten</h3>");
26
+}
21 27
 
22 28
 output("<script type=\"text/javascript\">
23 29
   
... ...
@@ -93,7 +99,7 @@ $form .= "<br /><input type=\"checkbox\" name=\"options[]\" id=\"aliaswww\" valu
93 99
     ";
94 100
 
95 101
 $form .= '</table>
96
-  <p><input type="submit" value="Änderungen speichern" />&nbsp;&nbsp;&nbsp;&nbsp;'.internal_link('vhosts.php', 'Ohne Speichern zurück').'</p>
102
+  <p><input type="submit" value="Speichern" />&nbsp;&nbsp;&nbsp;&nbsp;'.internal_link('vhosts.php', 'Abbrechen').'</p>
97 103
 ';
98 104
 output(html_form('vhosts_edit_vhost', 'save.php', 'action=edit&vhost='.$vhost['id'], $form));
99 105
 
... ...
@@ -38,6 +39,22 @@ function empty_vhost()
38 39
 }
39 40
 
40 41
 
42
+function empty_alias()
43
+{
44
+  $alias['hostname'] = '';
45
+  
46
+  $domainlist = get_domain_list($_SESSION['customerinfo']['customerno'],
47
+                                $_SESSION['userinfo']['uid']);
48
+  $dom = $domainlist[0];
49
+
50
+  $alias['domain_id'] = $dom->id;
51
+  $alias['domain'] = $dom->fqdn;
52
+  
53
+  $alias['options'] = '';
54
+  return $alias;
55
+}
56
+
57
+
41 58
 function domainselect($selected = NULL, $selectattribute = '')
42 59
 {
43 60
   global $domainlist;
... ...
@@ -49,9 +66,7 @@ function domainselect($selected = NULL, $selectattribute = '')
49 66
   $ret = '<select id="domain" name="domain" size="1" '.$selectattribute.' >';
50 67
   foreach ($domainlist as $dom)
51 68
   {
52
-    $s = '';
53
-    if ($selected == $dom->id)
54
-      $s = ' selected="selected" ';
69
+    $s = ($selected == $dom->id) ? ' selected="selected" ': '';
55 70
     $ret .= "<option value=\"{$dom->id}\"{$s}>{$dom->fqdn}</option>\n";
56 71
   }
57 72
   $ret .= '</select>';
... ...
@@ -72,14 +87,32 @@ function get_vhost_details($id)
72 87
 }
73 88
 
74 89
 
75
-
76 90
 function get_aliases($vhost)
77 91
 {
78
-  $vhost = (int) $vhost;
79 92
   $result = db_query("SELECT id,fqdn,options FROM vhosts.v_alias WHERE vhost={$vhost}");
80 93
   $ret = array();
81
-  while ($item = mysql_fetch_assoc($result))
94
+  while ($item = mysql_fetch_assoc($result)) {
82 95
     array_push($ret, $item);
96
+  }
97
+  return $ret;
98
+}
99
+
100
+
101
+
102
+function get_all_aliases($vhost)
103
+{
104
+  $vhost = get_vhost_details( (int) $vhost );
105
+  $aliases = get_aliases($vhost['id']);
106
+  $ret = array();
107
+  if (strstr($vhost['options'], 'aliaswww')) {
108
+    array_push($ret, array('id' => 'www', 'fqdn' => 'www.'.$vhost['fqdn'], 'options' => (strstr($vhost['options'], 'forwardwww') ? 'forward' : '')));
109
+  }
110
+  foreach ($aliases as $item) {
111
+    array_push($ret, $item);
112
+    if (strstr($item['options'], 'aliaswww')) {
113
+      array_push($ret, array('id' => 'www_'.$item['id'], 'fqdn' => 'www.'.$item['fqdn'], 'options' => (strstr($item['options'], 'forward') ? 'forward' : '')));
114
+    }
115
+  }
83 116
   return $ret;
84 117
 }
85 118
 
... ...
@@ -101,7 +136,7 @@ function save_vhost($vhost)
101 136
   $hostname = maybe_null($vhost['hostname']);
102 137
   $domain = (int) $vhost['domainid'];
103 138
   if ($domain == 0)
104
-    system_failure("Domain == 0");
139
+    system_failure('$domain == 0');
105 140
   $docroot = maybe_null($vhost['docroot']);
106 141
   $php = maybe_null($vhost['php']);
107 142
   $logtype = maybe_null($vhost['logtype']);
... ...
@@ -118,6 +153,54 @@ function save_vhost($vhost)
118 153
 }
119 154
 
120 155
 
156
+function get_alias_details($id)
157
+{
158
+  $id = (int) $id;
159
+  $uid = (int) $_SESSION['userinfo']['uid'];
160
+  $result = db_query("SELECT * FROM vhosts.v_alias WHERE id={$id}");
161
+  
162
+  if (mysql_num_rows($result) != 1)
163
+    system_failure('Interner Fehler beim Auslesen der Alias-Daten');
164
+  
165
+  $alias = mysql_fetch_assoc($result);
166
+
167
+  /* Das bewirkt, dass nur die eigenen Aliase gesehen werden können */
168
+  get_vhost_details( (int) $alias['vhost'] );
169
+
170
+  return $alias;
171
+}
172
+
173
+
174
+function delete_alias($id)
175
+{
176
+  $id = (int) $id;
177
+  $alias = get_alias_details($id);
178
+
179
+  logger('modules/vhosts/include/vhosts.php', 'aliases', 'Removing alias #'.$id.' ('.$alias['hostname'].'.'.$alias['domain'].')');
180
+  db_query("DELETE FROM vhosts.alias WHERE id={$id}");
181
+}
182
+
183
+function save_alias($alias)
184
+{
185
+  if (! is_array($alias))
186
+    system_failure('$alias kein array!');
187
+  $id = (int) $alias['id'];
188
+  $hostname = maybe_null($alias['hostname']);
189
+  $domain = (int) $alias['domainid'];
190
+  if ($domain == 0)
191
+    system_failure('$domain == 0');
192
+  $vhost = get_vhost_details( (int) $alias['vhost']);
193
+  $options = mysql_real_escape_string( $alias['options'] );
194
+  if ($id == 0) {
195
+    logger('modules/vhosts/include/vhosts.php', 'aliases', 'Creating alias '.$alias['hostname'].'.'.$alias['domain'].' for VHost '.$vhost['id']);
196
+    db_query("INSERT INTO vhosts.alias (hostname, domain, vhost, options) VALUES ({$hostname}, {$domain}, {$vhost['id']}, '{$options}')");
197
+  }
198
+  else {
199
+    logger('modules/vhosts/include/vhosts.php', 'aliases', 'Updating alias #'.$id.' ('.$alias['hostname'].'.'.$alias['domain'].')');
200
+    db_query("UPDATE vhosts.alias SET hostname={$hostname}, domain={$domain}, options='{$options}' WHERE id={$id} LIMIT 1");
201
+  }
202
+}
203
+
121 204
 
122 205
 
123 206
 ?>
... ...
@@ -97,8 +97,82 @@ if ($_GET['action'] == 'edit')
97 97
     header('Location: vhosts.php');
98 98
 
99 99
 }
100
+elseif ($_GET['action'] == 'addalias')
101
+{
102
+  check_form_token('vhosts_add_alias');
103
+  $id = (int) $_GET['vhost'];
104
+  $vhost = get_vhost_details( $id );
105
+  DEBUG($vhost);
106
+
107
+  $alias = empty_alias();
108
+  $alias['vhost'] = $vhost['id'];
109
+
110
+  
111
+  $hostname = filter_input_hostname($_POST['hostname']);
112
+  $domain = new Domain( (int) $_POST['domain'] );
113
+  if ($domain->useraccount != $_SESSION['userinfo']['uid'])
114
+    system_failure('Ungültige Domain');
115
+
116
+  if (! is_array($_POST['options']))
117
+    $_POST['options'] = array();
118
+  $aliaswww = in_array('aliaswww', $_POST['options']);
119
+  $forward = in_array('forward', $_POST['options']);
120
+
121
+  $new_options = array();
122
+  if ($aliaswww)
123
+    array_push($new_options, 'aliaswww');
124
+  if ($forward)
125
+    array_push($new_options, 'forward');
126
+  DEBUG($new_options);
127
+  $options = implode(',', $new_options);
128
+  DEBUG('New options: '.$options);
129
+
130
+  $alias['hostname'] = $hostname;
131
+  $alias['domainid'] = $domain->id;
132
+    
133
+  $alias ['options'] = $options;
134
+    
135
+  save_alias($alias);
136
+
137
+  if (! $debugmode)
138
+    header('Location: aliases.php?vhost='.$vhost['id']);
139
+
140
+}
141
+elseif ($_GET['action'] == 'deletealias')
142
+{
143
+  $title = "Subdomain löschen";
144
+  $section = 'vhosts_vhosts';
145
+  
146
+  $alias = get_alias_details( (int) $_GET['alias'] );
147
+  DEBUG($alias);
148
+  $alias_string = ((strlen($alias['hostname']) > 0) ? $alias['hostname'].'.' : '').$alias['domain'];
149
+  
150
+  $vhost = get_vhost_details( $alias['vhost'] );
151
+  DEBUG($vhost);
152
+  $vhost_string = ((strlen($vhost['hostname']) > 0) ? $vhost['hostname'].'.' : '').$vhost['domain'];
153
+  
154
+  $sure = user_is_sure();
155
+  if ($sure === NULL)
156
+  {
157
+    are_you_sure("action=deletealias&amp;alias={$_GET['alias']}", "Möchten Sie das Alias »{$alias_string}« für die Subdomain »{$vhost_string}« wirklich löschen?");
158
+  }
159
+  elseif ($sure === true)
160
+  {
161
+    delete_alias($alias['id']);
162
+    if (! $debugmode)
163
+      header('Location: aliases.php?vhost='.$vhost['id']);
164
+  }
165
+  elseif ($sure === false)
166
+  {
167
+    if (! $debugmode)
168
+      header('Location: aliases.php?vhost='.$vhost['id']);
169
+  }
170
+}
100 171
 elseif ($_GET['action'] == 'delete')
101 172
 {
173
+  $title = "Subdomain löschen";
174
+  $section = 'vhosts_vhosts';
175
+  
102 176
   $vhost = get_vhost_details( (int) $_GET['vhost'] );
103 177
   $vhost_string = ((strlen($vhost['hostname']) > 0) ? $vhost['hostname'].'.' : '').$vhost['domain'];
104 178
   
... ...
@@ -118,8 +192,6 @@ elseif ($_GET['action'] == 'delete')
118 192
     if (! $debugmode)
119 193
       header("Location: vhosts.php");
120 194
   }
121
-
122
-  /* TODO */
123 195
 }
124 196
 else
125 197
   system_failure("Unimplemented action");
... ...
@@ -4,34 +4,31 @@ require_once('inc/security.php');
4 4
 
5 5
 require_once('vhosts.php');
6 6
 
7
-$title = "Webserver VHosts";
7
+$title = "Subdomains";
8 8
 $error = '';
9 9
 
10 10
 require_role(ROLE_SYSTEMUSER);
11 11
 
12 12
 
13
-output("<h3>Webserver (VHosts)</h3>
14
-<p>Mit dieser Funtkion legen Sie fest, welche Domains und Subdomains verfügbar sein sollen und welches Verzeichnis die Dateien enthalten soll.</p>");
13
+output("<h3>Subdomains</h3>
14
+<p>Mit dieser Funtkion legen Sie fest, welche Domains und Subdomains als Webserver-Ressource verfügbar sein sollen und welches Verzeichnis die Dateien enthalten soll.</p>");
15 15
 
16 16
 $vhosts = list_vhosts();
17 17
 
18 18
 if (count($vhosts) > 0)
19 19
 {
20
-  output("<table><tr><th>(Sub-)Domain</th><th>Zusätzliche Alias-Namen</th><th>Lokaler Pfad</th><th>PHP</th></tr>");
20
+  output("<table><tr><th>(Sub-)Domain</th><th>Zusätzliche Alias-Namen</th><th>Lokaler Pfad<sup>*</sup></th><th>PHP</th></tr>");
21 21
 
22 22
   foreach ($vhosts as $vhost)
23 23
   {
24 24
     $fqdn = $vhost['fqdn'];
25 25
     output("<tr><td>".internal_link('edit.php', $fqdn, "vhost={$vhost['id']}")."</td><td>");
26
-    $aliases = get_aliases($vhost['id']);
27
-    if (strstr($vhost['options'], 'aliaswww'))
28
-      output('www.'.$vhost['fqdn'].'<br />');
26
+    $aliases = get_all_aliases($vhost['id']);
29 27
     foreach ($aliases as $alias)
30 28
     {
31
-      if (strstr($alias['options'], 'aliaswww'))
32
-        output('www.'.$alias['fqdn'].'<br />');
33 29
       output($alias['fqdn'].'<br />');
34 30
     }
31
+    output(internal_link('aliases.php', 'Aliase verwalten', 'vhost='.$vhost['id']));
35 32
     output('</td>');
36 33
     if ($vhost['docroot_is_default'] == 1)
37 34
       output("<td><span style=\"color:#777;\">{$vhost['docroot']}</span></td>");
... ...
@@ -56,6 +53,7 @@ if (count($vhosts) > 0)
56 53
   }
57 54
   output('</table>
58 55
 <p><a href="edit.php">Neue Subdomain anlegen</a></p>
56
+<p><sup>*</sup>)&nbsp;schwach geschriebene Pfadangaben bezeichnen die Standardeinstellung. Ist ein Pfad fett dargestellt, so haben Sie einen davon abweichenden Wert eingegeben.</p>
59 57
   <br />');
60 58
 }
61 59
 
62 60