2023-01-31 16:24:56 +00:00
|
|
|
|
from amis import Page, PageSchema, Html, Property, Service, Flex, ActionType, LevelEnum, Divider, Log, Alert, Form, \
|
|
|
|
|
Dialog, Select, Group, InputText, DisplayModeEnum, Horizontal
|
|
|
|
|
|
|
|
|
|
from pagermaid.config import Config
|
|
|
|
|
from pagermaid.web.html import get_logo
|
|
|
|
|
|
|
|
|
|
logo = Html(html=get_logo())
|
|
|
|
|
select_log_num = Select(
|
|
|
|
|
label='日志数量',
|
|
|
|
|
name='log_num',
|
|
|
|
|
value=100,
|
|
|
|
|
options=[
|
|
|
|
|
{
|
|
|
|
|
'label': 100,
|
|
|
|
|
'value': 100
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'label': 200,
|
|
|
|
|
'value': 200
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'label': 300,
|
|
|
|
|
'value': 300
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'label': 400,
|
|
|
|
|
'value': 400
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'label': 500,
|
|
|
|
|
'value': 500
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
log_page = Log(
|
|
|
|
|
autoScroll=True,
|
|
|
|
|
placeholder='暂无日志数据...',
|
|
|
|
|
operation=['stop', 'showLineNumber', 'filter'],
|
|
|
|
|
source={
|
|
|
|
|
'method': 'get',
|
|
|
|
|
'url': '/pagermaid/api/log?num=${log_num | raw}',
|
|
|
|
|
'headers': {
|
|
|
|
|
'token': Config.WEB_SECRET_KEY
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
cmd_input = Form(
|
|
|
|
|
mode=DisplayModeEnum.horizontal,
|
|
|
|
|
horizontal=Horizontal(left=0),
|
|
|
|
|
wrapWithPanel=False,
|
|
|
|
|
body=[
|
|
|
|
|
InputText(name='command', required=True, clearable=True, addOn=ActionType.Dialog(
|
|
|
|
|
label='执行',
|
|
|
|
|
level=LevelEnum.primary,
|
|
|
|
|
dialog=Dialog(
|
|
|
|
|
title='命令执行结果',
|
|
|
|
|
size='xl',
|
|
|
|
|
body=Log(
|
|
|
|
|
autoScroll=True,
|
|
|
|
|
placeholder='执行命令中,请稍候...',
|
|
|
|
|
operation=['stop', 'showLineNumber', 'filter'],
|
|
|
|
|
source={
|
|
|
|
|
'method': 'get',
|
|
|
|
|
'url': '/pagermaid/api/run_sh?cmd=${command | raw}',
|
|
|
|
|
'headers': {
|
|
|
|
|
'token': Config.WEB_SECRET_KEY
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
))
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
eval_input = Form(
|
|
|
|
|
mode=DisplayModeEnum.horizontal,
|
|
|
|
|
horizontal=Horizontal(left=0),
|
|
|
|
|
wrapWithPanel=False,
|
|
|
|
|
body=[
|
|
|
|
|
InputText(name='command', required=True, clearable=True, addOn=ActionType.Dialog(
|
|
|
|
|
label='执行',
|
|
|
|
|
level=LevelEnum.primary,
|
|
|
|
|
dialog=Dialog(
|
|
|
|
|
title='命令执行结果',
|
|
|
|
|
size='xl',
|
|
|
|
|
body=Log(
|
|
|
|
|
autoScroll=True,
|
|
|
|
|
placeholder='执行命令中,请稍候...',
|
|
|
|
|
operation=['stop', 'showLineNumber', 'filter'],
|
|
|
|
|
source={
|
|
|
|
|
'method': 'get',
|
|
|
|
|
'url': '/pagermaid/api/run_eval?cmd=${command | raw}',
|
|
|
|
|
'headers': {
|
|
|
|
|
'token': Config.WEB_SECRET_KEY
|
|
|
|
|
}
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
))
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
operation_button = Flex(justify='center', items=[
|
|
|
|
|
ActionType.Ajax(
|
|
|
|
|
label='更新',
|
|
|
|
|
api='/pagermaid/api/bot_update',
|
|
|
|
|
confirmText='该操作会更新 PagerMaid-Pyro ,请在更新完成后手动重启,请确认执行该操作',
|
|
|
|
|
level=LevelEnum.info
|
|
|
|
|
),
|
|
|
|
|
ActionType.Ajax(
|
|
|
|
|
label='重启',
|
|
|
|
|
className='m-l',
|
|
|
|
|
api='/pagermaid/api/bot_restart',
|
|
|
|
|
confirmText='该操作会重启 PagerMaid-Pyro ,请耐心等待重启',
|
|
|
|
|
level=LevelEnum.danger
|
|
|
|
|
),
|
|
|
|
|
ActionType.Dialog(
|
|
|
|
|
label='日志',
|
|
|
|
|
className='m-l',
|
|
|
|
|
level=LevelEnum.primary,
|
|
|
|
|
dialog=Dialog(title='查看日志',
|
|
|
|
|
size='xl',
|
|
|
|
|
actions=[],
|
|
|
|
|
body=[
|
|
|
|
|
Alert(level=LevelEnum.info,
|
|
|
|
|
body='查看最近最多500条日志,不会自动刷新,需要手动点击两次"暂停键"来进行刷新。'),
|
|
|
|
|
Form(
|
|
|
|
|
body=[Group(body=[select_log_num]), log_page]
|
|
|
|
|
)])
|
|
|
|
|
),
|
|
|
|
|
ActionType.Dialog(
|
|
|
|
|
label='shell',
|
|
|
|
|
className='m-l',
|
|
|
|
|
level=LevelEnum.warning,
|
|
|
|
|
dialog=Dialog(title='shell',
|
|
|
|
|
size='lg',
|
|
|
|
|
actions=[],
|
|
|
|
|
body=[cmd_input])
|
|
|
|
|
),
|
|
|
|
|
ActionType.Dialog(
|
|
|
|
|
label='eval',
|
|
|
|
|
className='m-l',
|
|
|
|
|
level=LevelEnum.warning,
|
|
|
|
|
dialog=Dialog(title='eval',
|
|
|
|
|
size='lg',
|
|
|
|
|
actions=[],
|
|
|
|
|
body=[eval_input])
|
|
|
|
|
)
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
status = Service(
|
|
|
|
|
api='/pagermaid/api/status',
|
|
|
|
|
body=Property(
|
|
|
|
|
title='运行信息',
|
|
|
|
|
column=2,
|
|
|
|
|
items=[
|
2023-01-31 17:07:21 +00:00
|
|
|
|
Property.Item(
|
|
|
|
|
label='Bot 版本',
|
|
|
|
|
content='${version}'
|
|
|
|
|
),
|
2023-01-31 16:24:56 +00:00
|
|
|
|
Property.Item(
|
|
|
|
|
label='Bot 运行时间',
|
|
|
|
|
content='${run_time}'
|
|
|
|
|
),
|
|
|
|
|
Property.Item(
|
|
|
|
|
label='CPU占用率',
|
|
|
|
|
content='${cpu_percent}'
|
|
|
|
|
),
|
|
|
|
|
Property.Item(
|
|
|
|
|
label='RAM占用率',
|
|
|
|
|
content='${ram_percent}'
|
|
|
|
|
),
|
|
|
|
|
Property.Item(
|
|
|
|
|
label='SWAP占用率',
|
|
|
|
|
content='${swap_percent}',
|
|
|
|
|
span=2
|
|
|
|
|
),
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
page_detail = Page(title='', body=[logo, operation_button, Divider(), status])
|
|
|
|
|
page = PageSchema(url='/home', label='首页', icon='fa fa-home', isDefaultPage=True, schema=page_detail)
|