File Coverage

lib/Rex/Interface/Exec/HTTP.pm
Criterion Covered Total %
statement 8 38 21.0
branch 0 12 0.0
condition 0 5 0.0
subroutine 3 5 60.0
pod 0 2 0.0
total 11 62 17.7


line stmt bran cond sub pod time code
1             #
2             # (c) Jan Gehring
3             #
4              
5             package Rex::Interface::Exec::HTTP;
6              
7 1     1   14 use v5.12.5;
  1         3  
8 1     1   6 use warnings;
  1         3  
  1         26  
9 1     1   6 use Rex::Commands;
  1         2  
  1         7  
10              
11             our $VERSION = '1.14.3'; # VERSION
12              
13             sub new {
14 0     0 0   my $that = shift;
15 0   0       my $proto = ref($that) || $that;
16 0           my $self = {@_};
17              
18 0           bless( $self, $proto );
19              
20 0           return $self;
21             }
22              
23             sub exec {
24 0     0 0   my ( $self, $cmd, $path, $option ) = @_;
25              
26 0           Rex::Logger::debug("Executing: $cmd");
27              
28 0 0         if ( exists $option->{path} ) {
29 0           $path = $option->{path};
30             }
31              
32 0 0         if ($path) { $path = "PATH=$path" }
  0            
33 0   0       $path ||= "";
34              
35             # let the other side descide if LC_ALL=C should be used
36             # for example, this will not work on windows
37             #$cmd = "LC_ALL=C $path " . $cmd;
38              
39 0           Rex::Commands::profiler()->start("exec: $cmd");
40              
41 0           my $new_cmd = $cmd;
42 0 0         if ( Rex::Config->get_source_global_profile ) {
43 0           $new_cmd = ". /etc/profile >/dev/null 2>&1; $new_cmd";
44             }
45              
46 0           my $resp =
47             connection->post( "/execute", { exec => $new_cmd, options => $option } );
48 0           Rex::Commands::profiler()->end("exec: $cmd");
49              
50 0 0         if ( $resp->{ok} ) {
51 0           $? = $resp->{retval};
52 0           my ( $out, $err ) = ( $resp->{output}, "" );
53              
54 0           Rex::Logger::debug($out);
55              
56 0 0         if ($err) {
57 0           Rex::Logger::debug("========= ERR ============");
58 0           Rex::Logger::debug($err);
59 0           Rex::Logger::debug("========= ERR ============");
60             }
61              
62 0 0         if (wantarray) { return ( $out, $err ); }
  0            
63              
64 0           return $out;
65             }
66             else {
67 0           $? = 1;
68             }
69              
70             }
71              
72             1;