Commit bebe2138 by Archer Committed by GitHub

perf: read file internal (#5282)

parent 5c95fa2b
...@@ -27,6 +27,7 @@ import type { StoreSecretValueType } from '@fastgpt/global/common/secret/type'; ...@@ -27,6 +27,7 @@ import type { StoreSecretValueType } from '@fastgpt/global/common/secret/type';
import { addLog } from '../../../../common/system/log'; import { addLog } from '../../../../common/system/log';
import { SERVICE_LOCAL_HOST } from '../../../../common/system/tools'; import { SERVICE_LOCAL_HOST } from '../../../../common/system/tools';
import { formatHttpError } from '../utils'; import { formatHttpError } from '../utils';
import { isInternalAddress } from '../../../../common/system/utils';
type PropsArrType = { type PropsArrType = {
key: string; key: string;
...@@ -414,6 +415,10 @@ async function fetchData({ ...@@ -414,6 +415,10 @@ async function fetchData({
params: Record<string, any>; params: Record<string, any>;
timeout: number; timeout: number;
}) { }) {
if (isInternalAddress(url)) {
return Promise.reject('Url is invalid');
}
const { data: response } = await axios({ const { data: response } = await axios({
method, method,
baseURL: `http://${SERVICE_LOCAL_HOST}`, baseURL: `http://${SERVICE_LOCAL_HOST}`,
......
...@@ -15,6 +15,7 @@ import { addLog } from '../../../../common/system/log'; ...@@ -15,6 +15,7 @@ import { addLog } from '../../../../common/system/log';
import { addRawTextBuffer, getRawTextBuffer } from '../../../../common/buffer/rawText/controller'; import { addRawTextBuffer, getRawTextBuffer } from '../../../../common/buffer/rawText/controller';
import { addMinutes } from 'date-fns'; import { addMinutes } from 'date-fns';
import { getNodeErrResponse } from '../utils'; import { getNodeErrResponse } from '../utils';
import { isInternalAddress } from '../../../../common/system/utils';
type Props = ModuleDispatchProps<{ type Props = ModuleDispatchProps<{
[NodeInputKeyEnum.fileUrlList]: string[]; [NodeInputKeyEnum.fileUrlList]: string[];
...@@ -175,6 +176,9 @@ export const getFileContentFromLinks = async ({ ...@@ -175,6 +176,9 @@ export const getFileContentFromLinks = async ({
} }
try { try {
if (isInternalAddress(url)) {
return Promise.reject('Url is invalid');
}
// Get file buffer data // Get file buffer data
const response = await axios.get(url, { const response = await axios.get(url, {
baseURL: serverRequestBaseUrl, baseURL: serverRequestBaseUrl,
......
import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';
import { NextAPI } from '@/service/middleware/entry';
import * as fs from 'fs';
import { authCert } from '@fastgpt/service/support/permission/auth/common';
export type writefileQuery = {};
export type writefileBody = {
name: string;
content: string;
};
export type writefileResponse = {};
async function handler(
req: ApiRequestProps<writefileBody, writefileQuery>,
res: ApiResponseType<any>
): Promise<writefileResponse> {
await authCert({ req, authRoot: true });
const { name, content } = req.body;
await fs.promises.writeFile(`public/${name}`, content);
return {};
}
export default NextAPI(handler);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment