// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 695
+const LAST_MIGRATION_VERSION = 710
// ---------------------------------------------------------------------------
// Sortable columns per schema
const SORTABLE_COLUMNS = {
- USERS: [ 'id', 'username', 'videoQuotaUsed', 'createdAt', 'lastLoginDate', 'role' ],
+ ADMIN_USERS: [ 'id', 'username', 'videoQuotaUsed', 'createdAt', 'lastLoginDate', 'role' ],
USER_SUBSCRIPTIONS: [ 'id', 'createdAt' ],
ACCOUNTS: [ 'createdAt' ],
JOBS: [ 'createdAt' ],
'activitypub-refresher': 1,
'video-redundancy': 1,
'video-live-ending': 1,
- 'video-edition': 1,
+ 'video-studio-edition': 1,
'manage-video-torrent': 1,
'move-to-object-storage': 3
}
'activitypub-refresher': 1,
'video-redundancy': 1,
'video-live-ending': 10,
- 'video-edition': 1,
+ 'video-studio-edition': 1,
'manage-video-torrent': 1,
'move-to-object-storage': 1
}
'activitypub-cleaner': 1000 * 3600, // 1 hour
'video-file-import': 1000 * 3600, // 1 hour
'video-transcoding': 1000 * 3600 * 48, // 2 days, transcoding could be long
- 'video-edition': 1000 * 3600 * 10, // 10 hours
- 'video-import': 1000 * 3600 * 2, // 2 hours
+ 'video-studio-edition': 1000 * 3600 * 10, // 10 hours
+ 'video-import': CONFIG.IMPORT.VIDEOS.TIMEOUT,
'email': 60000 * 10, // 10 minutes
'actor-keys': 60000 * 20, // 20 minutes
'videos-views-stats': undefined, // Unlimited
const AP_CLEANER = {
CONCURRENCY: 10, // How many requests in parallel we do in activitypub-cleaner job
- UNAVAILABLE_TRESHOLD: 3, // How many attemps we do before removing an unavailable remote resource
+ UNAVAILABLE_TRESHOLD: 3, // How many attempts we do before removing an unavailable remote resource
PERIOD: parseDurationToMs('1 week') // /!\ Has to be sync with REPEAT_JOBS
}
REMOVE_OLD_JOBS: 60000 * 60, // 1 hour
UPDATE_VIDEOS: 60000, // 1 minute
YOUTUBE_DL_UPDATE: 60000 * 60 * 24, // 1 day
+ GEO_IP_UPDATE: 60000 * 60 * 24, // 1 day
VIDEO_VIEWS_BUFFER_UPDATE: CONFIG.VIEWS.VIDEOS.LOCAL_BUFFER_UPDATE_INTERVAL,
CHECK_PLUGINS: CONFIG.PLUGINS.INDEX.CHECK_LATEST_VERSIONS_INTERVAL,
CHECK_PEERTUBE_VERSION: 60000 * 60 * 24, // 1 day
COMMONS: {
URL: { min: 5, max: 2000 } // Length
},
- VIDEO_EDITOR: {
+ VIDEO_STUDIO: {
TASKS: { min: 1, max: 10 }, // Number of tasks
CUT_TIME: { min: 0 } // Value
}
const VIEW_LIFETIME = {
VIEW: CONFIG.VIEWS.VIDEOS.IP_VIEW_EXPIRATION,
- VIEWER: 60000 * 5 // 5 minutes
+ VIEWER_COUNTER: 60000 * 1, // 1 minute
+ VIEWER_STATS: 60000 * 60 // 1 hour
}
+const MAX_LOCAL_VIEWER_WATCH_SECTIONS = 10
+
let CONTACT_FORM_LIFETIME = 60000 * 60 // 1 hour
const VIDEO_TRANSCODING_FPS: VideoTranscodingFPS = {
MIMETYPE_EXT: {
'audio/mpeg': '.mp3',
'audio/mp3': '.mp3',
+
'application/ogg': '.ogg',
'audio/ogg': '.ogg',
+
'audio/x-ms-wma': '.wma',
'audio/wav': '.wav',
'audio/x-wav': '.wav',
+
'audio/x-flac': '.flac',
'audio/flac': '.flac',
+
+ 'audio/vnd.dlna.adts': '.aac',
'audio/aac': '.aac',
+
'audio/m4a': '.m4a',
'audio/mp4': '.m4a',
'audio/x-m4a': '.m4a',
+
+ 'audio/vnd.dolby.dd-raw': '.ac3',
'audio/ac3': '.ac3'
},
EXT_MIMETYPE: null as { [ id: string ]: string }
HEADER_NAME: 'signature',
ALGORITHM: 'rsa-sha256',
HEADERS_TO_SIGN: [ '(request-target)', 'host', 'date', 'digest' ],
- REQUIRED_HEADERS: {
- ALL: [ '(request-target)', 'host', 'date' ],
- POST: [ '(request-target)', 'host', 'date', 'digest' ]
- },
CLOCK_SKEW_SECONDS: 1800
}
SERVER_CONFIG: '<!-- server config -->'
}
-// ---------------------------------------------------------------------------
-
-const FEEDS = {
- COUNT: 20
-}
-
const MAX_LOGS_OUTPUT_CHARACTERS = 10 * 1000 * 1000
const LOG_FILENAME = 'peertube.log'
const AUDIT_LOG_FILENAME = 'peertube-audit.log'
// ---------------------------------------------------------------------------
+const STATS_TIMESERIE = {
+ MAX_DAYS: 365 * 10 // Around 10 years
+}
+
+// ---------------------------------------------------------------------------
+
// Special constants for a test instance
if (isTestInstance() === true) {
PRIVATE_RSA_KEY_SIZE = 1024
REDUNDANCY.VIDEOS.RANDOMIZED_FACTOR = 1
- VIEW_LIFETIME.VIEWER = 1000 * 5 // 5 second
+ VIEW_LIFETIME.VIEWER_COUNTER = 1000 * 5 // 5 second
+ VIEW_LIFETIME.VIEWER_STATS = 1000 * 5 // 5 second
CONTACT_FORM_LIFETIME = 1000 // 1 second
JOB_ATTEMPTS['email'] = 1
LAST_MIGRATION_VERSION,
OAUTH_LIFETIME,
CUSTOM_HTML_TAG_COMMENTS,
+ STATS_TIMESERIE,
BROADCAST_CONCURRENCY,
AUDIT_LOG_FILENAME,
PAGINATION,
ROUTE_CACHE_LIFETIME,
SORTABLE_COLUMNS,
HLS_STREAMING_PLAYLIST_DIRECTORY,
- FEEDS,
JOB_TTL,
DEFAULT_THEME_NAME,
NSFW_POLICY_TYPES,
ABUSE_STATES,
LRU_CACHE,
REQUEST_TIMEOUTS,
+ MAX_LOCAL_VIEWER_WATCH_SECTIONS,
USER_PASSWORD_RESET_LIFETIME,
USER_PASSWORD_CREATE_LIFETIME,
MEMOIZE_TTL,
// The standard video format used by many Sony and Panasonic HD camcorders.
// It is also used for storing high definition video on Blu-ray discs.
'video/mp2t': '.mts',
+ 'video/vnd.dlna.mpeg-tts': '.mts',
+
'video/m2ts': '.m2ts',
// Old formats reliant on MPEG-1/MPEG-2
WEBSERVER.HOSTNAME = CONFIG.WEBSERVER.HOSTNAME
WEBSERVER.PORT = CONFIG.WEBSERVER.PORT
- WEBSERVER.RTMP_URL = 'rtmp://' + CONFIG.LIVE.RTMP.HOSTNAME + ':' + CONFIG.LIVE.RTMP.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
- WEBSERVER.RTMPS_URL = 'rtmps://' + CONFIG.LIVE.RTMPS.HOSTNAME + ':' + CONFIG.LIVE.RTMPS.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
+ const rtmpHostname = CONFIG.LIVE.RTMP.PUBLIC_HOSTNAME || CONFIG.WEBSERVER.HOSTNAME
+ const rtmpsHostname = CONFIG.LIVE.RTMPS.PUBLIC_HOSTNAME || CONFIG.WEBSERVER.HOSTNAME
+
+ WEBSERVER.RTMP_URL = 'rtmp://' + rtmpHostname + ':' + CONFIG.LIVE.RTMP.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
+ WEBSERVER.RTMPS_URL = 'rtmps://' + rtmpsHostname + ':' + CONFIG.LIVE.RTMPS.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
}
function updateWebserverConfig () {