mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 21:37:11 +00:00
feat: 新增对tool支持的相关接口 (#495)
* 修复后台API反代地址未能正确显示的问题 * 更新渲染页面配置 * 添加个人聊天模式配置 * 将用户数据获取改到common中 * 修复错误的渲染页面参数 * 修复bug * 添加Live2D * 修复渲染页面错误 * 修复渲染传入值 * 更新渲染 * 修复图表渲染bug * 调整live2d模型大小 * 修复live2d无法关闭问题 * 修复错误的传值 * 修复ai命名 * 更新渲染 * 添加用户独立设定 * 更新渲染配置适配个人设置 * 修复合并导致的渲染文件异常删除 * 修复用户数据缺失问题 * 修复旧版本数据缺失问题 * 修复bing参数不存在问题,兼容miao的截图 * 修复受限token重试时不被排除的问题 * 修复个人模式下结束对话的模式错误 * 更新渲染页面,将预览版转为正式版 * 修复传统渲染无法调用截图功能的问题 * 文字模式也进行一次缓存 * 更新README * Update README.md * 更新渲染 * 更新渲染页面 * 添加版本信息 * 遗漏参数 * 丢失引用 * 补充路由 * 添加云转码功能 * 判断node-silk是否正常合成 * 云转码提示 * 修复图片渲染出错 * 云转码支持发送Buffer * 添加云转码模式支持 * 更新描述 * 更新后台渲染页面 * 更新配置 * 更新渲染页面 * 添加云渲染 * 修复错误的接口调用 * 修复遗漏的数据转换 * 修复获取的图片数据异常问题 * 更新后台配置 * 更新渲染页面 * 修复云渲染访问地址错误 * 更新渲染页面 * 修复遗漏的模型文件 * 修复live2d问题 * 更新live2d以及相关配置 * 修复遗漏的数据参数 * 修复新live2d情况下云渲染错误的问题 * 适配云渲染1.1.2等待参数 * 添加云服务api检查 * 更新渲染页面 * 添加live2d加载检测 * 修复错误的属性判断 * 添加云渲染DPR * 更新sydney支持内容生成 * 修改文件模式语音转码接收模式 * 添加云转码时recordUrl检查 * 更新后台配置项 * 修复错误的文本描述 * 更新后台页面 * 添加全局对话模式设置,更新后台面板 * 添加第三方渲染服务适配 * 修复第三方服务器live2d加载导致的渲染失败问题 * 修复后台地址无法实时保存的问题 * 添加live2d模型透明度设置 * 合并更新 * 更新渲染页面 * 更新渲染页面 * 使dpr对本地渲染也生效 * 更新渲染页面 * 添加网页截图功能 * 添加后台配置项 * 添加配置导出和导入功能 * 运行通过参数传递用户token * 登录时将token作为参数返回 * 修复错误 * 添加密码修改和用户删除接口 * 修正密码比对 * 修复user错误 * 优化数据保存时的返回值 * 添加系统额外服务检查api * 添加AccessToken配置 * 修复错误的导入提示 * 添加ws连接 * 添加ws用户信息获取 * 修复错误的循环 * 修正ws参数 * 添加群消息获取权限 * 添加用户多端登录支持 * 修复错误的路径引用 * 修复错误的路径引用 * 修复错误 * 修复页面数据获取失败问题 * 修复异常的中断 * 添加配置视图 * 更新配置面板 * 添加用户版本信息 * 更新配置视图 * 修复错误的视图绑定 * 修改视图文件位置,添加mediaLink相关代码 --------- Co-authored-by: ikechan8370 <geyinchibuaa@gmail.com>
This commit is contained in:
parent
2443ed6f71
commit
ca3788d719
5 changed files with 1169 additions and 67 deletions
|
|
@ -8,13 +8,15 @@ import fs from 'fs'
|
|||
import path from 'path'
|
||||
import os from 'os'
|
||||
import schedule from 'node-schedule'
|
||||
import websocketclient from 'ws'
|
||||
|
||||
import { Config } from '../utils/config.js'
|
||||
import { UserInfo, GetUser } from './modules/user_data.js'
|
||||
import { getPublicIP, getUserData } from '../utils/common.js'
|
||||
import { getPublicIP, getUserData, getMasterQQ, randomString } from '../utils/common.js'
|
||||
|
||||
import webRoute from './modules/web_route.js'
|
||||
import webUser from './modules/user.js'
|
||||
import SettingView from './modules/setting_view.js'
|
||||
|
||||
const __dirname = path.resolve()
|
||||
const server = fastify({
|
||||
|
|
@ -79,6 +81,92 @@ await server.register(websocket, {
|
|||
await server.register(fastifyCookie)
|
||||
await server.register(webRoute)
|
||||
await server.register(webUser)
|
||||
await server.register(SettingView)
|
||||
|
||||
// 无法访问端口的情况下创建与media的通讯
|
||||
async function mediaLink() {
|
||||
const ip = await getPublicIP()
|
||||
const testServer = await fetch(`${Config.cloudTranscode}/check`,
|
||||
{
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
url: `http://${ip}:${Config.serverPort || 3321}/`
|
||||
})
|
||||
})
|
||||
if (testServer.ok) {
|
||||
const checkCloudData = await testServer.json()
|
||||
if (checkCloudData.state != 'error') {
|
||||
console.log('本地服务无法访问,开启media服务代理')
|
||||
const serverurl = new URL(Config.cloudTranscode)
|
||||
const ws = new websocketclient(`ws://${serverurl.hostname}${serverurl.port ? ':' + serverurl.port : ''}/ws`)
|
||||
ws.on('open', () => {
|
||||
ws.send(JSON.stringify({
|
||||
command: 'register',
|
||||
region: Bot.uin,
|
||||
type: 'server',
|
||||
}))
|
||||
})
|
||||
ws.on('message', async (message) => {
|
||||
try {
|
||||
const data = JSON.parse(message)
|
||||
switch (data.command) {
|
||||
case 'register':
|
||||
if (data.state) {
|
||||
let master = (await getMasterQQ())[0]
|
||||
Bot.sendPrivateMsg(master, `当前chatgpt插件服务无法被外网访问,已启用代理链接,访问代码:${data.token}`, false)
|
||||
} else {
|
||||
console.log('注册区域失败')
|
||||
}
|
||||
break
|
||||
case 'login':
|
||||
if (data.token) {
|
||||
const user = UserInfo(data.token)
|
||||
if (user) {
|
||||
ws.login = true
|
||||
ws.send(JSON.stringify({ command: data.command, state: true, region: Bot.uin, type: 'server' }))
|
||||
} else {
|
||||
ws.send(JSON.stringify({ command: data.command, state: false, error: '权限验证失败', region: Bot.uin, type: 'server' }))
|
||||
}
|
||||
}
|
||||
break
|
||||
case 'post_login':
|
||||
if (data.qq && data.passwd) {
|
||||
const token = randomString(32)
|
||||
if (data.qq == Bot.uin && await redis.get('CHATGPT:ADMIN_PASSWD') == data.passwd) {
|
||||
AddUser({ user: data.qq, token: token, autho: 'admin' })
|
||||
ws.send(JSON.stringify({ command: data.command, state: true, autho: 'admin', token: token, region: Bot.uin, type: 'server' }))
|
||||
|
||||
} else {
|
||||
const user = await getUserData(data.qq)
|
||||
if (user.passwd != '' && user.passwd === data.passwd) {
|
||||
AddUser({ user: data.qq, token: token, autho: 'user' })
|
||||
ws.send(JSON.stringify({ command: data.command, state: true, autho: 'user', token: token, region: Bot.uin, type: 'server' }))
|
||||
} else {
|
||||
ws.send(JSON.stringify({ command: data.command, state: false, error: `用户名密码错误,如果忘记密码请私聊机器人输入 ${data.qq == Bot.uin ? '#修改管理密码' : '#修改用户密码'} 进行修改`, region: Bot.uin, type: 'server' }))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ws.send(JSON.stringify({ command: data.command, state: false, error: '未输入用户名或密码', region: Bot.uin, type: 'server' }))
|
||||
}
|
||||
break
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
console.log('本地服务网络正常,无需开启通讯')
|
||||
}
|
||||
} else {
|
||||
console.log('media服务器未响应')
|
||||
}
|
||||
}
|
||||
// 未完工,暂不开启这个功能
|
||||
// mediaLink()
|
||||
|
||||
export async function createServer() {
|
||||
// 页面数据获取
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue