mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 10:49:28 +02:00
Support proxies for PeerTube (#4346)
* Updated with latest code * Updated Support proxies for PeerTube * Support Proxies for PeerTube (Updated with change request) * Cleanup proxy PR Co-authored-by: Chocobozzz <me@florianbigard.com>
This commit is contained in:
parent
fdec51e384
commit
8729a87024
7 changed files with 191 additions and 3 deletions
|
@ -1,19 +1,21 @@
|
|||
import { createWriteStream, remove } from 'fs-extra'
|
||||
import got, { CancelableRequest, Options as GotOptions, RequestError } from 'got'
|
||||
import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent'
|
||||
import { join } from 'path'
|
||||
import { CONFIG } from '../initializers/config'
|
||||
import { ACTIVITY_PUB, PEERTUBE_VERSION, REQUEST_TIMEOUT, WEBSERVER } from '../initializers/constants'
|
||||
import { pipelinePromise } from './core-utils'
|
||||
import { processImage } from './image-utils'
|
||||
import { logger } from './logger'
|
||||
import { getProxy, isProxyEnabled } from './proxy'
|
||||
|
||||
const httpSignature = require('http-signature')
|
||||
|
||||
export interface PeerTubeRequestError extends Error {
|
||||
statusCode?: number
|
||||
responseBody?: any
|
||||
}
|
||||
|
||||
const httpSignature = require('http-signature')
|
||||
|
||||
type PeerTubeRequestOptions = {
|
||||
activityPub?: boolean
|
||||
bodyKBLimit?: number // 1MB
|
||||
|
@ -29,6 +31,8 @@ type PeerTubeRequestOptions = {
|
|||
} & Pick<GotOptions, 'headers' | 'json' | 'method' | 'searchParams'>
|
||||
|
||||
const peertubeGot = got.extend({
|
||||
...getAgent(),
|
||||
|
||||
headers: {
|
||||
'user-agent': getUserAgent()
|
||||
},
|
||||
|
@ -153,6 +157,30 @@ async function downloadImage (url: string, destDir: string, destName: string, si
|
|||
}
|
||||
}
|
||||
|
||||
function getAgent () {
|
||||
if (!isProxyEnabled()) return {}
|
||||
|
||||
const proxy = getProxy()
|
||||
|
||||
logger.info('Using proxy %s.', proxy)
|
||||
|
||||
const proxyAgentOptions = {
|
||||
keepAlive: true,
|
||||
keepAliveMsecs: 1000,
|
||||
maxSockets: 256,
|
||||
maxFreeSockets: 256,
|
||||
scheduling: 'lifo' as 'lifo',
|
||||
proxy
|
||||
}
|
||||
|
||||
return {
|
||||
agent: {
|
||||
http: new HttpProxyAgent(proxyAgentOptions),
|
||||
https: new HttpsProxyAgent(proxyAgentOptions)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getUserAgent () {
|
||||
return `PeerTube/${PEERTUBE_VERSION} (+${WEBSERVER.URL})`
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue