!include once #1036018 // SSH + SCP Libs sbool sshLogin_keepOpen; sS sshLogin_openUser; sS sshLogin_openHost; static SSHClient sshLogin_client; static Lock sshLogin_lock = lock(); // quickest version - allow any host ID and search for pw in JavaX-Secret static SSHClient sshLogin(S user, S host) ctex { { lock sshLogin_lock; if (sshLogin_client != null && eq(sshLogin_openUser, user) && eq(sshLogin_openHost, host)) ret sshLogin_client; } S pass = findSSHPassword(user, host); final new SSHClient client; client.addHostKeyVerifier(new PromiscuousVerifier); client.connect(host); try { client.authPassword(user, pass); } catch e { client.disconnect(); rethrow(e); } lock sshLogin_lock; if (sshLogin_keepOpen && sshLogin_client == null) { sshLogin_openUser = user; sshLogin_openHost = host; sshLogin_client = client; } ret client; } svoid cleanMeUp_sshLogin { lock sshLogin_lock; if (sshLogin_client != null) { pcall { sshLogin_client.disconnect(); } sshLogin_client = null; } }