@whyour/qinglong 0.14.3 → 0.14.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/docker/310.Dockerfile +81 -0
  2. package/package.json +1 -1
  3. package/static/dist/{src__pages__env__editNameModal.08af0049.async.js → 419.f9258e2f.async.js} +1 -1
  4. package/static/dist/{src__pages__dependence__logModal.b55dacc8.async.js → 8008.2d18f19d.async.js} +1 -1
  5. package/static/dist/833.c59c5023.async.js +1 -0
  6. package/static/dist/index.html +1 -1
  7. package/static/dist/layouts__index.817c948a.async.js +1 -0
  8. package/static/dist/{src__pages__crontab__index.da430aa9.async.js → src__pages__crontab__index.e74d65bc.async.js} +1 -1
  9. package/static/dist/src__pages__crontab__modal.5f353876.async.js +1 -0
  10. package/static/dist/src__pages__dependence__logModal.b44459a9.async.js +1 -0
  11. package/static/dist/src__pages__dependence__modal.663609bb.async.js +1 -0
  12. package/static/dist/src__pages__env__editNameModal.64e264d4.async.js +1 -0
  13. package/static/dist/src__pages__env__modal.ee1dbbc7.async.js +1 -0
  14. package/static/dist/src__pages__error__index.388743c5.async.js +1 -0
  15. package/static/dist/src__pages__initialization__index.b522cc95.async.js +1 -0
  16. package/static/dist/src__pages__script__editNameModal.55a6bcbb.async.js +1 -0
  17. package/static/dist/{src__pages__script__index.27582916.async.js → src__pages__script__index.320f4af9.async.js} +1 -1
  18. package/static/dist/src__pages__script__renameModal.90d4d26a.async.js +1 -0
  19. package/static/dist/{src__pages__script__editNameModal.61262353.async.js → src__pages__script__saveModal.2012fa2c.async.js} +1 -1
  20. package/static/dist/src__pages__script__setting.0daecd62.async.js +1 -0
  21. package/static/dist/src__pages__setting__appModal.476d1f54.async.js +1 -0
  22. package/static/dist/src__pages__setting__dependence.1f8b48fc.async.js +1 -0
  23. package/static/dist/{src__pages__setting__index.d2fc96f6.async.js → src__pages__setting__index.f8842b47.async.js} +1 -1
  24. package/static/dist/src__pages__setting__notification.dd201d2a.async.js +1 -0
  25. package/static/dist/src__pages__setting__security.dbfad79b.async.js +1 -0
  26. package/static/dist/src__pages__subscription__modal.69a7f91a.async.js +1 -0
  27. package/static/dist/{umi.639187d6.js → umi.8daa227c.js} +1 -1
  28. package/static/dist/419.d9597044.async.js +0 -1
  29. package/static/dist/8008.fbdcf863.async.js +0 -1
  30. package/static/dist/833.7348bf8c.async.js +0 -1
  31. package/static/dist/layouts__index.2c89a418.async.js +0 -1
  32. package/static/dist/src__pages__crontab__modal.13de83de.async.js +0 -1
  33. package/static/dist/src__pages__dependence__modal.3cc1a9be.async.js +0 -1
  34. package/static/dist/src__pages__env__modal.4c039f3d.async.js +0 -1
  35. package/static/dist/src__pages__error__index.1748dfaa.async.js +0 -1
  36. package/static/dist/src__pages__initialization__index.8f114cca.async.js +0 -1
  37. package/static/dist/src__pages__script__renameModal.3e39fdf4.async.js +0 -1
  38. package/static/dist/src__pages__script__saveModal.449e50d8.async.js +0 -1
  39. package/static/dist/src__pages__script__setting.7944fdd6.async.js +0 -1
  40. package/static/dist/src__pages__setting__appModal.a419e539.async.js +0 -1
  41. package/static/dist/src__pages__setting__dependence.7bcddc85.async.js +0 -1
  42. package/static/dist/src__pages__setting__notification.552e6815.async.js +0 -1
  43. package/static/dist/src__pages__setting__security.c667d9e8.async.js +0 -1
  44. package/static/dist/src__pages__subscription__modal.07629f02.async.js +0 -1
