diff --git a/106-basic-auth.diff b/106-basic-auth.diff new file mode 100644 index 0000000..891ab4b --- /dev/null +++ b/106-basic-auth.diff @@ -0,0 +1,83 @@ +--- + bugzilla/base.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +Index: python-bugzilla-3.0.2/bugzilla/base.py +=================================================================== +--- python-bugzilla-3.0.2.orig/bugzilla/base.py ++++ python-bugzilla-3.0.2/bugzilla/base.py +@@ -175,7 +175,8 @@ class Bugzilla(object): + def __init__(self, url=-1, user=None, password=None, cookiefile=-1, + sslverify=True, tokenfile=-1, use_creds=True, api_key=None, + cert=None, configpaths=-1, +- force_rest=False, force_xmlrpc=False, requests_session=None): ++ force_rest=False, force_xmlrpc=False, requests_session=None, ++ basic_auth=False): + """ + :param url: The bugzilla instance URL, which we will connect + to immediately. Most users will want to specify this at +@@ -212,6 +213,7 @@ class Bugzilla(object): + :param requests_session: An optional requests.Session object the + API will use to contact the remote bugzilla instance. This + way the API user can set up whatever auth bits they may need. ++ :param basic_auth: Use headers with HTTP Basic authentication + """ + if url == -1: + raise TypeError("Specify a valid bugzilla url, or pass url=None") +@@ -253,6 +255,7 @@ class Bugzilla(object): + self._setcookiefile(cookiefile) + self._settokenfile(tokenfile) + self._setconfigpath(configpaths) ++ self._basic_auth = basic_auth + + if url: + self.connect(url) +@@ -607,6 +610,9 @@ class Bugzilla(object): + if not self.password: + raise ValueError("missing password") + ++ if self._basic_auth: ++ self._backend.set_basic_auth(self.user, self.password) ++ + payload = {"login": self.user} + if restrict_login: + payload['restrict_login'] = True +Index: python-bugzilla-3.0.2/bugzilla/_backendxmlrpc.py +=================================================================== +--- python-bugzilla-3.0.2.orig/bugzilla/_backendxmlrpc.py ++++ python-bugzilla-3.0.2/bugzilla/_backendxmlrpc.py +@@ -2,6 +2,7 @@ + # See the COPYING file in the top-level directory. + + from logging import getLogger ++import base64 + import sys + from xmlrpc.client import (Binary, Fault, ProtocolError, + ServerProxy, Transport) +@@ -136,6 +137,9 @@ class _BugzillaXMLRPCProxy(ServerProxy, + self.__bugzillasession.set_token_value(ret.get('token')) + return ret + ++ def clear_token(self): ++ self.__bugzillasession.set_token_value(None) ++ + + class _BackendXMLRPC(_BackendBase): + """ +@@ -150,6 +154,16 @@ class _BackendXMLRPC(_BackendBase): + def is_xmlrpc(self): + return True + ++ def set_basic_auth(self, user, password): ++ """ ++ Set basic authentication method. ++ ++ :return: ++ """ ++ b64str = base64.b64encode("{}:{}".format(user, password).encode("utf-8")) ++ authstr = "Basic {}".format(b64str.decode("utf-8")) ++ self._bugzillasession._session.headers["Authorization"] = authstr ++ + def bugzilla_version(self): + return self._xmlrpc_proxy.Bugzilla.version() + diff --git a/python-bugzilla.changes b/python-bugzilla.changes index b765ec3..b63068c 100644 --- a/python-bugzilla.changes +++ b/python-bugzilla.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Tue Oct 26 10:25:23 UTC 2021 - Pablo Suárez Hernández + +- Fix problem with basic-auth patch for version higher than 3.0.0 (bsc#1098219) + +- Modified: + * 106-basic-auth.diff + +------------------------------------------------------------------- +Tue Oct 26 05:50:05 UTC 2021 - Matej Cepl + +- Revert removing of 106-basic-auth.diff + ------------------------------------------------------------------- Thu Oct 21 17:55:23 UTC 2021 - Marina Latini diff --git a/python-bugzilla.spec b/python-bugzilla.spec index cd0b600..80a0c58 100644 --- a/python-bugzilla.spec +++ b/python-bugzilla.spec @@ -27,6 +27,9 @@ License: GPL-2.0-or-later Group: Development/Libraries/Python URL: https://github.com/python-bugzilla/python-bugzilla Source: https://files.pythonhosted.org/packages/source/p/python-bugzilla/python-bugzilla-%{version}.tar.gz +# PATCH-FIX-UPSTREAM 106-basic-auth.diff bsc#1098219 mcepl@suse.com +# Fix basic authentication on bugzilla.suse.com +Patch0: 106-basic-auth.diff BuildRequires: %{python_module pytest} BuildRequires: %{python_module requests} BuildRequires: %{python_module setuptools} @@ -34,7 +37,7 @@ BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-requests Requires(post): update-alternatives -Requires(postun): update-alternatives +Requires(postun):update-alternatives Suggests: osc Conflicts: %{oldpython}-bugzillatools Obsoletes: python2-bugzilla