| import gradio as gr |
| from datetime import datetime |
|
|
| logs = [] |
|
|
|
|
| def login(name): |
|
|
| if not name: |
| name = "Unknown" |
|
|
| now = datetime.now().strftime("%H:%M:%S") |
|
|
| message = f"[{now}] {name} has logged in." |
|
|
| print(message) |
|
|
| logs.append(message) |
|
|
| return "\n".join(logs) |
|
|
|
|
| def refresh(): |
| if logs: |
| return "\n".join(logs) |
| return "=== Waiting for users... ===" |
|
|
|
|
| css = """ |
| body{ |
| background:#e8ecf2; |
| } |
| |
| .gradio-container{ |
| background:#e8ecf2 !important; |
| } |
| |
| button{ |
| border-radius:15px !important; |
| } |
| |
| textarea{ |
| background:#111111 !important; |
| color:#00ff66 !important; |
| font-family:Consolas, monospace !important; |
| font-size:15px !important; |
| } |
| """ |
|
|
| with gr.Blocks() as demo: |
|
|
| gr.Markdown("# 🖥️ User Login Monitor") |
|
|
| with gr.Row(): |
|
|
| username = gr.Textbox( |
| label="User", |
| placeholder="Jason" |
| ) |
|
|
| login_btn = gr.Button("Login") |
|
|
| terminal = gr.Textbox( |
| label="Terminal", |
| value="=== SERVER STARTED ===", |
| lines=18, |
| interactive=False |
| ) |
|
|
| refresh_btn = gr.Button("Refresh Logs") |
|
|
| login_btn.click( |
| fn=login, |
| inputs=username, |
| outputs=terminal, |
| api_name="login" |
| ) |
|
|
| refresh_btn.click( |
| fn=refresh, |
| outputs=terminal |
| ) |
|
|
| demo.launch(css=css) |