You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.2 KiB
62 lines
2.2 KiB
From eaefaf63be7f083b601505e20eb88e658f355a0b Mon Sep 17 00:00:00 2001 |
|
From: Laszlo Ersek <lersek@redhat.com> |
|
Date: Tue, 7 Oct 2014 12:40:13 +0200 |
|
Subject: [PATCH] authenticate: fix bugzilla.redhat.com issues (4.4.x) |
|
|
|
There are two problems in the authenticate() subroutine. |
|
|
|
The first is that git-send-bugzilla sends a GET request, even though it |
|
should send a POST. This is remedied by replacing "mech->submit" with the |
|
more explicit "mech->submit_form", where the login button is explicitly |
|
selected for clicking. |
|
|
|
The second problem is documented here: |
|
|
|
https://jira.almworks.com/browse/DZO-1189 |
|
|
|
Basically, the POST request for logging in must contain the valid |
|
Bugzilla_login_token value that the initial GET returned. |
|
|
|
Unfortunately, the initial GET doesn't return such a Bugzilla_login_token |
|
at all, because Bugzilla 4.4.x (erroneously) provides that only if the |
|
initial GET contains Bugzilla_login_request_cookie. Since we don't do that |
|
on the initial get, we receive no Bugzilla_login_token, and then the POST |
|
request is rejected. |
|
|
|
This is fixed by sending the initial GET twice -- the first GET will makes |
|
sure we set Bugzilla_login_request_cookie on the second, and the second |
|
(now correct) GET makes sure that Bugzilla_login_token is set in the |
|
response. We then reflect Bugzilla_login_token in the login POST request. |
|
|
|
Signed-off-by: Laszlo Ersek <lersek@redhat.com> |
|
--- |
|
git-send-bugzilla.pl | 12 +++++++++--- |
|
1 file changed, 9 insertions(+), 3 deletions(-) |
|
|
|
diff --git a/git-send-bugzilla.pl b/git-send-bugzilla.pl |
|
index 219cdcc..98582c4 100755 |
|
--- a/git-send-bugzilla.pl |
|
+++ b/git-send-bugzilla.pl |
|
@@ -42,10 +42,16 @@ sub authenticate { |
|
$mech->get("$url?GoAheadAndLogIn=1"); |
|
die "Can't fetch login form: ", $mech->res->status_line |
|
unless $mech->success; |
|
+ $mech->get("$url?GoAheadAndLogIn=1"); |
|
+ |
|
+ $mech->submit_form( |
|
+ with_fields => { |
|
+ Bugzilla_login => $username, |
|
+ Bugzilla_password => $password |
|
+ }, |
|
+ button => "GoAheadAndLogIn" |
|
+ ); |
|
|
|
- $mech->set_fields(Bugzilla_login => $username, |
|
- Bugzilla_password => $password); |
|
- $mech->submit; |
|
die "Login submission failed: ", $mech->res->status_line |
|
unless $mech->success; |
|
die "Invalid login or password\n" if $mech->title =~ /Invalid/i; |
|
-- |
|
1.8.3.1 |
|
|
|
|