From e2a883274762cadaca25bcb2dab7d324683c1071 Mon Sep 17 00:00:00 2001
From: Jan Soukal <soukal@ics.muni.cz>
Date: Mon, 2 Jul 2012 16:31:03 +0200
Subject: [PATCH] betaverze klienta 2.0.0, u odesilajiciho pridan eval block

---
 src/warden-client/lib/WardenClientSend.pm | 101 ++++++++++++----------
 1 file changed, 56 insertions(+), 45 deletions(-)

diff --git a/src/warden-client/lib/WardenClientSend.pm b/src/warden-client/lib/WardenClientSend.pm
index 05f7850..6c5d007 100755
--- a/src/warden-client/lib/WardenClientSend.pm
+++ b/src/warden-client/lib/WardenClientSend.pm
@@ -79,51 +79,62 @@ sub c2s
 #-------------------------------------------------------------------------------
 sub saveNewEvent
 {
-  my $warden_path = shift;
-  my $event_ref = shift;
-
-  my $etcdir = $warden_path . "/etc/";
-  my $libdir = $warden_path . "/lib/";
-
-  # read the config file
-  require $libdir .  "WardenClientConf.pm";
-  my $conf_file = $etcdir . "warden-client.conf";
-  my ($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file) = WardenClientConf::loadConf($conf_file);
-
-  # prepare variables of event 
-  my @event         = @{$event_ref};
-  my $service		    = $event[0];
-  my $detected		  = $event[1];
-  my $type		      = $event[2];
-  my $source_type	  = $event[3];
-  my $source		    = $event[4];
-  my $target_proto	= $event[5];
-  my $target_port	  = $event[6];
-  my $attack_scale	= $event[7];
-  my $note		      = $event[8];
-  my $priority		  = $event[9];
-  my $timeout		    = $event[10];
-
-  # create SOAP data object
-  my $event = SOAP::Data->name(
-    event => \SOAP::Data->value(
-      SOAP::Data->name(SERVICE		  => $service),
-      SOAP::Data->name(DETECTED		  => $detected),
-      SOAP::Data->name(TYPE	    	  => $type),
-      SOAP::Data->name(SOURCE_TYPE  => $source_type),
-      SOAP::Data->name(SOURCE		    => $source),
-      SOAP::Data->name(TARGET_PROTO	=> $target_proto),
-      SOAP::Data->name(TARGET_PORT	=> $target_port),
-      SOAP::Data->name(ATTACK_SCALE	=> $attack_scale),
-      SOAP::Data->name(NOTE		      => $note),
-      SOAP::Data->name(PRIORITY     => $priority),
-      SOAP::Data->name(TIMEOUT		  => $timeout)
-    )
-  );
-
-  my $result = c2s($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, "saveNewEvent", $event);
-  $result ? return 1 : return 0;
-
+  my $result;
+  eval {
+    my $warden_path = shift;
+    my $event_ref = shift;
+
+    my $etcdir = $warden_path . "/etc/";
+    my $libdir = $warden_path . "/lib/";
+
+    # read the config file
+    require $libdir .  "WardenClientConf.pm";
+    my $conf_file = $etcdir . "warden-client.conf";
+    my ($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file) = WardenClientConf::loadConf($conf_file);
+
+    # prepare variables of event 
+    my @event         = @{$event_ref};
+    my $service		    = $event[0];
+    my $detected		  = $event[1];
+    my $type		      = $event[2];
+    my $source_type	  = $event[3];
+    my $source		    = $event[4];
+    my $target_proto	= $event[5];
+    my $target_port	  = $event[6];
+    my $attack_scale	= $event[7];
+    my $note		      = $event[8];
+    my $priority		  = $event[9];
+    my $timeout		    = $event[10];
+
+    # create SOAP data object
+    my $event = SOAP::Data->name(
+      event => \SOAP::Data->value(
+        SOAP::Data->name(SERVICE		  => $service),
+        SOAP::Data->name(DETECTED		  => $detected),
+        SOAP::Data->name(TYPE	    	  => $type),
+        SOAP::Data->name(SOURCE_TYPE  => $source_type),
+        SOAP::Data->name(SOURCE		    => $source),
+        SOAP::Data->name(TARGET_PROTO	=> $target_proto),
+        SOAP::Data->name(TARGET_PORT	=> $target_port),
+        SOAP::Data->name(ATTACK_SCALE	=> $attack_scale),
+        SOAP::Data->name(NOTE		      => $note),
+        SOAP::Data->name(PRIORITY     => $priority),
+        SOAP::Data->name(TIMEOUT		  => $timeout)
+      )
+    );
+
+    $result = c2s($uri, $ssl_key_file, $ssl_cert_file, $ssl_ca_file, "saveNewEvent", $event);
+    #$result ? return 1 : return 0;
+  }; #end of eval block
+  
+  if ($@) {
+    print STDERR "Warden-client unexpected end in eval block: " . $@ . "\n";
+    return 0;
+  }
+  else {
+    $result ? return 1 : return 0;
+    }
+  
 } # End of saveNewEvent
 
 1;
-- 
GitLab