Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
devel:languages:python
python-bugzilla
106-basic-auth.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 106-basic-auth.diff of Package python-bugzilla
--- bugzilla/_backendxmlrpc.py | 14 ++++++++++++++ bugzilla/base.py | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) --- a/bugzilla/_backendxmlrpc.py +++ b/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) @@ -127,6 +128,9 @@ class _BugzillaXMLRPCProxy(ServerProxy, # pylint: enable=no-member return ret + + def clear_token(self): + self.__bugzillasession.set_token_value(None) class _BackendXMLRPC(_BackendBase): @@ -142,6 +146,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() --- a/bugzilla/base.py +++ b/bugzilla/base.py @@ -177,7 +177,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 @@ -210,6 +211,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") @@ -249,6 +251,7 @@ class Bugzilla(object): self._settokenfile(tokenfile) self._setconfigpath(configpaths) + self._basic_auth = basic_auth if url: self.connect(url) @@ -601,6 +604,8 @@ class Bugzilla(object): raise ValueError("missing username") 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:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor