#
# (c) Jan Gehring <jan.gehring@gmail.com>
# 
# vim: set ts=3 sw=3 tw=0:
# vim: set expandtab:
   
package Rex::Interface::Connection::HTTPS;


use Rex::Interface::Connection::HTTP;
use base qw(Rex::Interface::Connection::HTTP);

use Rex::Logger;

sub new {
   my $that = shift;
   my $proto = ref($that) || $that;
   my $self = $that->SUPER::new(@_);

   bless($self, $proto);

   return $self;
}


sub get_connection_type { return "HTTP"; }

sub _get_proto {
   return "https";
}

sub _get_port {
   my ($self, $port) = @_;
   return $port || 8443;
}

sub ua { 
   my ($self) = @_;
   return $self->{ua} if $self->{ua};

   my $ssl_opts = {};

   if(Rex::Config->get_ca) {
      Rex::Logger::debug("SSL: Verifying Hostname");
      $ssl_opts->{verify_hostname} = 1;
      $ssl_opts->{SSL_ca_file} = Rex::Config->get_ca;
   }
   else {
      Rex::Logger::debug("SSL: NOT Verifying Hostname");
      $ssl_opts->{verify_hostname} = 0;
   }

   if(Rex::Config->get_ca_cert) {
      $ssl_opts->{SSL_cert_file} = Rex::Config->get_ca_cert;
   }

   if(Rex::Config->get_ca_key) {
      $ssl_opts->{SSL_key_file} = Rex::Config->get_ca_key;
   }

   $self->{ua} = LWP::UserAgent->new(
      ssl_opts => $ssl_opts,
   );
}


1;
