| 34 | 
   | 
              $pidfile | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 35 | 
   | 
              $retry_wait | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 36 | 
   | 
              $ostype | 
 
 
 
 
 
 
 
 
 | 37 | 
 + | 
              $key | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 38 | 
   | 
              @data | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 39 | 
   | 
             ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 40 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 62 | 
   | 
 &write_pid(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 63 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 64 | 
   | 
 &tcp_configure(); | 
 
 
 
 
 
 
 
 
 | 65 | 
 + | 
 &send_tcp_heartbeat(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 66 | 
   | 
 &send_udp_packet(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 67 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 68 | 
   | 
 $last_udp_time = time; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 288 | 
   | 
     push(@data, "packet.attributes.date $date"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 289 | 
   | 
     push(@data, "packet.attributes.type data"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 290 | 
   | 
     push(@data, "packet.attributes.ip $ip"); | 
 
 
 
 
 
 
 
 
 | 291 | 
 + | 
     push(@data, "packet.attributes.key $key"); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 292 | 
   | 
      | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 293 | 
   | 
     # sort the data | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 294 | 
   | 
     @data = sort(grep(!/^$/, grep(/^packet\./, @data))); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 377 | 
   | 
         return; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 378 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 379 | 
   | 
      | 
 
 
 
 
 
 
 
 
 | 380 | 
 + | 
     print $sock "KEY\n"; | 
 
 
 
 
 
 
 
 
 | 381 | 
 + | 
     $key = <$sock>; | 
 
 
 
 
 
 
 
 
 | 382 | 
 + | 
      | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 383 | 
   | 
     print $sock "ENDHEARTBEAT\n"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 384 | 
   | 
     $response = <$sock>; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 385 | 
   | 
     if (!$response eq "OK\n") { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 457 | 
   | 
                 return $xmltemp; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 458 | 
   | 
             } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 459 | 
   | 
         } | 
 
 
 
 
 
 
 
 
 | 460 | 
 + | 
         # dealing with a null value | 
 
 
 
 
 
 
 
 
 | 461 | 
 + | 
         elsif($curline =~ /^$curlevel([^\.\s]+)$/) { | 
 
 
 
 
 
 
 
 
 | 462 | 
 + | 
             # simply adding a space makes the above elsif deal with it :) | 
 
 
 
 
 
 
 
 
 | 463 | 
 + | 
             # just level with an empty tag in the XML | 
 
 
 
 
 
 
 
 
 | 464 | 
 + | 
             $curline .= " "; | 
 
 
 
 
 
 
 
 
 | 465 | 
 + | 
         } | 
 
 
 
 
 
 
 
 
 | 466 | 
 + | 
         # failing all that, skip the line | 
 
 
 
 
 
 
 
 
 | 467 | 
 + | 
         else { | 
 
 
 
 
 
 
 
 
 | 468 | 
 + | 
             $curline = ""; | 
 
 
 
 
 
 
 
 
 | 469 | 
 + | 
         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 470 | 
   | 
     } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 471 | 
   | 
 } |