import { VideoPrivacy } from '../../shared/models/videos'
// Do not use barrels, remain constants as independent as possible
import { buildPath, isTestInstance, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils'
+import { NSFWPolicyType } from '../../shared/models/videos/nsfw-policy.type'
// Use a variable to reload the configuration if we need
let config: IConfig = require('config')
// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 195
+const LAST_MIGRATION_VERSION = 205
// ---------------------------------------------------------------------------
'activitypub-http-broadcast': 5,
'activitypub-http-unicast': 5,
'activitypub-http-fetcher': 5,
+ 'activitypub-follow': 5,
'video-file': 1,
'email': 5
}
'activitypub-http-broadcast': 1,
'activitypub-http-unicast': 5,
'activitypub-http-fetcher': 1,
+ 'activitypub-follow': 3,
'video-file': 1,
'email': 5
}
+const BROADCAST_CONCURRENCY = 5 // How many requests in parallel we do in activitypub-http-broadcast job
// 2 days
const JOB_COMPLETED_LIFETIME = 60000 * 60 * 24 * 2
const CONFIG = {
CUSTOM_FILE: getLocalConfigFilePath(),
LISTEN: {
- PORT: config.get<number>('listen.port')
+ PORT: config.get<number>('listen.port'),
+ HOSTNAME: config.get<string>('listen.hostname')
},
DATABASE: {
DBNAME: 'peertube' + config.get<string>('database.suffix'),
USERNAME: config.get<string>('smtp.username'),
PASSWORD: config.get<string>('smtp.password'),
TLS: config.get<boolean>('smtp.tls'),
+ DISABLE_STARTTLS: config.get<boolean>('smtp.disable_starttls'),
CA_FILE: config.get<string>('smtp.ca_file'),
FROM_ADDRESS: config.get<string>('smtp.from_address')
},
URL: '',
HOST: ''
},
+ TRUST_PROXY: config.get<string[]>('trust_proxy'),
LOG: {
LEVEL: config.get<string>('log.level')
},
get DESCRIPTION () { return config.get<string>('instance.description') },
get TERMS () { return config.get<string>('instance.terms') },
get DEFAULT_CLIENT_ROUTE () { return config.get<string>('instance.default_client_route') },
+ get DEFAULT_NSFW_POLICY () { return config.get<NSFWPolicyType>('instance.default_nsfw_policy') },
CUSTOMIZATIONS: {
get JAVASCRIPT () { return config.get<string>('instance.customizations.javascript') },
get CSS () { return config.get<string>('instance.customizations.css') }
COUNT: { min: 0 }
},
VIDEO_COMMENTS: {
- TEXT: { min: 2, max: 3000 }, // Length
+ TEXT: { min: 1, max: 3000 }, // Length
URL: { min: 3, max: 2000 } // Length
},
VIDEO_SHARE: {
}
}
+const RATES_LIMIT = {
+ LOGIN: {
+ WINDOW_MS: 5 * 60 * 1000, // 5 minutes
+ MAX: 15 // 15 attempts
+ }
+}
+
let VIDEO_VIEW_LIFETIME = 60000 * 60 // 1 hour
const VIDEO_TRANSCODING_FPS = {
MIN: 10,
11: 'German',
12: 'Korean',
13: 'French',
- 14: 'Italian'
+ 14: 'Italian',
+ 1000: 'Sign Language',
+ 1001: 'American Sign Language',
+ 1002: 'Arab Sign Language',
+ 1003: 'British Sign Language',
+ 1004: 'Brazilian Sign Language',
+ 1005: 'Chinese Sign Language',
+ 1006: 'Czech Sign Language',
+ 1007: 'Danish Sign Language',
+ 1008: 'French Sign Language',
+ 1009: 'German Sign Language',
+ 1010: 'Indo-Pakistani Sign Language',
+ 1011: 'Japanese Sign Language',
+ 1012: 'South African Sign Language',
+ 1013: 'Swedish Sign Language',
+ 1014: 'Russian Sign Language'
}
const VIDEO_PRIVACIES = {
const USER_PASSWORD_RESET_LIFETIME = 60000 * 5 // 5 minutes
+const NSFW_POLICY_TYPES: { [ id: string]: NSFWPolicyType } = {
+ DO_NOT_LIST: 'do_not_list',
+ BLUR: 'blur',
+ DISPLAY: 'display'
+}
+
// ---------------------------------------------------------------------------
// Express static paths (router)
// ---------------------------------------------------------------------------
+const FEEDS = {
+ COUNT: 20,
+ CACHE_LIFETIME: 1000 * 60 * 15 // 15 minutes
+}
+
+// ---------------------------------------------------------------------------
+
// Special constants for a test instance
if (isTestInstance() === true) {
ACTOR_FOLLOW_SCORE.BASE = 20
LAST_MIGRATION_VERSION,
OAUTH_LIFETIME,
OPENGRAPH_AND_OEMBED_COMMENT,
+ BROADCAST_CONCURRENCY,
PAGINATION_COUNT_DEFAULT,
ACTOR_FOLLOW_SCORE,
PREVIEWS_SIZE,
SERVER_ACTOR_NAME,
PRIVATE_RSA_KEY_SIZE,
SORTABLE_COLUMNS,
+ FEEDS,
+ NSFW_POLICY_TYPES,
STATIC_MAX_AGE,
STATIC_PATHS,
ACTIVITY_PUB,
USER_PASSWORD_RESET_LIFETIME,
IMAGE_MIMETYPE_EXT,
SCHEDULER_INTERVAL,
+ RATES_LIMIT,
JOB_COMPLETED_LIFETIME,
VIDEO_VIEW_LIFETIME
}