Ejemplo n.º 1
0
			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,))
Ejemplo n.º 2
0
		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)
Ejemplo n.º 3
0
        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,
            ))
Ejemplo n.º 4
0
    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,
        })
Ejemplo n.º 5
0
            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)
Ejemplo n.º 6
0
        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())
Ejemplo n.º 7
0
            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,
                    ))
Ejemplo n.º 8
0
        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))
Ejemplo n.º 9
0
			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,))
Ejemplo n.º 10
0
		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,))
Ejemplo n.º 11
0
        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,
                ))
Ejemplo n.º 12
0
			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)
Ejemplo n.º 13
0
	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,
		})
Ejemplo n.º 14
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,
            })
Ejemplo n.º 15
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)
Ejemplo n.º 16
0
	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,
		})
Ejemplo n.º 17
0
	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,
		})
Ejemplo n.º 18
0
        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)