From f82dad261fcfc45f211332bd90260b862ff1cbc2 Mon Sep 17 00:00:00 2001 From: CaseSolved Date: Wed, 21 Aug 2024 11:10:03 +0100 Subject: [PATCH] feat: ability to authorize new ssh keys fix: make authorized_key into job fix: missing import fix: move authorized key job to server for job support fix: chmod permissions fix: route path --- agent/server.py | 11 +++++++++++ agent/web.py | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/agent/server.py b/agent/server.py index 720d1b0b..eabdc3f3 100644 --- a/agent/server.py +++ b/agent/server.py @@ -483,6 +483,17 @@ def get_bench(self, bench): except KeyError: raise BenchNotExistsException(bench) + @job("Append Authorized Key to frappe", priority="low") + def append_authorized_key(self, text): + import io, os, stat + if not text: + return + path = "/home/frappe/.ssh/authorized_keys" + with open(path, "a") as f: + f.seek(0, io.SEEK_END) + f.write(f"\n{text}") + os.chmod(path, stat.S_IRUSR | stat.S_IWUSR) + @property def job_record(self): if self.job is None: diff --git a/agent/web.py b/agent/web.py index 03e18c1d..63c42b4f 100644 --- a/agent/web.py +++ b/agent/web.py @@ -302,6 +302,12 @@ def retrieve_ssh_session_log(filename): return {"log_details": Security().retrieve_ssh_session_log(filename)} +@application.route("/server/append_authorized_key", methods=["POST"]) +def append_authorized_key(): + text = request.json or None + return {"job": Server().append_authorized_key(text)} + + @application.route( "/benches//sites//sid", methods=["GET", "POST"] )