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 import paramiko as pikuniku # :P
from paramiko.client import SSHClient from paramiko.client import SSHClient, WarningPolicy
from io import BytesIO from io import BytesIO
from pathlib import Path from pathlib import Path
@ -23,7 +23,9 @@ class Connection:
self._vessel = vessel self._vessel = vessel
self._client = SSHClient() self._client = SSHClient()
self._client.load_system_host_keys() 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 = self._client.get_transport()
self._transport.set_keepalive(10) self._transport.set_keepalive(10)
self._sftp = self._client.open_sftp() self._sftp = self._client.open_sftp()

View file

@ -30,17 +30,32 @@ class Vessel:
""" """
tempdir = None tempdir = None
username = None
password = None
passphrase = None
if "TempDir" in config.keys(): if "TempDir" in config.keys():
tempdir = config["TempDir"] 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(): 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: else:
raise ValueError("Definition for Vessel " + raise ValueError("Definition for Vessel " +
config.name.split()[1] + " does not contain Address!") 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 """Initialize new Vessel object
Args: Args:
@ -52,6 +67,9 @@ class Vessel:
self.name = name self.name = name
self.address = address self.address = address
self.tempdir = pathlib.Path(tempdir or "/tmp/.ContentMonster/") self.tempdir = pathlib.Path(tempdir or "/tmp/.ContentMonster/")
self.username = username
self.password = password
self.passphrase = passphrase
self._connection = None self._connection = None
self._uploaded = self.getUploadedFromDB() # Files already uploaded self._uploaded = self.getUploadedFromDB() # Files already uploaded
@ -121,4 +139,4 @@ class Vessel:
remotefile (classes.remotefile.RemoteFile): RemoteFile object remotefile (classes.remotefile.RemoteFile): RemoteFile object
describing the uploaded File describing the uploaded File
""" """
self.connection.compileComplete(remotefile) self.connection.compileComplete(remotefile)