From 5979c22b30775fa2ebe09b3b415246d73a50bd17 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 20 Apr 2014 15:28:41 +0200 Subject: [PATCH] libvideosite: Add special "environment" connector that will take proxy settings from environment variables --- libvideosite.pm | 13 +++++++++---- videosite/Base.pm | 15 ++++++++++++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/libvideosite.pm b/libvideosite.pm index c39d9e5..bf02068 100644 --- a/libvideosite.pm +++ b/libvideosite.pm @@ -52,7 +52,12 @@ my $defaultconfig = { 'name' => 'direct', '_immutable' => '1', 'schemas' => {}, - } + }, + 'environment' => { + 'name' => 'environment', + '_immutable' => '1', + 'schemas' => {}, + }, }, 'config-version' => '2', }; @@ -86,7 +91,7 @@ my $videosite_commands = { 'set' => sub { _cmd_set(@_); }, - + 'show' => sub { _cmd_show(@_); }, @@ -279,7 +284,7 @@ sub _ploader { } _debug("Loaded %d plugins", $#g+1); - + return @g; } @@ -385,7 +390,7 @@ sub _config_list_add { _config_set($path, join(',', @c)); } -# +# # Remove an item from the list # sub _config_list_del { diff --git a/videosite/Base.pm b/videosite/Base.pm index 1244bc6..1bd229f 100644 --- a/videosite/Base.pm +++ b/videosite/Base.pm @@ -19,7 +19,7 @@ sub new { }, @_, }; - + # Add the 'enabled' property to all modules $self->{_PARAMS}->{enabled} = [1, 'Whether the module is enabled']; bless($self, $class); @@ -164,6 +164,15 @@ sub ua { delete($ENV{'HTTPS_PROXY'}); if (defined($self->{'_CONNECTOR'})) { + # + # The "environment" connector is special, it loads proxies from + # the environment variables. It also does not define any schemas, + # so the code below will not reset this. + # + if ($self->{'_CONNECTOR'}->{'name'} eq 'environment') { + $self->debug("Using proxy settings from environment"); + $ua->env_proxy; + } my $schemas = $self->{'_CONNECTOR'}->{'schemas'}; foreach (keys(%{$schemas})) { $self->debug("Adding schema %s with proxy %s", $_, $schemas->{$_}); @@ -171,7 +180,7 @@ sub ua { # OK, so here's the gist. # # The usual way of reqesting an HTTPS URL through a proxy is - # to connect to the proxy server, issue a CONNECT request to + # to connect to the proxy server, issue a CONNECT request to # create a channel to the web server and start an SSL session over # this channel, so there is an end-to-end connection between # the client and the server. @@ -236,7 +245,7 @@ sub decode_querystring { sub connectors { my $self = shift; - + return $self->{_API}->{connectors}->(); } -- 1.8.3.1