diff --git a/classes/connection.py b/classes/connection.py index 092e97a..fe43239 100644 --- a/classes/connection.py +++ b/classes/connection.py @@ -1,6 +1,6 @@ import paramiko as pikuniku # :P -from paramiko.client import SSHClient +from paramiko.client import SSHClient, WarningPolicy from io import BytesIO from pathlib import Path @@ -23,7 +23,9 @@ class Connection: self._vessel = vessel self._client = SSHClient() self._client.load_system_host_keys() - self._client.connect(vessel.address) + self._client.set_missing_host_key_policy(WarningPolicy) + self._client.connect(vessel.address, vessel.username, + vessel.password, passphrase=vessel.passphrase) self._transport = self._client.get_transport() self._transport.set_keepalive(10) self._sftp = self._client.open_sftp() diff --git a/classes/vessel.py b/classes/vessel.py index 1aace0a..d7bb3d4 100644 --- a/classes/vessel.py +++ b/classes/vessel.py @@ -30,17 +30,32 @@ class Vessel: """ tempdir = None + username = None + password = None + passphrase = None if "TempDir" in config.keys(): tempdir = config["TempDir"] + if "Username" in config.keys(): + username = config["Username"] + + if "Password" in config.keys(): + password = config["Password"] + + if "Passphrase" in config.keys(): + passphrase = config["Passphrase"] + if "Address" in config.keys(): - return cls(config.name.split()[1], config["Address"], tempdir) + return cls(config.name.split()[1], config["Address"], username, + password, passphrase, tempdir) else: raise ValueError("Definition for Vessel " + config.name.split()[1] + " does not contain Address!") - def __init__(self, name: str, address: str, tempdir: Optional[Union[str, pathlib.Path]]) -> None: + def __init__(self, name: str, address: str, username: Optional[str] = None, + password: Optional[str] = None, passphrase: Optional[str] = None, + tempdir: Optional[Union[str, pathlib.Path]] = None) -> None: """Initialize new Vessel object Args: @@ -52,6 +67,9 @@ class Vessel: self.name = name self.address = address self.tempdir = pathlib.Path(tempdir or "/tmp/.ContentMonster/") + self.username = username + self.password = password + self.passphrase = passphrase self._connection = None self._uploaded = self.getUploadedFromDB() # Files already uploaded @@ -121,4 +139,4 @@ class Vessel: remotefile (classes.remotefile.RemoteFile): RemoteFile object describing the uploaded File """ - self.connection.compileComplete(remotefile) \ No newline at end of file + self.connection.compileComplete(remotefile)