IP updaten met PHP via direct admin API

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick van Kampen

Patrick van Kampen

04/04/2013 22:48:56
Quote Anchor link
Hallo Mensen,

Het is al enige tijd geleden dat ik me heb bezig gehouden met PHP scripts. Nu heb ik een script gevonden online om een dynamisch IP te controleren en te updaten via de API van direct admin. Dit omdat ik niet veel zie in een dynDNS account of iets in die richting.

Nu heb ik het volgende script hier en daar wat opgelapt zodat het überhaupt "werkt" maar het script lijkt zich niet te kunnen aanmelden op mijn Direct admin account. Wellicht is er iemand die ook 'ns een poging kan wagen en mij wellicht vrij eenvoudig kan vertellen wat er mis gaat?

Ik denk namelijk dat het om iets heel stoms gaat wat ik over het hoofd zie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
#getting the public IP address
echo $wanIP=file_get_contents("http://ofcamps.eu/myip.php");
$wanIP = trim($wanIP);

#getting the previous IP address
$oldIP = "myIP.txt";
$fh = fopen($oldIP, 'r');
$oldip = fgets($fh);
fclose($fh);

#saving the current IP address
$currentIP="myIP.txt";
$fh = fopen($currentIP, 'w');
$stringData = "$wanIP";
fwrite($fh, $stringData);
fclose($fh);

#Debug line
echo "This is my old IP $oldip and this is my $wanIP<br>";

echo updateDADNS("<serverIP>","<username>","<password>","<domain>","<record>",$wanIP, "$oldip");

echo "\n RUNNING DNS UPDATER<br>";

function
updateDADNS($ip,$username,$password,$domain,$recName,$wanIP,$oldip) {
    if( $oldip != $wanIP ) {
        if($wanIP != "") {
            $url = 'http://'.$ip.':2222';
            // set temp cookie
            $ckfile = tempnam ("/tmp", "CURLCOOKIE");
            // make list of POST fields
            $fields = array(
            'referer' =>urlencode('/'),
            'username'=>urlencode($username),
            'password'=>urlencode($password)
            );

            $fields_string="";
        }

        rtrim($fields_string,'&');
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_COOKIEJAR, $ckfile);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch,CURLOPT_URL,$url.'/CMD_LOGIN');
        curl_setopt($ch,CURLOPT_POST,count($fields));
        curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
        $result = curl_exec($ch);
        echo 'result: '.$result;
        if($result===false) {
            die('CURL ERROR: '.curl_error($ch));
            echo 'die';
        }
else {
            curl_setopt($ch,CURLOPT_URL,$url.'/CMD_API_DNS_CONTROL?domain='.$domain);
            curl_setopt($ch,CURLOPT_COOKIEFILE, $ckfile);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
            $result = curl_exec($ch);
            echo 'LIST'.$result;
            curl_setopt($ch,CURLOPT_URL,$url.'/CMD_API_DNS_CONTROL?domain='.$domain.'&action=select&arecs0=name='.$recName.'&value='.$wanIP);
            curl_setopt($ch,CURLOPT_COOKIEFILE, $ckfile);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
            $result = curl_exec($ch);
            echo "\nDELETE".$result."\n";

            curl_setopt($ch,CURLOPT_URL,$url.'/CMD_API_DNS_CONTROL?domain='.$domain.'&action=add&type=A&name='.$recName.'&value='.$wanIP);
            curl_setopt($ch,CURLOPT_COOKIEFILE, $ckfile);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
            $result = curl_exec($ch);
            echo "\nADD".$result."\n";

            curl_close($ch);
                if($result===false) {
                die('CURL ERROR: '.curl_error($ch));
            }
else {
                return $result;
            }
        }
    }
else {
        echo "The WAN IP was empty, I’ve done no update";
        }
    }

?>
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.