bernd commited on 2008-08-15 20:08:09
Zeige 1 geänderte Dateien mit 86 Einfügungen und 0 Löschungen.
git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@1141 87cf0b9e-d624-0410-a070-f6ee81989793
... | ... |
@@ -122,6 +122,7 @@ function get_dns_record($id) |
122 | 122 |
if (mysql_num_rows($result) != 1) |
123 | 123 |
system_failure('illegal ID'); |
124 | 124 |
$data = mysql_fetch_assoc($result); |
125 |
+ $dom = new Domain( (int) $data['domain']); |
|
125 | 126 |
DEBUG($data); |
126 | 127 |
return $data; |
127 | 128 |
} |
... | ... |
@@ -156,5 +157,90 @@ function get_domain_auto_records($domainname) |
156 | 157 |
} |
157 | 158 |
|
158 | 159 |
|
160 |
+$implemented_record_types = array('a', 'aaaa', 'mx', 'spf', 'txt', 'cname', 'ptr', 'srv'); |
|
161 |
+ |
|
162 |
+function save_dns_record($id, $record) |
|
163 |
+{ |
|
164 |
+ global $valid_record_types; |
|
165 |
+ global $implemented_record_types; |
|
166 |
+ $record['type'] = strtolower($record['type']); |
|
167 |
+ if (!in_array($record['type'], $valid_record_types)) |
|
168 |
+ system_failure('invalid type: '.$record['type']); |
|
169 |
+ if (!in_array($record['type'], $implemented_record_types)) |
|
170 |
+ system_failure('record type '.$record['type'].' not implemented at the moment.'); |
|
171 |
+ $dom = new Domain( (int) $record['domain'] ); |
|
172 |
+ if (! $dom->id) |
|
173 |
+ system_failure('invalid domain'); |
|
174 |
+ verify_input_hostname($record['hostname']); |
|
175 |
+ if ($record['ttl'] && (int) $record['ttl'] < 1) |
|
176 |
+ system_failure('Fehler bei TTL'); |
|
177 |
+ switch ($record['type']) |
|
178 |
+ { |
|
179 |
+ case 'a': |
|
180 |
+ if ($record['dyndns']) |
|
181 |
+ { |
|
182 |
+ get_dyndns_account( $record['dyndns'] ); |
|
183 |
+ $record['ip'] = ''; |
|
184 |
+ } |
|
185 |
+ else |
|
186 |
+ { |
|
187 |
+ verify_input_ipv4($record['ip']); |
|
188 |
+ $record['data'] = ''; |
|
189 |
+ $record['spec'] = ''; |
|
190 |
+ } |
|
191 |
+ break; |
|
192 |
+ case 'aaaa': |
|
193 |
+ $record['dyndns'] = ''; |
|
194 |
+ verify_input_ipv4($record['ip']); |
|
195 |
+ $record['data'] = ''; |
|
196 |
+ $record['spec'] = ''; |
|
197 |
+ break; |
|
198 |
+ case 'mx': |
|
199 |
+ $record['dyndns'] = ''; |
|
200 |
+ $record['spec'] = (int) $record['spec']; |
|
201 |
+ if ($record['spec'] < 1) |
|
202 |
+ systen_failure("invalid priority"); |
|
203 |
+ verify_input_hostname($record['data']); |
|
204 |
+ if (! $record['data'] ) |
|
205 |
+ system_failure('MX hostname missing'); |
|
206 |
+ $record['ip'] = ''; |
|
207 |
+ break; |
|
208 |
+ case 'spf': |
|
209 |
+ case 'txt': |
|
210 |
+ system_failure('not implemented yet'); |
|
211 |
+ case 'cname': |
|
212 |
+ $record['dyndns'] = ''; |
|
213 |
+ $record['spec'] = ''; |
|
214 |
+ $record['ip'] = ''; |
|
215 |
+ verify_input_hostname($record['data']); |
|
216 |
+ if (! $record['data'] ) |
|
217 |
+ system_failure('MX hostname missing'); |
|
218 |
+ break; |
|
219 |
+ |
|
220 |
+ case 'ptr': |
|
221 |
+ case 'srv': |
|
222 |
+ system_failure('not implemented yet'); |
|
223 |
+ default: |
|
224 |
+ system_failure('Not implemented'); |
|
225 |
+ } |
|
226 |
+ $id = (int) $id; |
|
227 |
+ $record['hostname'] = maybe_null($record['hostname']); |
|
228 |
+ $record['ttl'] = ($recory['ttl'] == 0 ? 'NULL' : (int) $record['ttl']); |
|
229 |
+ $record['ip'] = maybe_null($record['ip']); |
|
230 |
+ $record['data'] = maybe_null($record['data']); |
|
231 |
+ $record['spec'] = maybe_null($record['spec']); |
|
232 |
+ $record['dyndns'] = maybe_null($record['dyndns']); |
|
233 |
+ if ($id) |
|
234 |
+ db_query("UPDATE dns.custom_records SET hostname={$record['hostname']}, domain={$dom->id}, type={$record['type']}, ttl={$record['ttl']}, ip={$record['ip']}, dyndns={$record['dyndns']}, data={$record['data']}, spec={$record['spec']} WHERE id={$id} LIMIT 1"); |
|
235 |
+ else |
|
236 |
+ db_query("INSERT INTO dns.custom_records (hostname, domain, type, ttl, ip, dyndns, data, spec) VALUES ({$record['hostname']}, {$dom->id}, {$record['type']}, {$record['ttl']}, {$record['ip']}, {$record['dyndns']}, {$record['data']}, {$record['spec']})"); |
|
237 |
+ |
|
238 |
+} |
|
239 |
+ |
|
240 |
+ |
|
241 |
+function delete_dns_record($id) |
|
242 |
+{ |
|
243 |
+ // ... |
|
244 |
+} |
|
159 | 245 |
|
160 | 246 |
?> |
161 | 247 |