Source code for paradrop.lib.misc.ssh_keys

import os


[docs]def getAuthorizedKeys(user="paradrop"): homeDir = os.path.join("/home", user) if not os.path.isdir(homeDir): raise Exception("No home directory found for user {}".format(user)) path = os.path.join(homeDir, ".ssh", "authorized_keys") if not os.path.isfile(path): return [] keys = [] with open(path, 'r') as source: for line in source: keys.append(line.strip()) return keys
[docs]def writeAuthorizedKeys(keys, user="paradrop"): homeDir = os.path.join("/home", user) if not os.path.isdir(homeDir): raise Exception("No home directory found for user {}".format(user)) sshDir = os.path.join(homeDir, ".ssh") if not os.path.exists(sshDir): os.mkdir(sshDir) path = os.path.join(sshDir, "authorized_keys") with open(path, "w") as output: for key in keys: output.write(key + "\n")
[docs]def addAuthorizedKey(key, user="paradrop"): keys = getAuthorizedKeys(user=user) for existing in keys: if key == existing: raise Exception("Key already exists") # One thing we avoid by rewriting the entire file is checking whether the # last line of the file had a newline or not. keys.append(key) writeAuthorizedKeys(keys, user=user)