diff --git a/updater/reports/Report.py b/updater/reports/Report.py index 16b0870b..b674d548 100644 --- a/updater/reports/Report.py +++ b/updater/reports/Report.py @@ -80,19 +80,22 @@ def scriptPath(self, script): # Executes a script but prints stderr and returns stdout only def executeScript(self, script, stdin = None): if self.configuration["remoteRun"]["enabled"]: - try: - with open(script) as f: - assert(stdin == None) - stdin = f.read() - command = ["bash -s", "--"] - except: - command = script + if stdin: + cmd = script + else: + cmd = ["bash -s", "--"] + try: + with open(script) as f: + assert(stdin == None) + stdin = f.read() + except: + stdin = " ".join(map(lambda x: '"' + x.replace('\\"', '\\\\"').replace('"', '\\"') + '"', script)) script = [ - "ssh", - "-i", self.configuration["remoteRun"]["sshKey"], - "-p", "122", - "admin@" + self.configuration["remoteRun"]["gheHost"], - ] + command + "ssh", + "-i", self.configuration["remoteRun"]["sshKey"], + "-p", "122", + "admin@" + self.configuration["remoteRun"]["gheHost"] + ] + cmd stdout, stderr = executeCommand(script, stdin) print(stderr.decode("utf-8"), file = sys.stderr) @@ -101,12 +104,9 @@ def executeScript(self, script, stdin = None): return stdout def executeGHEConsole(self, rubyCode): - escapedRubyCode = rubyCode.replace('\\t', '\\\\t') \ - .replace('\\n', '\\\\n') \ - .replace('"', '\\"') + escapedRubyCode = rubyCode.replace('\\t', '\\\\t').replace('\\n', '\\\\n') return self.executeScript( - ["bash -s", "--"], - "github-env bin/runner -e production \"'" + escapedRubyCode + "'\"" + ["github-env", "bin/runner", "-e", "production", "'" + escapedRubyCode + "'"] ) # Executes a database query, given as a string diff --git a/updater/reports/ReportOrgOwners.py b/updater/reports/ReportOrgOwners.py index 01536c57..d5468f82 100644 --- a/updater/reports/ReportOrgOwners.py +++ b/updater/reports/ReportOrgOwners.py @@ -14,11 +14,11 @@ def updateData(self): self.executeGHEConsole(''' puts "organization\towner(s)\n" User.where(:type => "Organization") - .where("''' + self.andExcludedEntities("login", "").replace('"', '\\\\"') + '''") + .where("''' + self.andExcludedEntities("login", "").replace('"', '\\"') + '''") .order("login") .each do |org| owners = org.admins.where(:disabled => false, :gh_role => nil) - .where("''' + self.andExcludedUsers("login", "").replace('"', '\\\\"') + '''") + .where("''' + self.andExcludedUsers("login", "").replace('"', '\\"') + '''") .order("login") .join(",") puts "#{org.login}\t#{owners}\n"