代码拉取完成,页面将自动刷新
import os
from multiprocessing import Process
import signal
import time
import gradio as gr
from channel import channel_factory
from common import const
from config import load_config, conf
from plugins import *
current_process_instance = None
def start_channel(channel_name: str):
channel = channel_factory.create_channel(channel_name)
available_channels = [
"wx",
"terminal",
"wechatmp",
"wechatmp_service",
"wechatcom_app",
"wework",
"wechatcom_service",
const.FEISHU,
const.DINGTALK
]
if channel_name in available_channels:
PluginManager().load_plugins()
channel.startup()
def run():
try:
# load config
load_config()
# create channel
channel_name = conf().get("channel_type", "wx")
start_channel(channel_name)
except Exception as e:
logger.error("App startup failed!")
logger.exception(e)
def start_run():
global current_process_instance
if current_process_instance is not None and current_process_instance.is_alive():
os.kill(current_process_instance.pid, signal.SIGTERM) # 杀掉当前进程
current_process_instance.join() # 等待当前进程结束
current_process_instance = Process(target=run)
current_process_instance.start()
time.sleep(10) # 等待进程启动
return f"重启成功!!"
def get_qrcode_image():
image_path = 'wx_qrcode.png'
if os.path.exists(image_path):
return image_path
else:
return None
def verify_login(username, password):
correct_username = conf().get("web_ui_username", "dow")
correct_password = conf().get("web_ui_password", "dify-on-wechat")
if username == correct_username and password == correct_password:
return True
return False
def login(username, password):
if verify_login(username, password):
return (
gr.update(visible=False),
gr.update(visible=True),
gr.update(visible=True),
gr.update(visible=True),
gr.update(visible=True),
gr.update(visible=False), # Hide username input
gr.update(visible=False), # Hide password input
gr.update(visible=False) # Hide login button
)
else:
return (
"用户名或密码错误",
gr.update(visible=False),
gr.update(visible=False),
gr.update(visible=False),
gr.update(visible=False),
gr.update(visible=True), # Show username input
gr.update(visible=True), # Show password input
gr.update(visible=True) # Show login button
)
with gr.Blocks() as demo:
username_input = gr.Textbox(label="用户名")
password_input = gr.Textbox(label="密码", type="password")
login_button = gr.Button("登录")
login_status = gr.Textbox(label="登录状态", value="", interactive=False)
qrcode_image = gr.Image(value=get_qrcode_image(), label="微信二维码", width=400, height=400, visible=False)
restart_status = gr.Textbox(label="状态", value="启动成功", visible=False)
with gr.Row():
restart_button = gr.Button("异常退出后请点击此按钮重启", visible=False)
refresh_button = gr.Button("登录前请点击此按钮刷新二维码", visible=False) # 添加手动刷新的按钮
login_button.click(
login,
inputs=[username_input, password_input],
outputs=[
login_status,
qrcode_image,
restart_button,
refresh_button,
restart_status,
username_input,
password_input,
login_button
]
)
restart_button.click(start_run, outputs=restart_status)
def refresh_image():
return get_qrcode_image()
refresh_button.click(refresh_image, outputs=qrcode_image) # 手动刷新按钮的点击事件
if __name__ == "__main__":
start_run()
load_config()
demo.launch(server_name="0.0.0.0", server_port=conf().get("web_ui_port", 7860))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。