add option to msva-query-agent to just return agent version info
authorJameson Rollins <jrollins@finestructure.net>
Tue, 28 Dec 2010 15:20:58 +0000 (10:20 -0500)
committerJameson Rollins <jrollins@finestructure.net>
Tue, 28 Dec 2010 15:20:58 +0000 (10:20 -0500)
This option makes only a simple GET request to the agent and returns
the agent version portion of the response.

Crypt/Monkeysphere/MSVA/Client.pm
msva-query-agent

index 046936af6023001a9f834dbb7ad7b1cb5c1a60b4..4871e90e50d1ef8a65373437a7129396ea1e9a16 100644 (file)
     $self->{logger}->log(@_);
   }
 
+  sub agent_info {
+    my $self = shift;
+    my $requesturl = $self->{socket} . '/';
+    my $request = HTTP::Request->new('GET', $requesturl);
+    $self->log('debug', "Contacting MSVA at %s\n", $requesturl);
+    my $response = $self->{ua}->request($request);
+    my $status = $response->status_line;
+    my $ret;
+    if ($status eq '200 OK') {
+      $ret = from_json($response->content);
+    }
+    return $status, $ret;
+  }
+
   sub query_agent {
     my $self = shift;
     my $context = shift;
index 972037f4372c34a9880207116743ab1e0aaddef4..3ba8e2a9a1ff119c23eea244ec4d3cb23c761bc3 100755 (executable)
@@ -23,10 +23,25 @@ use Crypt::Monkeysphere::MSVA::Client;
 
 my $context = shift;
 if ($context eq '--help') {
-    printf STDERR "Usage: msva-query-agent CONTEXT PEER PKC_TYPE [PEER_TYPE] <PKC_DATA\n";
-    printf STDERR "       msva-query-agent CONTEXT PEER PKC_TYPE PEER_TYPE PKC_DATA\n";
+  printf STDERR "Usage: msva-query-agent CONTEXT PEER PKC_TYPE [PEER_TYPE] <PKC_DATA\n";
+  printf STDERR "       msva-query-agent CONTEXT PEER PKC_TYPE PEER_TYPE PKC_DATA\n";
+  printf STDERR "       msva-query-agent --version\n";
+  exit 0;
+} elsif ($context eq '--version') {
+  my $client = Crypt::Monkeysphere::MSVA::Client->new(
+                                                     socket => $ENV{MONKEYSPHERE_VALIDATION_AGENT_SOCKET},
+                                                     log_level => $ENV{MSVA_LOG_LEVEL},
+                                                    );
+  my ($status,$ret) = $client->agent_info();
+  $client->log('verbose', "status: %s\n", $status);
+  if (defined $ret) {
+    printf("%s", $ret->{server});
+    printf("\n") if (-t STDOUT);
     exit 0;
+  }
+  exit 1;
 }
+
 my $peer = shift;
 my $pkctype = shift;
 my $peertype = shift;
@@ -47,7 +62,7 @@ my $client = Crypt::Monkeysphere::MSVA::Client->new(
 
 my ($status,$ret) = $client->query_agent($context,$peer,$peertype,$pkctype,$pkcdata);
 
-$client->log('info', "status: %s\n", $status);
+$client->log('verbose', "status: %s\n", $status);
 if (defined $ret) {
   $client->log('info', "valid: %s\n", $ret->{valid});
   $client->log('info', "server: %s\n", $ret->{server});
@@ -70,6 +85,8 @@ msva-query-agent CONTEXT PEER PKC_TYPE [PEER_TYPE] < /path/to/public_key_carrier
 
 msva-query-agent CONTEXT PEER PKC_TYPE PEER_TYPE PKC_DATA
 
+msva-query-agent --version
+
 =head1 ABSTRACT
 
 msva-query-agent validates certificates for a given use by querying a