#!/usr/bin/perl -w

#===============================================================================
# Configurációs paraméterek.  
#

my $TOKEN = '';   									# a vezérlőpultban találkató token kulcs (32 karakter hosszú)
my $DOMAIN = '';     								# DynDNS cím (pl. pelda.dnse.hu)	
													# proxy szerver beállítása  (ha használsz ilyet)
my $PROXY = '';                   					# pl.: $PROXY='proxy.valami.hu';
my $PROXY_PORT = '';              					# proxy portja alap: 3128

#===============================================================================

use IO::Socket;
use Sys::Syslog qw/:DEFAULT setlogsock/;
use File::Basename;
use POSIX qw/setsid/;
use strict;

my($Server) = 'dnse.hu';
my($ServerPort) = 80;
my($URI) = 'http://dnse.hu/update.php';

if ($PROXY && $PROXY_PORT){
    $Server = $PROXY;
    $ServerPort = $PROXY_PORT;
}
open STDERR, '>>/dev/null' or die "Can't write to /dev/null: $!";

my($exit) = 0;
my($proto) = getprotobyname('udp');
my($program) = basename($0);
my($port, @addr, $new_ip, $CON, $pid);

socket(SOCKET, PF_INET, SOCK_DGRAM, $proto);
setlogsock( 'unix' );

openlog($program, 'cons,pid', 'user');

connect(SOCKET, sockaddr_in(0, inet_aton('27.0.0.1')));
($port, @addr) = unpack_sockaddr_in(getsockname(SOCKET));
$new_ip = join("\n", map {inet_ntoa($_)} @addr);

$CON = new IO::Socket::INET (
		Proto=>'tcp',
		PeerAddr=>$Server,
		PeerPort=>$ServerPort,
		Reuse=>1 ) || { error() };

$CON->autoflush(1);

print($CON "GET $URI?token=$TOKEN&domain=$DOMAIN HTTP/1.0\r\n\r\n");

while (<$CON>){
	if ($_ == "OK"){
		print("$_\n");
	}
	else
	{
        syslog('crit', "HIBA: $_ \n");
	    print "Hiba $_ \n";
	    closelog();
		exit($exit);
	}
}
close ($CON);
closelog();

sub error{
    print("Sikertelen csatlakozás a $Server szerverhez ! \n");
    syslog('crit',"Sikertelen csatlakozás a $Server szerverhez ! \n");
    closelog();
    exit($exit);
}
