aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/http_proxy_for_openid.mdwn
blob: a8611da6c25dfbeada640ad2ca5390922ecca38d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
If I try to authenticate using openid to my site, it tries to create a http or https connection to the openid server. This doesn't work, because the direct connection is blocked by the firewall.

It would be good if ikiwiki supported setting up a proxy server to solve this.

I have found if I add:

    newenviron[i++]="HTTPS_PROXY=http://host.domain.com:3128";

to IkiWiki/Wrapper.pm it solves the problem for https requests, however it obviously would be preferred if the proxy name is not hard coded.

Also, the ability to set HTTPS\_CA\_FILE and HTTPS\_CA\_DIR might benefit some people. Then again, it I can't see any evidence that the SSL certificate of the server is being checked. See the [[bug_report|ssl_certificates_not_checked_with_openid]] I filed on this separate issue.

Unfortunately, HTTP\_PROXY doesn't work for http requests, it looks like that library is different.

---

Update 2008-10-26:

Better solution, one that works for both http and https, and uses config options. It appears to work...

Note that using $ua->proxy(['https'], ...); won't work, you get a "Not Implemented" error, see <http://community.activestate.com/forum-topic/lwp-https-requests-proxy>.

Also note that the proxy won't work with liblwpx-paranoidagent-perl, I had to remove liblwpx-paranoidagent-perl first.

Please get the patch from the *.mdwn source.

louie:/usr/share/perl5/IkiWiki/Plugin# diff -u openid.pm.old openid.pm
--- openid.pm.old	2008-10-26 12:18:58.094489360 +1100
+++ openid.pm	2008-10-26 12:40:05.763429880 +1100
@@ -165,6 +165,14 @@
 	        $ua=LWP::UserAgent->new;
 	}
 
+	if (defined($config{"http_proxy"})) {
+		$ua->proxy(['http'], $config{"http_proxy"});
+	}
+
+	if (defined($config{"https_proxy"})) {
+		$ENV{HTTPS_PROXY} = $config{"https_proxy"};
+	}
+
 	# Store the secret in the session.
 	my $secret=$session->param("openid_secret");
 	if (! defined $secret) {


Brian May