Skip to content
Snippets Groups Projects
Select Git revision
  • acad04cb412c9e8d7896d24b1d50ef1490f06f2c
  • master default protected
  • devel
  • hruska-feature-clients-api
  • malostik-#5066-deduplicate-idea-ids
  • warden-postgresql-port
  • hruska-feature-#6799-filter-keys
  • hruska-feature-5066-duplicateIdeaID
  • warden-client-3.0-beta3
  • warden-server-3.0-beta3
  • warden-client-2.2-final
  • warden-server-2.2-final
  • warden-client-3.0-beta2
  • warden-server-3.0-beta2
  • warden-client-2.2
  • warden-server-2.2-patch3
  • warden-client-3.0-beta1
  • warden-server-3.0-beta1
  • warden-server-2.2-patch1
  • warden-client-3.0-beta0
  • warden-server-3.0-beta0
  • warden-server-2.2
  • warden-server-2.1-patch1
  • warden-client-2.1
  • warden-server-2.1
  • warden-server-2.1-beta6
  • warden-server-2.1-beta5
  • warden-server-2.1-beta4
28 results

WardenStatus.pm

Blame
  • WardenStatus.pm 7.26 KiB
    #!/usr/bin/perl -w
    #
    # WardenStatus.pm
    #
    # Copyright (C) 2011-2012 Cesnet z.s.p.o
    #
    # Use of this source is governed by a BSD-style license, see LICENSE file.
    
    package WardenStatus;
    
    use strict;
    use SOAP::Lite;
    use IO::Socket::SSL qw(debug1);
    use SOAP::Transport::HTTP;
    
    our $VERSION = "2.0";
    
    
    #-------------------------------------------------------------------------------
    # errMsg - print error message and die
    #-------------------------------------------------------------------------------
    sub errMsg
    {
      my $msg = shift;
      die($msg . "\n");
    } # End of errMsg
    
    
    #-------------------------------------------------------------------------------
    # c2s - connect to server, send request and receive response
    #-------------------------------------------------------------------------------
    sub c2s 
    {
      my $uri               = shift;
      my $ssl_key_file      = shift;
      my $ssl_cert_file     = shift;
      my $ssl_ca_file       = shift;
      my $method            = shift;
      my $data              = shift;
      my $client;
    
      my ($server, $port, $service) = $uri =~ /https:\/\/(.+)\:(\d+)\/(.+)/;
      if (!($client = SOAP::Transport::HTTP::Client->new())) {
        errMsg("Sorry, unable to create socket: " . &SOAP::Transport::HTTP::Client::errstr)
      }
      $client->timeout(10);
      $client->ssl_opts(verify_hostname     => 1,
                        SSL_use_cert        => 1,
                        SSL_verify_mode     => 0x02,
                        SSL_key_file        => $ssl_key_file,
                        SSL_cert_file       => $ssl_cert_file,
                        SSL_ca_file         => $ssl_ca_file);
    
      # set URI and serialize SOAP envelope and data object
      my $soap     = SOAP::Lite->uri($service)->proxy($uri);
      my $envelope = $soap->serializer->envelope(method => $method);
    
      # setting of TCP URI and send serialized SOAP envelope and data
      my $server_uri = "https://$server:$port/$service";
      my $result = $client->send_receive(envelope => $envelope, endpoint => $server_uri);
    
      # check server response
      if (!defined $result) {
        errMsg("Error: server returned empty response." . "\n" . "Problem with used SSL ceritificates or Warden server at $server:$port is down.");
      } else {
        # deserialized response from server -> create SOAP envelope and data object
        my $response = $soap->deserializer->deserialize($result);
        # check SOAP fault status
        $response->fault ? errMsg("Server sent error message:: " . $response->faultstring) : return $response;
      }