<?php
//
//    ddns update by GET method
//
//    2019.10.04 Ver.1.1 Masashi.org (mysqli etc)
//
include "../ddnscommon.php";

$username  $_SERVER['PHP_AUTH_USER'];
$domain    $_GET['domain'];
$subdomain $_GET['subdomain'];
$hostname  $_GET['hostname'];
$ipaddress $_GET['ipaddress'];
$ipaddress2$_GET['myip'];
if (
$ipaddresss2){
    
$ipaddress $ipaddress2;
}

if(!
$ipaddress){
    
$ipaddress $_SERVER['REMOTE_ADDR'];
}

$ipaddress filter_var($ipaddress,FILTER_VALIDATE_IP);

if(!(
$username && $ipaddress && (($subdomain && $domain) || $hostname))){
    if(
$username || $ipaddress || $subdomain || $domain || $hostname){
        if(!
$username){
            
$msg .= "User ID is missing.";
        }
        if(!
$ipaddress){
            
$msg .= "IP address is missing or wrong.";
        }
        if(!
$hostname){

            if(!
$subdomain && $domain){
                
$msg .= "Subdomain is missing.";
            }
            if(
$subdomain && !$domain){
                
$msg .= "Domain name is missing.";
            }
            if(!
$subdomain && !$domain){
//                $msg .= "Hostname is missing.";
                
$msg .= "notfqdn";
            }
        }
    }else{
        
$msg .= "No Data.";
    }
    echo 
"$msg";

}else{
    
$link mysqli_connect($db_host $db_user $db_pass $db_name);
    if (
mysqli_connect_errno() > 0) {
      die(
"DB Connection error: " mysqli_connect_error());
    }
    if(!
$hostname){
        
$hostname=$subdomain.".".$domain;
    }
    
$sql sprintf("SELECT * FROM hostdata WHERE hostname='%s' AND username='%s'",
        
mysqli_real_escape_string($link,$hostname),
        
mysqli_real_escape_string($link,$username));
    
$rs mysqli_query($link,$sql);
    
$item mysqli_fetch_array($rs);
    if(
$item){
        
$timestamp date('Y-m-d H:i:s');
        if(
$ipaddress != $item['current_ip']){
            if(
$item['current_ip'] == "0.0.0.0"){
                
$dat[0] = "update add $hostname 300 A $ipaddress\n";
                
$dat[1] = "\n";
            }else{
                
$dat[0] = "update delete $hostname\n";
                
$dat[1] = "update add $hostname 300 A $ipaddress\n";
                
$dat[2] = "\n";
            }
            
$update_file "./temporary/$hostname.txt";
            
touch($update_file);
            
$fp fopen($update_file,'w');
            for(
$i=0;$dat[$i];$i++){
                
fputs($fp,$dat[$i]);
            }
            
fclose($fp);
            
$status shell_exec($sudo_cmd." ".$nsupdate_cmd." -k ".$nsupdate_key." ".$update_file);
            
unlink($update_file);
//            echo "Updated.";
            
echo "good";
            
$sql sprintf("UPDATE hostdata SET current_ip='%s' , last_access='$timestamp' , last_update='$timestamp' WHERE hostname='%s'",
                
mysqli_real_escape_string($link,$ipaddress),
                
mysqli_real_escape_string($link,$hostname));
            
$rs mysqli_query($link,$sql);
        }else{
//            echo "IP Address has not been changed.";
            
echo "nochg";
            
$sql sprintf("UPDATE hostdata SET current_ip='%s' , last_access='$timestamp'  WHERE hostname='%s'",
                
mysqli_real_escape_string($link,$ipaddress),
                
mysqli_real_escape_string($link,$hostname));
            
$rs mysqli_query($link,$sql);
        }
    }else{
//        echo "Invalid Login.";
        
echo "nohost";
    }
    
mysqli_close($link);
}
?>