#!/usr/local/bin/perl

use strict;

use OpenSIPS qw ( log );
use OpenSIPS::Constants;

use Net::DNS;
use DBI;

sub locationRuriUpdate
{
	my $m = shift;
	my $requestedDomain = OpenSIPS::AVP::get("ruriDomain");
	my @nameservers = ('xx.xx.xx.xx','xx.xx.xx.xx');

	my $nameserver;
	my $resultA;
	my $IPAddress;

	my $res_reqdomain = new Net::DNS::Resolver;
	foreach $nameserver(@nameservers){
		$res_reqdomain->nameservers($nameserver);
		$res_reqdomain->udp_timeout (1);
		$resultA = $res_reqdomain->query($requestedDomain,'A');
		if($resultA)
		{
			last;
		}
	}

	if($resultA)
	{
		foreach my $respreqdomain ($resultA->answer)
		{
			$IPAddress = $respreqdomain->address;
		}
	}

	my $db = "dbname";
	my $db_user = "username";
	my $db_pass = "password";
	my $db_host = "xx.xx.xx.xx";

	my $dbh = DBI->connect("DBI:mysql:database=$db;host=$db_host", "$db_user", "$db_pass");
	my $requete = "SELECT received FROM location WHERE received LIKE '%$IPAddress%'";
	my $sth = $dbh->prepare($requete);
	$sth->execute or die "Execution requete SQL NOK";
	my @locationResults = $sth->fetchrow_array;

	my @newDomainParts = split /:/, $locationResults[0];
	if(@newDomainParts)
	{
		log(L_INFO, "New domain: $newDomainParts[1]\n");
		log(L_INFO, "New port: $newDomainParts[2]\n");
		OpenSIPS::AVP::add("newRuriDomain","$newDomainParts[1]");
		OpenSIPS::AVP::add("newRuriPort","$newDomainParts[2]");
	}
	return 1;
}
