diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0bce5c7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +users.nix \ No newline at end of file diff --git a/main.py b/main.py old mode 100644 new mode 100755 index de00f6e..3591e4c --- a/main.py +++ b/main.py @@ -49,9 +49,15 @@ def upgradeSystem(): return jsonify(upgradeResult.returncode) @app.route("/createUser", methods=["GET"]) def createUser(): - user = subprocess.Popen(["useradd","-m",request.headers.get("X-User")]) - user.communicate()[0] - return jsonify(user.returncode) + with open("users.nix", "r+") as file: + appendData = " #--- \"" + request.headers["X-User"] + "\" = {\n isNormalUser = true;\n hashedPassword = \"" + request.headers["X-HashedPassword"] + "\";\n };" + for i, line in enumerate(file): + if line.startswith("#---"): + file[i] = file[i].strip + appendData + "\n" + file.seek(0) + for line in file: + file.write(line) + @app.route("/deleteUser", methods=["DELETE"]) def deleteUser(): user = subprocess.Popen(["userdel",request.headers.get("X-User")]) @@ -77,5 +83,23 @@ def requestDiskDecryption(): return jsonify( status=decryptionService.returncode ) + +@app.route("/enableSSH", methods=["POST"]) +def enableSSH(): + readOnlyFileDescriptor = open("/etc/nixos/configuration.nix", "rt") + readWriteFileDescriptor = open("/etc/nixos/configuration.nix", "wt") + + for line in readOnlyFileDescriptor: + readWriteFileDescriptor.write(line.replace("services.openssh.enable = false;", "services.openssh.enable = true;")) + + readWriteFileDescriptor.close() + readOnlyFileDescriptor.close() + + return jsonify( + status=0 + ) + if __name__ == '__main__': app.run(port=5050, debug=False) + + diff --git a/requirements.txt b/requirements.txt old mode 100644 new mode 100755 index aa082f7..1976aa8 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,4 @@ +wheel flask flask_restful -pandas -ast -subprocess -os +pandas \ No newline at end of file diff --git a/setup.py b/setup.py old mode 100644 new mode 100755