import gradio as gr import json import time status_file = "status.json" command_file = "command.json" # Initialize storage files with open(status_file, "w") as f: json.dump({}, f) with open(command_file, "w") as f: json.dump({}, f) # Register PC as online def register_pc(name, password): with open(status_file, "r") as f: status = json.load(f) status[name] = {"password": password, "timestamp": time.time()} with open(status_file, "w") as f: json.dump(status, f) return f"PC '{name}' registered as online." # Check if PC is online def check_pc(name): with open(status_file, "r") as f: status = json.load(f) if name in status and time.time() - status[name]["timestamp"] < 60: return "Online" return "Offline" # Send command or register if command is "REGISTER" def send_command(name, password, command): if command == "REGISTER": return register_pc(name, password) with open(status_file, "r") as f: status = json.load(f) if name in status and status[name]["password"] == password: with open(command_file, "w") as f: json.dump({"command": command}, f) return f"Command '{command}' sent to {name}." return "Authentication failed." # Get command (for PC side polling) def get_command(): with open(command_file, "r") as f: cmd_data = json.load(f) return cmd_data.get("command", "") # Gradio UI with gr.Blocks() as ui: with gr.Row(): name_input = gr.Textbox(label="PC Name") pass_input = gr.Textbox(label="Password", type="password") check_btn = gr.Button("Check Online Status") check_output = gr.Textbox(label="Status") check_btn.click(check_pc, inputs=name_input, outputs=check_output) with gr.Row(): cmd_input = gr.Textbox(label="Command") send_btn = gr.Button("Send Command") send_output = gr.Textbox(label="Response") send_btn.click(send_command, inputs=[name_input, pass_input, cmd_input], outputs=send_output) ui.launch(share=True)