mirror of
https://github.com/labring/FastGPT.git
synced 2025-12-25 20:02:47 +00:00
fix: update COS proxy
This commit is contained in:
parent
ae9f7bb993
commit
f4e4592a8e
|
|
@ -7,6 +7,7 @@ import {
|
|||
type IOssStorageOptions,
|
||||
type IStorageOptions
|
||||
} from '@fastgpt-sdk/storage';
|
||||
import { addLog } from '../../system/log';
|
||||
|
||||
export class S3PrivateBucket extends S3BaseBucket {
|
||||
constructor() {
|
||||
|
|
@ -87,9 +88,20 @@ export class S3PrivateBucket extends S3BaseBucket {
|
|||
|
||||
super(client, externalClient);
|
||||
|
||||
client.ensureBucket();
|
||||
if (externalClient) {
|
||||
externalClient.ensureBucket();
|
||||
}
|
||||
client
|
||||
.ensureBucket()
|
||||
.then((data) => {
|
||||
console.info(`Bucket "${client.bucketName}" exists:`, data);
|
||||
})
|
||||
.catch((error) => {
|
||||
addLog.error(`Failed to ensure bucket "${client.bucketName}" exists:`, error);
|
||||
});
|
||||
|
||||
externalClient?.ensureBucket().catch((error) => {
|
||||
addLog.error(
|
||||
`Failed to ensure external bucket "${externalClient.bucketName}" exists:`,
|
||||
error
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import {
|
|||
MinioStorageAdapter,
|
||||
type IStorageOptions
|
||||
} from '@fastgpt-sdk/storage';
|
||||
import { addLog } from '../../system/log';
|
||||
|
||||
export class S3PublicBucket extends S3BaseBucket {
|
||||
constructor() {
|
||||
|
|
@ -88,19 +89,30 @@ export class S3PublicBucket extends S3BaseBucket {
|
|||
|
||||
super(client, externalClient);
|
||||
|
||||
client.ensureBucket().then(() => {
|
||||
if (client instanceof MinioStorageAdapter) {
|
||||
client.ensurePublicBucketPolicy();
|
||||
}
|
||||
});
|
||||
client
|
||||
.ensureBucket()
|
||||
.then(() => {
|
||||
if (client instanceof MinioStorageAdapter) {
|
||||
client.ensurePublicBucketPolicy();
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
addLog.error(`Failed to ensure bucket "${client.bucketName}" exists:`, error);
|
||||
});
|
||||
|
||||
if (externalClient) {
|
||||
externalClient.ensureBucket().then(() => {
|
||||
externalClient
|
||||
?.ensureBucket()
|
||||
.then(() => {
|
||||
if (externalClient instanceof MinioStorageAdapter) {
|
||||
externalClient.ensurePublicBucketPolicy();
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
addLog.error(
|
||||
`Failed to ensure external bucket "${externalClient.bucketName}" exists:`,
|
||||
error
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
createPublicUrl(objectKey: string): string {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@fastgpt-sdk/storage": "0.5.4",
|
||||
"@fastgpt-sdk/storage": "0.5.7",
|
||||
"@fastgpt/global": "workspace:*",
|
||||
"@maxmind/geoip2-node": "^6.3.4",
|
||||
"@modelcontextprotocol/sdk": "^1.24.0",
|
||||
|
|
|
|||
597
pnpm-lock.yaml
597
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
|
|
@ -2,3 +2,4 @@ packages:
|
|||
- packages/*
|
||||
- projects/*
|
||||
- scripts/icon
|
||||
- sdk/*
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
"@dagrejs/dagre": "^1.1.4",
|
||||
"@emotion/react": "11.11.1",
|
||||
"@emotion/styled": "11.11.0",
|
||||
"@fastgpt-sdk/storage": "0.5.4",
|
||||
"@fastgpt-sdk/storage": "0.5.7",
|
||||
"@fastgpt/global": "workspace:*",
|
||||
"@fastgpt/service": "workspace:*",
|
||||
"@fastgpt/web": "workspace:*",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import type { NextApiRequest, NextApiResponse } from 'next';
|
||||
import { jsonRes } from '@fastgpt/service/common/response';
|
||||
|
||||
import { request } from 'http';
|
||||
import { Agent, request } from 'http';
|
||||
import { FastGPTProUrl } from '@fastgpt/service/common/system/constants';
|
||||
|
||||
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
||||
|
|
@ -25,7 +25,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
|||
port: parsedUrl.port,
|
||||
path: requestPath,
|
||||
method: req.method,
|
||||
headers: req.headers
|
||||
headers: req.headers,
|
||||
agent: new Agent()
|
||||
});
|
||||
req.pipe(requestResult);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@fastgpt-sdk/storage",
|
||||
"private": false,
|
||||
"version": "0.5.4",
|
||||
"version": "0.5.7",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
|
|
|
|||
|
|
@ -49,10 +49,17 @@ export class CosStorageAdapter implements IStorage {
|
|||
SecretKey: options.credentials.secretAccessKey,
|
||||
UseAccelerate: options.useAccelerate,
|
||||
Protocol: options.protocol,
|
||||
Domain: options.domain
|
||||
Domain: options.domain,
|
||||
Proxy: options.proxy
|
||||
});
|
||||
}
|
||||
|
||||
private handleCosError(err: any): Error {
|
||||
const error = new Error(err.message || 'Unknown COS error');
|
||||
Object.assign(error, { ...err });
|
||||
return error;
|
||||
}
|
||||
|
||||
async checkObjectExists(params: ExistsObjectParams): Promise<ExistsObjectResult> {
|
||||
const { key } = params;
|
||||
|
||||
|
|
@ -64,14 +71,14 @@ export class CosStorageAdapter implements IStorage {
|
|||
Region: this.options.region,
|
||||
Key: key
|
||||
},
|
||||
function (err, _data) {
|
||||
(err, _data) => {
|
||||
if (err && err.statusCode === 404) {
|
||||
exists = false;
|
||||
return resolve();
|
||||
}
|
||||
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
|
||||
exists = true;
|
||||
|
|
@ -97,9 +104,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Bucket: this.options.bucket,
|
||||
Region: this.options.region
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
|
||||
resolve(data);
|
||||
|
|
@ -135,9 +142,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Bucket: this.options.bucket,
|
||||
Region: this.options.region
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
|
||||
resolve(data);
|
||||
|
|
@ -176,9 +183,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
ContentLength: contentLength,
|
||||
Headers: Object.keys(headers).length ? headers : undefined
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
resolve(data);
|
||||
}
|
||||
|
|
@ -201,9 +208,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Key: params.key,
|
||||
Output: passThrough
|
||||
},
|
||||
function (err, _data) {
|
||||
(err, _data) => {
|
||||
if (err) {
|
||||
passThrough.destroy(isError(err.error) ? err.error : new Error(err.message));
|
||||
passThrough.destroy(isError(err.error) ? err.error : this.handleCosError(err));
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
@ -225,9 +232,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Region: this.options.region,
|
||||
Key: key
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
resolve(data);
|
||||
}
|
||||
|
|
@ -250,9 +257,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Region: this.options.region,
|
||||
Objects: keys.map((key) => ({ Key: key }))
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
resolve(data);
|
||||
}
|
||||
|
|
@ -286,7 +293,7 @@ export class CosStorageAdapter implements IStorage {
|
|||
},
|
||||
(listErr, listData) => {
|
||||
if (listErr) {
|
||||
return reject(listErr);
|
||||
return reject(this.handleCosError(listErr));
|
||||
}
|
||||
|
||||
if (!listData.Contents || listData.Contents.length === 0) {
|
||||
|
|
@ -301,7 +308,7 @@ export class CosStorageAdapter implements IStorage {
|
|||
Region: this.options.region,
|
||||
Objects: objectsToDelete
|
||||
},
|
||||
function (deleteErr, deleteData) {
|
||||
(deleteErr, deleteData) => {
|
||||
if (deleteErr) {
|
||||
fails.push(...objectsToDelete.map((content) => content.Key));
|
||||
if (listData.IsTruncated === 'true') {
|
||||
|
|
@ -362,9 +369,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Sign: true,
|
||||
Method: 'PUT'
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
resolve(data.Url);
|
||||
}
|
||||
|
|
@ -393,9 +400,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Sign: true,
|
||||
Method: 'GET'
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
resolve(data.Url);
|
||||
}
|
||||
|
|
@ -442,9 +449,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Marker: marker,
|
||||
MaxKeys: 1000
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
|
||||
keys = keys.concat(data.Contents?.map((content) => content.Key).filter(isNotNil) ?? []);
|
||||
|
|
@ -481,9 +488,9 @@ export class CosStorageAdapter implements IStorage {
|
|||
Key: targetKey,
|
||||
CopySource: copySource
|
||||
},
|
||||
function (err, data) {
|
||||
(err, data) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
return reject(this.handleCosError(err));
|
||||
}
|
||||
resolve(data);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue