// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 440
+const LAST_MIGRATION_VERSION = 470
// ---------------------------------------------------------------------------
const PEERTUBE_VERSION = require(join(root(), 'package.json')).version
const PAGINATION = {
- COUNT: {
- DEFAULT: 15,
- MAX: 100
+ GLOBAL: {
+ COUNT: {
+ DEFAULT: 15,
+ MAX: 100
+ }
+ },
+ OUTBOX: {
+ COUNT: {
+ MAX: 50
+ }
}
}
VIDEO_ABUSES: [ 'id', 'createdAt', 'state' ],
VIDEO_CHANNELS: [ 'id', 'name', 'updatedAt', 'createdAt' ],
VIDEO_IMPORTS: [ 'createdAt' ],
- VIDEO_COMMENT_THREADS: [ 'createdAt' ],
+ VIDEO_COMMENT_THREADS: [ 'createdAt', 'totalReplies' ],
VIDEO_RATES: [ 'createdAt' ],
BLACKLISTS: [ 'id', 'name', 'duration', 'views', 'likes', 'dislikes', 'uuid', 'createdAt' ],
- FOLLOWERS: [ 'createdAt' ],
- FOLLOWING: [ 'createdAt' ],
+ FOLLOWERS: [ 'createdAt', 'state', 'score' ],
+ FOLLOWING: [ 'createdAt', 'redundancyAllowed', 'state' ],
VIDEOS: [ 'name', 'duration', 'createdAt', 'publishedAt', 'views', 'likes', 'trending' ],
'activitypub-http-broadcast': 1,
'activitypub-http-unicast': 5,
'activitypub-http-fetcher': 1,
- 'activitypub-follow': 3,
+ 'activitypub-follow': 1,
'video-file-import': 1,
'video-transcoding': 1,
'video-file': 1,
PLUGINS: {
NAME: { min: 1, max: 214 }, // Length
DESCRIPTION: { min: 1, max: 20000 } // Length
+ },
+ COMMONS: {
+ URL: { min: 5, max: 2000 } // Length
}
}
const VIDEO_PRIVACIES = {
[ VideoPrivacy.PUBLIC ]: 'Public',
[ VideoPrivacy.UNLISTED ]: 'Unlisted',
- [ VideoPrivacy.PRIVATE ]: 'Private'
+ [ VideoPrivacy.PRIVATE ]: 'Private',
+ [ VideoPrivacy.INTERNAL ]: 'Internal'
}
const VIDEO_STATES = {
}
}
+const VIDEO_CHANNELS = {
+ MAX_PER_USER: 20
+}
+
// ---------------------------------------------------------------------------
const SERVER_ACTOR_NAME = 'peertube'
const ACTIVITY_PUB_ACTOR_TYPES: { [ id: string ]: ActivityPubActorType } = {
GROUP: 'Group',
PERSON: 'Person',
- APPLICATION: 'Application'
+ APPLICATION: 'Application',
+ ORGANIZATION: 'Organization',
+ SERVICE: 'Service'
}
const HTTP_SIGNATURE = {
HEADER_NAME: 'signature',
ALGORITHM: 'rsa-sha256',
- HEADERS_TO_SIGN: [ '(request-target)', 'host', 'date', 'digest' ]
+ HEADERS_TO_SIGN: [ '(request-target)', 'host', 'date', 'digest' ],
+ CLOCK_SKEW_SECONDS: 1800
}
// ---------------------------------------------------------------------------
// Password encryption
const BCRYPT_SALT_SIZE = 10
-const USER_PASSWORD_RESET_LIFETIME = 60000 * 5 // 5 minutes
+const USER_PASSWORD_RESET_LIFETIME = 60000 * 60 // 60 minutes
const USER_EMAIL_VERIFY_LIFETIME = 60000 * 60 // 60 minutes
}
const STATIC_DOWNLOAD_PATHS = {
TORRENTS: '/download/torrents/',
- VIDEOS: '/download/videos/'
+ VIDEOS: '/download/videos/',
+ HLS_VIDEOS: '/download/streaming-playlists/hls/videos/'
}
const LAZY_STATIC_PATHS = {
AVATARS: '/lazy-static/avatars/',
const HLS_REDUNDANCY_DIRECTORY = join(CONFIG.STORAGE.REDUNDANCY_DIR, 'hls')
const MEMOIZE_TTL = {
- OVERVIEWS_SAMPLE: 1000 * 3600 * 4 // 4 hours
+ OVERVIEWS_SAMPLE: 1000 * 3600 * 4, // 4 hours
+ INFO_HASH_EXISTS: 1000 * 3600 * 12 // 12 hours
+}
+
+const MEMOIZE_LENGTH = {
+ INFO_HASH_EXISTS: 200
}
const QUEUE_CONCURRENCY = {
const ACCEPT_HEADERS = [ 'html', 'application/json' ].concat(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS)
const ASSETS_PATH = {
- DEFAULT_AUDIO_BACKGROUND: join(root(), 'server', 'assets', 'default-audio-background.jpg')
+ DEFAULT_AUDIO_BACKGROUND: join(root(), 'dist', 'server', 'assets', 'default-audio-background.jpg')
}
// ---------------------------------------------------------------------------
}
const MAX_LOGS_OUTPUT_CHARACTERS = 10 * 1000 * 1000
+const LOG_FILENAME = 'peertube.log'
+const AUDIT_LOG_FILENAME = 'peertube-audit.log'
// ---------------------------------------------------------------------------
BCRYPT_SALT_SIZE,
TRACKER_RATE_LIMITS,
FILES_CACHE,
+ LOG_FILENAME,
CONSTRAINTS_FIELDS,
EMBED_SIZE,
REDUNDANCY,
OAUTH_LIFETIME,
CUSTOM_HTML_TAG_COMMENTS,
BROADCAST_CONCURRENCY,
+ AUDIT_LOG_FILENAME,
PAGINATION,
ACTOR_FOLLOW_SCORE,
PREVIEWS_SIZE,
ACTIVITY_PUB_ACTOR_TYPES,
THUMBNAILS_SIZE,
VIDEO_CATEGORIES,
+ MEMOIZE_LENGTH,
VIDEO_LANGUAGES,
VIDEO_PRIVACIES,
VIDEO_LICENCES,
VIDEO_TRANSCODING_FPS,
FFMPEG_NICE,
VIDEO_ABUSE_STATES,
+ VIDEO_CHANNELS,
LRU_CACHE,
JOB_REQUEST_TIMEOUT,
USER_PASSWORD_RESET_LIFETIME,
'video/x-flv': '.flv',
'video/x-matroska': '.mkv',
'application/octet-stream': '.mkv',
- 'video/avi': '.avi'
+ 'video/avi': '.avi',
+ 'video/x-m4v': '.m4v',
+ 'video/m4v': '.m4v'
})
}