Add credentials to Vessels/Connections

This commit is contained in:
Kumi 2021-11-26 07:03:13 +01:00
parent 5f8a22a5c7
commit bfc66698de
2 changed files with 25 additions and 5 deletions

View file

@ -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()

View file

@ -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)
self.connection.compileComplete(remotefile)