-import { ClientScript } from '../plugins/plugin-package-json.model'
+import { VideoPrivacy } from '../videos/video-privacy.enum'
+import { ClientScriptJSON } from '../plugins/plugin-package-json.model'
import { NSFWPolicyType } from '../videos/nsfw-policy.type'
import { BroadcastMessageLevel } from './broadcast-message-level.type'
export interface ServerConfigPlugin {
name: string
+ npmName: string
version: string
description: string
- clientScripts: { [name: string]: ClientScript }
+ clientScripts: { [name: string]: ClientScriptJSON }
}
export interface ServerConfigTheme extends ServerConfigPlugin {
serverVersion: string
serverCommit?: string
+ client: {
+ videos: {
+ miniature: {
+ displayAuthorAvatar: boolean
+ preferAuthorDisplayName: boolean
+ }
+ resumableUpload: {
+ maxChunkSize: number
+ }
+ }
+
+ menu: {
+ login: {
+ redirectOnSingleExternalAuth: boolean
+ }
+ }
+ }
+
+ defaults: {
+ publish: {
+ downloadEnabled: boolean
+ commentsEnabled: boolean
+ privacy: VideoPrivacy
+ licence: number
+ }
+
+ p2p: {
+ webapp: {
+ enabled: boolean
+ }
+
+ embed: {
+ enabled: boolean
+ }
+ }
+ }
+
+ webadmin: {
+ configuration: {
+ edition: {
+ allowed: boolean
+ }
+ }
+ }
+
instance: {
name: string
shortDescription: string
allowed: boolean
allowedForCurrentIP: boolean
requiresEmailVerification: boolean
+ minimumAge: number
}
transcoding: {
live: {
enabled: boolean
+ allowReplay: boolean
+ latencySetting: {
+ enabled: boolean
+ }
+
maxDuration: number
maxInstanceLives: number
maxUserLives: number
- allowReplay: boolean
transcoding: {
enabled: boolean
}
}
+ videoStudio: {
+ enabled: boolean
+ }
+
import: {
videos: {
http: {
}
}
+ banner: {
+ file: {
+ size: {
+ max: number
+ }
+ extensions: string[]
+ }
+ }
+
video: {
image: {
size: {
videoQuotaDaily: number
}
+ videoChannels: {
+ maxPerUser: number
+ }
+
trending: {
videos: {
intervalDays: number
level: BroadcastMessageLevel
dismissable: boolean
}
+
+ homepage: {
+ enabled: boolean
+ }
}
+
+export type HTMLServerConfig = Omit<ServerConfig, 'signup'>