from firewall import Firewall from user import User, UserManager from ssh_config import SshConfig from package_manager import PackageManager class Machine: def __init__(self, default_user: User): self.user = default_user self.user_manager = UserManager() self.firewall = Firewall() self.ssh_config = SshConfig() self.package_manager = PackageManager() def enable_firewall(self): self.firewall.allow_app("OpenSSH") self.firewall.enable() def secure_ssh_config(self): self.ssh_config.sync_target_values() self.ssh_config.restart_service() def setup(self): self.package_manager.update() self.user_manager.setup_user(self.user) self.enable_firewall() self.secure_ssh_config() self.package_manager.install_packages(["rsync", "fail2ban"]) self.ssh_config.copy_ssh_dir_to_user(self.user.name)