Skip to content

Commit

Permalink
kasserver: Switch from sha1 to plain authentication
Browse files Browse the repository at this point in the history
All-Inkl discontinues their 'sha1' authentication method starting
December 2022.

Fix #4
  • Loading branch information
fetzerch committed Aug 3, 2022
1 parent bcf115d commit e22b5b0
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 13 deletions.
11 changes: 4 additions & 7 deletions kasserver/__init__.py
Expand Up @@ -51,19 +51,16 @@ def __init__(self):
self._get_credentials()

def _get_credentials(self):
def _sha1(string):
return None if not string else hashlib.sha1(string.encode()).hexdigest()

self._username = os.environ.get("KASSERVER_USER", None)
self._auth_sha1 = _sha1(os.environ.get("KASSERVER_PASSWORD", None))
self._password = os.environ.get("KASSERVER_PASSWORD", None)
if self._username:
return

server = "kasapi.kasserver.com"
try:
info = netrc.netrc().authenticators(server)
self._username = info[0]
self._auth_sha1 = _sha1(info[2])
self._password = info[2]
except (FileNotFoundError, netrc.NetrcParseError) as err:
LOGGER.warning(
"Cannot load credentials for %s from .netrc: %s", server, err
Expand All @@ -72,8 +69,8 @@ def _sha1(string):
def _request(self, request, params):
request = {
"KasUser": self._username,
"KasAuthType": "sha1",
"KasAuthData": self._auth_sha1,
"KasAuthType": "plain",
"KasAuthData": self._password,
"KasRequestType": request,
"KasRequestParams": params,
}
Expand Down
11 changes: 5 additions & 6 deletions tests/test_kasserver.py
Expand Up @@ -36,7 +36,6 @@

USERNAME = "username"
PASSWORD = "password"
PASSWORD_SHA1 = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"

# pylint: disable=protected-access
# pylint: disable=attribute-defined-outside-init
Expand All @@ -56,7 +55,7 @@ def test_getcredentials_from_env(netrc):
netrc.side_effect = FileNotFoundError("")
server = KasServer()
assert server._username == USERNAME
assert server._auth_sha1 == PASSWORD_SHA1
assert server._password == PASSWORD

@staticmethod
@mock.patch.dict("os.environ", {})
Expand All @@ -66,7 +65,7 @@ def test_getcredentials_from_netrc(netrc):
netrc.return_value.authenticators.return_value = (USERNAME, "", PASSWORD)
server = KasServer()
assert server._username == USERNAME
assert server._auth_sha1 == PASSWORD_SHA1
assert server._password == PASSWORD

@staticmethod
@mock.patch.dict("os.environ", {})
Expand All @@ -76,7 +75,7 @@ def test_getcredentials_failed_netrc(netrc):
netrc.side_effect = FileNotFoundError("")
server = KasServer()
assert not server._username
assert not server._auth_sha1
assert not server._password


class TestKasServer:
Expand Down Expand Up @@ -186,8 +185,8 @@ def test_request(self, kasserver, kasapi):
kasserver._request(self.REQUEST_TYPE, self.REQUEST_PARAMS)
request = {
"KasUser": USERNAME,
"KasAuthType": "sha1",
"KasAuthData": PASSWORD_SHA1,
"KasAuthType": "plain",
"KasAuthData": PASSWORD,
"KasRequestType": self.REQUEST_TYPE,
"KasRequestParams": self.REQUEST_PARAMS,
}
Expand Down

0 comments on commit e22b5b0

Please sign in to comment.