#!/usr/bin/perl

#use diagnostics;
use warnings;
use strict;
use Config::IniFiles;
use IO::Handle;
flush STDIN;
my $cfg = new Config::IniFiles( -file => "/etc/esia/esia.conf" );
my $input = 'STDIN';
my $hostname=<$input>;
chomp($hostname);
my $hostaddrPort=<$input>;
chomp($hostaddrPort);
my $trap='';
my $oid ='';
my $localtime=localtime();
#lecture de la trap
while (defined(my $line = <$input>))
{
	#print $line."\n";
	my $temp1;
    	my $temp2;
    	($temp1, $temp2) = split (/ /, $line, 2);
    	chomp ($temp1);       # Variable NAME
    	chomp ($temp2);       # Variable VALUE
    	chomp ($line);
    	my $variable_fix;
      	if (defined($temp2) )	# Check if line 1 contains 'variable value' or just 'value'  
      	{
        	$variable_fix = 0;
      	}
      	else
      	{
        	$variable_fix = 1;
      	}
    	if ($variable_fix == 0 )
    	{
      		if ( ($temp2 =~ /^\"/) && ( ! ($temp2 =~ /\"$/)) )
      		{
			chomp $temp2;				# Remove the newline character
        		while (defined(my $line2 = <$input>))
        		{
          			chomp $line2;
				$temp2.=" ".$line2;
			        if ($line2 =~ /\"$/)
          			{
            				last;
          			}
        		}
      		}
    	}
	$trap.=$temp1." ".$temp2."\n";
	if($temp1=~/\.1\.3\.6\.1\.6\.3\.1\.1\.4\.1\.0/)
	{
		$oid = $temp2;
	}
	if($temp1=~/\.1\.3\.6\.1\.6\.3\.1\.1\.4\.3\.0/)
	{
		last;
	}
}
my $pqueu = new Config::IniFiles( -file => $cfg->val( 'ESIA', 'trap_pqueue_file'));
if($pqueu->exists('TRAP',$oid))
{
	my $spooldirectory=$cfg->val( 'ESIA', 'spool_directory' );
	my $filename = $spooldirectory."esiaTrap-".$pqueu->val('TRAP',$oid).time().$$;
	open my($file), '>', $filename or die "Impossible d'ouvrir $filename : $!\n";
	print {$file}"$hostname\n";
	print {$file}"$hostaddrPort\n";
	print {$file}"$trap";
	print {$file}"date $localtime\n";
	close ($file);	
}
else
{
	print'INCONNU';
	open my($file),'>>',$cfg->val( 'LOG', 'log_trap_unknown' ) or die "Impossible d'ouvrir ".$cfg->val( 'LOG', 'log_trap_unknown' )." : $!\n";
	print {$file}"$hostname\n";
	print {$file}"$hostaddrPort\n";
	print {$file}"$trap";
	print {$file}"date $localtime\n\n";
	close ($file);
}
#my $filena = "/var/log/esia/handler.log";
#open my($f), '>>', $filena or die "Impossible d'ouvrir $filena : $!\n";
#print {$f}"$hostname#$hostaddrPort#$trap#$localtime\n";
#close ($f);






