Upload app.py
Browse files
app.py
CHANGED
|
@@ -33,12 +33,12 @@ def start_vnc():
|
|
| 33 |
vnc_host_port = extract_host_port(vnc_url)
|
| 34 |
return (
|
| 35 |
f"<iframe src='{vnc_url}' width='100%' height='500px' style='border:none;'></iframe>",
|
| 36 |
-
|
| 37 |
)
|
| 38 |
else:
|
| 39 |
return (
|
| 40 |
f"<iframe src='{vnc_url}' width='100%' height='500px' style='border:none;'></iframe>",
|
| 41 |
-
|
| 42 |
)
|
| 43 |
|
| 44 |
def stop_vnc():
|
|
@@ -71,11 +71,12 @@ def buka_browser():
|
|
| 71 |
if not desktop:
|
| 72 |
return "<p style='color:red;'>β VNC belum berjalan</p>"
|
| 73 |
try:
|
| 74 |
-
|
|
|
|
| 75 |
desktop.press("enter")
|
| 76 |
-
return "<p style='color:green;'>β
|
| 77 |
except Exception as ex:
|
| 78 |
-
return f"<p style='color:red;'>Error: {ex}</p>"
|
| 79 |
|
| 80 |
def tutup_tab():
|
| 81 |
if not desktop:
|
|
@@ -104,19 +105,15 @@ with gr.Blocks() as demo:
|
|
| 104 |
gr.HTML("<h1 style='text-align:center'>E2B VNC Sandbox</h1>")
|
| 105 |
|
| 106 |
iframe_display = gr.HTML("<p style='color:gray;'>VNC belum dimulai</p>")
|
| 107 |
-
status_display = gr.Textbox(value="Status: Idle", label="Status / VNC Viewer Address")
|
| 108 |
|
| 109 |
with gr.Row():
|
| 110 |
start_btn = gr.Button("βΆ Start VNC")
|
| 111 |
stop_btn = gr.Button("βΉ Stop VNC")
|
| 112 |
|
| 113 |
-
|
| 114 |
-
kirim_btn = gr.Button("π€ Masuk")
|
| 115 |
-
kirim_status = gr.HTML("")
|
| 116 |
-
|
| 117 |
gr.HTML("<h2>π Kontrol Browser</h2>")
|
| 118 |
with gr.Row():
|
| 119 |
-
browser_btn = gr.Button("π Buka Browser")
|
| 120 |
tutup_btn = gr.Button("β Tutup Tab Browser")
|
| 121 |
browser_status = gr.HTML("")
|
| 122 |
|
|
@@ -128,9 +125,14 @@ with gr.Blocks() as demo:
|
|
| 128 |
openlink_btn = gr.Button("π Cari & Klik [OPEN LINK]")
|
| 129 |
find_status = gr.HTML("")
|
| 130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 131 |
# === koneksi tombol ===
|
| 132 |
-
start_btn.click(start_vnc, outputs=[iframe_display,
|
| 133 |
-
stop_btn.click(stop_vnc, outputs=[iframe_display,
|
| 134 |
kirim_btn.click(kirim_teks, inputs=teks_input, outputs=kirim_status)
|
| 135 |
|
| 136 |
browser_btn.click(buka_browser, outputs=browser_status)
|
|
|
|
| 33 |
vnc_host_port = extract_host_port(vnc_url)
|
| 34 |
return (
|
| 35 |
f"<iframe src='{vnc_url}' width='100%' height='500px' style='border:none;'></iframe>",
|
| 36 |
+
"β
VNC Started"
|
| 37 |
)
|
| 38 |
else:
|
| 39 |
return (
|
| 40 |
f"<iframe src='{vnc_url}' width='100%' height='500px' style='border:none;'></iframe>",
|
| 41 |
+
"β οΈ VNC Already Running"
|
| 42 |
)
|
| 43 |
|
| 44 |
def stop_vnc():
|
|
|
|
| 71 |
if not desktop:
|
| 72 |
return "<p style='color:red;'>β VNC belum berjalan</p>"
|
| 73 |
try:
|
| 74 |
+
# jalankan firefox di background
|
| 75 |
+
desktop.write("mozilla firefox &")
|
| 76 |
desktop.press("enter")
|
| 77 |
+
return "<p style='color:green;'>β
Firefox dibuka</p>"
|
| 78 |
except Exception as ex:
|
| 79 |
+
return f"<p style='color:red;'>Error membuka Firefox: {ex}</p>"
|
| 80 |
|
| 81 |
def tutup_tab():
|
| 82 |
if not desktop:
|
|
|
|
| 105 |
gr.HTML("<h1 style='text-align:center'>E2B VNC Sandbox</h1>")
|
| 106 |
|
| 107 |
iframe_display = gr.HTML("<p style='color:gray;'>VNC belum dimulai</p>")
|
|
|
|
| 108 |
|
| 109 |
with gr.Row():
|
| 110 |
start_btn = gr.Button("βΆ Start VNC")
|
| 111 |
stop_btn = gr.Button("βΉ Stop VNC")
|
| 112 |
|
| 113 |
+
# === Kontrol Browser dipindah di bawah iframe ===
|
|
|
|
|
|
|
|
|
|
| 114 |
gr.HTML("<h2>π Kontrol Browser</h2>")
|
| 115 |
with gr.Row():
|
| 116 |
+
browser_btn = gr.Button("π Buka Browser (Firefox)")
|
| 117 |
tutup_btn = gr.Button("β Tutup Tab Browser")
|
| 118 |
browser_status = gr.HTML("")
|
| 119 |
|
|
|
|
| 125 |
openlink_btn = gr.Button("π Cari & Klik [OPEN LINK]")
|
| 126 |
find_status = gr.HTML("")
|
| 127 |
|
| 128 |
+
# === Input teks manual (tetap ada di bawah) ===
|
| 129 |
+
teks_input = gr.Textbox(placeholder="Ketik teks untuk VNC", label="VNC Keyboard")
|
| 130 |
+
kirim_btn = gr.Button("π€ Masuk")
|
| 131 |
+
kirim_status = gr.HTML("")
|
| 132 |
+
|
| 133 |
# === koneksi tombol ===
|
| 134 |
+
start_btn.click(start_vnc, outputs=[iframe_display, browser_status])
|
| 135 |
+
stop_btn.click(stop_vnc, outputs=[iframe_display, browser_status])
|
| 136 |
kirim_btn.click(kirim_teks, inputs=teks_input, outputs=kirim_status)
|
| 137 |
|
| 138 |
browser_btn.click(buka_browser, outputs=browser_status)
|