/
function.php
81 lines (76 loc) · 2.83 KB
/
function.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
//------------------------------------------------------------------------------
// Web-based Dynamic DNS Update
// @author: Jaeyoun Kim / Calyce.fr & Novius (http://www.novius.com)
// @homepage: http://code.google.com/p/dynamic-dnsupdate/
// @version: 2.0
// @date: 07/2012
//------------------------------------------------------------------------------
function printTdAction($rr) {
echo '<td class="action"><a href="'.$_SERVER['REQUEST_URI'].'&todo=recordDel&rr='.urlencode(formatRR($rr)).'" title="Delete">X</a></td>';
}
function formatRR($data)
{
if ($data['name'] == '' || $data['name'] == '@') {
$data['name'] = $data['domain'];
} else if (!stripos($data['name'], $data['domain'])) {
$data['name'] = $data['name'] . '.' . $data['domain'];
}
switch($data['type'])
{
case 'MX';
return $data['name'] . '. ' . $data['ttl'] . ' IN ' . $data['type'] . ' ' . $data['preference'] . ' ' . $data['value'];
break;
case 'SPF';
if ($data['command'] == 'Add') {
return $data['name'] . '. ' . $data['ttl'] . ' IN ' . $data['type'] . ' "' . $data['value'].'"';
} else {
return $data['name'] . '. ' . $data['ttl'] . ' IN ' . $data['type'] . ' ' . $data['value'];
}
break;
default;
return $data['name'] . '. ' . $data['ttl'] . ' IN ' . $data['type'] . ' ' . $data['value'];
break;
}
}
function formAction($get) {
// create a new Updater object
$u = new Net_DNS2_Updater($get['domain'], array('nameservers' => array(NS1)));
try {
switch ($get['todo']) {
case 'recordAdd':
$record = Net_DNS2_RR::fromString($get['rr']);
// add the record
$u->add($record);
break;
case 'recordAddWizard':
$cmd=formatRR($get);
$record = Net_DNS2_RR::fromString($cmd);
// add the record
$u->add($record);
break;
case 'recordDel':
$record = Net_DNS2_RR::fromString($get['rr']);
// add the record
$u->delete($record);
break;
}
// add a TSIG / SIGO to authenticate the request
if (AUTH_SIGO != NULL) {
$u->signSIG0(AUTH_SIGO_NAME, AUTH_SIGO);
} else if (AUTH_TSIG != NULL) {
$u->signTSIG(AUTH_TSIG_NAME, AUTH_TSIG);
}
// execute the request
$u->update();
echo '<p class="success">Update Result: Dynamic update is successful.</p>';
} catch(Net_DNS2_Exception $e) {
echo '<p class="error">Failed: '. $e->getMessage() . '</p>';
}
if (isset($get['rr'])) {
echo '<p><pre>'.$get['rr'].'</pre></p>';
} else {
echo '<p><pre>'.$cmd.'</pre></p>';
}
}
?>