mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-09-28 04:05:12 +00:00
fix: WebUiConfig
This commit is contained in:
parent
dedd0be352
commit
579b9dc0c2
@ -3,7 +3,7 @@ import { NextFunction, Request, Response } from 'express';
|
||||
import { AuthHelper } from './src/helper/SignToken';
|
||||
import { resolve } from 'node:path';
|
||||
import { ALLRouter } from './src/router';
|
||||
import { WebUIConfig } from './src/helper/config';
|
||||
import { WebUiConfig } from './src/helper/config';
|
||||
const app = express();
|
||||
/**
|
||||
* 初始化并启动WebUI服务。
|
||||
@ -12,7 +12,7 @@ const app = express();
|
||||
* @returns {Promise<void>} 无返回值。
|
||||
*/
|
||||
export async function InitWebUi() {
|
||||
let config = await WebUIConfig();
|
||||
let config = WebUiConfig;
|
||||
app.use(express.json());
|
||||
// 初始服务
|
||||
app.all('/', (_req, res) => {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { RequestHandler } from "express";
|
||||
import { AuthHelper } from "../helper/SignToken";
|
||||
import { WebUIConfig } from "../helper/config";
|
||||
import { WebUiConfig } from "../helper/config";
|
||||
import { DataRuntime } from "../helper/Data";
|
||||
const isEmpty = (data: any) => data === undefined || data === null || data === '';
|
||||
export const LoginHandler: RequestHandler = async (req, res) => {
|
||||
@ -11,9 +11,8 @@ export const LoginHandler: RequestHandler = async (req, res) => {
|
||||
message: 'token is empty'
|
||||
});
|
||||
return;
|
||||
}
|
||||
let config = await WebUIConfig();
|
||||
if (!await DataRuntime.checkLoginRate(config.loginRate)) {
|
||||
}
|
||||
if (!await DataRuntime.checkLoginRate(WebUiConfig.loginRate)) {
|
||||
res.json({
|
||||
code: -1,
|
||||
message: 'login rate limit'
|
||||
@ -21,14 +20,14 @@ export const LoginHandler: RequestHandler = async (req, res) => {
|
||||
return;
|
||||
}
|
||||
//验证config.token是否等于token
|
||||
if (config.token !== token) {
|
||||
if (WebUiConfig.token !== token) {
|
||||
res.json({
|
||||
code: -1,
|
||||
message: 'token is invalid'
|
||||
});
|
||||
return;
|
||||
}
|
||||
let signCredential = Buffer.from(JSON.stringify(await AuthHelper.signCredential(config.token))).toString('base64');
|
||||
let signCredential = Buffer.from(JSON.stringify(await AuthHelper.signCredential(WebUiConfig.token))).toString('base64');
|
||||
res.json({
|
||||
code: 0,
|
||||
message: 'success',
|
||||
@ -46,3 +45,22 @@ export const LogoutHandler: RequestHandler = (req, res) => {
|
||||
});
|
||||
return;
|
||||
};
|
||||
export const checkHandler: RequestHandler = async (req, res) => {
|
||||
const authorization = req.headers.authorization;
|
||||
try {
|
||||
let CredentialBase64:string = authorization?.split(' ')[1] as string;
|
||||
let Credential = JSON.parse(Buffer.from(CredentialBase64, 'base64').toString());
|
||||
await AuthHelper.validateCredentialWithinOneHour(WebUiConfig.token,Credential)
|
||||
res.json({
|
||||
code: 0,
|
||||
message: 'success'
|
||||
});
|
||||
} catch (e) {
|
||||
res.json({
|
||||
code: -1,
|
||||
message: 'failed'
|
||||
});
|
||||
}
|
||||
|
||||
return;
|
||||
};
|
||||
|
@ -36,17 +36,15 @@ async function tryUsePort(port: number, tryCount: number = 0): Promise<number> {
|
||||
});
|
||||
}
|
||||
|
||||
export interface WebUiConfig {
|
||||
export interface WebUiConfigType {
|
||||
port: number;
|
||||
token: string;
|
||||
loginRate: number
|
||||
}
|
||||
|
||||
// 读取当前目录下名为 webui.json 的配置文件,如果不存在则创建初始化配置文件
|
||||
export async function WebUIConfig(): Promise<WebUiConfig> {
|
||||
async function WebUIConfig(): Promise<WebUiConfigType> {
|
||||
try {
|
||||
let configPath = resolve(__dirname, "./config/webui.json");
|
||||
let config: WebUiConfig = {
|
||||
let config: WebUiConfigType = {
|
||||
port: 6099,
|
||||
token: Math.random().toString(36).slice(2),//生成随机密码
|
||||
loginRate: 3
|
||||
@ -57,7 +55,7 @@ export async function WebUIConfig(): Promise<WebUiConfig> {
|
||||
}
|
||||
|
||||
let fileContent = readFileSync(configPath, "utf-8");
|
||||
let parsedConfig = JSON.parse(fileContent) as WebUiConfig;
|
||||
let parsedConfig = JSON.parse(fileContent) as WebUiConfigType;
|
||||
|
||||
// 修正端口占用情况
|
||||
const [err, data] = await tryUsePort(parsedConfig.port).then(data => [null, data as number]).catch(err => [err, null]);
|
||||
@ -69,5 +67,8 @@ export async function WebUIConfig(): Promise<WebUiConfig> {
|
||||
} catch (e) {
|
||||
console.error("读取配置文件失败", e);
|
||||
}
|
||||
return {} as WebUiConfig; // 理论上这行代码到不了,为了保持函数完整性而保留
|
||||
}
|
||||
return {} as WebUiConfigType; // 理论上这行代码到不了,为了保持函数完整性而保留
|
||||
}
|
||||
|
||||
// 读取当前目录下名为 webui.json 的配置文件,如果不存在则创建初始化配置文件
|
||||
export const WebUiConfig = await WebUIConfig();
|
@ -71,6 +71,7 @@
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
//待封装整理
|
||||
async function submitToken() {
|
||||
const tokenInput = document.getElementById('token-input');
|
||||
const errorMessage = document.getElementById('error-message');
|
||||
@ -115,8 +116,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
alert("登录成功即将跳转");
|
||||
} else {
|
||||
console.log(loginResponseJson.message);
|
||||
|
Loading…
Reference in New Issue
Block a user