import { JobType, VideoRateType, VideoState, VideosRedundancy } from '../../shared/models'
import { ActivityPubActorType } from '../../shared/models/activitypub'
import { FollowState } from '../../shared/models/actors'
-import { VideoAbuseState, VideoImportState, VideoPrivacy } from '../../shared/models/videos'
+import { VideoAbuseState, VideoImportState, VideoPrivacy, VideoTranscodingFPS } from '../../shared/models/videos'
// Do not use barrels, remain constants as independent as possible
-import { buildPath, isTestInstance, parseDuration, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils'
+import { buildPath, isTestInstance, parseDuration, parseBytes, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils'
import { NSFWPolicyType } from '../../shared/models/videos/nsfw-policy.type'
import { invert } from 'lodash'
import { CronRepeatOptions, EveryRepeatOptions } from 'bull'
// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 270
+const LAST_MIGRATION_VERSION = 285
// ---------------------------------------------------------------------------
VIDEOS: [ 'name', 'duration', 'createdAt', 'publishedAt', 'views', 'likes', 'trending' ],
VIDEOS_SEARCH: [ 'name', 'duration', 'createdAt', 'publishedAt', 'views', 'likes', 'match' ],
- VIDEO_CHANNELS_SEARCH: [ 'match', 'displayName', 'createdAt' ]
+ VIDEO_CHANNELS_SEARCH: [ 'match', 'displayName', 'createdAt' ],
+
+ ACCOUNTS_BLOCKLIST: [ 'createdAt' ],
+ SERVERS_BLOCKLIST: [ 'createdAt' ]
}
const OAUTH_LIFETIME = {
'activitypub-follow': 60000 * 10, // 10 minutes
'video-file-import': 1000 * 3600, // 1 hour
'video-file': 1000 * 3600 * 48, // 2 days, transcoding could be long
- 'video-import': 1000 * 3600, // 1 hour
+ 'video-import': 1000 * 3600 * 2, // hours
'email': 60000 * 10, // 10 minutes
'videos-views': undefined // Unlimited
}
const CRAWL_REQUEST_CONCURRENCY = 1 // How many requests in parallel to fetch remote data (likes, shares...)
const JOB_REQUEST_TIMEOUT = 3000 // 3 seconds
const JOB_COMPLETED_LIFETIME = 60000 * 60 * 24 * 2 // 2 days
+const VIDEO_IMPORT_TIMEOUT = 1000 * 3600 // 1 hour
// 1 hour
let SCHEDULER_INTERVALS_MS = {
}
},
USER: {
- get VIDEO_QUOTA () { return config.get<number>('user.video_quota') },
- get VIDEO_QUOTA_DAILY () { return config.get<number>('user.video_quota_daily') }
+ get VIDEO_QUOTA () { return parseBytes(config.get<number>('user.video_quota')) },
+ get VIDEO_QUOTA_DAILY () { return parseBytes(config.get<number>('user.video_quota_daily')) }
},
TRANSCODING: {
get ENABLED () { return config.get<boolean>('transcoding.enabled') },
const CONSTRAINTS_FIELDS = {
USERS: {
NAME: { min: 3, max: 120 }, // Length
- DESCRIPTION: { min: 3, max: 250 }, // Length
+ DESCRIPTION: { min: 3, max: 1000 }, // Length
USERNAME: { min: 3, max: 20 }, // Length
PASSWORD: { min: 6, max: 255 }, // Length
VIDEO_QUOTA: { min: -1 },
},
VIDEO_CHANNELS: {
NAME: { min: 3, max: 120 }, // Length
- DESCRIPTION: { min: 3, max: 500 }, // Length
- SUPPORT: { min: 3, max: 500 }, // Length
+ DESCRIPTION: { min: 3, max: 1000 }, // Length
+ SUPPORT: { min: 3, max: 1000 }, // Length
URL: { min: 3, max: 2000 } // Length
},
VIDEO_CAPTIONS: {
LANGUAGE: { min: 1, max: 10 }, // Length
TRUNCATED_DESCRIPTION: { min: 3, max: 250 }, // Length
DESCRIPTION: { min: 3, max: 10000 }, // Length
- SUPPORT: { min: 3, max: 500 }, // Length
+ SUPPORT: { min: 3, max: 1000 }, // Length
IMAGE: {
EXTNAME: [ '.jpg', '.jpeg' ],
FILE_SIZE: {
}
let VIDEO_VIEW_LIFETIME = 60000 * 60 // 1 hour
-const VIDEO_TRANSCODING_FPS = {
+const VIDEO_TRANSCODING_FPS: VideoTranscodingFPS = {
MIN: 10,
AVERAGE: 30,
MAX: 60,
8: 'People',
9: 'Comedy',
10: 'Entertainment',
- 11: 'News',
+ 11: 'News & Politics',
12: 'How To',
13: 'Education',
14: 'Activism',
APPLICATION: 'Application'
}
+const HTTP_SIGNATURE = {
+ HEADER_NAME: 'signature',
+ ALGORITHM: 'rsa-sha256',
+ HEADERS_TO_SIGN: [ 'date', 'host', 'digest', '(request-target)' ]
+}
+
// ---------------------------------------------------------------------------
const PRIVATE_RSA_KEY_SIZE = 2048
TORRENT_MIMETYPE_EXT,
STATIC_MAX_AGE,
STATIC_PATHS,
+ VIDEO_IMPORT_TIMEOUT,
ACTIVITY_PUB,
ACTIVITY_PUB_ACTOR_TYPES,
THUMBNAILS_SIZE,
VIDEO_EXT_MIMETYPE,
CRAWL_REQUEST_CONCURRENCY,
JOB_COMPLETED_LIFETIME,
+ HTTP_SIGNATURE,
VIDEO_IMPORT_STATES,
VIDEO_VIEW_LIFETIME,
buildLanguages