From c849a9f409e8b3cd5091dd8b674670850d7bd3b9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 29 Jun 2013 13:31:47 -0400 Subject: [PATCH 1/1] openid: Automatically upgrade openid_realm to https when accessed via https. --- IkiWiki/Plugin/openid.pm | 15 ++++++++++++--- debian/changelog | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index 40a956849..e3b9982f2 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -156,8 +156,8 @@ sub validate ($$$;$) { $trust_root=$cgiurl if ! defined $trust_root; my $check_url = $claimed_identity->check_url( - return_to => "$cgiurl?do=postsignin", - trust_root => $trust_root, + return_to => auto_upgrade_https($q, "$cgiurl?do=postsignin"), + trust_root => auto_upgrade_https($q, $trust_root), delayed_return => 1, ); # Redirect the user to the OpenID server, which will @@ -258,10 +258,19 @@ sub getobj ($$) { ua => $ua, args => $q, consumer_secret => sub { return shift()+$secret }, - required_root => $cgiurl, + required_root => auto_upgrade_https($q, $cgiurl), ); } +sub auto_upgrade_https { + my $q=shift; + my $url=shift; + if ($q->https()) { + $url=~s/^http:/https:/i; + } + return $url; +} + sub load_openid_module { # Give up if module is unavailable to avoid needing to depend on it. eval q{use Net::OpenID::Consumer}; diff --git a/debian/changelog b/debian/changelog index d98af52cf..587a375b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,8 @@ ikiwiki (3.20130519) UNRELEASED; urgency=low * osm: Remove trailing slash from KML maps icon. * page.tmpl: omit searchform, trails, sidebar and most metadata in CGI (smcv) + * openid: Automatically upgrade openid_realm to https when + accessed via https. -- Joey Hess Sun, 23 Jun 2013 14:02:01 -0400 -- 2.44.0