X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Finitializers%2Fconstants.ts;h=7d9ffc6682186fb41638d71d3dd7e11f1cb51796;hb=883993c81ecc2388d4a4b37b29b81b6de73d264f;hp=4cbb87ab549c58f59b46898e11cb818ca5ed2788;hpb=d4c9f45b31eda0b7a391ddc83eb290ca5cba311f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 4cbb87ab5..7d9ffc668 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -18,7 +18,7 @@ let config: IConfig = require('config') // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 345 +const LAST_MIGRATION_VERSION = 355 // --------------------------------------------------------------------------- @@ -56,7 +56,7 @@ const SORTABLE_COLUMNS = { USER_NOTIFICATIONS: [ 'createdAt' ], - VIDEO_PLAYLISTS: [ 'createdAt' ] + VIDEO_PLAYLISTS: [ 'displayName', 'createdAt', 'updatedAt' ] } const OAUTH_LIFETIME = { @@ -100,36 +100,40 @@ const REMOTE_SCHEME = { WS: 'wss' } -const JOB_ATTEMPTS: { [ id in JobType ]: number } = { +// TODO: remove 'video-file' +const JOB_ATTEMPTS: { [ id in (JobType | 'video-file') ]: number } = { 'activitypub-http-broadcast': 5, 'activitypub-http-unicast': 5, 'activitypub-http-fetcher': 5, 'activitypub-follow': 5, 'video-file-import': 1, + 'video-transcoding': 1, 'video-file': 1, 'video-import': 1, 'email': 5, 'videos-views': 1, 'activitypub-refresher': 1 } -const JOB_CONCURRENCY: { [ id in JobType ]: number } = { +const JOB_CONCURRENCY: { [ id in (JobType | 'video-file') ]: number } = { 'activitypub-http-broadcast': 1, 'activitypub-http-unicast': 5, 'activitypub-http-fetcher': 1, 'activitypub-follow': 3, 'video-file-import': 1, + 'video-transcoding': 1, 'video-file': 1, 'video-import': 1, 'email': 5, 'videos-views': 1, 'activitypub-refresher': 1 } -const JOB_TTL: { [ id in JobType ]: number } = { +const JOB_TTL: { [ id in (JobType | 'video-file') ]: number } = { 'activitypub-http-broadcast': 60000 * 10, // 10 minutes 'activitypub-http-unicast': 60000 * 10, // 10 minutes 'activitypub-http-fetcher': 60000 * 10, // 10 minutes 'activitypub-follow': 60000 * 10, // 10 minutes 'video-file-import': 1000 * 3600, // 1 hour + 'video-transcoding': 1000 * 3600 * 48, // 2 days, transcoding could be long 'video-file': 1000 * 3600 * 48, // 2 days, transcoding could be long 'video-import': 1000 * 3600 * 2, // hours 'email': 60000 * 10, // 10 minutes @@ -284,6 +288,13 @@ const CONFIG = { } } }, + AUTO_BLACKLIST: { + VIDEOS: { + OF_USERS: { + get ENABLED () { return config.get('auto_blacklist.videos.of_users.enabled') } + } + } + }, CACHE: { PREVIEWS: { get SIZE () { return config.get('cache.previews.size') } @@ -313,6 +324,12 @@ const CONFIG = { get USERNAME () { return config.get('services.twitter.username') }, get WHITELISTED () { return config.get('services.twitter.whitelisted') } } + }, + FOLLOWERS: { + INSTANCE: { + get ENABLED () { return config.get('followers.instance.enabled') }, + get MANUAL_APPROVAL () { return config.get('followers.instance.manual_approval') } + } } } @@ -583,8 +600,9 @@ const ACTIVITY_PUB = { MAGNET: [ 'application/x-bittorrent;x-scheme-handler/magnet' ] }, MAX_RECURSION_COMMENTS: 100, - ACTOR_REFRESH_INTERVAL: 3600 * 24 * 1000, // 1 day - VIDEO_REFRESH_INTERVAL: 3600 * 24 * 1000 // 1 day + ACTOR_REFRESH_INTERVAL: 3600 * 24 * 1000 * 2, // 2 days + VIDEO_REFRESH_INTERVAL: 3600 * 24 * 1000 * 2, // 2 days + VIDEO_PLAYLIST_REFRESH_INTERVAL: 3600 * 24 * 1000 * 2 // 2 days } const ACTIVITY_PUB_ACTOR_TYPES: { [ id: string ]: ActivityPubActorType } = { @@ -642,7 +660,7 @@ let STATIC_MAX_AGE = '2h' // Videos thumbnail size const THUMBNAILS_SIZE = { width: 223, - height: 112 + height: 122 } const PREVIEWS_SIZE = { width: 560, @@ -659,7 +677,7 @@ const EMBED_SIZE = { } // Sub folders of cache directory -const CACHE = { +const FILES_CACHE = { PREVIEWS: { DIRECTORY: join(CONFIG.STORAGE.CACHE_DIR, 'previews'), MAX_AGE: 1000 * 3600 * 3 // 3 hours @@ -670,6 +688,12 @@ const CACHE = { } } +const CACHE = { + USER_TOKENS: { + MAX_SIZE: 10000 + } +} + const HLS_STREAMING_PLAYLIST_DIRECTORY = join(CONFIG.STORAGE.STREAMING_PLAYLISTS_DIR, 'hls') const HLS_REDUNDANCY_DIRECTORY = join(CONFIG.STORAGE.REDUNDANCY_DIR, 'hls') @@ -708,6 +732,8 @@ const TRACKER_RATE_LIMITS = { ANNOUNCES_PER_IP: 30 // maximum announces for all our torrents in the interval } +const P2P_MEDIA_LOADER_PEER_VERSION = 2 + // --------------------------------------------------------------------------- // Special constants for a test instance @@ -724,6 +750,7 @@ if (isTestInstance() === true) { ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE = 2 ACTIVITY_PUB.ACTOR_REFRESH_INTERVAL = 10 * 1000 // 10 seconds ACTIVITY_PUB.VIDEO_REFRESH_INTERVAL = 10 * 1000 // 10 seconds + ACTIVITY_PUB.VIDEO_PLAYLIST_REFRESH_INTERVAL = 10 * 1000 // 10 seconds CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max = 100 * 1024 // 100KB @@ -739,7 +766,7 @@ if (isTestInstance() === true) { JOB_ATTEMPTS['email'] = 1 - CACHE.VIDEO_CAPTIONS.MAX_AGE = 3000 + FILES_CACHE.VIDEO_CAPTIONS.MAX_AGE = 3000 MEMOIZE_TTL.OVERVIEWS_SAMPLE = 1 ROUTE_CACHE_LIFETIME.OVERVIEWS.VIDEOS = '0ms' @@ -753,11 +780,12 @@ updateWebserverUrls() export { API_VERSION, HLS_REDUNDANCY_DIRECTORY, + P2P_MEDIA_LOADER_PEER_VERSION, AVATARS_SIZE, ACCEPT_HEADERS, BCRYPT_SALT_SIZE, TRACKER_RATE_LIMITS, - CACHE, + FILES_CACHE, CONFIG, CONSTRAINTS_FIELDS, EMBED_SIZE, @@ -797,6 +825,7 @@ export { VIDEO_TRANSCODING_FPS, FFMPEG_NICE, VIDEO_ABUSE_STATES, + CACHE, JOB_REQUEST_TIMEOUT, USER_PASSWORD_RESET_LIFETIME, MEMOIZE_TTL, @@ -872,6 +901,8 @@ function buildVideosExtname () { function buildVideosRedundancy (objs: any[]): VideosRedundancy[] { if (!objs) return [] + if (!Array.isArray(objs)) return objs + return objs.map(obj => { return Object.assign({}, obj, { minLifetime: parseDuration(obj.min_lifetime),