import { FollowState } from '../../shared/models/actors'
import { VideoAbuseState, VideoImportState, VideoPrivacy, VideoTranscodingFPS } from '../../shared/models/videos'
// Do not use barrels, remain constants as independent as possible
-import { isTestInstance, sanitizeHost, sanitizeUrl, root } from '../helpers/core-utils'
+import { isTestInstance, sanitizeHost, sanitizeUrl, root, parseDurationToMs } 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 = 395
+const LAST_MIGRATION_VERSION = 405
// ---------------------------------------------------------------------------
-// API version
const API_VERSION = 'v1'
+const PEERTUBE_VERSION = require(join(root(), 'package.json')).version
const PAGINATION = {
COUNT: {
// Sortable columns per schema
const SORTABLE_COLUMNS = {
- USERS: [ 'id', 'username', 'createdAt' ],
+ USERS: [ 'id', 'username', 'videoQuotaUsed', 'createdAt' ],
USER_SUBSCRIPTIONS: [ 'id', 'createdAt' ],
ACCOUNTS: [ 'createdAt' ],
JOBS: [ 'createdAt' ],
USER_NOTIFICATIONS: [ 'createdAt' ],
- VIDEO_PLAYLISTS: [ 'displayName', 'createdAt', 'updatedAt' ]
+ VIDEO_PLAYLISTS: [ 'displayName', 'createdAt', 'updatedAt' ],
+
+ PLUGINS: [ 'name', 'createdAt', 'updatedAt' ],
+
+ AVAILABLE_PLUGINS: [ 'npmName', 'popularity' ]
}
const OAUTH_LIFETIME = {
removeOldJobs: 60000 * 60, // 1 hour
updateVideos: 60000, // 1 minute
youtubeDLUpdate: 60000 * 60 * 24, // 1 day
+ checkPlugins: CONFIG.PLUGINS.INDEX.CHECK_LATEST_VERSIONS_INTERVAL,
removeOldViews: 60000 * 60 * 24, // 1 day
removeOldHistory: 60000 * 60 * 24 // 1 day
}
// ---------------------------------------------------------------------------
-let CONSTRAINTS_FIELDS = {
+const CONSTRAINTS_FIELDS = {
USERS: {
NAME: { min: 1, max: 120 }, // Length
DESCRIPTION: { min: 3, max: 1000 }, // Length
CONTACT_FORM: {
FROM_NAME: { min: 1, max: 120 }, // Length
BODY: { min: 3, max: 5000 } // Length
- }
-}
-
-const RATES_LIMIT = {
- LOGIN: {
- WINDOW_MS: CONFIG.RATES_LIMIT.LOGIN.WINDOW_MS,
- MAX: CONFIG.RATES_LIMIT.LOGIN.MAX
},
- ASK_SEND_EMAIL: {
- WINDOW_MS: CONFIG.RATES_LIMIT.ASK_SEND_EMAIL.WINDOW_MS,
- MAX: CONFIG.RATES_LIMIT.ASK_SEND_EMAIL.MAX
+ PLUGINS: {
+ NAME: { min: 1, max: 214 }, // Length
+ DESCRIPTION: { min: 1, max: 20000 } // Length
}
}
}
// Cache control
-let STATIC_MAX_AGE = '2h'
+let STATIC_MAX_AGE = {
+ SERVER: '2h',
+ CLIENT: '30d'
+}
// Videos thumbnail size
const THUMBNAILS_SIZE = {
// ---------------------------------------------------------------------------
+const PLUGIN_GLOBAL_CSS_FILE_NAME = 'plugins-global.css'
+const PLUGIN_GLOBAL_CSS_PATH = join(CONFIG.STORAGE.TMP_DIR, PLUGIN_GLOBAL_CSS_FILE_NAME)
+
+const DEFAULT_THEME_NAME = 'default'
+const DEFAULT_USER_THEME_NAME = 'instance-default'
+
+// ---------------------------------------------------------------------------
+
// Special constants for a test instance
if (isTestInstance() === true) {
PRIVATE_RSA_KEY_SIZE = 1024
REMOTE_SCHEME.HTTP = 'http'
REMOTE_SCHEME.WS = 'ws'
- STATIC_MAX_AGE = '0'
+ STATIC_MAX_AGE.SERVER = '0'
ACTIVITY_PUB.COLLECTION_ITEMS_PER_PAGE = 2
ACTIVITY_PUB.ACTOR_REFRESH_INTERVAL = 10 * 1000 // 10 seconds
FILES_CACHE.VIDEO_CAPTIONS.MAX_AGE = 3000
MEMOIZE_TTL.OVERVIEWS_SAMPLE = 1
ROUTE_CACHE_LIFETIME.OVERVIEWS.VIDEOS = '0ms'
-
- RATES_LIMIT.LOGIN.MAX = 20
}
updateWebserverUrls()
export {
WEBSERVER,
API_VERSION,
+ PEERTUBE_VERSION,
HLS_REDUNDANCY_DIRECTORY,
P2P_MEDIA_LOADER_PEER_VERSION,
AVATARS_SIZE,
PREVIEWS_SIZE,
REMOTE_SCHEME,
FOLLOW_STATES,
+ DEFAULT_USER_THEME_NAME,
SERVER_ACTOR_NAME,
+ PLUGIN_GLOBAL_CSS_FILE_NAME,
+ PLUGIN_GLOBAL_CSS_PATH,
PRIVATE_RSA_KEY_SIZE,
ROUTE_CACHE_LIFETIME,
SORTABLE_COLUMNS,
HLS_STREAMING_PLAYLIST_DIRECTORY,
FEEDS,
JOB_TTL,
+ DEFAULT_THEME_NAME,
NSFW_POLICY_TYPES,
STATIC_MAX_AGE,
STATIC_PATHS,
SCHEDULER_INTERVALS_MS,
REPEAT_JOBS,
STATIC_DOWNLOAD_PATHS,
- RATES_LIMIT,
MIMETYPES,
CRAWL_REQUEST_CONCURRENCY,
DEFAULT_AUDIO_RESOLUTION,