def view(request): # initialize default response. response = utils.__default_response__() # check parameters. server, success, response = utils.__get_request_param__(request, "server") if not success: return JsonResponse(response) username, success, response = utils.__get_request_param__(request, "client") if not success: return JsonResponse(response) server_path, success, response = utils.__get_request_param__(request, "server_path") if not success: return JsonResponse(response) client_path, success, response = utils.__get_request_param__(request, "client_path") if not success: return JsonResponse(response) client_path = client_path.replace("$ROOT_DIR/", ROOT_DIR) # check existance. if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return JsonResponse(response) if username not in list(manager.servers[server]["clients"].keys()): response["error"] = f"Client [{username}] from server [{server}] does not exist." return JsonResponse(response)["error"] # check client key active. client = manager.servers[server]["clients"][username] response = client.key.check_agent() if response["error"] != None: return JsonResponse(response) # make request. return JsonResponse(client.sshfs.mount( server_path=server_path, client_path=client_path,))
def view(request): # initialize default response. response = utils.__default_response__() # check parameters. server, success, response = utils.__get_request_param__(request, "server") if not success: return JsonResponse(response) username, success, response = utils.__get_request_param__(request, "username") if not success: return JsonResponse(response) # check encryptiom. if PASSPHRASES.passphrase == None or ENCRYPTION.passphrase == None: response["error"] = "The encryption requires to be activated when making client edits. Go to [Dashboard > Encryption > Activate] to activate the encryption." return JsonResponse(response) # make request. response = manager.delete_client( server=server, username=username,) if response["error"] != None: return JsonResponse(response) # save new passphrase. client = manager.servers[server]["clients"][username] if client.public_key_id in list(PASSPHRASES.dictionary["ssh_keys"].keys()) : del PASSPHRASES.dictionary["ssh_keys"][client.public_key_id] response = PASSPHRASES.save() if response["error"] != None: return JsonResponse(response) else: return JsonResponse(response)
def view(self, request): # initialize default response. response = utils.__default_response__() # check encryptiom. if PASSPHRASES.passphrase == None or ENCRYPTION.passphrase == None: response[ "error"] = "The encryption requires to be activated when making client edits. Go to [Dashboard > Encryption > Activate] to activate the encryption." return self.response(response) # check parameters. server, success, response = utils.__get_request_param__( request, "server") if not success: return self.response(response) username, success, response = utils.__get_request_param__( request, "username") if not success: return self.response(response) new, success, response = utils.__get_request_param__( request, "new") if not success: return self.response(response) new_verify, success, response = utils.__get_request_param__( request, "new_verify") if not success: return self.response(response) # check passphrase. if new != new_verify: response["error"] = "Passphrases do not match." return self.response(response) if len(new) <= 12: response[ "error"] = "Passphrase must contain at least 12 characters." return self.response(response) # check existance. if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return self.response(response) if username not in list(manager.servers[server]["clients"].keys()): response[ "error"] = f"Client [{username}] from server [{server}] does not exist." return self.response(response)["error"] # make request. client = manager.servers[server]["clients"][username] if client.public_key_id not in list( PASSPHRASES.dictionary["ssh_keys"].keys()): return self.response( r3sponse.error( f"There is no passphrase cached for the ssh key of client [{username}@{server}]." )) old = PASSPHRASES.dictionary["ssh_keys"][client.public_key_id] return self.response(client.key.edit_passphrase( new=new, old=old, ))
def view(request): # map clients. clients = {} for server, server_info in manager.servers.items(): clients[server] = [] for client, client_object in server_info["clients"].items(): clients[server].append(client_object.defaults.username) # get server param. server, success, response = utils.__get_request_param__( request, "server") if not success: return JsonResponse(response) if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return render( request, "dashboard/error.html", { "COLORS": COLORS, "ERROR": { "title": "Warning!", "message": response["error"], "icon": "/media/icons/warning.png", "redirect": "/dashboard/servers/", "redirect_button": "Back", }, }) # get username param. client, success, response = utils.__get_request_param__( request, "client") if not success: return JsonResponse(response) if client not in list(manager.servers[server]["clients"].keys()): response[ "error"] = f"Client [{client}] from server [{server}] does not exist." return render( request, "dashboard/error.html", { "COLORS": COLORS, "ERROR": { "title": "Warning!", "message": response["error"], "icon": "/media/icons/warning.png", "redirect": "/dashboard/servers/server/?server=" + server, "redirect_button": "Back", }, }) # return render. return render(request, APP_NAME + "/client.html", { "COLORS": COLORS, "CLIENT": client, })
def view(self, request): # initialize default response. response = utils.__default_response__() # check parameters. client_path, success, response = utils.__get_request_param__( request, "client_path") if not success: return self.response(response) client_path = client_path.replace("$ROOT_DIR/", ROOT_DIR) # make request. if not Files.exists(client_path) or not os.path.ismount( client_path): response["success"] = True response["mounted"] = False response[ "message"] = f"Directory [{client_path}] is not mounted." return self.response(response) else: response["success"] = True response["mounted"] = True response[ "message"] = f"Directory [{client_path}] is mounted." return self.response(response)
def view(self, request): # initialize default response. response = utils.__default_response__() # check parameters. client, success, response = utils.__get_request_param__( request, "client") if not success: return self.response(response) try: username, server = client.split("@") except: return r3sponse.error( f"Invalid client format [{client}], valid format: user@server.", django=True) if not success: return self.response(response) # check existance. if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return self.response(response) if username not in list(manager.servers[server]["clients"].keys()): response[ "error"] = f"Client [{username}] from server [{server}] does not exist." return self.response(response)["error"] client = manager.servers[server]["clients"][username] response = client.key.check_agent() if response["error"] != None: return self.response(response) return self.response(client.vnc.create_connection())
def view(self, request): # initialize default response. response = utils.__default_response__() # check parameters. server, success, response = utils.__get_request_param__( request, "server") if not success: return self.response(response) username, success, response = utils.__get_request_param__( request, "client") if not success: return self.response(response) server_path, success, response = utils.__get_request_param__( request, "server_path") if not success: return self.response(response) client_path, success, response = utils.__get_request_param__( request, "client_path") if not success: return self.response(response) directory, success, response = utils.__get_request_param__( request, "directory") if not success: return self.response(response) # check existance. if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return self.response(response) if username not in list( manager.servers[server]["clients"].keys()): response[ "error"] = f"Client [{username}] from server [{server}] does not exist." return self.response(response)["error"] # check client key active. client = manager.servers[server]["clients"][username] response = client.key.check_agent() if response["error"] != None: return self.response(response) # make request. return self.response( client.scp.upload( server_path=server_path, client_path=client_path, directory=directory, ))
def view(self, request): # initialize default response. response = utils.__default_response__() # check parameters. server, success, response = utils.__get_request_param__( request, "server") if not success: return self.response(response) username, success, response = utils.__get_request_param__( request, "username") if not success: return self.response(response) # check existance. if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return self.response(response) if username not in list(manager.servers[server]["clients"].keys()): response[ "error"] = f"Client [{username}] from server [{server}] does not exist." return self.response(response)["error"] # check load or passed passphrase. load_passphrase, success, response = utils.__get_request_param__( request, "load_passphrase") if not success: # passed passphrase. passphrase, success, response = utils.__get_request_param__( request, "passphrase") if not success: return self.response(response) # make request. client = manager.servers[server]["clients"][username] return self.response( client.key.add_to_agent(passphrase=passphrase)) else: # load passphrase. client = manager.servers[server]["clients"][username] return self.response( client.key.add_to_agent(load_passphrase=True))
def view(request): # initialize default response. response = utils.__default_response__() # check parameters. client_path, success, response = utils.__get_request_param__(request, "client_path") if not success: return JsonResponse(response) forced, success, response = utils.__get_request_param__(request, "forced") if not success: return JsonResponse(response) sudo, success, response = utils.__get_request_param__(request, "sudo") if not success: return JsonResponse(response) client_path = client_path.replace("$ROOT_DIR/", ROOT_DIR) # make request. return JsonResponse(ssht00ls.sshfs.unmount( client_path=client_path, forced=forced, sudo=sudo,))
def view(request): # initialize default response. response = utils.__default_response__() # check parameters. server, success, response = utils.__get_request_param__(request, "server") if not success: return JsonResponse(response) # make request. return JsonResponse(manager.delete_server( server=server,))
def view(self, request): # initialize default response. response = utils.__default_response__() # check parameters. server, success, response = utils.__get_request_param__( request, "server") if not success: return self.response(response) dmoain, success, response = utils.__get_request_param__( request, "dmoain") if not success: return self.response(response) lan_ip, success, response = utils.__get_request_param__( request, "lan_ip") if not success: return self.response(response) wan_ip, success, response = utils.__get_request_param__( request, "wan_ip") if not success: return self.response(response) lan_ssh_port, success, response = utils.__get_request_param__( request, "lan_ssh_port") if not success: return self.response(response) wan_ssh_port, success, response = utils.__get_request_param__( request, "wan_ssh_port") if not success: return self.response(response) # make request. return self.response( manager.edit_server( server=server, domain=domain, lan_ip=lan_ip, wan_ip=wan_ip, lan_ssh_port=lan_ssh_port, wan_ssh_port=wan_ssh_port, ))
def view(request): # initialize default response. response = utils.__default_response__() # check parameters. client_path, success, response = utils.__get_request_param__(request, "client_path") if not success: return JsonResponse(response) client_path = client_path.replace("$ROOT_DIR/", ROOT_DIR) # make request. utils.__open_directory__(client_path) response["success"] = True response["message"] = f"Successfully opened [{client_path}]." return JsonResponse(response)
def view(self, request): # map servers. servers = {} for id, server in manager.servers.items(): servers[id] = server["info"] # get server param. server, success, response = utils.__get_request_param__(request, "server") if not success: return self.error(request, title="Error!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) if server not in list(servers.keys()): response["error"] = f"Server [{server}] does not exist." return self.error(request, title="Error!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) # map clients. clients = [] for i_server, server_info in manager.servers.items(): if i_server == server: for client, client_object in server_info["clients"].items(): clients.append(f'{client}@{i_server}') # return render. return self.render(request, { "COLORS":COLORS,"colors":COLORS, "SERVER": servers[server], "SERVER_NAME": server, "CLIENTS":clients, "NO_CLIENTS":len(clients) == 0, })
def view(request): # map servers. servers = {} for id, server in manager.servers.items(): servers[id] = server["info"] # get server param. server, success, response = utils.__get_request_param__( request, "server") if not success: return JsonResponse(response) if server not in list(servers.keys()): response["error"] = f"Server [{server}] does not exist." return render( request, "dashboard/error.html", { "COLORS": COLORS, "ERROR": { "title": "Warning!", "message": response["error"], "icon": "/media/icons/warning.png", "redirect": "/dashboard/servers/", "redirect_button": "Back", }, }) # map clients. clients = [] for i_server, server_info in manager.servers.items(): if i_server == server: for client, client_object in server_info["clients"].items(): clients.append(f'{client}@{i_server}') # return render. return render( request, APP_NAME + "/server.html", { "COLORS": COLORS, "SERVER": servers[server], "SERVER_NAME": server, "CLIENTS": clients, "NO_CLIENTS": len(clients) == 0, })
def view(request): # initialize default response. response = utils.__default_response__() # check encryptiom. if PASSPHRASES.passphrase == None or ENCRYPTION.passphrase == None: response["error"] = "The encryption requires to be activated when making client edits. Go to [Dashboard > Encryption > Activate] to activate the encryption." return JsonResponse(response) # check parameters. username, success, response = utils.__get_request_param__(request, "username") if not success: return JsonResponse(response) server, success, response = utils.__get_request_param__(request, "server") if not success: return JsonResponse(response) public_key, success, response = utils.__get_request_param__(request, "public_key") if not success: return JsonResponse(response) private_key, success, response = utils.__get_request_param__(request, "private_key") if not success: return JsonResponse(response) new_passphrase, success, response = utils.__get_request_param__(request, "new_passphrase") if not success: return JsonResponse(response) verify_new_passphrase, success, response = utils.__get_request_param__(request, "verify_new_passphrase") if not success: return JsonResponse(response) old_passphrase, success, response = utils.__get_request_param__(request, "old_passphrase") if not success: return JsonResponse(response) lan_ip, success, response = utils.__get_request_param__(request, "lan_ip") if not success: return JsonResponse(response) wan_ip, success, response = utils.__get_request_param__(request, "wan_ip") if not success: return JsonResponse(response) lan_ssh_port, success, response = utils.__get_request_param__(request, "lan_ssh_port") if not success: return JsonResponse(response) wan_ssh_port, success, response = utils.__get_request_param__(request, "wan_ssh_port") if not success: return JsonResponse(response) public_key = public_key.replace("~/", HOME) private_key = private_key.replace("~/", HOME) # check key existance. if not os.path.exists(public_key): response["error"] = f"Public key path [{public_key}] does not exist." return JsonResponse(response) if not os.path.exists(private_key): response["error"] = f"Private key path [{private_key}] does not exist." return JsonResponse(response) # check passphrase. success, response = utils.__check_password__(new_passphrase, verify_new_passphrase) if not success: return JsonResponse(response) # make request. response = manager.install_client( username=username, server=server, public_key=public_key, private_key=private_key, new_passphrase=new_passphrase, old_passphrase=old_passphrase, lan_ip=lan_ip, wan_ip=wan_ip, lan_ssh_port=lan_ssh_port, wan_ssh_port=wan_ssh_port,) if response["error"] != None: return JsonResponse(response) # save new passphrase. PASSPHRASES.dictionary["ssh_keys"][client.public_key_id] = new response = PASSPHRASES.save() if response["error"] != None: return JsonResponse(response)
def view(self, request): # get server param. server, success, response = utils.__get_request_param__(request, "server") if not success: return self.error(request, title="Error!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return self.error(request, title="Warning!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/home/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) username, success, response = utils.__get_request_param__(request, "client") if not success: return self.error(request, title="Error!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) if username not in list(manager.servers[server]["clients"].keys()): response["error"] = f"Client [{username}] from server [{server}] does not exist." return self.error(request, title="Warning!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/home/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) # check client key active. client, error = manager.servers[server]["clients"][username], False if client.defaults.smartcard: set = False for serial_number in client.defaults.smartcards_array: if serial_number in manager.activated_smartcards: set = True break if set == False: error = True else: response = client.key.check_agent() if response["error"] != None: error = True if error: if client.defaults.smartcard: response["error"] = f'Client [{username}@{server}] is not activated. Press "Activate Smart Cards" to activate client [{username}@{server}].' redirect = "/dashboard/home/?activate_smartcards=true" else: response["error"] = f'Client [{username}@{server}] is not activated. Press "Activate Clients" to activate client [{username}@{server}].' redirect = "/dashboard/home/?activate_clients=true" return self.error(request, title="Warning!", message=response["error"], icon="/media/icons/warning.png", redirect=redirect, redirect_button="Activate", template_data={ "COLORS":COLORS,"colors":COLORS, }) # map servers & clients. servers, clients, active_clients = {}, {}, {} for id, server in manager.servers.items(): servers[id] = server["info"] for l_username, l_usernameclient in server["clients"].items(): active = False if l_usernameclient.defaults.smartcard: for serial_number in l_usernameclient.defaults.smartcards_array: if serial_number in manager.activated_smartcards: active = True break else: l_response = l_usernameclient.key.check_agent() if l_response["success"]: active = l_response["success"] clients[f'{l_username}@{id}'] = { "active":active, "smartcard":l_usernameclient.defaults.smartcard, } active_clients[f'{l_username}@{id}'] = { "smartcard":l_usernameclient.defaults.smartcard, } # get storages info. os.system("rm -fr /tmp/storages.json") response = client.scp.download( server_path="/nas.info/storages.json", client_path="/tmp/storages.json",) if not response["success"]: response["error"] = f"Unable to connect with client [{username}] from server [{client.defaults.server}], error: {response['error']}." return self.error(request, title="Warning!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/home/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) # map storages. storages = {} for storage, info in utils.__load_json__("/tmp/storages.json").items(): if username in info["users"].split(","): storages[storage] = info # return render. return self.render(request, { "COLORS":COLORS,"colors":COLORS, "NO_STORAGES":len(storages) == 0, "STORAGES":storages, "USERNAME":username, "SERVER_NAME": server, "CLIENTS":clients, "ACTIVE_CLIENTS":active_clients, "NO_ACTIVE_CLIENTS":len(active_clients) == 0, "ACTIVE_SMART_CARDS":manager.activated_smartcards, })
def view(self, request): # map clients. clients = {} for server, server_info in manager.servers.items(): clients[server] = [] for client, client_object in server_info["clients"].items(): clients[server].append(client_object.defaults.username) # get server param. server, success, response = utils.__get_request_param__(request, "server") if not success: return self.error(request, title="Error!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) if server not in list(manager.servers.keys()): response["error"] = f"Server [{server}] does not exist." return self.error(request, title="Warning!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) # get username param. client, success, response = utils.__get_request_param__(request, "client") if not success: return self.error(request, title="Error!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/", redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) if client not in list(manager.servers[server]["clients"].keys()): response["error"] = f"Client [{client}] from server [{server}] does not exist." return self.error(request, title="Warning!", message=response["error"], icon="/media/icons/warning.png", redirect="/dashboard/servers/server/?server="+server, redirect_button="Back", template_data={ "COLORS":COLORS,"colors":COLORS, }) # return render. return self.render(request, { "COLORS":COLORS,"colors":COLORS, "CLIENT":client, })
def view(self, request): # initialize default response. response = utils.__default_response__() # check encryptiom. if PASSPHRASES.passphrase == None or ENCRYPTION.passphrase == None: response[ "error"] = "The encryption requires to be activated when making client edits. Go to [Dashboard > Encryption > Activate] to activate the encryption." return self.response(response) # by encoded. encoded, success, response = utils.__get_request_param__( request, "encoded") if success: # make request. return self.response(manager.install_client(encoded=encoded, )) # by parameters. else: # check parameters. username, success, response = utils.__get_request_param__( request, "username") if not success: return self.response(response) server, success, response = utils.__get_request_param__( request, "server") if not success: return self.response(response) domain, success, response = utils.__get_request_param__( request, "domain") if not success: return self.response(response) api_key, success, response = utils.__get_request_param__( request, "api_key") if not success: return self.response(response) public_key, success, response = utils.__get_request_param__( request, "public_key") if not success: return self.response(response) private_key, success, response = utils.__get_request_param__( request, "private_key") if not success: return self.response(response) vpn_key, success, response = utils.__get_request_param__( request, "vpn_key") if not success: return self.response(response) new_passphrase, success, response = utils.__get_request_param__( request, "new_passphrase") if not success: return self.response(response) verify_new_passphrase, success, response = utils.__get_request_param__( request, "verify_new_passphrase") if not success: return self.response(response) old_passphrase, success, response = utils.__get_request_param__( request, "old_passphrase") if not success: return self.response(response) lan_ip, success, response = utils.__get_request_param__( request, "lan_ip") if not success: return self.response(response) wan_ip, success, response = utils.__get_request_param__( request, "wan_ip") if not success: return self.response(response) lan_ssh_port, success, response = utils.__get_request_param__( request, "lan_ssh_port") if not success: return self.response(response) wan_ssh_port, success, response = utils.__get_request_param__( request, "wan_ssh_port") if not success: return self.response(response) public_key = public_key.replace("~/", HOME) private_key = private_key.replace("~/", HOME) vpn_key = vpn_key.replace("~/", HOME) # check key existance. if not Files.exists(public_key): response[ "error"] = f"Public key path [{public_key}] does not exist." return self.response(response) if not Files.exists(private_key): response[ "error"] = f"Private key path [{private_key}] does not exist." return self.response(response) if not Files.exists(vpn_key): response[ "error"] = f"VPN key path [{vpn_key}] does not exist." return self.response(response) # check passphrase. success, response = utils.__check_password__( new_passphrase, verify_new_passphrase) if not success: return self.response(response) # make request. final_response = manager.install_client( username=username, server=server, domain=domain, api_key=api_key, public_key=public_key, private_key=private_key, vpn_key=vpn_key, new_passphrase=new_passphrase, old_passphrase=old_passphrase, lan_ip=lan_ip, wan_ip=wan_ip, lan_ssh_port=lan_ssh_port, wan_ssh_port=wan_ssh_port, ) if final_response["error"] != None: return self.response(final_response) # save new passphrase. PASSPHRASES.dictionary["ssh_keys"][ final_response["username"]] = new_passphrase response = PASSPHRASES.save() if response["error"] != None: return self.response(response) return self.response(final_response)