File Coverage

blib/lib/Sslscan/Parser.pm
Criterion Covered Total %
statement 4 6 66.6
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 6 8 75.0


line stmt bran cond sub pod time code
1             # $Id: Parser.pm 134 2009-10-16 18:21:38Z jabra $
2             package Sslscan::Parser;
3             {
4             our $VERSION = '0.02';
5             $VERSION = eval $VERSION;
6              
7 2     2   135473 use Object::InsideOut;
  2         200867  
  2         17  
8 2     2   2447 use Sslscan::Parser::Session;
  0            
  0            
9             my @session : Field : Arg(session) : Get(session) :
10             Type(Sslscan::Parser::Session);
11              
12             # parse_file
13             #
14             # Input:
15             # argument - self obj -
16             # argument - xml scalar
17             #
18             # Ouptut:
19             #
20             sub parse_file {
21             my ( $self, $file ) = @_;
22             my $parser = XML::LibXML->new();
23              
24             my $doc = $parser->parse_file($file);
25             return Sslscan::Parser->new(
26             session => Sslscan::Parser::Session->parse( $parser, $doc ) );
27             }
28              
29             sub parse_scan {
30             my ( $self, $args, @ips ) = @_;
31             my $FH;
32             use File::Temp ();
33              
34             my $TEMP_FH = File::Temp->new();
35             my $temp_fname = $TEMP_FH->filename;
36              
37             if ( $args =~ /-output/ ) {
38             die
39             "[Sslscan-Parser] Cannot pass option '-output ' to parse_scan()";
40             }
41             elsif ( $args =~ /--xml/ ) {
42             die
43             "[Sslscan-Parser] Cannot pass option '--xml ' to parse_scan()";
44             }
45             else { }
46             my $cmd
47             = "sslscan --xml=\"$temp_fname\" "
48             . ( join ', ', @ips )
49             . " &> /dev/null";
50             print "$cmd\n";
51             system("$cmd");
52             open $FH, "$temp_fname"
53             || die "[Sslscan-Parser] Could not perform Sslscan scan - $!";
54             my $p = XML::LibXML->new();
55             my $doc = $p->parse_fh($FH);
56             my $parser = Sslscan::Parser->new(
57             session => Sslscan::Parser::Session->parse( $p, $doc ) );
58             close $FH;
59             close $TEMP_FH;
60             return $parser;
61             }
62              
63             sub get_session {
64             my ($self) = @_;
65             return $self->session;
66             }
67              
68             sub get_host {
69             my ( $self, $ip ) = @_;
70             return $self->session->scandetails->get_host_ip($ip);
71             }
72              
73             sub get_all_hosts {
74             my ($self) = @_;
75             my @all_hosts = $self->session->scandetails->all_hosts();
76             return @all_hosts;
77             }
78              
79             sub get_port {
80             my ( $self, $port ) = @_;
81             return $self->session->scandetails->get_port($port);
82             }
83             }
84             1;
85