43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
import os
|
|
from urllib.parse import urlparse
|
|
|
|
|
|
class Credentials:
|
|
def __init__(self, logger=None):
|
|
"""
|
|
Loads the credentials file, which consists of a text file
|
|
formatted with "hostname username password" and whose default location is set to
|
|
~/.sdichecker.
|
|
"""
|
|
self._credentials = {}
|
|
|
|
env_home = os.getenv("HOME") if os.getenv("HOME") is not None else ''
|
|
try:
|
|
with open(env_home + "/.sdichecker") as file:
|
|
for line in file:
|
|
try:
|
|
(hostname, user, password) = line.rstrip("\n").split(" ", 3)
|
|
self.add(hostname, user, password)
|
|
except ValueError:
|
|
pass
|
|
except FileNotFoundError:
|
|
if logger is not None:
|
|
logger.info("No ~/.sdichecker file found, skipping credentials definition.")
|
|
pass
|
|
|
|
def add(self, site, username, password):
|
|
self._credentials[site] = (username, password)
|
|
|
|
def addFromUrl(self, url, username, password):
|
|
u = urlparse(url)
|
|
self.add(u.hostname, username, password)
|
|
|
|
def get(self, site):
|
|
try:
|
|
return self._credentials[site]
|
|
except KeyError:
|
|
return (None, None)
|
|
|
|
def getFromUrl(self, url):
|
|
u = urlparse(url)
|
|
return self.get(u.hostname) |