mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2024-09-11 21:47:09 +03:00
Update server dependencies
This commit is contained in:
parent
066efd4b94
commit
2db1f3238d
53
package.json
53
package.json
@ -86,19 +86,18 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "^3.190.0",
|
"@aws-sdk/client-s3": "^3.190.0",
|
||||||
"@aws-sdk/lib-storage": "^3.190.0",
|
"@aws-sdk/lib-storage": "^3.190.0",
|
||||||
"@aws-sdk/node-http-handler": "^3.190.0",
|
|
||||||
"@aws-sdk/s3-request-presigner": "^3.345.0",
|
"@aws-sdk/s3-request-presigner": "^3.345.0",
|
||||||
"@babel/parser": "^7.17.8",
|
"@babel/parser": "^7.17.8",
|
||||||
"@commander-js/extra-typings": "^11.0.0",
|
"@commander-js/extra-typings": "^11.0.0",
|
||||||
"@node-oauth/oauth2-server": "^4.2.0",
|
"@node-oauth/oauth2-server": "^4.2.0",
|
||||||
"@opentelemetry/api": "^1.1.0",
|
"@opentelemetry/api": "^1.1.0",
|
||||||
"@opentelemetry/exporter-jaeger": "^1.15.1",
|
"@opentelemetry/exporter-jaeger": "^1.15.1",
|
||||||
"@opentelemetry/exporter-prometheus": "~0.41.1",
|
"@opentelemetry/exporter-prometheus": "~0.44.0",
|
||||||
"@opentelemetry/instrumentation": "^0.41.1",
|
"@opentelemetry/instrumentation": "^0.44.0",
|
||||||
"@opentelemetry/instrumentation-dns": "^0.32.0",
|
"@opentelemetry/instrumentation-dns": "^0.32.0",
|
||||||
"@opentelemetry/instrumentation-express": "^0.33.0",
|
"@opentelemetry/instrumentation-express": "^0.33.0",
|
||||||
"@opentelemetry/instrumentation-fs": "^0.8.0",
|
"@opentelemetry/instrumentation-fs": "^0.8.0",
|
||||||
"@opentelemetry/instrumentation-http": "^0.41.1",
|
"@opentelemetry/instrumentation-http": "^0.44.0",
|
||||||
"@opentelemetry/instrumentation-ioredis": "^0.35.0",
|
"@opentelemetry/instrumentation-ioredis": "^0.35.0",
|
||||||
"@opentelemetry/instrumentation-pg": "^0.36.0",
|
"@opentelemetry/instrumentation-pg": "^0.36.0",
|
||||||
"@opentelemetry/resources": "^1.15.1",
|
"@opentelemetry/resources": "^1.15.1",
|
||||||
@ -108,28 +107,29 @@
|
|||||||
"@opentelemetry/semantic-conventions": "^1.15.1",
|
"@opentelemetry/semantic-conventions": "^1.15.1",
|
||||||
"@peertube/feed": "^5.1.1",
|
"@peertube/feed": "^5.1.1",
|
||||||
"@peertube/http-signature": "^1.7.0",
|
"@peertube/http-signature": "^1.7.0",
|
||||||
|
"@smithy/node-http-handler": "^2.1.7",
|
||||||
"@uploadx/core": "^6.0.0",
|
"@uploadx/core": "^6.0.0",
|
||||||
"async-lru": "^1.1.1",
|
"async-lru": "^1.1.1",
|
||||||
"async-mutex": "^0.4.0",
|
"async-mutex": "^0.4.0",
|
||||||
"bcrypt": "5.1.0",
|
"bcrypt": "5.1.1",
|
||||||
"bencode": "^3.1.1",
|
"bencode": "^4.0.0",
|
||||||
"bittorrent-tracker": "^9",
|
"bittorrent-tracker": "^10.0.12",
|
||||||
"bluebird": "^3.5.0",
|
"bluebird": "^3.5.0",
|
||||||
"bullmq": "^3.6.6",
|
"bullmq": "^3.6.6",
|
||||||
"bytes": "^3.0.0",
|
"bytes": "^3.0.0",
|
||||||
"chokidar": "^3.4.2",
|
"chokidar": "^3.4.2",
|
||||||
"commander": "^10.0.0",
|
"commander": "^11.0.0",
|
||||||
"config": "^3.0.0",
|
"config": "^3.0.0",
|
||||||
"cookie-parser": "^1.4.3",
|
"cookie-parser": "^1.4.3",
|
||||||
"cors": "^2.8.1",
|
"cors": "^2.8.1",
|
||||||
"create-torrent": "^5",
|
"create-torrent": "^6.0.15",
|
||||||
"deep-object-diff": "^1.1.0",
|
"deep-object-diff": "^1.1.0",
|
||||||
"email-templates": "^11.0.3",
|
"email-templates": "^11.0.3",
|
||||||
"execa": "^5.1.1",
|
"execa": "^8.0.1",
|
||||||
"express": "^4.18.1",
|
"express": "^4.18.1",
|
||||||
"express-rate-limit": "^6.1.0",
|
"express-rate-limit": "^7.1.1",
|
||||||
"express-validator": "^7.0.1",
|
"express-validator": "^7.0.1",
|
||||||
"flat": "^5.0.0",
|
"flat": "^6.0.1",
|
||||||
"fluent-ffmpeg": "^2.1.0",
|
"fluent-ffmpeg": "^2.1.0",
|
||||||
"fs-extra": "^11.1.0",
|
"fs-extra": "^11.1.0",
|
||||||
"got": "^13.0.0",
|
"got": "^13.0.0",
|
||||||
@ -138,15 +138,14 @@
|
|||||||
"http-problem-details": "^0.1.5",
|
"http-problem-details": "^0.1.5",
|
||||||
"ioredis": "^5.2.3",
|
"ioredis": "^5.2.3",
|
||||||
"ip-anonymize": "^0.1.0",
|
"ip-anonymize": "^0.1.0",
|
||||||
"ipaddr.js": "2.0.1",
|
"ipaddr.js": "2.1.0",
|
||||||
"is-cidr": "^4.0.0",
|
|
||||||
"iso-639-3": "3.0.1",
|
"iso-639-3": "3.0.1",
|
||||||
"jimp": "^0.22.4",
|
"jimp": "^0.22.4",
|
||||||
"js-yaml": "^4.0.0",
|
"js-yaml": "^4.0.0",
|
||||||
"jsonld": "~8.2.0",
|
"jsonld": "~8.3.1",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"lru-cache": "^9.1.1",
|
"lru-cache": "^10.0.1",
|
||||||
"magnet-uri": "^6",
|
"magnet-uri": "^7.0.5",
|
||||||
"markdown-it": "^13.0.1",
|
"markdown-it": "^13.0.1",
|
||||||
"markdown-it-emoji": "^2.0.0",
|
"markdown-it-emoji": "^2.0.0",
|
||||||
"maxmind": "^4.3.6",
|
"maxmind": "^4.3.6",
|
||||||
@ -158,28 +157,28 @@
|
|||||||
"opentelemetry-instrumentation-sequelize": "^0.39.1",
|
"opentelemetry-instrumentation-sequelize": "^0.39.1",
|
||||||
"otpauth": "^9.0.2",
|
"otpauth": "^9.0.2",
|
||||||
"p-queue": "^7.3.4",
|
"p-queue": "^7.3.4",
|
||||||
"parse-torrent": "^9",
|
"parse-torrent": "^11.0.14",
|
||||||
"password-generator": "^2.0.2",
|
"password-generator": "^2.0.2",
|
||||||
"pg": "^8.2.1",
|
"pg": "^8.2.1",
|
||||||
"piscina": "^3.2.0",
|
"piscina": "^4.1.0",
|
||||||
"prompt": "^1.0.0",
|
"prompt": "^1.0.0",
|
||||||
"proxy-addr": "^2.0.7",
|
"proxy-addr": "^2.0.7",
|
||||||
"pug": "^3.0.0",
|
"pug": "^3.0.0",
|
||||||
"reflect-metadata": "^0.1.12",
|
"reflect-metadata": "^0.1.12",
|
||||||
"sanitize-html": "2.x",
|
"sanitize-html": "2.x",
|
||||||
"sequelize": "6.31.1",
|
"sequelize": "6.33.0",
|
||||||
"sequelize-typescript": "^2.0.0-beta.1",
|
"sequelize-typescript": "^2.0.0-beta.1",
|
||||||
"short-uuid": "^4.2.0",
|
"short-uuid": "^4.2.0",
|
||||||
"sitemap": "^7.0.0",
|
"sitemap": "^7.0.0",
|
||||||
"socket.io": "^4.5.4",
|
"socket.io": "^4.5.4",
|
||||||
"sql-formatter": "^12.0.1",
|
"sql-formatter": "^13.0.0",
|
||||||
"srt-to-vtt": "^1.1.2",
|
"srt-to-vtt": "^1.1.2",
|
||||||
"tslib": "^2.0.0",
|
"tslib": "^2.0.0",
|
||||||
"useragent": "^2.3.0",
|
"useragent": "^2.3.0",
|
||||||
"validator": "^13.0.0",
|
"validator": "^13.0.0",
|
||||||
"webfinger.js": "^2.6.6",
|
"webfinger.js": "^2.6.6",
|
||||||
"webtorrent": "^1.9",
|
"webtorrent": "^2.1.27",
|
||||||
"winston": "3.8.2",
|
"winston": "3.11.0",
|
||||||
"ws": "^8.0.0"
|
"ws": "^8.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -214,7 +213,7 @@
|
|||||||
"@types/validator": "^13.9.0",
|
"@types/validator": "^13.9.0",
|
||||||
"@types/webtorrent": "^0.109.0",
|
"@types/webtorrent": "^0.109.0",
|
||||||
"@types/ws": "^8.2.0",
|
"@types/ws": "^8.2.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
"@typescript-eslint/eslint-plugin": "^6.7.5",
|
||||||
"autocannon": "^7.0.4",
|
"autocannon": "^7.0.4",
|
||||||
"chai": "^4.1.1",
|
"chai": "^4.1.1",
|
||||||
"chai-json-schema": "^1.5.0",
|
"chai-json-schema": "^1.5.0",
|
||||||
@ -222,8 +221,8 @@
|
|||||||
"concurrently": "^8.0.1",
|
"concurrently": "^8.0.1",
|
||||||
"depcheck": "^1.4.2",
|
"depcheck": "^1.4.2",
|
||||||
"esbuild": "^0.19.0",
|
"esbuild": "^0.19.0",
|
||||||
"eslint": "8.41.0",
|
"eslint": "8.51.0",
|
||||||
"eslint-config-standard-with-typescript": "34.0.1",
|
"eslint-config-standard-with-typescript": "39.1.1",
|
||||||
"eslint-plugin-import": "^2.20.1",
|
"eslint-plugin-import": "^2.20.1",
|
||||||
"eslint-plugin-n": "^16.0.0",
|
"eslint-plugin-n": "^16.0.0",
|
||||||
"eslint-plugin-node": "^11.0.0",
|
"eslint-plugin-node": "^11.0.0",
|
||||||
@ -239,7 +238,7 @@
|
|||||||
"swagger-cli": "^4.0.2",
|
"swagger-cli": "^4.0.2",
|
||||||
"tsc-watch": "^6.0.0",
|
"tsc-watch": "^6.0.0",
|
||||||
"tsx": "^3.12.7",
|
"tsx": "^3.12.7",
|
||||||
"typescript": "~5.0.4"
|
"typescript": "~5.2.2"
|
||||||
},
|
},
|
||||||
"bundlewatch": {
|
"bundlewatch": {
|
||||||
"files": [
|
"files": [
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
export * from './plugin-playlist-privacy-manager.model.js'
|
export * from './plugin-playlist-privacy-manager.model.js'
|
||||||
export * from './plugin-settings-manager.model.js'
|
export * from './plugin-settings-manager.model.js'
|
||||||
export * from './plugin-storage-manager.model.js'
|
export * from './plugin-storage-manager.model.js'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
export * from './user-video-rate-update.model.js'
|
export * from './user-video-rate-update.model.js'
|
||||||
export * from './user-video-rate.model.js'
|
export * from './user-video-rate.model.js'
|
||||||
export * from './account-video-rate.model.js'
|
export * from './account-video-rate.model.js'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { HttpStatusCode, ResultList, VideoImport, VideoImportCreate } from '@peertube/peertube-models'
|
import { HttpStatusCode, ResultList, VideoImport, VideoImportCreate } from '@peertube/peertube-models'
|
||||||
import { unwrapBody } from '../requests/index.js'
|
import { unwrapBody } from '../requests/index.js'
|
||||||
import { AbstractCommand, OverrideCommandOptions } from '../shared/index.js'
|
import { AbstractCommand, OverrideCommandOptions } from '../shared/index.js'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { expect } from 'chai'
|
import { expect } from 'chai'
|
||||||
import { getAllFiles, wait } from '@peertube/peertube-core-utils'
|
import { getAllFiles, wait } from '@peertube/peertube-core-utils'
|
||||||
import { areMockObjectStorageTestsDisabled } from '@peertube/peertube-node-utils'
|
import { areMockObjectStorageTestsDisabled } from '@peertube/peertube-node-utils'
|
||||||
|
@ -400,7 +400,7 @@ async function checkNewCommentOnMyVideo (options: CheckerBaseParams & {
|
|||||||
checkVideo(notification.comment.video, undefined, shortUUID)
|
checkVideo(notification.comment.video, undefined, shortUUID)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.comment === undefined || n.comment.id !== commentId
|
return n?.comment === undefined || n.comment.id !== commentId
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -437,7 +437,7 @@ async function checkNewVideoAbuseForModerators (options: CheckerBaseParams & {
|
|||||||
checkVideo(notification.abuse.video, videoName, shortUUID)
|
checkVideo(notification.abuse.video, videoName, shortUUID)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.abuse === undefined || n.abuse.video.shortUUID !== shortUUID
|
return n?.abuse === undefined || n.abuse.video.shortUUID !== shortUUID
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -499,7 +499,7 @@ async function checkAbuseStateChange (options: CheckerBaseParams & {
|
|||||||
expect(notification.abuse.state).to.equal(state)
|
expect(notification.abuse.state).to.equal(state)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.abuse === undefined || n.abuse.id !== abuseId
|
return n?.abuse === undefined || n.abuse.id !== abuseId
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -534,7 +534,7 @@ async function checkNewCommentAbuseForModerators (options: CheckerBaseParams & {
|
|||||||
checkVideo(notification.abuse.comment.video, videoName, shortUUID)
|
checkVideo(notification.abuse.comment.video, videoName, shortUUID)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.abuse === undefined || n.abuse.comment.video.shortUUID !== shortUUID
|
return n?.abuse === undefined || n.abuse.comment.video.shortUUID !== shortUUID
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -563,7 +563,7 @@ async function checkNewAccountAbuseForModerators (options: CheckerBaseParams & {
|
|||||||
expect(notification.abuse.account.displayName).to.equal(displayName)
|
expect(notification.abuse.account.displayName).to.equal(displayName)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.abuse === undefined || n.abuse.account.displayName !== displayName
|
return n?.abuse === undefined || n.abuse.account.displayName !== displayName
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -593,7 +593,7 @@ async function checkVideoAutoBlacklistForModerators (options: CheckerBaseParams
|
|||||||
checkVideo(notification.videoBlacklist.video, videoName, shortUUID)
|
checkVideo(notification.videoBlacklist.video, videoName, shortUUID)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.video === undefined || n.video.shortUUID !== shortUUID
|
return n?.video === undefined || n.video.shortUUID !== shortUUID
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -653,7 +653,7 @@ async function checkNewPeerTubeVersion (options: CheckerBaseParams & {
|
|||||||
expect(notification.peertube.latestVersion).to.equal(latestVersion)
|
expect(notification.peertube.latestVersion).to.equal(latestVersion)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.peertube === undefined || n.peertube.latestVersion !== latestVersion
|
return n?.peertube === undefined || n.peertube.latestVersion !== latestVersion
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -684,7 +684,7 @@ async function checkNewPluginVersion (options: CheckerBaseParams & {
|
|||||||
expect(notification.plugin.type).to.equal(pluginType)
|
expect(notification.plugin.type).to.equal(pluginType)
|
||||||
} else {
|
} else {
|
||||||
expect(notification).to.satisfy((n: UserNotification) => {
|
expect(notification).to.satisfy((n: UserNotification) => {
|
||||||
return n === undefined || n.plugin === undefined || n.plugin.name !== pluginName
|
return n?.plugin === undefined || n.plugin.name !== pluginName
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { ChildProcess, fork, ForkOptions } from 'child_process'
|
import { ChildProcess, fork, ForkOptions } from 'child_process'
|
||||||
import execa from 'execa'
|
import { execa } from 'execa'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
import { root } from '@peertube/peertube-node-utils'
|
import { root } from '@peertube/peertube-node-utils'
|
||||||
import { PeerTubeServer } from '@peertube/peertube-server-commands'
|
import { PeerTubeServer } from '@peertube/peertube-server-commands'
|
||||||
|
@ -11,7 +11,7 @@ import {
|
|||||||
import { AUDIT_LOG_FILENAME } from '@server/initializers/constants.js'
|
import { AUDIT_LOG_FILENAME } from '@server/initializers/constants.js'
|
||||||
import { diff } from 'deep-object-diff'
|
import { diff } from 'deep-object-diff'
|
||||||
import express from 'express'
|
import express from 'express'
|
||||||
import flatten from 'flat'
|
import { flatten } from 'flat'
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
import { addColors, config, createLogger, format, transports } from 'winston'
|
import { addColors, config, createLogger, format, transports } from 'winston'
|
||||||
import { CONFIG } from '../initializers/config.js'
|
import { CONFIG } from '../initializers/config.js'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { UploadFilesForCheck } from 'express'
|
import { UploadFilesForCheck } from 'express'
|
||||||
import { CONSTRAINTS_FIELDS } from '../../initializers/constants.js'
|
import { CONSTRAINTS_FIELDS } from '../../initializers/constants.js'
|
||||||
import { isFileValid } from './misc.js'
|
import { isFileValid } from './misc.js'
|
||||||
|
@ -129,7 +129,8 @@ async function createTorrentAndSetInfoHashFromPath (
|
|||||||
await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename))
|
await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename))
|
||||||
}
|
}
|
||||||
|
|
||||||
const parsedTorrent = parseTorrent(torrentContent)
|
// FIXME: typings: parseTorrent now returns an async result
|
||||||
|
const parsedTorrent = await (parseTorrent(torrentContent) as unknown as Promise<parseTorrent.Instance>)
|
||||||
videoFile.infoHash = parsedTorrent.infoHash
|
videoFile.infoHash = parsedTorrent.infoHash
|
||||||
videoFile.torrentFilename = torrentFilename
|
videoFile.torrentFilename = torrentFilename
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import execa from 'execa'
|
import { execa, NodeOptions as ExecaNodeOptions } from 'execa'
|
||||||
import { ensureDir, pathExists } from 'fs-extra/esm'
|
import { ensureDir, pathExists } from 'fs-extra/esm'
|
||||||
import { writeFile } from 'fs/promises'
|
import { writeFile } from 'fs/promises'
|
||||||
import { OptionsOfBufferResponseBody } from 'got'
|
import { OptionsOfBufferResponseBody } from 'got'
|
||||||
@ -111,7 +111,7 @@ export class YoutubeDLCLI {
|
|||||||
url: string
|
url: string
|
||||||
format: string
|
format: string
|
||||||
output: string
|
output: string
|
||||||
processOptions: execa.NodeOptions
|
processOptions: ExecaNodeOptions
|
||||||
timeout?: number
|
timeout?: number
|
||||||
additionalYoutubeDLArgs?: string[]
|
additionalYoutubeDLArgs?: string[]
|
||||||
}) {
|
}) {
|
||||||
@ -129,7 +129,7 @@ export class YoutubeDLCLI {
|
|||||||
async getInfo (options: {
|
async getInfo (options: {
|
||||||
url: string
|
url: string
|
||||||
format: string
|
format: string
|
||||||
processOptions: execa.NodeOptions
|
processOptions: ExecaNodeOptions
|
||||||
additionalYoutubeDLArgs?: string[]
|
additionalYoutubeDLArgs?: string[]
|
||||||
}) {
|
}) {
|
||||||
const { url, format, additionalYoutubeDLArgs = [], processOptions } = options
|
const { url, format, additionalYoutubeDLArgs = [], processOptions } = options
|
||||||
@ -149,7 +149,7 @@ export class YoutubeDLCLI {
|
|||||||
async getListInfo (options: {
|
async getListInfo (options: {
|
||||||
url: string
|
url: string
|
||||||
latestVideosCount?: number
|
latestVideosCount?: number
|
||||||
processOptions: execa.NodeOptions
|
processOptions: ExecaNodeOptions
|
||||||
}): Promise<{ upload_date: string, webpage_url: string }[]> {
|
}): Promise<{ upload_date: string, webpage_url: string }[]> {
|
||||||
const additionalYoutubeDLArgs = [ '--skip-download', '--playlist-reverse' ]
|
const additionalYoutubeDLArgs = [ '--skip-download', '--playlist-reverse' ]
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ export class YoutubeDLCLI {
|
|||||||
async getSubs (options: {
|
async getSubs (options: {
|
||||||
url: string
|
url: string
|
||||||
format: 'vtt'
|
format: 'vtt'
|
||||||
processOptions: execa.NodeOptions
|
processOptions: ExecaNodeOptions
|
||||||
}) {
|
}) {
|
||||||
const { url, format, processOptions } = options
|
const { url, format, processOptions } = options
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ export class YoutubeDLCLI {
|
|||||||
url: string
|
url: string
|
||||||
args: string[]
|
args: string[]
|
||||||
timeout?: number
|
timeout?: number
|
||||||
processOptions: execa.NodeOptions
|
processOptions: ExecaNodeOptions
|
||||||
}) {
|
}) {
|
||||||
const { url, args, timeout, processOptions } = options
|
const { url, args, timeout, processOptions } = options
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import * as Sequelize from 'sequelize'
|
import * as Sequelize from 'sequelize'
|
||||||
|
|
||||||
async function up (utils: {
|
async function up (utils: {
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { logger, loggerTagsFactory, LoggerTagsFn } from '@server/helpers/logger.js'
|
import { logger, loggerTagsFactory, LoggerTagsFn } from '@server/helpers/logger.js'
|
||||||
import { sequelizeTypescript } from '@server/initializers/database.js'
|
import { sequelizeTypescript } from '@server/initializers/database.js'
|
||||||
import { Hooks } from '@server/lib/plugins/hooks.js'
|
import { Hooks } from '@server/lib/plugins/hooks.js'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { VideoState } from '@peertube/peertube-models'
|
import { VideoState } from '@peertube/peertube-models'
|
||||||
import { AbstractOwnedVideoPublication } from './abstract-owned-video-publication.js'
|
import { AbstractOwnedVideoPublication } from './abstract-owned-video-publication.js'
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ async function getProxyRequestHandler () {
|
|||||||
|
|
||||||
const { agent } = getAgent()
|
const { agent } = getAgent()
|
||||||
|
|
||||||
const { NodeHttpHandler } = await import('@aws-sdk/node-http-handler')
|
const { NodeHttpHandler } = await import('@smithy/node-http-handler')
|
||||||
|
|
||||||
return new NodeHttpHandler({
|
return new NodeHttpHandler({
|
||||||
httpAgent: agent.http,
|
httpAgent: agent.http,
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
RunnerJobState,
|
RunnerJobState,
|
||||||
RunnerJobStateType,
|
RunnerJobStateType,
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
RunnerJobState,
|
RunnerJobState,
|
||||||
RunnerJobStateType,
|
RunnerJobStateType,
|
||||||
|
@ -5,7 +5,7 @@ export abstract class AbstractScheduler {
|
|||||||
|
|
||||||
protected abstract schedulerIntervalMs: number
|
protected abstract schedulerIntervalMs: number
|
||||||
|
|
||||||
private interval: NodeJS.Timer
|
private interval: NodeJS.Timeout
|
||||||
private isRunning = false
|
private isRunning = false
|
||||||
|
|
||||||
enable () {
|
enable () {
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { doJSONRequest } from '@server/helpers/requests.js'
|
import { doJSONRequest } from '@server/helpers/requests.js'
|
||||||
import { ApplicationModel } from '@server/models/application/application.js'
|
import { ApplicationModel } from '@server/models/application/application.js'
|
||||||
import { compareSemVer } from '@peertube/peertube-core-utils'
|
import { compareSemVer } from '@peertube/peertube-core-utils'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { logger, loggerTagsFactory } from '@server/helpers/logger.js'
|
import { logger, loggerTagsFactory } from '@server/helpers/logger.js'
|
||||||
import { SCHEDULER_INTERVALS_MS } from '@server/initializers/constants.js'
|
import { SCHEDULER_INTERVALS_MS } from '@server/initializers/constants.js'
|
||||||
import { uploadx } from '../uploadx.js'
|
import { uploadx } from '../uploadx.js'
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
import ipaddr from 'ipaddr.js'
|
import ipaddr from 'ipaddr.js'
|
||||||
import isCidr from 'is-cidr'
|
|
||||||
import { CONFIG } from '../initializers/config.js'
|
import { CONFIG } from '../initializers/config.js'
|
||||||
import { UserModel } from '../models/user/user.js'
|
import { UserModel } from '../models/user/user.js'
|
||||||
|
|
||||||
export type SignupMode = 'direct-registration' | 'request-registration'
|
export type SignupMode = 'direct-registration' | 'request-registration'
|
||||||
|
|
||||||
async function isSignupAllowed (options: {
|
export async function isSignupAllowed (options: {
|
||||||
signupMode: SignupMode
|
signupMode: SignupMode
|
||||||
|
|
||||||
ip: string // For plugins
|
ip: string // For plugins
|
||||||
@ -31,7 +30,7 @@ async function isSignupAllowed (options: {
|
|||||||
return { allowed: totalUsers < CONFIG.SIGNUP.LIMIT, errorMessage: 'User limit is reached on this instance' }
|
return { allowed: totalUsers < CONFIG.SIGNUP.LIMIT, errorMessage: 'User limit is reached on this instance' }
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSignupAllowedForCurrentIP (ip: string) {
|
export function isSignupAllowedForCurrentIP (ip: string) {
|
||||||
if (!ip) return false
|
if (!ip) return false
|
||||||
|
|
||||||
const addr = ipaddr.parse(ip)
|
const addr = ipaddr.parse(ip)
|
||||||
@ -39,25 +38,25 @@ function isSignupAllowedForCurrentIP (ip: string) {
|
|||||||
let matched = ''
|
let matched = ''
|
||||||
|
|
||||||
// if there is a valid, non-empty whitelist, we exclude all unknown addresses too
|
// if there is a valid, non-empty whitelist, we exclude all unknown addresses too
|
||||||
if (CONFIG.SIGNUP.FILTERS.CIDR.WHITELIST.filter(cidr => isCidr(cidr)).length > 0) {
|
if (CONFIG.SIGNUP.FILTERS.CIDR.WHITELIST.filter(cidr => isIPV4Cidr(cidr) || isIPV6Cidr(cidr))) {
|
||||||
excludeList.push('unknown')
|
excludeList.push('unknown')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (addr.kind() === 'ipv4') {
|
if (addr.kind() === 'ipv4') {
|
||||||
const addrV4 = ipaddr.IPv4.parse(ip)
|
const addrV4 = ipaddr.IPv4.parse(ip)
|
||||||
const rangeList = {
|
const rangeList = {
|
||||||
whitelist: CONFIG.SIGNUP.FILTERS.CIDR.WHITELIST.filter(cidr => isCidr.v4(cidr))
|
whitelist: CONFIG.SIGNUP.FILTERS.CIDR.WHITELIST.filter(cidr => isIPV4Cidr(cidr))
|
||||||
.map(cidr => ipaddr.IPv4.parseCIDR(cidr)),
|
.map(cidr => ipaddr.IPv4.parseCIDR(cidr)),
|
||||||
blacklist: CONFIG.SIGNUP.FILTERS.CIDR.BLACKLIST.filter(cidr => isCidr.v4(cidr))
|
blacklist: CONFIG.SIGNUP.FILTERS.CIDR.BLACKLIST.filter(cidr => isIPV4Cidr(cidr))
|
||||||
.map(cidr => ipaddr.IPv4.parseCIDR(cidr))
|
.map(cidr => ipaddr.IPv4.parseCIDR(cidr))
|
||||||
}
|
}
|
||||||
matched = ipaddr.subnetMatch(addrV4, rangeList, 'unknown')
|
matched = ipaddr.subnetMatch(addrV4, rangeList, 'unknown')
|
||||||
} else if (addr.kind() === 'ipv6') {
|
} else if (addr.kind() === 'ipv6') {
|
||||||
const addrV6 = ipaddr.IPv6.parse(ip)
|
const addrV6 = ipaddr.IPv6.parse(ip)
|
||||||
const rangeList = {
|
const rangeList = {
|
||||||
whitelist: CONFIG.SIGNUP.FILTERS.CIDR.WHITELIST.filter(cidr => isCidr.v6(cidr))
|
whitelist: CONFIG.SIGNUP.FILTERS.CIDR.WHITELIST.filter(cidr => isIPV6Cidr(cidr))
|
||||||
.map(cidr => ipaddr.IPv6.parseCIDR(cidr)),
|
.map(cidr => ipaddr.IPv6.parseCIDR(cidr)),
|
||||||
blacklist: CONFIG.SIGNUP.FILTERS.CIDR.BLACKLIST.filter(cidr => isCidr.v6(cidr))
|
blacklist: CONFIG.SIGNUP.FILTERS.CIDR.BLACKLIST.filter(cidr => isIPV6Cidr(cidr))
|
||||||
.map(cidr => ipaddr.IPv6.parseCIDR(cidr))
|
.map(cidr => ipaddr.IPv6.parseCIDR(cidr))
|
||||||
}
|
}
|
||||||
matched = ipaddr.subnetMatch(addrV6, rangeList, 'unknown')
|
matched = ipaddr.subnetMatch(addrV6, rangeList, 'unknown')
|
||||||
@ -66,9 +65,24 @@ function isSignupAllowedForCurrentIP (ip: string) {
|
|||||||
return !excludeList.includes(matched)
|
return !excludeList.includes(matched)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// Private
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
export {
|
function isIPV4Cidr (cidr: string) {
|
||||||
isSignupAllowed,
|
try {
|
||||||
isSignupAllowedForCurrentIP
|
ipaddr.IPv4.parseCIDR(cidr)
|
||||||
|
return true
|
||||||
|
} catch {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isIPV6Cidr (cidr: string) {
|
||||||
|
try {
|
||||||
|
ipaddr.IPv6.parseCIDR(cidr)
|
||||||
|
return true
|
||||||
|
} catch {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { logger } from '@server/helpers/logger.js'
|
import { logger } from '@server/helpers/logger.js'
|
||||||
import { FFmpegCommandWrapper, getDefaultAvailableEncoders } from '@peertube/peertube-ffmpeg'
|
import { FFmpegCommandWrapper, getDefaultAvailableEncoders } from '@peertube/peertube-ffmpeg'
|
||||||
import { AvailableEncoders, EncoderOptionsBuilder } from '@peertube/peertube-models'
|
import { AvailableEncoders, EncoderOptionsBuilder } from '@peertube/peertube-models'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { MUserId, MVideoFile, MVideoFullLight } from '@server/types/models/index.js'
|
import { MUserId, MVideoFile, MVideoFullLight } from '@server/types/models/index.js'
|
||||||
|
|
||||||
export abstract class AbstractJobBuilder {
|
export abstract class AbstractJobBuilder {
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { STATIC_PATHS, WEBSERVER } from '@server/initializers/constants.js'
|
import { STATIC_PATHS, WEBSERVER } from '@server/initializers/constants.js'
|
||||||
import { MStreamingPlaylist, MVideo, MVideoFile, MVideoUUID } from '@server/types/models/index.js'
|
import { MStreamingPlaylist, MVideo, MVideoFile, MVideoUUID } from '@server/types/models/index.js'
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { forceNumber } from '@peertube/peertube-core-utils'
|
import { forceNumber } from '@peertube/peertube-core-utils'
|
||||||
import { AbuseFilter, AbuseStateType, AbuseVideoIs } from '@peertube/peertube-models'
|
import { AbuseFilter, AbuseStateType, AbuseVideoIs } from '@peertube/peertube-models'
|
||||||
import { exists } from '@server/helpers/custom-validators/misc.js'
|
import { exists } from '@server/helpers/custom-validators/misc.js'
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Class to build video attributes/join names we want to fetch from the database
|
* Class to build video attributes/join names we want to fetch from the database
|
||||||
|
Loading…
Reference in New Issue
Block a user