1use strict; 2 3use Class::Generate qw(class); 4 5class 'Nmap::Scanner::NmapRun' => { 6 qw( 7 scan_info @Nmap::Scanner::ScanInfo 8 task @Nmap::Scanner::Task 9 run_stats Nmap::Scanner::RunStats 10 scanner $ 11 args $ 12 start $ 13 startstr $ 14 version $ 15 xmloutputversion $ 16 debugging $ 17 verbose $ 18 ), 19 '&as_xml' => q! 20 21 # Passed in by Nmap::Scanner::Backend::Results 22 my $hostlist = shift; 23 24 my $xml = qq(<nmaprun scanner="$self->{scanner}" args="$self->{args}" ) . 25 qq(start="$self->{start}" startstr="$self->{startstr}" ) . 26 qq(version="$self->{version}" ) . 27 qq(xmloutputversion="$self->{xmloutputversion}">\n); 28 29 for my $si ($self->scan_info()) { 30 $xml .= $si->as_xml(); 31 } 32 33 for my $t ($self->task()) { 34 $xml .= $t->as_xml(); 35 } 36 37 $xml .= qq(<verbose level="$self->{verbose}"/> 38<debugging level="$self->{debugging}"/> 39$hostlist); 40 41 $xml .= $self->{'run_stats'}->as_xml(); 42 43 $xml .= "</nmaprun>\n"; 44 45 return $xml; 46 47 ! 48}; 49 50=pod 51 52=head1 DESCRIPTION 53 54This class represents Nmap Summary/scan information. 55 56=head1 PROPERTIES 57 58=head2 scan_info() 59 60 Array of Nmap::Scanner::ScanInfo instances. 61 62=head2 tasks() 63 64 Array of Nmap::Scanner::Task instances. 65 66=head2 run_stats() 67 68=head2 scanner() 69 70=head2 args() 71 72Command line arguments used for this scan. 73 74=head2 start() 75 76Starting time for scan. 77 78=head2 startstr() 79 80Starting time for scan, ctime format 81 82=head2 version() 83 84Version of scanner used. 85 86=head2 xmloutputversion() 87 88=head2 verbose() 89 90=head2 debugging() 91 92=cut 93 941; 95