@@ -0,0 +1,81 @@
1
+ FROM node:20-slim as nodebuilder
2
+
3
+ FROM python:3.10-slim-bullseye as builder
4
+ COPY package.json .npmrc pnpm-lock.yaml /tmp/build/
5
+ COPY --from=nodebuilder /usr/local/bin/node /usr/local/bin/
6
+ COPY --from=nodebuilder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/
7
+ RUN set -x && \
8
+ ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm && \
9
+ apt update && \
10
+ apt install --no-install-recommends -y libatomic1 && \
11
+ npm i -g pnpm@8.3.1 && \
12
+ cd /tmp/build && \
13
+ pnpm install --prod
14
+
15
+ FROM python:3.10-slim-bullseye
16
+
17
+ ARG QL_MAINTAINER="whyour"
18
+ LABEL maintainer="${QL_MAINTAINER}"
19
+ ARG QL_URL=https://github.com/${QL_MAINTAINER}/qinglong.git
20
+ ARG QL_BRANCH=develop
21
+
22
+ ENV PNPM_HOME=/root/.local/share/pnpm \
23
+ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.local/share/pnpm:/root/.local/share/pnpm/global/5/node_modules:$PNPM_HOME \
24
+ NODE_PATH=/usr/local/bin:/usr/local/pnpm-global/5/node_modules:/usr/local/lib/node_modules:/root/.local/share/pnpm/global/5/node_modules \
25
+ LANG=C.UTF-8 \
26
+ SHELL=/bin/bash \
27
+ PS1="\u@\h:\w \$ " \
28
+ QL_DIR=/ql \
29
+ QL_BRANCH=${QL_BRANCH}
30
+
31
+ COPY --from=nodebuilder /usr/local/bin/node /usr/local/bin/
32
+ COPY --from=nodebuilder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/
33
+
34
+ RUN set -x && \
35
+ ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm && \
36
+ apt update && \
37
+ apt upgrade -y && \
38
+ apt install --no-install-recommends -y git \
39
+ curl \
40
+ wget \
41
+ tzdata \
42
+ perl \
43
+ openssl \
44
+ openssh-client \
45
+ nginx \
46
+ jq \
47
+ procps \
48
+ netcat \
49
+ unzip \
50
+ libatomic1 && \
51
+ apt clean && \
52
+ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
53
+ echo "Asia/Shanghai" >/etc/timezone && \
54
+ git config --global user.email "qinglong@@users.noreply.github.com" && \
55
+ git config --global user.name "qinglong" && \
56
+ git config --global http.postBuffer 524288000 && \
57
+ npm install -g pnpm@8.3.1 pm2 tsx && \
58
+ rm -rf /root/.pnpm-store && \
59
+ rm -rf /root/.local/share/pnpm/store && \
60
+ rm -rf /root/.cache && \
61
+ rm -rf /root/.npm
62
+
63
+ ARG SOURCE_COMMIT
64
+ RUN git clone --depth=1 -b ${QL_BRANCH} ${QL_URL} ${QL_DIR} && \
65
+ cd ${QL_DIR} && \
66
+ cp -f .env.example .env && \
67
+ chmod 777 ${QL_DIR}/shell/*.sh && \
68
+ chmod 777 ${QL_DIR}/docker/*.sh && \
69
+ git clone --depth=1 -b ${QL_BRANCH} https://github.com/${QL_MAINTAINER}/qinglong-static.git /static && \
70
+ mkdir -p ${QL_DIR}/static && \
71
+ cp -rf /static/* ${QL_DIR}/static && \
72
+ rm -rf /static
73
+
74
+ COPY --from=builder /tmp/build/node_modules/. /ql/node_modules/
75
+
76
+ WORKDIR ${QL_DIR}
77
+
78
+ HEALTHCHECK --interval=5s --timeout=2s --retries=20 \
79
+ CMD curl -sf --noproxy '*' http://127.0.0.1:5400/api/health || exit 1
80
+
81
+ ENTRYPOINT ["./docker/docker-entrypoint.sh"]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whyour/qinglong",
3
- "version": "0.14.3",
3
+ "version": "0.14.5",
4
4
  "description": "Timed task management platform supporting Python3, JavaScript, Shell, Typescript",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[4216],{57425:function(e,t,a){a.r(t);var r=a(25359),l=a.n(r),i=a(49811),o=a.n(i),n=a(54306),s=a.n(n),u=a(88265),p=a(63313),g=a(67393),c=a(9835),d=a(84163),P=a(22159),h=a(57229),b=a(15207),Z=a(11527);t.default=function(e){var t=e.ids,a=e.handleCancel,r=e.visible,i=g.Z.useForm(),n=s()(i,1)[0],m=(0,p.useState)(!1),k=s()(m,2),v=k[0],f=k[1],y=function(){var e=o()(l()().mark((function e(r){var i,o;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(!0),e.prev=1,e.next=4,h.W.put("".concat(b.Z.apiPrefix,"envs/name"),{ids:t,name:r.name});case 4:i=e.sent,o=i.code,i.data,200===o&&(c.ZP.success(u.ZP.get("更新环境变量名称成功")),a()),f(!1),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),f(!1);case 14:case"end":return e.stop()}}),e,null,[[1,11]])})));return function(t){return e.apply(this,arguments)}}();return(0,p.useEffect)((function(){n.resetFields()}),[t,r]),(0,Z.jsx)(d.Z,{title:u.ZP.get("修改环境变量名称"),open:r,forceRender:!0,centered:!0,maskClosable:!1,onOk:function(){n.validateFields().then((function(e){y(e)})).catch((function(e){console.log("Validate Failed:",e)}))},onCancel:function(){return a()},confirmLoading:v,children:(0,Z.jsx)(g.Z,{form:n,layout:"vertical",name:"edit_name_modal",children:(0,Z.jsx)(g.Z.Item,{name:"name",rules:[{required:!0,message:u.ZP.get("请输入新的环境变量名称")}],children:(0,Z.jsx)(P.Z,{placeholder:u.ZP.get("请输入新的环境变量名称")})})})})}},15207:function(e,t,a){var r=a(88265),l=window.__ENV__QlBaseUrl||"/";t.Z={siteName:r.ZP.get("青龙"),apiPrefix:"".concat(l,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],i18n:{languages:[{key:"pt-br",title:"Português",flag:"/portugal.svg"},{key:"en",title:"English",flag:"/america.svg"},{key:"zh",title:r.ZP.get("中文"),flag:"/china.svg"}],defaultLanguage:"en"},scopes:[{name:r.ZP.get("定时任务"),value:"crons"},{name:r.ZP.get("环境变量"),value:"envs"},{name:r.ZP.get("订阅管理"),value:"subscriptions"},{name:r.ZP.get("配置文件"),value:"configs"},{name:r.ZP.get("脚本管理"),value:"scripts"},{name:r.ZP.get("日志管理"),value:"logs"},{name:r.ZP.get("依赖管理"),value:"dependencies"},{name:r.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:r.ZP.get("定时任务"),envs:r.ZP.get("环境变量"),subscriptions:r.ZP.get("订阅管理"),configs:r.ZP.get("配置文件"),scripts:r.ZP.get("脚本管理"),logs:r.ZP.get("日志管理"),dependencies:r.ZP.get("依赖管理"),system:r.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:r.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:r.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:r.ZP.get("钉钉机器人")},{value:"weWorkBot",label:r.ZP.get("企业微信机器人")},{value:"weWorkApp",label:r.ZP.get("企业微信应用")},{value:"aibotk",label:r.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"chat",label:r.ZP.get("群晖chat")},{value:"email",label:r.ZP.get("邮箱")},{value:"lark",label:r.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:r.ZP.get("自定义通知")},{value:"closed",label:r.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:r.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:r.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:r.ZP.get("推送消息的优先级")}],chat:[{label:"chatUrl",tip:r.ZP.get("chat的url地址"),required:!0},{label:"chatToken",tip:r.ZP.get("chat的token码"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:r.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:r.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:r.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:r.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:r.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:r.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:r.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:r.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:r.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:r.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:r.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:r.ZP.get("BARK推送消息的跳转URL")}],telegramBot:[{label:"telegramBotToken",tip:r.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:r.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:r.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:r.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:r.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:r.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:r.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:r.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:r.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:r.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:r.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:r.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:r.ZP.get("请输入要发送的目标"),items:[{value:"room",label:r.ZP.get("群聊")},{value:"contact",label:r.ZP.get("好友")}]},{label:"aibotkName",tip:r.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:r.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:r.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:r.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")}],lark:[{label:"larkKey",tip:r.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0}],email:[{label:"emailService",tip:r.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:r.ZP.get("邮箱地址"),required:!0},{label:"emailPass",tip:r.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0}],pushMe:[{label:"pushMeKey",tip:r.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0}],chronocat:[{label:"chronocatURL",tip:r.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:r.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:r.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:r.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:r.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:r.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:r.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:r.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":r.ZP.get("登录"),"/initialization":r.ZP.get("初始化"),"/crontab":r.ZP.get("定时任务"),"/env":r.ZP.get("环境变量"),"/subscription":r.ZP.get("订阅管理"),"/config":r.ZP.get("配置文件"),"/script":r.ZP.get("脚本管理"),"/diff":r.ZP.get("对比工具"),"/log":r.ZP.get("日志管理"),"/setting":r.ZP.get("系统设置"),"/error":r.ZP.get("错误日志"),"/dependence":r.ZP.get("依赖管理")},dependenceTypes:["nodejs","python3","linux"]}},57229:function(e,t,a){a.d(t,{W:function(){return h}});var r=a(25359),l=a.n(r),i=a(49811),o=a.n(i),n=a(88265),s=a(9835),u=a(15207),p=a(14851),g=a(73669);s.ZP.config({duration:2});var c=Date.now(),d=g.Z.create({timeout:6e4,params:{t:c}}),P=["/api/user/login","/open/auth/token","/api/user/two-factor/login","/api/system","/api/user/init","/api/user/notification/init"];d.interceptors.request.use((function(e){var t=localStorage.getItem(u.Z.authKey);return t&&!P.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),d.interceptors.response.use(function(){var e=o()(l()().mark((function e(t){var a,r,i;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.status,![502,504].includes(a)){e.next=5;break}p.history.push("/error"),e.next=18;break;case 5:if(401!==a){e.next=9;break}"/login"!==p.history.location.pathname&&(localStorage.removeItem(u.Z.authKey),p.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(r=t.data).code&&(i=r.message||r.data)&&s.ZP.error({content:i,style:{maxWidth:500,margin:"0 auto"}}),e.abrupt("return",r);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message||e.response.data:e.response.statusText,a=e.response.status;[502,504].includes(a)?p.history.push("/error"):401===a?"/login"!==p.history.location.pathname&&(s.ZP.error(n.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(u.Z.authKey),p.history.push("/login")):s.ZP.error({content:t,style:{maxWidth:500,margin:"0 auto"}})}else console.log(e.message);return Promise.reject(e)}));var h=d}}]);
1
+ "use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[419,5812],{38582:function(e,t,a){var r=(0,a(55258).Z)({scriptUrl:["//at.alicdn.com/t/c/font_3354854_ob5y15ewlyq.js"]});t.Z=r},91350:function(e,t,a){a.r(t),a.d(t,{CrontabStatus:function(){return r},OperationName:function(){return n},OperationPath:function(){return l}});var r=function(e){return e[e.running=0]="running",e[e.queued=.5]="queued",e[e.idle=1]="idle",e[e.disabled=2]="disabled",e}({}),n=function(e){return e[e["启用"]=0]="启用",e[e["禁用"]=1]="禁用",e[e["运行"]=2]="运行",e[e["停止"]=3]="停止",e[e["置顶"]=4]="置顶",e[e["取消置顶"]=5]="取消置顶",e}({}),l=function(e){return e[e.enable=0]="enable",e[e.disable=1]="disable",e[e.run=2]="run",e[e.stop=3]="stop",e[e.pin=4]="pin",e[e.unpin=5]="unpin",e}({})},10419:function(e,t,a){a.r(t);var r=a(12342),n=a.n(r),l=a(25359),i=a.n(l),o=a(57213),s=a.n(o),u=a(49811),c=a.n(u),p=a(54306),g=a.n(p),d=a(88265),h=a(63313),m=a(67393),Z=a(28756),P=a(84163),b=a(22159),v=a(24378),f=a(2947),x=a(57229),y=a(15207),k=a(32320),w=a(26839),q=a(38582),j=a(91350),C=a(19631),B=a(11527),_=["name"],S=["key","name"],R=["key","name"],I=[{name:d.ZP.get("命令"),value:"command"},{name:d.ZP.get("名称"),value:"name"},{name:d.ZP.get("定时规则"),value:"schedule"},{name:d.ZP.get("状态"),value:"status",onlySelect:!0},{name:d.ZP.get("标签"),value:"labels"},{name:d.ZP.get("订阅"),value:"sub_id",onlySelect:!0}],K={Reg:"",NotReg:"",In:"select",Nin:"select"},T=[{name:d.ZP.get("包含"),value:"Reg"},{name:d.ZP.get("不包含"),value:"NotReg"},{name:d.ZP.get("属于"),value:"In",type:"select"},{name:d.ZP.get("不属于"),value:"Nin",type:"select"}],U=[{name:d.ZP.get("顺序"),value:"ASC"},{name:d.ZP.get("倒序"),value:"DESC"}],A=function(e){return e.and="且",e.or="或",e}(A||{});t.default=function(e){var t=e.view,a=e.handleCancel,r=e.visible,l=m.Z.useForm(),o=g()(l,1)[0],u=(0,h.useState)(!1),p=g()(u,2),Q=p[0],H=p[1],N=(0,h.useState)("and"),X=g()(N,2),W=X[0],O=X[1],E=m.Z.useWatch("filters",o),M=(0,C.Z)((function(){return x.W.get("".concat(y.Z.apiPrefix,"subscriptions"))}),{cacheKey:"subscriptions"}).data,G={status:[{name:d.ZP.get("运行中"),value:j.CrontabStatus.running},{name:d.ZP.get("空闲中"),value:j.CrontabStatus.idle},{name:d.ZP.get("已禁用"),value:j.CrontabStatus.disabled}],sub_id:null==M?void 0:M.data.map((function(e){return{name:e.name,value:e.id}}))},D=function(){var e=c()(i()().mark((function e(r){var n,l,o,u;return i()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return H(!0),r.filterRelation=W,n=t?"put":"post",e.prev=3,e.next=6,x.W[n]("".concat(y.Z.apiPrefix,"crons/views"),t?s()(s()({},r),{},{id:t.id}):r);case 6:l=e.sent,o=l.code,u=l.data,200===o&&a(u),H(!1),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(3),H(!1);case 16:case"end":return e.stop()}}),e,null,[[3,13]])})));return function(t){return e.apply(this,arguments)}}();(0,h.useEffect)((function(){t||o.resetFields(),o.setFieldsValue(t||{filters:[{property:"command"}]})}),[t,r]);var L=function(e){var t=e.name,a=n()(e,_),r=o.getFieldValue(["filters",t,"property"]);return(0,B.jsx)(Z.Z,s()(s()({style:{width:120},placeholder:d.ZP.get("请选择操作符")},a),{},{children:T.filter((function(e){return G[r]?"select"===e.type:e})).map((function(e){return(0,B.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))}))},F=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,B.jsx)(Z.Z,{style:t,children:e.map((function(e){return(0,B.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))})},z=(0,B.jsx)(Z.Z,{style:{width:80},children:U.map((function(e){return(0,B.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))});return(0,B.jsx)(P.Z,{title:t?d.ZP.get("编辑视图"):d.ZP.get("创建视图"),open:r,forceRender:!0,width:580,centered:!0,maskClosable:!1,onOk:function(){o.validateFields().then((function(e){D(e)})).catch((function(e){console.log("Validate Failed:",e)}))},onCancel:function(){return a()},confirmLoading:Q,children:(0,B.jsxs)(m.Z,{form:o,layout:"vertical",name:"env_modal",children:[(0,B.jsx)(m.Z.Item,{name:"name",label:d.ZP.get("视图名称"),rules:[{required:!0,message:d.ZP.get("请输入视图名称")}],children:(0,B.jsx)(b.Z,{placeholder:d.ZP.get("请输入视图名称")})}),(0,B.jsx)(m.Z.List,{name:"filters",children:function(e,t,a){var r=t.add,l=t.remove,i=a.errors;return(0,B.jsxs)("div",{style:{position:"relative"},className:"view-filters-container ".concat(e.length>1?"active":""),children:[e.length>1&&(0,B.jsx)("div",{style:{position:"absolute",width:50,borderRadius:10,border:"1px solid rgb(190, 220, 255)",borderRight:"none",height:56*(e.length-1),top:46,left:15},children:(0,B.jsx)(v.Z,{type:"primary",size:"small",style:{position:"absolute",top:"50%",translate:"-50% -50%",padding:"0 3px",cursor:"pointer"},onClick:function(){O("and"===W?"or":"and")},children:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)("span",{children:A[W]}),(0,B.jsx)(q.Z,{type:"ql-icon-d-caret"})]})})}),(0,B.jsxs)("div",{children:[e.map((function(e){var t,a,r=e.key,i=e.name,o=n()(e,S);return(0,B.jsx)(m.Z.Item,{label:0===i?d.ZP.get("筛选条件"):"",style:{marginBottom:0},required:!0,className:"filter-item",children:(0,B.jsxs)(f.Z,{className:"view-create-modal-filters",align:"baseline",children:[(0,B.jsx)(m.Z.Item,s()(s()({},o),{},{name:[i,"property"],rules:[{required:!0}],children:F(I,{width:120})})),(0,B.jsx)(m.Z.Item,s()(s()({},o),{},{name:[i,"operation"],rules:[{required:!0,message:d.ZP.get("请选择操作符")}],children:(0,B.jsx)(L,{name:i})})),(0,B.jsx)(m.Z.Item,s()(s()({},o),{},{name:[i,"value"],rules:[{required:!0,message:d.ZP.get("请输入内容")}],children:"select"===K[null==E?void 0:E[i].operation]?(t=null==E?void 0:E[i].property,(0,B.jsx)(Z.Z,{mode:"tags",allowClear:!0,placeholder:d.ZP.get("输入后回车增加自定义选项"),children:null===(a=G[t])||void 0===a?void 0:a.map((function(e){return(0,B.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))})):(0,B.jsx)(b.Z,{placeholder:d.ZP.get("请输入内容")})})),0!==i&&(0,B.jsx)(k.Z,{onClick:function(){return l(i)}})]})},r)})),(0,B.jsx)(m.Z.Item,{children:(0,B.jsxs)("a",{onClick:function(){return r({property:"command",operation:"Reg"})},children:[(0,B.jsx)(w.Z,{}),d.ZP.get("新增筛选条件")]})}),(0,B.jsx)(m.Z.ErrorList,{errors:i})]})]})}}),(0,B.jsx)(m.Z.List,{name:"sorts",children:function(e,t,a){var r=t.add,l=t.remove,i=a.errors;return(0,B.jsxs)("div",{style:{position:"relative"},className:"view-filters-container ".concat(e.length>1?"active":""),children:[e.length>1&&(0,B.jsx)("div",{style:{position:"absolute",width:50,borderRadius:10,border:"1px solid rgb(190, 220, 255)",borderRight:"none",height:56*(e.length-1),top:46,left:15},children:(0,B.jsx)(v.Z,{type:"primary",size:"small",style:{position:"absolute",top:"50%",translate:"-50% -50%",padding:"0 3px",cursor:"pointer"},children:(0,B.jsx)(B.Fragment,{children:(0,B.jsx)("span",{children:A[W]})})})}),(0,B.jsxs)("div",{children:[e.map((function(e){var t=e.key,a=e.name,r=n()(e,R);return(0,B.jsx)(m.Z.Item,{label:0===a?d.ZP.get("排序方式"):"",style:{marginBottom:0},className:"filter-item",children:(0,B.jsxs)(f.Z,{className:"view-create-modal-sorts",align:"baseline",children:[(0,B.jsx)(m.Z.Item,s()(s()({},r),{},{name:[a,"property"],rules:[{required:!0}],children:F(I)})),(0,B.jsx)(m.Z.Item,s()(s()({},r),{},{name:[a,"type"],rules:[{required:!0}],children:z})),(0,B.jsx)(k.Z,{onClick:function(){return l(a)}})]})},t)})),(0,B.jsx)(m.Z.Item,{children:(0,B.jsxs)("a",{onClick:function(){return r({property:"command",type:"ASC"})},children:[(0,B.jsx)(w.Z,{}),d.ZP.get("新增排序方式")]})}),(0,B.jsx)(m.Z.ErrorList,{errors:i})]})]})}})]})})}},15207:function(e,t,a){var r=a(88265),n=window.__ENV__QlBaseUrl||"/";t.Z={siteName:r.ZP.get("青龙"),baseUrl:n,apiPrefix:"".concat(n,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],i18n:{languages:[{key:"pt-br",title:"Português",flag:"/portugal.svg"},{key:"en",title:"English",flag:"/america.svg"},{key:"zh",title:r.ZP.get("中文"),flag:"/china.svg"}],defaultLanguage:"en"},scopes:[{name:r.ZP.get("定时任务"),value:"crons"},{name:r.ZP.get("环境变量"),value:"envs"},{name:r.ZP.get("订阅管理"),value:"subscriptions"},{name:r.ZP.get("配置文件"),value:"configs"},{name:r.ZP.get("脚本管理"),value:"scripts"},{name:r.ZP.get("日志管理"),value:"logs"},{name:r.ZP.get("依赖管理"),value:"dependencies"},{name:r.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:r.ZP.get("定时任务"),envs:r.ZP.get("环境变量"),subscriptions:r.ZP.get("订阅管理"),configs:r.ZP.get("配置文件"),scripts:r.ZP.get("脚本管理"),logs:r.ZP.get("日志管理"),dependencies:r.ZP.get("依赖管理"),system:r.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:r.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:r.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:r.ZP.get("钉钉机器人")},{value:"weWorkBot",label:r.ZP.get("企业微信机器人")},{value:"weWorkApp",label:r.ZP.get("企业微信应用")},{value:"aibotk",label:r.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"chat",label:r.ZP.get("群晖chat")},{value:"email",label:r.ZP.get("邮箱")},{value:"lark",label:r.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:r.ZP.get("自定义通知")},{value:"closed",label:r.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:r.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:r.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:r.ZP.get("推送消息的优先级")}],chat:[{label:"chatUrl",tip:r.ZP.get("chat的url地址"),required:!0},{label:"chatToken",tip:r.ZP.get("chat的token码"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:r.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:r.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:r.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:r.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:r.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:r.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:r.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:r.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:r.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:r.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:r.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:r.ZP.get("BARK推送消息的跳转URL")}],telegramBot:[{label:"telegramBotToken",tip:r.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:r.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:r.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:r.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:r.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:r.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:r.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:r.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:r.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:r.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:r.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:r.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:r.ZP.get("请输入要发送的目标"),items:[{value:"room",label:r.ZP.get("群聊")},{value:"contact",label:r.ZP.get("好友")}]},{label:"aibotkName",tip:r.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:r.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:r.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:r.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")}],lark:[{label:"larkKey",tip:r.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0}],email:[{label:"emailService",tip:r.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:r.ZP.get("邮箱地址"),required:!0},{label:"emailPass",tip:r.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0}],pushMe:[{label:"pushMeKey",tip:r.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0}],chronocat:[{label:"chronocatURL",tip:r.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:r.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:r.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:r.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:r.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:r.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:r.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:r.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":r.ZP.get("登录"),"/initialization":r.ZP.get("初始化"),"/crontab":r.ZP.get("定时任务"),"/env":r.ZP.get("环境变量"),"/subscription":r.ZP.get("订阅管理"),"/config":r.ZP.get("配置文件"),"/script":r.ZP.get("脚本管理"),"/diff":r.ZP.get("对比工具"),"/log":r.ZP.get("日志管理"),"/setting":r.ZP.get("系统设置"),"/error":r.ZP.get("错误日志"),"/dependence":r.ZP.get("依赖管理")},dependenceTypes:["nodejs","python3","linux"]}},57229:function(e,t,a){a.d(t,{W:function(){return m}});var r=a(25359),n=a.n(r),l=a(49811),i=a.n(l),o=a(88265),s=a(9835),u=a(15207),c=a(14851),p=a(73669);s.ZP.config({duration:2});var g=Date.now(),d=p.Z.create({timeout:6e4,params:{t:g}}),h=["/api/user/login","/open/auth/token","/api/user/two-factor/login","/api/system","/api/user/init","/api/user/notification/init"];d.interceptors.request.use((function(e){var t=localStorage.getItem(u.Z.authKey);return t&&!h.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),d.interceptors.response.use(function(){var e=i()(n()().mark((function e(t){var a,r,l;return n()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.status,![502,504].includes(a)){e.next=5;break}c.history.push("/error"),e.next=18;break;case 5:if(401!==a){e.next=9;break}"/login"!==c.history.location.pathname&&(localStorage.removeItem(u.Z.authKey),c.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(r=t.data).code&&(l=r.message||r.data)&&s.ZP.error({content:l,style:{maxWidth:500,margin:"0 auto"}}),e.abrupt("return",r);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message||e.response.data:e.response.statusText,a=e.response.status;[502,504].includes(a)?c.history.push("/error"):401===a?"/login"!==c.history.location.pathname&&(s.ZP.error(o.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(u.Z.authKey),c.history.push("/login")):s.ZP.error({content:t,style:{maxWidth:500,margin:"0 auto"}})}else console.log(e.message);return Promise.reject(e)}));var m=d}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[1406],{65601:function(e,t,n){n.d(t,{Z:function(){return l}});var a=n(14797),r=n(63313),i={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 1024c-69.1 0-136.2-13.5-199.3-40.2C251.7 958 197 921 150 874c-47-47-84-101.7-109.8-162.7C13.5 648.2 0 581.1 0 512c0-19.9 16.1-36 36-36s36 16.1 36 36c0 59.4 11.6 117 34.6 171.3 22.2 52.4 53.9 99.5 94.3 139.9 40.4 40.4 87.5 72.2 139.9 94.3C395 940.4 452.6 952 512 952c59.4 0 117-11.6 171.3-34.6 52.4-22.2 99.5-53.9 139.9-94.3 40.4-40.4 72.2-87.5 94.3-139.9C940.4 629 952 571.4 952 512c0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.2C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3s-13.5 136.2-40.2 199.3C958 772.3 921 827 874 874c-47 47-101.8 83.9-162.7 109.7-63.1 26.8-130.2 40.3-199.3 40.3z"}}]},name:"loading-3-quarters",theme:"outlined"},o=n(46420),s=function(e,t){return r.createElement(o.Z,(0,a.Z)((0,a.Z)({},e),{},{ref:t,icon:i}))};s.displayName="Loading3QuartersOutlined";var l=r.forwardRef(s)},71467:function(e,t,n){n.r(t);var a=n(54306),r=n.n(a),i=n(88265),o=n(63313),s=n(84163),l=n(24378),u=n(57229),c=n(15207),p=n(65601),g=n(38101),d=n(4574),h=n(99120),f=n.n(h),v=n(21758),b=n(11527);t.default=function(e){var t=e.dependence,n=e.handleCancel,a=e.visible,h=(0,o.useState)(""),m=r()(h,2),P=m[0],Z=m[1],k=(0,o.useState)(!0),y=r()(k,2),x=y[0],w=y[1],q=(0,o.useState)(!1),C=r()(q,2),S=C[0],B=C[1],E=(0,o.useState)(!0),A=r()(E,2),I=A[0],T=A[1],_=(0,o.useState)(!1),R=r()(_,2),H=R[0],K=R[1],L=(0,o.useState)(!1),M=r()(L,2),Q=M[0],U=M[1],j=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];localStorage.removeItem("logDependence"),n(e)};(0,o.useEffect)((function(){t&&(T(!0),u.W.get("".concat(c.Z.apiPrefix,"dependencies/").concat(t.id)).then((function(e){var n=e.code,a=e.data;if(200===n&&localStorage.getItem("logDependence")===String(t.id)){var r=((null==a?void 0:a.log)||[]).join("");Z(r),w(!r.includes("结束时间")),K(r.includes("删除失败"))}})).finally((function(){T(!1)})))}),[t]);var D=function(e){var n=e.message,a=e.references;a.length>0&&a.includes(t.id)&&(n.includes("结束时间")&&(w(!1),K(n.includes("删除失败"))),Z((function(e){return"".concat(e).concat(n)})))};return(0,o.useEffect)((function(){var e=v.Z.getInstance();return e.subscribe("installDependence",D),function(){e.unsubscribe("installDependence",D)}}),[]),(0,o.useEffect)((function(){B(document.body.clientWidth<768)}),[]),(0,b.jsx)(s.Z,{title:(0,b.jsxs)(b.Fragment,{children:[x&&(0,b.jsx)(p.Z,{spin:!0}),!x&&(0,b.jsx)(g.Z,{}),(0,b.jsxs)("span",{style:{marginLeft:5},children:[i.ZP.get("日志 -")," ",t&&t.name]})," "]}),open:a,centered:!0,className:"log-modal",forceRender:!0,onOk:function(){return j()},onCancel:function(){return j()},footer:[(0,b.jsx)(l.Z,{type:"primary",onClick:function(){H?(U(!0),u.W.delete("".concat(c.Z.apiPrefix,"dependencies/force"),{data:[t.id]}).then((function(e){var t=e.code;e.data,200===t&&j(!0)})).finally((function(){U(!1)}))):j()},loading:Q,children:H?i.ZP.get("强制删除"):i.ZP.get("知道了")})],children:(0,b.jsx)("div",{className:"log-container",children:I?(0,b.jsx)(d.Z,{}):(0,b.jsx)("pre",{style:S?{fontFamily:"Source Code Pro",zoom:.83}:{},children:(0,b.jsx)(f(),{children:P})})})})}},15207:function(e,t,n){var a=n(88265),r=window.__ENV__QlBaseUrl||"/";t.Z={siteName:a.ZP.get("青龙"),apiPrefix:"".concat(r,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],i18n:{languages:[{key:"pt-br",title:"Português",flag:"/portugal.svg"},{key:"en",title:"English",flag:"/america.svg"},{key:"zh",title:a.ZP.get("中文"),flag:"/china.svg"}],defaultLanguage:"en"},scopes:[{name:a.ZP.get("定时任务"),value:"crons"},{name:a.ZP.get("环境变量"),value:"envs"},{name:a.ZP.get("订阅管理"),value:"subscriptions"},{name:a.ZP.get("配置文件"),value:"configs"},{name:a.ZP.get("脚本管理"),value:"scripts"},{name:a.ZP.get("日志管理"),value:"logs"},{name:a.ZP.get("依赖管理"),value:"dependencies"},{name:a.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:a.ZP.get("定时任务"),envs:a.ZP.get("环境变量"),subscriptions:a.ZP.get("订阅管理"),configs:a.ZP.get("配置文件"),scripts:a.ZP.get("脚本管理"),logs:a.ZP.get("日志管理"),dependencies:a.ZP.get("依赖管理"),system:a.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:a.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:a.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:a.ZP.get("钉钉机器人")},{value:"weWorkBot",label:a.ZP.get("企业微信机器人")},{value:"weWorkApp",label:a.ZP.get("企业微信应用")},{value:"aibotk",label:a.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"chat",label:a.ZP.get("群晖chat")},{value:"email",label:a.ZP.get("邮箱")},{value:"lark",label:a.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:a.ZP.get("自定义通知")},{value:"closed",label:a.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:a.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:a.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:a.ZP.get("推送消息的优先级")}],chat:[{label:"chatUrl",tip:a.ZP.get("chat的url地址"),required:!0},{label:"chatToken",tip:a.ZP.get("chat的token码"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:a.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:a.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:a.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:a.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:a.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:a.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:a.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:a.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:a.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:a.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:a.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:a.ZP.get("BARK推送消息的跳转URL")}],telegramBot:[{label:"telegramBotToken",tip:a.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:a.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:a.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:a.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:a.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:a.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:a.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:a.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:a.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:a.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:a.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:a.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:a.ZP.get("请输入要发送的目标"),items:[{value:"room",label:a.ZP.get("群聊")},{value:"contact",label:a.ZP.get("好友")}]},{label:"aibotkName",tip:a.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:a.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:a.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:a.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")}],lark:[{label:"larkKey",tip:a.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0}],email:[{label:"emailService",tip:a.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:a.ZP.get("邮箱地址"),required:!0},{label:"emailPass",tip:a.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0}],pushMe:[{label:"pushMeKey",tip:a.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0}],chronocat:[{label:"chronocatURL",tip:a.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:a.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:a.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:a.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:a.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:a.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:a.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:a.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":a.ZP.get("登录"),"/initialization":a.ZP.get("初始化"),"/crontab":a.ZP.get("定时任务"),"/env":a.ZP.get("环境变量"),"/subscription":a.ZP.get("订阅管理"),"/config":a.ZP.get("配置文件"),"/script":a.ZP.get("脚本管理"),"/diff":a.ZP.get("对比工具"),"/log":a.ZP.get("日志管理"),"/setting":a.ZP.get("系统设置"),"/error":a.ZP.get("错误日志"),"/dependence":a.ZP.get("依赖管理")},dependenceTypes:["nodejs","python3","linux"]}},57229:function(e,t,n){n.d(t,{W:function(){return f}});var a=n(25359),r=n.n(a),i=n(49811),o=n.n(i),s=n(88265),l=n(9835),u=n(15207),c=n(14851),p=n(73669);l.ZP.config({duration:2});var g=Date.now(),d=p.Z.create({timeout:6e4,params:{t:g}}),h=["/api/user/login","/open/auth/token","/api/user/two-factor/login","/api/system","/api/user/init","/api/user/notification/init"];d.interceptors.request.use((function(e){var t=localStorage.getItem(u.Z.authKey);return t&&!h.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),d.interceptors.response.use(function(){var e=o()(r()().mark((function e(t){var n,a,i;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.status,![502,504].includes(n)){e.next=5;break}c.history.push("/error"),e.next=18;break;case 5:if(401!==n){e.next=9;break}"/login"!==c.history.location.pathname&&(localStorage.removeItem(u.Z.authKey),c.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(a=t.data).code&&(i=a.message||a.data)&&l.ZP.error({content:i,style:{maxWidth:500,margin:"0 auto"}}),e.abrupt("return",a);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message||e.response.data:e.response.statusText,n=e.response.status;[502,504].includes(n)?c.history.push("/error"):401===n?"/login"!==c.history.location.pathname&&(l.ZP.error(s.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(u.Z.authKey),c.history.push("/login")):l.ZP.error({content:t,style:{maxWidth:500,margin:"0 auto"}})}else console.log(e.message);return Promise.reject(e)}));var f=d},21758:function(e,t,n){var a=n(93525),r=n.n(a),i=n(12342),o=n.n(i),s=n(25359),l=n.n(s),u=n(49811),c=n.n(u),p=n(21140),g=n.n(p),d=n(63466),h=n.n(d),f=n(52510),v=n.n(f),b=n(78078),m=n.n(b),P=["type"],Z=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};g()(this,e),v()(this,"url",void 0),v()(this,"socket",null),v()(this,"subscriptions",new Map),v()(this,"options",void 0),v()(this,"reconnectAttempts",0),v()(this,"heartbeatTimeout",null),v()(this,"state","closed"),this.url=t,this.options={maxReconnectAttempts:n.maxReconnectAttempts||5,reconnectInterval:n.reconnectInterval||3e3,heartbeatInterval:n.heartbeatInterval||3e4},this.init()}var t,n;return h()(e,[{key:"init",value:(n=c()(l()().mark((function e(){var t=this;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.state="connecting",this.emit("connecting");case 3:if(!(this.reconnectAttempts<this.options.maxReconnectAttempts)){e.next=16;break}return this.socket=new(m())(this.url),this.setupEventListeners(),this.startHeartbeat(),e.next=9,this.waitForClose();case 9:return this.stopHeartbeat(),this.socket=null,this.reconnectAttempts++,e.next=14,new Promise((function(e){return setTimeout(e,t.options.reconnectInterval)}));case 14:e.next=3;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),this.handleError(e.t0);case 21:case"end":return e.stop()}}),e,this,[[0,18]])}))),function(){return n.apply(this,arguments)})},{key:"setupEventListeners",value:function(){var e=this;this.socket&&(this.socket.onopen=function(){e.state="open",e.emit("open")},this.socket.onmessage=function(t){var n=JSON.parse(t.data);e.dispatchMessage(n)},this.socket.onclose=function(){e.state="closed",e.emit("close")})}},{key:"waitForClose",value:(t=c()(l()().mark((function e(){var t;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===m().CLOSED){e.next=5;break}return e.next=3,new Promise((function(e){return setTimeout(e,100)}));case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"subscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(!n.has(t)){n.add(t),this.subscriptions.set(e,n);var a={action:"subscribe",topic:e};this.send(a)}}},{key:"unsubscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(n.has(t)){n.delete(t);var a={action:"unsubscribe",topic:e};this.send(a)}}},{key:"send",value:function(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.readyState)===m().OPEN&&this.socket.send(JSON.stringify(e))}},{key:"dispatchMessage",value:function(e){var t=e.type,n=o()(e,P),a=this.subscriptions.get(t)||new Set;r()(a).forEach((function(e){return e(n)}))}},{key:"startHeartbeat",value:function(){var e=this;this.heartbeatTimeout=setInterval((function(){var t;(null===(t=e.socket)||void 0===t?void 0:t.readyState)===m().OPEN&&e.socket.send(JSON.stringify({type:"heartbeat"}))}),this.options.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimeout&&clearInterval(this.heartbeatTimeout)}},{key:"close",value:function(){this.socket&&(this.state="closed",this.stopHeartbeat(),this.socket.close(),this.emit("close"))}},{key:"handleError",value:function(e){console.error("WebSocket错误:",e),this.emit("error",e)}},{key:"on",value:function(e,t){}},{key:"emit",value:function(e,t){}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;return e.instance||(e.instance=new e(t,n)),e.instance}}]),e}();v()(Z,"instance",null),t.Z=Z},16082:function(e,t,n){n.d(t,{mL:function(){return l},q0:function(){return s}});var a=function(){return{height:0,opacity:0}},r=function(e){return{height:e.scrollHeight,opacity:1}},i=function(e,t){return!0===(null==t?void 0:t.deadline)||"height"===t.propertyName},o={motionName:"ant-motion-collapse",onAppearStart:a,onEnterStart:a,onAppearActive:r,onEnterActive:r,onLeaveStart:function(e){return{height:e?e.offsetHeight:0}},onLeaveActive:a,onAppearEnd:i,onEnterEnd:i,onLeaveEnd:i,motionDeadline:500},s=((0,n(20341).b)("bottomLeft","bottomRight","topLeft","topRight"),function(e){return void 0===e||"topLeft"!==e&&"topRight"!==e?"slide-up":"slide-down"}),l=function(e,t,n){return void 0!==n?n:"".concat(e,"-").concat(t)};t.ZP=o},76737:function(e,t,n){n.d(t,{RV:function(){return u},Rk:function(){return c},Ux:function(){return g},aM:function(){return p},q3:function(){return s},qI:function(){return l}});var a=n(88028),r=n(14542),i=n(54331),o=n(63313),s=o.createContext({labelAlign:"right",vertical:!1,itemRef:function(){}}),l=o.createContext(null),u=function(e){var t=(0,i.Z)(e,["prefixCls"]);return o.createElement(r.FormProvider,(0,a.Z)({},t))},c=o.createContext({prefixCls:""}),p=o.createContext({}),g=function(e){var t=e.children,n=e.status,r=e.override,i=(0,o.useContext)(p),s=(0,o.useMemo)((function(){var e=(0,a.Z)({},i);return r&&delete e.isFormItemInput,n&&(delete e.status,delete e.hasFeedback,delete e.feedbackIcon),e}),[n,r,i]);return o.createElement(p.Provider,{value:s},t)}},12334:function(e,t,n){n.d(t,{o:function(){return o}});var a=n(63313),r=(0,n(46594).Z)()?a.useLayoutEffect:a.useEffect,i=function(e,t){var n=a.useRef(!0);r((function(){return e(n.current)}),t),r((function(){return n.current=!1,function(){n.current=!0}}),[])},o=function(e,t){i((function(t){if(!t)return e()}),t)};t.Z=i}}]);
1
+ "use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[8008],{78008:function(e,t,n){n.r(t);var a=n(54306),i=n.n(a),o=n(88265),r=n(63313),s=n(89065),l=n(9835),c=n(84163),u=n(24378),p=n(57229),g=n(15207),h=n(21758),d=n(99120),b=n.n(d),P=n(11527),m=s.Z.Countdown;t.default=function(e){var t=e.systemInfo,n=(0,r.useState)(!1),a=i()(n,2),s=a[0],d=a[1],v=(0,r.useState)(""),f=i()(v,2),Z=f[0],k=f[1],y=(0,r.useRef)(),x=function(e){c.Z.confirm({width:500,title:o.ZP.get("更新"),content:(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)("div",{children:o.ZP.get("已经是最新版了!")}),(0,P.jsxs)("div",{style:{fontSize:12,fontWeight:400,marginTop:5},children:[o.ZP.get("青龙")," ",e.lastVersion," ",o.ZP.get("是目前检测到的最新可用版本了。")]})]}),okText:o.ZP.get("重新下载"),onOk:function(){q(),p.W.put("".concat(g.Z.apiPrefix,"system/update")).then((function(e){})).catch((function(e){console.log(e)}))}})},w=function(e){var n=e.lastVersion,a=e.lastLog;c.Z.confirm({width:500,title:(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)("div",{children:o.ZP.get("更新可用")}),(0,P.jsxs)("div",{style:{fontSize:12,fontWeight:400,marginTop:5},children:[o.ZP.get("新版本")," ",n," ",o.ZP.get("可用,你使用的版本为")," ",t.version,"。"]})]}),content:(0,P.jsx)("pre",{children:(0,P.jsx)(b(),{children:a})}),okText:o.ZP.get("下载更新"),cancelText:o.ZP.get("以后再说"),onOk:function(){q(),p.W.put("".concat(g.Z.apiPrefix,"system/update")).then((function(e){})).catch((function(e){console.log(e)}))}})},q=function(){k(""),y.current=c.Z.info({width:600,maskClosable:!1,closable:!1,keyboard:!1,okButtonProps:{disabled:!0},title:o.ZP.get("下载更新中..."),centered:!0,content:(0,P.jsx)("pre",{children:(0,P.jsx)(b(),{children:Z})})})};(0,r.useEffect)((function(){if(Z){var e=Z.includes("失败,请检查");y.current.update({maskClosable:e,closable:e,okButtonProps:{disabled:!e},content:(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)("pre",{children:(0,P.jsx)(b(),{children:Z})}),(0,P.jsx)("div",{id:"log-identifier",style:{paddingBottom:5}})]})})}}),[Z]);var B=(0,r.useCallback)((function(e){var t=e.message;t.includes("失败,请检查")&&l.ZP.error(o.ZP.get("更新失败,请检查网络及日志或稍后再试")),setTimeout((function(){document.querySelector("#log-identifier").scrollIntoView({behavior:"smooth"})}),600),t.includes("更新包下载成功")&&setTimeout((function(){c.Z.confirm({width:600,maskClosable:!1,title:o.ZP.get("确认重启"),centered:!0,content:o.ZP.get("系统安装包下载成功,确认重启"),okText:o.ZP.get("重启"),onOk:function(){p.W.put("".concat(g.Z.apiPrefix,"system/reload"),{type:"system"}).then((function(e){l.ZP.success({content:(0,P.jsxs)("span",{children:[o.ZP.get("系统将在"),(0,P.jsx)(m,{className:"inline-countdown",format:"ss",value:Date.now()+3e4}),o.ZP.get("秒后自动刷新")]}),duration:30}),setTimeout((function(){window.location.reload()}),3e4)})).catch((function(e){console.log(e)}))},onCancel:function(){y.current.update({maskClosable:!0,closable:!0,okButtonProps:{disabled:!1}})}})}),1e3),k((function(e){return"".concat(e).concat(t)}))}),[]);return(0,r.useEffect)((function(){var e=h.Z.getInstance();return e.subscribe("updateSystemVersion",B),function(){e.unsubscribe("updateSystemVersion",B)}}),[]),(0,P.jsx)(P.Fragment,{children:(0,P.jsx)(u.Z,{type:"primary",onClick:function(){s||(d(!0),l.ZP.loading(o.ZP.get("检查更新中..."),0),p.W.put("".concat(g.Z.apiPrefix,"system/update-check")).then((function(e){var t=e.code,n=e.data;l.ZP.destroy(),200===t&&(n.hasNewVersion?w(n):x(n))})).catch((function(e){l.ZP.destroy(),console.log(e)})).finally((function(){d(!1)})))},children:o.ZP.get("检查更新")})})}},15207:function(e,t,n){var a=n(88265),i=window.__ENV__QlBaseUrl||"/";t.Z={siteName:a.ZP.get("青龙"),baseUrl:i,apiPrefix:"".concat(i,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],i18n:{languages:[{key:"pt-br",title:"Português",flag:"/portugal.svg"},{key:"en",title:"English",flag:"/america.svg"},{key:"zh",title:a.ZP.get("中文"),flag:"/china.svg"}],defaultLanguage:"en"},scopes:[{name:a.ZP.get("定时任务"),value:"crons"},{name:a.ZP.get("环境变量"),value:"envs"},{name:a.ZP.get("订阅管理"),value:"subscriptions"},{name:a.ZP.get("配置文件"),value:"configs"},{name:a.ZP.get("脚本管理"),value:"scripts"},{name:a.ZP.get("日志管理"),value:"logs"},{name:a.ZP.get("依赖管理"),value:"dependencies"},{name:a.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:a.ZP.get("定时任务"),envs:a.ZP.get("环境变量"),subscriptions:a.ZP.get("订阅管理"),configs:a.ZP.get("配置文件"),scripts:a.ZP.get("脚本管理"),logs:a.ZP.get("日志管理"),dependencies:a.ZP.get("依赖管理"),system:a.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:a.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:a.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:a.ZP.get("钉钉机器人")},{value:"weWorkBot",label:a.ZP.get("企业微信机器人")},{value:"weWorkApp",label:a.ZP.get("企业微信应用")},{value:"aibotk",label:a.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"chat",label:a.ZP.get("群晖chat")},{value:"email",label:a.ZP.get("邮箱")},{value:"lark",label:a.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:a.ZP.get("自定义通知")},{value:"closed",label:a.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:a.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:a.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:a.ZP.get("推送消息的优先级")}],chat:[{label:"chatUrl",tip:a.ZP.get("chat的url地址"),required:!0},{label:"chatToken",tip:a.ZP.get("chat的token码"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:a.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:a.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:a.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:a.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:a.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:a.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:a.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:a.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:a.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:a.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:a.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:a.ZP.get("BARK推送消息的跳转URL")}],telegramBot:[{label:"telegramBotToken",tip:a.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:a.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:a.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:a.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:a.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:a.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:a.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:a.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:a.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:a.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:a.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:a.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:a.ZP.get("请输入要发送的目标"),items:[{value:"room",label:a.ZP.get("群聊")},{value:"contact",label:a.ZP.get("好友")}]},{label:"aibotkName",tip:a.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:a.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:a.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:a.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")}],lark:[{label:"larkKey",tip:a.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0}],email:[{label:"emailService",tip:a.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:a.ZP.get("邮箱地址"),required:!0},{label:"emailPass",tip:a.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0}],pushMe:[{label:"pushMeKey",tip:a.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0}],chronocat:[{label:"chronocatURL",tip:a.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:a.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:a.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:a.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:a.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:a.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:a.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:a.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":a.ZP.get("登录"),"/initialization":a.ZP.get("初始化"),"/crontab":a.ZP.get("定时任务"),"/env":a.ZP.get("环境变量"),"/subscription":a.ZP.get("订阅管理"),"/config":a.ZP.get("配置文件"),"/script":a.ZP.get("脚本管理"),"/diff":a.ZP.get("对比工具"),"/log":a.ZP.get("日志管理"),"/setting":a.ZP.get("系统设置"),"/error":a.ZP.get("错误日志"),"/dependence":a.ZP.get("依赖管理")},dependenceTypes:["nodejs","python3","linux"]}},57229:function(e,t,n){n.d(t,{W:function(){return b}});var a=n(25359),i=n.n(a),o=n(49811),r=n.n(o),s=n(88265),l=n(9835),c=n(15207),u=n(14851),p=n(73669);l.ZP.config({duration:2});var g=Date.now(),h=p.Z.create({timeout:6e4,params:{t:g}}),d=["/api/user/login","/open/auth/token","/api/user/two-factor/login","/api/system","/api/user/init","/api/user/notification/init"];h.interceptors.request.use((function(e){var t=localStorage.getItem(c.Z.authKey);return t&&!d.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),h.interceptors.response.use(function(){var e=r()(i()().mark((function e(t){var n,a,o;return i()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.status,![502,504].includes(n)){e.next=5;break}u.history.push("/error"),e.next=18;break;case 5:if(401!==n){e.next=9;break}"/login"!==u.history.location.pathname&&(localStorage.removeItem(c.Z.authKey),u.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(a=t.data).code&&(o=a.message||a.data)&&l.ZP.error({content:o,style:{maxWidth:500,margin:"0 auto"}}),e.abrupt("return",a);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message||e.response.data:e.response.statusText,n=e.response.status;[502,504].includes(n)?u.history.push("/error"):401===n?"/login"!==u.history.location.pathname&&(l.ZP.error(s.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(c.Z.authKey),u.history.push("/login")):l.ZP.error({content:t,style:{maxWidth:500,margin:"0 auto"}})}else console.log(e.message);return Promise.reject(e)}));var b=h},21758:function(e,t,n){var a=n(93525),i=n.n(a),o=n(12342),r=n.n(o),s=n(25359),l=n.n(s),c=n(49811),u=n.n(c),p=n(21140),g=n.n(p),h=n(63466),d=n.n(h),b=n(52510),P=n.n(b),m=n(78078),v=n.n(m),f=["type"],Z=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};g()(this,e),P()(this,"url",void 0),P()(this,"socket",null),P()(this,"subscriptions",new Map),P()(this,"options",void 0),P()(this,"reconnectAttempts",0),P()(this,"heartbeatTimeout",null),P()(this,"state","closed"),this.url=t,this.options={maxReconnectAttempts:n.maxReconnectAttempts||5,reconnectInterval:n.reconnectInterval||3e3,heartbeatInterval:n.heartbeatInterval||3e4},this.init()}var t,n;return d()(e,[{key:"init",value:(n=u()(l()().mark((function e(){var t=this;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.state="connecting",this.emit("connecting");case 3:if(!(this.reconnectAttempts<this.options.maxReconnectAttempts)){e.next=16;break}return this.socket=new(v())(this.url),this.setupEventListeners(),this.startHeartbeat(),e.next=9,this.waitForClose();case 9:return this.stopHeartbeat(),this.socket=null,this.reconnectAttempts++,e.next=14,new Promise((function(e){return setTimeout(e,t.options.reconnectInterval)}));case 14:e.next=3;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),this.handleError(e.t0);case 21:case"end":return e.stop()}}),e,this,[[0,18]])}))),function(){return n.apply(this,arguments)})},{key:"setupEventListeners",value:function(){var e=this;this.socket&&(this.socket.onopen=function(){e.state="open",e.emit("open")},this.socket.onmessage=function(t){var n=JSON.parse(t.data);e.dispatchMessage(n)},this.socket.onclose=function(){e.state="closed",e.emit("close")})}},{key:"waitForClose",value:(t=u()(l()().mark((function e(){var t;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===v().CLOSED){e.next=5;break}return e.next=3,new Promise((function(e){return setTimeout(e,100)}));case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"subscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(!n.has(t)){n.add(t),this.subscriptions.set(e,n);var a={action:"subscribe",topic:e};this.send(a)}}},{key:"unsubscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(n.has(t)){n.delete(t);var a={action:"unsubscribe",topic:e};this.send(a)}}},{key:"send",value:function(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.readyState)===v().OPEN&&this.socket.send(JSON.stringify(e))}},{key:"dispatchMessage",value:function(e){var t=e.type,n=r()(e,f),a=this.subscriptions.get(t)||new Set;i()(a).forEach((function(e){return e(n)}))}},{key:"startHeartbeat",value:function(){var e=this;this.heartbeatTimeout=setInterval((function(){var t;(null===(t=e.socket)||void 0===t?void 0:t.readyState)===v().OPEN&&e.socket.send(JSON.stringify({type:"heartbeat"}))}),this.options.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimeout&&clearInterval(this.heartbeatTimeout)}},{key:"close",value:function(){this.socket&&(this.state="closed",this.stopHeartbeat(),this.socket.close(),this.emit("close"))}},{key:"handleError",value:function(e){console.error("WebSocket错误:",e),this.emit("error",e)}},{key:"on",value:function(e,t){}},{key:"emit",value:function(e,t){}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;return e.instance||(e.instance=new e(t,n)),e.instance}}]),e}();P()(Z,"instance",null),t.Z=Z}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[833],{15207:function(e,t,r){"use strict";var o=r(88265),n=window.__ENV__QlBaseUrl||"/";t.Z={siteName:o.ZP.get("青龙"),baseUrl:n,apiPrefix:"".concat(n,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],i18n:{languages:[{key:"pt-br",title:"Português",flag:"/portugal.svg"},{key:"en",title:"English",flag:"/america.svg"},{key:"zh",title:o.ZP.get("中文"),flag:"/china.svg"}],defaultLanguage:"en"},scopes:[{name:o.ZP.get("定时任务"),value:"crons"},{name:o.ZP.get("环境变量"),value:"envs"},{name:o.ZP.get("订阅管理"),value:"subscriptions"},{name:o.ZP.get("配置文件"),value:"configs"},{name:o.ZP.get("脚本管理"),value:"scripts"},{name:o.ZP.get("日志管理"),value:"logs"},{name:o.ZP.get("依赖管理"),value:"dependencies"},{name:o.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:o.ZP.get("定时任务"),envs:o.ZP.get("环境变量"),subscriptions:o.ZP.get("订阅管理"),configs:o.ZP.get("配置文件"),scripts:o.ZP.get("脚本管理"),logs:o.ZP.get("日志管理"),dependencies:o.ZP.get("依赖管理"),system:o.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:o.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:o.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:o.ZP.get("钉钉机器人")},{value:"weWorkBot",label:o.ZP.get("企业微信机器人")},{value:"weWorkApp",label:o.ZP.get("企业微信应用")},{value:"aibotk",label:o.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"chat",label:o.ZP.get("群晖chat")},{value:"email",label:o.ZP.get("邮箱")},{value:"lark",label:o.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:o.ZP.get("自定义通知")},{value:"closed",label:o.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:o.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:o.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:o.ZP.get("推送消息的优先级")}],chat:[{label:"chatUrl",tip:o.ZP.get("chat的url地址"),required:!0},{label:"chatToken",tip:o.ZP.get("chat的token码"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:o.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:o.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:o.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:o.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:o.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:o.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:o.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:o.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:o.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:o.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:o.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:o.ZP.get("BARK推送消息的跳转URL")}],telegramBot:[{label:"telegramBotToken",tip:o.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:o.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:o.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:o.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:o.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:o.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:o.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:o.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:o.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:o.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:o.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:o.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:o.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:o.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:o.ZP.get("请输入要发送的目标"),items:[{value:"room",label:o.ZP.get("群聊")},{value:"contact",label:o.ZP.get("好友")}]},{label:"aibotkName",tip:o.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:o.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:o.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:o.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")}],lark:[{label:"larkKey",tip:o.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0}],email:[{label:"emailService",tip:o.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:o.ZP.get("邮箱地址"),required:!0},{label:"emailPass",tip:o.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0}],pushMe:[{label:"pushMeKey",tip:o.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0}],chronocat:[{label:"chronocatURL",tip:o.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:o.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:o.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:o.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:o.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:o.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:o.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:o.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":o.ZP.get("登录"),"/initialization":o.ZP.get("初始化"),"/crontab":o.ZP.get("定时任务"),"/env":o.ZP.get("环境变量"),"/subscription":o.ZP.get("订阅管理"),"/config":o.ZP.get("配置文件"),"/script":o.ZP.get("脚本管理"),"/diff":o.ZP.get("对比工具"),"/log":o.ZP.get("日志管理"),"/setting":o.ZP.get("系统设置"),"/error":o.ZP.get("错误日志"),"/dependence":o.ZP.get("依赖管理")},dependenceTypes:["nodejs","python3","linux"]}},57229:function(e,t,r){"use strict";r.d(t,{W:function(){return b}});var o=r(25359),n=r.n(o),a=r(49811),i=r.n(a),l=r(88265),s=r(9835),u=r(15207),g=r(14851),p=r(73669);s.ZP.config({duration:2});var c=Date.now(),d=p.Z.create({timeout:6e4,params:{t:c}}),h=["/api/user/login","/open/auth/token","/api/user/two-factor/login","/api/system","/api/user/init","/api/user/notification/init"];d.interceptors.request.use((function(e){var t=localStorage.getItem(u.Z.authKey);return t&&!h.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),d.interceptors.response.use(function(){var e=i()(n()().mark((function e(t){var r,o,a;return n()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.status,![502,504].includes(r)){e.next=5;break}g.history.push("/error"),e.next=18;break;case 5:if(401!==r){e.next=9;break}"/login"!==g.history.location.pathname&&(localStorage.removeItem(u.Z.authKey),g.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(o=t.data).code&&(a=o.message||o.data)&&s.ZP.error({content:a,style:{maxWidth:500,margin:"0 auto"}}),e.abrupt("return",o);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message||e.response.data:e.response.statusText,r=e.response.status;[502,504].includes(r)?g.history.push("/error"):401===r?"/login"!==g.history.location.pathname&&(s.ZP.error(l.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(u.Z.authKey),g.history.push("/login")):s.ZP.error({content:t,style:{maxWidth:500,margin:"0 auto"}})}else console.log(e.message);return Promise.reject(e)}));var b=d},40141:function(e,t,r){"use strict";r.d(t,{ZP:function(){return u},I1:function(){return c},w7:function(){return p},DY:function(){return d},FA:function(){return b},rS:function(){return w},H$:function(){return m},W9:function(){return g},x$:function(){return h}});var o=r(93525),n=r.n(o),a=r(88265),i={".py":"python",".js":"javascript",".mjs":"javascript",".sh":"shell",".ts":"typescript"},l=r(11186),s=r.n(l);function u(){var e=navigator.userAgent.toLowerCase(),t=function(t){return t.test(e)},r=function(t){return(e.match(t)||[]).toString().replace(/[^0-9|_.]/g,"").replace(/_/g,".")},o="unknow";t(/windows|win32|win64|wow32|wow64/g)?o="windows":t(/macintosh|macintel/g)?o="macos":t(/x11/g)?o="linux":t(/android|adr/g)?o="android":t(/ios|iphone|ipad|ipod|iwatch/g)&&(o="ios");var n="unknow";"windows"===o?t(/windows nt 5.0|windows 2000/g)?n="2000":t(/windows nt 5.1|windows xp/g)?n="xp":t(/windows nt 5.2|windows 2003/g)?n="2003":t(/windows nt 6.0|windows vista/g)?n="vista":t(/windows nt 6.1|windows 7/g)?n="7":t(/windows nt 6.2|windows 8/g)?n="8":t(/windows nt 6.3|windows 8.1/g)?n="8.1":t(/windows nt 10.0|windows 10/g)&&(n="10"):"macos"===o?n=r(/os x [\d._]+/g):"android"===o?n=r(/android [\d._]+/g):"ios"===o&&(n=r(/os [\d._]+/g));var a="unknow";"windows"===o||"macos"===o||"linux"===o?a="desktop":("android"===o||"ios"===o||t(/mobile/g))&&(a="mobile");var i="unknow",l="unknow";t(/applewebkit/g)?(i="webkit",t(/edge/g)?l="edge":t(/opr/g)?l="opera":t(/chrome/g)?l="chrome":t(/safari/g)&&(l="safari")):t(/gecko/g)&&t(/firefox/g)?(i="gecko",l="firefox"):t(/presto/g)?(i="presto",l="opera"):t(/trident|compatible|msie/g)&&(i="trident",l="iexplore");var s="unknow";"webkit"===i?s=r(/applewebkit\/[\d._]+/g):"gecko"===i?s=r(/gecko\/[\d._]+/g):"presto"===i?s=r(/presto\/[\d._]+/g):"trident"===i&&(s=r(/trident\/[\d._]+/g));var u="unknow";"chrome"===l?u=r(/chrome\/[\d._]+/g):"safari"===l?u=r(/version\/[\d._]+/g):"firefox"===l?u=r(/firefox\/[\d._]+/g):"opera"===l?u=r(/opr\/[\d._]+/g):"iexplore"===l?u=r(/(msie [\d._]+)|(rv:[\d._]+)/g):"edge"===l&&(u=r(/edge\/[\d._]+/g));var g="none",p="unknow";t(/micromessenger/g)?(g="wechat",p=r(/micromessenger\/[\d._]+/g)):t(/qqbrowser/g)?(g="qq",p=r(/qqbrowser\/[\d._]+/g)):t(/ucbrowser/g)?(g="uc",p=r(/ucbrowser\/[\d._]+/g)):t(/qihu 360se/g)?g="360":t(/2345explorer/g)?(g="2345",p=r(/2345explorer\/[\d._]+/g)):t(/metasr/g)?g="sougou":t(/lbbrowser/g)?g="liebao":t(/maxthon/g)&&(g="maxthon",p=r(/maxthon\/[\d._]+/g));var c=Object.assign({engine:i,engineVs:s,platform:a,supporter:l,supporterVs:u,system:o,systemVs:n},"none"===g?{}:{shell:g,shellVs:p});return console.log("%c\n .d88b. d888888b d8b db d888b db .d88b. d8b db d888b \n.8P Y8. `88' 888o 88 88' Y8b 88 .8P Y8. 888o 88 88' Y8b \n88 88 88 88V8o 88 88 88 88 88 88V8o 88 88 \n88 88 88 88 V8o88 88 ooo 88 88 88 88 V8o88 88 ooo \n`8P d8' .88. 88 V888 88. ~8~ 88booo. `8b d8' 88 V888 88. ~8~ \n `Y88'Y8 Y888888P VP V8P Y888P Y88888P `Y88P' VP V8P Y888P \n \n \n","color: blue;font-size: 14px;"),console.log("%c忘形雨笠烟蓑,知心牧唱樵歌。明月清风共我,闲人三个,从他今古消磨。\n","color: yellow;font-size: 18px;"),console.log("%c青龙运行环境:\n\n系统:".concat(c.system,"/").concat(c.systemVs,"\n浏览器:").concat(c.supporter,"/").concat(c.supporterVs,"\n内核:").concat(c.engine,"/").concat(c.engineVs),"color: green;font-size: 14px;font-weight: bold;"),c}function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.extraHeight,r=e.target;void 0===t&&(t=99);var o=null,n=0;(o=r||document.querySelector(".ant-table-wrapper"))&&(n=o.getBoundingClientRect().top);var a=document.body.clientHeight-n-t;return a}function p(e,t){var r,o,n=window.URL||window.webkitURL||window,a=new Blob([t]),i=document.createElementNS("http://www.w3.org/1999/xhtml","a");i.href=n.createObjectURL(a),i.download=e,r=i,(o=document.createEvent("MouseEvents")).initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),r.dispatchEvent(o)}function c(e,t,r){var o=n()(e),a=[];return function e(o){if(o)for(var n=0;n<(null==o?void 0:o.length);n++){if(t(o[n]))return r?void(o[n].children?o[n].children.unshift(r):o[n].children=[r]):void o.splice(n,1);o[n].children&&(a.push(o[n].key),e(o[n].children))}}(o),o}function d(e,t){var r;return function e(o){if(o)for(var n=0;n<(null==o?void 0:o.length);n++)t(o[n])?r=o[n]:o[n].children&&e(o[n].children)}(n()(e)),r}function h(e){return["     ",a.ZP.get("执行结束")].some((function(t){return e.includes(t)}))}function b(e){var t=e.split(" ");if("repo"===t[1]||"raw"===t[1])return t[2];var r=t.find((function(e){return[".js",".ts",".sh",".py"].some((function(t){return e.endsWith(t)}))}));if(r){var o,n;r.startsWith("/ql/data/scripts")&&(r=r.replace("/ql/data/scripts/",""));var a=r.lastIndexOf("/");return a>=0?(n=r.slice(a+1),o=r.slice(0,a)):(n=r,o=""),[n,o]}}function P(e){try{var t=s().parseExpression(e);if(t)return t.next().toDate()}catch(e){}return null}function w(e,t){var r=P(e);return null!=t&&t.length&&t.forEach((function(e){var t=P(e);t&&(!r||t<r)&&(r=t)})),r}function m(e){var t=function(e){if(!e)return"";var t=e.split(".");return".".concat(t[t.length-1])}(e);return i[t]}},38433:function(){}}]);
@@ -10,6 +10,6 @@
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
13
- <script src="./umi.639187d6.js"></script>
13
+ <script src="./umi.8daa227c.js"></script>
14
14
 
15
15
  </body></html>
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[1717],{38582:function(e,t,n){var a=(0,n(55258).Z)({scriptUrl:["//at.alicdn.com/t/c/font_3354854_ob5y15ewlyq.js"]});t.Z=a},80331:function(e,t,n){n.r(t),n.d(t,{default:function(){return N}});var a=n(57213),i=n.n(a),o=n(54306),s=n.n(o),r=n(88265),c=n(63313),u=n(4574),l=n(62284),d=n(71571),h=n(68834),p=n(38582),f=n(11527),m={route:{routes:[{name:r.ZP.get("登录"),path:"/login",hideInMenu:!0,component:"@/pages/login/index"},{name:r.ZP.get("初始化"),path:"/initialization",hideInMenu:!0,component:"@/pages/initialization/index"},{name:r.ZP.get("错误"),path:"/error",hideInMenu:!0,component:"@/pages/error/index"},{path:"/crontab",name:r.ZP.get("定时任务"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-crontab"}),component:"@/pages/crontab/index"},{path:"/subscription",name:r.ZP.get("订阅管理"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-subs"}),component:"@/pages/subscription/index"},{path:"/env",name:r.ZP.get("环境变量"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-env"}),component:"@/pages/env/index"},{path:"/config",name:r.ZP.get("配置文件"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-config"}),component:"@/pages/config/index"},{path:"/script",name:r.ZP.get("脚本管理"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-script"}),component:"@/pages/script/index"},{path:"/dependence",name:r.ZP.get("依赖管理"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-dependence"}),component:"@/pages/dependence/index"},{path:"/log",name:r.ZP.get("日志管理"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-log"}),component:"@/pages/log/index"},{path:"/diff",name:r.ZP.get("对比工具"),icon:(0,f.jsx)(p.Z,{type:"ql-icon-diff"}),component:"@/pages/diff/index"},{path:"/setting",name:r.ZP.get("系统设置"),icon:(0,f.jsx)(h.Z,{}),component:"@/pages/password/index"}]},navTheme:"light",fixSiderbar:!0,contentWidth:"Fixed",splitMenus:!1,siderWidth:180},g=n(14851),v=n(50988),x=n(3513),b=n(63386),k=n(85153),y=n(15207),Z=n(57229),S=n(86563),w=n.n(S),j=n(3094),P=n(12094),I=n(15367),E=n(13217),q=n(34133),C=n(83535),L=n(45638),z=n(79516),T=n(42078),A=n(97724),M=n(82755);var _=n(21758);function N(){var e=(0,g.useLocation)(),t=(0,j.e)(),n=(0,j.F)(),a=n.theme,o=n.reloadTheme,h=(0,c.useState)({}),p=s()(h,2),S=p[0],N=p[1],R=(0,c.useState)(!0),F=s()(R,2),O=F[0],W=F[1],H=(0,c.useState)(),U=s()(H,2),B=U[0],D=U[1],J=(0,c.useState)(!1),K=s()(J,2),Q=K[0],G=K[1],V=(0,c.useState)(!0),X=s()(V,2),Y=X[0],$=X[1],ee=d||{},te=ee.enable,ne=ee.disable,ae=(ee.exportGeneratedCSS,ee.setFetchMethod),ie=ee.auto,oe=function(){Z.W.get("".concat(y.Z.apiPrefix,"system")).then((function(e){var t,n=e.code,a=e.data;200===n&&(D(a),a.isInitialized?(t=a.version,T.S({dsn:"https://49b9ad1a6201bfe027db296ab7c6d672@o1098464.ingest.sentry.io/6122818",integrations:[new A.gE({shouldCreateSpanForRequest:function(e){return!e.includes("/api/ws")&&!e.includes("/api/static")}})],release:t,tracesSampleRate:.1,beforeBreadcrumb:function(e,t){if(e.data&&e.data.url){var n=e.data.url.replace(/token=.*/,"");e.data.url=n}return e}}),M._m.config({paths:{vs:"".concat(y.Z.baseUrl,"monaco-editor/min/vs")},"vs/nls":{availableLanguages:{"*":"zh-cn"}}}),se()):g.history.push("/initialization"))})).catch((function(e){console.log(e)}))},se=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];t&&W(!0),Z.W.get("".concat(y.Z.apiPrefix,"user")).then((function(n){var a=n.code,i=n.data;200===a&&i.username&&(N(i),"/"===e.pathname&&g.history.push("/crontab")),t&&W(!1)})).catch((function(e){console.log(e)}))},re=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];se(e)};if((0,c.useEffect)((function(){B&&B.isInitialized&&!S&&se()}),[e.pathname]),(0,c.useEffect)((function(){Z.W.get("".concat(y.Z.apiPrefix,"public/health")).then((function(e){var t;1===(null==e||null===(t=e.data)||void 0===t?void 0:t.status)?oe():g.history.push("/error")})).catch((function(e){g.history.push("/error")})).finally((function(){return $(!1)}))}),[]),(0,c.useEffect)((function(){"vs-dark"===a?document.body.setAttribute("data-dark","true"):document.body.setAttribute("data-dark","false")}),[a]),(0,c.useEffect)((function(){w()();var e=localStorage.getItem("qinglong_dark_theme")||"auto";if("undefined"!=typeof window&&void 0!==window.matchMedia)return d?(ae(fetch),"dark"===e?te({}):"light"===e?ne():ie({}),function(){ne()}):function(){return null}}),[]),(0,c.useEffect)((function(){if(S&&S.username){var e=_.Z.getInstance("".concat(window.location.origin).concat(y.Z.apiPrefix,"ws?token=").concat(localStorage.getItem(y.Z.authKey)));return function(){e.close()}}}),[S]),(0,c.useEffect)((function(){window.onload=function(){var e=performance.timing;console.log("白屏时间: ".concat(e.responseStart-e.navigationStart)),console.log("请求完毕至DOM加载: ".concat(e.domInteractive-e.responseEnd)),console.log("解释dom树耗时: ".concat(e.domComplete-e.domInteractive)),console.log("从开始至load总耗时: ".concat(e.loadEventEnd-e.navigationStart)),L.uT("白屏时间 ".concat(e.responseStart-e.navigationStart))}}),[]),Y)return(0,f.jsx)(u.Z,{});if(["/login","/initialization","/error"].includes(e.pathname)&&(null!=B&&B.isInitialized&&"/initialization"===e.pathname&&g.history.push("/crontab"),B||"/error"===e.pathname))return(0,f.jsx)(g.Outlet,{context:i()(i()({},t),{},{theme:a,user:S,reloadUser:re,reloadTheme:o})});var ce=navigator.userAgent.includes("Firefox"),ue=navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome"),le=navigator.userAgent.includes("QQBrowser"),de={items:[{label:r.ZP.get("退出登录"),className:"side-menu-user-drop-menu",onClick:function(){Z.W.post("".concat(y.Z.apiPrefix,"user/logout")).then((function(){localStorage.removeItem(y.Z.authKey),g.history.push("/login")}))},key:"logout",icon:(0,f.jsx)(v.Z,{})}]};return O?(0,f.jsx)(u.Z,{}):(0,f.jsx)(l.ZP,i()(i()({selectedKeys:[e.pathname],loading:O,ErrorBoundary:z.SV,logo:(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(P.Z,{preview:!1,src:"https://qn.whyour.cn/logo.png"}),(0,f.jsxs)("div",{className:"title",children:[(0,f.jsx)("span",{className:"title",children:r.ZP.get("青龙")}),(0,f.jsx)("a",{href:null==B?void 0:B.changeLogLink,target:"_blank",rel:"noopener noreferrer",onClick:function(e){e.stopPropagation()},children:(0,f.jsx)(I.Z,{title:"develop"===(null==B?void 0:B.branch)?r.ZP.get("开发版"):r.ZP.get("正式版"),children:(0,f.jsx)(E.Z,{size:"small",dot:"develop"===(null==B?void 0:B.branch),children:(0,f.jsxs)("span",{style:{fontSize:ce?9:12,color:"#666",marginLeft:2,zoom:ue?.66:.8,letterSpacing:le?-2:0},children:["v",null==B?void 0:B.version]})})})})]})]}),title:!1,menuItemRender:function(t,n){return t.isUrl||!t.path||e.pathname===t.path?n:(0,f.jsx)(g.Link,{to:t.path,children:n})},pageTitleRender:function(t,n,a){var i=y.Z.documentTitleMap[e.pathname]||r.ZP.get("未找到");return"".concat(i," - ").concat(r.ZP.get("青龙"))},onCollapse:G,collapsed:Q,rightContentRender:function(){return t.isPhone&&(0,f.jsx)(q.Z,{menu:de,placement:"bottomRight",trigger:["click"],children:(0,f.jsxs)("span",{className:"side-menu-user-wrapper",children:[(0,f.jsx)(C.C,{shape:"square",size:"small",icon:(0,f.jsx)(x.Z,{}),src:S.avatar?"".concat(y.Z.apiPrefix,"static/").concat(S.avatar):""}),(0,f.jsx)("span",{style:{marginLeft:5},children:S.username})]})})},collapsedButtonRender:function(e){return(0,f.jsxs)("span",{className:"side-menu-container",onClick:function(e){e.preventDefault(),e.stopPropagation()},children:[!e&&!t.isPhone&&(0,f.jsx)(q.Z,{menu:de,placement:"topLeft",trigger:["hover"],children:(0,f.jsxs)("span",{className:"side-menu-user-wrapper",children:[(0,f.jsx)(C.C,{shape:"square",size:"small",icon:(0,f.jsx)(x.Z,{}),src:S.avatar?"".concat(y.Z.apiPrefix,"static/").concat(S.avatar):""}),(0,f.jsx)("span",{style:{marginLeft:5},children:S.username})]})}),(0,f.jsx)("span",{className:"side-menu-collapse-button",onClick:function(){return G(!e)},children:e?(0,f.jsx)(b.Z,{}):(0,f.jsx)(k.Z,{})})]})}},m),{},{children:(0,f.jsx)(g.Outlet,{context:i()(i()({},t),{},{theme:a,user:S,reloadUser:re,reloadTheme:o,systemInfo:B})})}))}},3094:function(e,t,n){n.d(t,{F:function(){return c},e:function(){return r}});var a=n(54306),i=n.n(a),o=n(63313),s=n(40141),r=function(){var e=(0,o.useState)("100%"),t=i()(e,2),n=t[0],a=t[1],r=(0,o.useState)(0),c=i()(r,2),u=c[0],l=c[1],d=(0,o.useState)(-48),h=i()(d,2),p=h[0],f=h[1],m=(0,o.useState)(!1),g=i()(m,2),v=g[0],x=g[1],b=(0,o.useMemo)((function(){return(0,s.ZP)()}),[]).platform;return(0,o.useEffect)((function(){"mobile"===b&&document.body.offsetWidth<768?(a("auto"),l(0),f(0),x(!0),document.body.setAttribute("data-mode","phone")):(a("100%"),l(0),f(-48),x(!1),document.body.setAttribute("data-mode","desktop"))}),[]),{headerStyle:{padding:"4px 16px 4px 15px",position:"sticky",top:0,left:0,zIndex:20,marginTop:p,width:n,marginLeft:u},isPhone:v}},c=function(){var e=(0,o.useState)(),t=i()(e,2),n=t[0],a=t[1];return(0,o.useEffect)((function(){var e=window.matchMedia("(prefers-color-scheme: dark)"),t=localStorage.getItem("qinglong_dark_theme"),n=e.matches&&"light"!==t||"dark"===t;a(n?"vs-dark":"vs");var i=function(e){"auto"!==t&&t||(e.matches?a("vs-dark"):a("vs"))};"function"==typeof e.addEventListener?e.addEventListener("change",i):"function"==typeof e.addListener&&e.addListener(i)}),[]),{theme:n,reloadTheme:function(){var e=window.matchMedia("(prefers-color-scheme: dark)"),t=localStorage.getItem("qinglong_dark_theme"),n=e.matches&&"light"!==t||"dark"===t;a(n?"vs-dark":"vs")}}}},21758:function(e,t,n){var a=n(93525),i=n.n(a),o=n(12342),s=n.n(o),r=n(25359),c=n.n(r),u=n(49811),l=n.n(u),d=n(21140),h=n.n(d),p=n(63466),f=n.n(p),m=n(52510),g=n.n(m),v=n(78078),x=n.n(v),b=["type"],k=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};h()(this,e),g()(this,"url",void 0),g()(this,"socket",null),g()(this,"subscriptions",new Map),g()(this,"options",void 0),g()(this,"reconnectAttempts",0),g()(this,"heartbeatTimeout",null),g()(this,"state","closed"),this.url=t,this.options={maxReconnectAttempts:n.maxReconnectAttempts||5,reconnectInterval:n.reconnectInterval||3e3,heartbeatInterval:n.heartbeatInterval||3e4},this.init()}var t,n;return f()(e,[{key:"init",value:(n=l()(c()().mark((function e(){var t=this;return c()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.state="connecting",this.emit("connecting");case 3:if(!(this.reconnectAttempts<this.options.maxReconnectAttempts)){e.next=16;break}return this.socket=new(x())(this.url),this.setupEventListeners(),this.startHeartbeat(),e.next=9,this.waitForClose();case 9:return this.stopHeartbeat(),this.socket=null,this.reconnectAttempts++,e.next=14,new Promise((function(e){return setTimeout(e,t.options.reconnectInterval)}));case 14:e.next=3;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),this.handleError(e.t0);case 21:case"end":return e.stop()}}),e,this,[[0,18]])}))),function(){return n.apply(this,arguments)})},{key:"setupEventListeners",value:function(){var e=this;this.socket&&(this.socket.onopen=function(){e.state="open",e.emit("open")},this.socket.onmessage=function(t){var n=JSON.parse(t.data);e.dispatchMessage(n)},this.socket.onclose=function(){e.state="closed",e.emit("close")})}},{key:"waitForClose",value:(t=l()(c()().mark((function e(){var t;return c()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===x().CLOSED){e.next=5;break}return e.next=3,new Promise((function(e){return setTimeout(e,100)}));case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"subscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(!n.has(t)){n.add(t),this.subscriptions.set(e,n);var a={action:"subscribe",topic:e};this.send(a)}}},{key:"unsubscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(n.has(t)){n.delete(t);var a={action:"unsubscribe",topic:e};this.send(a)}}},{key:"send",value:function(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.readyState)===x().OPEN&&this.socket.send(JSON.stringify(e))}},{key:"dispatchMessage",value:function(e){var t=e.type,n=s()(e,b),a=this.subscriptions.get(t)||new Set;i()(a).forEach((function(e){return e(n)}))}},{key:"startHeartbeat",value:function(){var e=this;this.heartbeatTimeout=setInterval((function(){var t;(null===(t=e.socket)||void 0===t?void 0:t.readyState)===x().OPEN&&e.socket.send(JSON.stringify({type:"heartbeat"}))}),this.options.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimeout&&clearInterval(this.heartbeatTimeout)}},{key:"close",value:function(){this.socket&&(this.state="closed",this.stopHeartbeat(),this.socket.close(),this.emit("close"))}},{key:"handleError",value:function(e){console.error("WebSocket错误:",e),this.emit("error",e)}},{key:"on",value:function(e,t){}},{key:"emit",value:function(e,t){}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;return e.instance||(e.instance=new e(t,n)),e.instance}}]),e}();g()(k,"instance",null),t.Z=k}}]);