+import { VideoPrivacy } from '../videos/video-privacy.enum'
+import { ClientScriptJSON } from '../plugins/plugin-package-json.model'
import { NSFWPolicyType } from '../videos/nsfw-policy.type'
-import { ClientScript } from '../plugins/plugin-package-json.model'
+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 {
css: string[]
}
+export interface RegisteredExternalAuthConfig {
+ npmName: string
+ name: string
+ version: string
+ authName: string
+ authDisplayName: string
+}
+
+export interface RegisteredIdAndPassAuthConfig {
+ npmName: string
+ name: string
+ version: string
+ authName: string
+ weight: number
+}
+
export interface ServerConfig {
serverVersion: string
serverCommit?: string
+ client: {
+ videos: {
+ miniature: {
+ displayAuthorAvatar: boolean
+ preferAuthorDisplayName: boolean
+ }
+ }
+
+ 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
- defaultClientRoute: string
isNSFW: boolean
defaultNSFWPolicy: NSFWPolicyType
+ defaultClientRoute: string
customizations: {
javascript: string
css: string
}
}
+ search: {
+ remoteUri: {
+ users: boolean
+ anonymous: boolean
+ }
+
+ searchIndex: {
+ enabled: boolean
+ url: string
+ disableLocalSearch: boolean
+ isDefaultSearch: boolean
+ }
+ }
+
plugin: {
registered: ServerConfigPlugin[]
+
+ registeredExternalAuths: RegisteredExternalAuthConfig[]
+
+ registeredIdAndPassAuths: RegisteredIdAndPassAuthConfig[]
}
theme: {
}
signup: {
- allowed: boolean,
+ allowed: boolean
allowedForCurrentIP: boolean
requiresEmailVerification: boolean
+ minimumAge: number
}
transcoding: {
}
enabledResolutions: number[]
+
+ profile: string
+ availableProfiles: string[]
+ }
+
+ live: {
+ enabled: boolean
+
+ allowReplay: boolean
+ latencySetting: {
+ enabled: boolean
+ }
+
+ maxDuration: number
+ maxInstanceLives: number
+ maxUserLives: number
+
+ transcoding: {
+ enabled: boolean
+
+ enabledResolutions: number[]
+
+ profile: string
+ availableProfiles: string[]
+ }
+
+ rtmp: {
+ port: number
+ }
+ }
+
+ videoEditor: {
+ enabled: boolean
}
import: {
}
}
+ banner: {
+ file: {
+ size: {
+ max: number
+ }
+ extensions: string[]
+ }
+ }
+
video: {
image: {
size: {
max: number
}
extensions: string[]
- },
+ }
file: {
extensions: string[]
}
file: {
size: {
max: number
- },
+ }
extensions: string[]
}
}
videoQuotaDaily: number
}
+ videoChannels: {
+ maxPerUser: number
+ }
+
trending: {
videos: {
intervalDays: number
+ algorithms: {
+ enabled: string[]
+ default: string
+ }
}
}
}
}
}
+
+ broadcastMessage: {
+ enabled: boolean
+ message: string
+ level: BroadcastMessageLevel
+ dismissable: boolean
+ }
+
+ homepage: {
+ enabled: boolean
+ }
}
+
+export type HTMLServerConfig = Omit<ServerConfig, 'signup'>