This commit is contained in:
おさむのひと 2025-02-13 20:09:07 +09:00 committed by GitHub
commit 0eb0f1441f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 43 additions and 10 deletions

View File

@ -16,7 +16,7 @@
### Server ### Server
- Fix: `following/invalidate`でフォロワーを解除しようとしているユーザーの情報を返すように - Fix: `following/invalidate`でフォロワーを解除しようとしているユーザーの情報を返すように
- Fix: オブジェクトストレージの設定でPrefixを設定していなかった場合nullまたは空文字になる問題を修正 - Fix: オブジェクトストレージの設定でPrefixを設定していなかった場合nullまたは空文字になる問題を修正
- Fix: HTTPプロキシとその除外設定を行った状態でカスタム絵文字の一括インポートをしたとき、除外設定が効かないのを修正( #8766 )
## 2025.2.0 ## 2025.2.0

View File

@ -60,8 +60,8 @@ export class DownloadService {
request: operationTimeout, // whole operation timeout request: operationTimeout, // whole operation timeout
}, },
agent: { agent: {
http: this.httpRequestService.httpAgent, http: this.httpRequestService.getAgentForHttp(urlObj, true),
https: this.httpRequestService.httpsAgent, https: this.httpRequestService.getAgentForHttps(urlObj, true),
}, },
http2: false, // default http2: false, // default
retry: { retry: {

View File

@ -115,32 +115,32 @@ export class HttpRequestService {
/** /**
* Get http non-proxy agent (without local address filtering) * Get http non-proxy agent (without local address filtering)
*/ */
private httpNative: http.Agent; private readonly httpNative: http.Agent;
/** /**
* Get https non-proxy agent (without local address filtering) * Get https non-proxy agent (without local address filtering)
*/ */
private httpsNative: https.Agent; private readonly httpsNative: https.Agent;
/** /**
* Get http non-proxy agent * Get http non-proxy agent
*/ */
private http: http.Agent; private readonly http: http.Agent;
/** /**
* Get https non-proxy agent * Get https non-proxy agent
*/ */
private https: https.Agent; private readonly https: https.Agent;
/** /**
* Get http proxy or non-proxy agent * Get http proxy or non-proxy agent
*/ */
public httpAgent: http.Agent; public readonly httpAgent: http.Agent;
/** /**
* Get https proxy or non-proxy agent * Get https proxy or non-proxy agent
*/ */
public httpsAgent: https.Agent; public readonly httpsAgent: https.Agent;
constructor( constructor(
@Inject(DI.config) @Inject(DI.config)
@ -197,7 +197,8 @@ export class HttpRequestService {
/** /**
* Get agent by URL * Get agent by URL
* @param url URL * @param url URL
* @param bypassProxy Allways bypass proxy * @param bypassProxy Always bypass proxy
* @param isLocalAddressAllowed
*/ */
@bindThis @bindThis
public getAgentByUrl(url: URL, bypassProxy = false, isLocalAddressAllowed = false): http.Agent | https.Agent { public getAgentByUrl(url: URL, bypassProxy = false, isLocalAddressAllowed = false): http.Agent | https.Agent {
@ -214,6 +215,38 @@ export class HttpRequestService {
} }
} }
/**
* Get agent for http by URL
* @param url URL
* @param isLocalAddressAllowed
*/
@bindThis
public getAgentForHttp(url: URL, isLocalAddressAllowed = false): http.Agent {
if ((this.config.proxyBypassHosts ?? []).includes(url.hostname)) {
return isLocalAddressAllowed
? this.httpNative
: this.http;
} else {
return this.httpAgent;
}
}
/**
* Get agent for https by URL
* @param url URL
* @param isLocalAddressAllowed
*/
@bindThis
public getAgentForHttps(url: URL, isLocalAddressAllowed = false): https.Agent {
if ((this.config.proxyBypassHosts ?? []).includes(url.hostname)) {
return isLocalAddressAllowed
? this.httpsNative
: this.https;
} else {
return this.httpsAgent;
}
}
@bindThis @bindThis
public async getActivityJson(url: string, isLocalAddressAllowed = false): Promise<IObject> { public async getActivityJson(url: string, isLocalAddressAllowed = false): Promise<IObject> {
const res = await this.send(url, { const res = await this.send(url, {