X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fmodels%2Fserver%2Fserver-config.model.ts;h=1667bc0e2add769ce8c8e9473c460ac3f94cb4f9;hb=2539932e16129992a2c0889b4ff527c265a8e2c7;hp=c259a849a4b6e82e2b9f084d6c8665cd0f80afed;hpb=18a6f04c071f7a0735eb39b8c67fd51a082d1a31;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/models/server/server-config.model.ts b/shared/models/server/server-config.model.ts index c259a849a..1667bc0e2 100644 --- a/shared/models/server/server-config.model.ts +++ b/shared/models/server/server-config.model.ts @@ -1,13 +1,34 @@ -import { NSFWPolicyType } from '../videos/nsfw-policy.type' import { ClientScript } from '../plugins/plugin-package-json.model' +import { NSFWPolicyType } from '../videos/nsfw-policy.type' +import { BroadcastMessageLevel } from './broadcast-message-level.type' -export type ServerConfigPlugin = { +export interface ServerConfigPlugin { name: string version: string description: string clientScripts: { [name: string]: ClientScript } } +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 @@ -15,16 +36,41 @@ export interface ServerConfig { instance: { name: string shortDescription: string - defaultClientRoute: string isNSFW: boolean defaultNSFWPolicy: NSFWPolicyType + defaultClientRoute: string customizations: { javascript: string css: string } } - plugins: ServerConfigPlugin[] + search: { + remoteUri: { + users: boolean + anonymous: boolean + } + + searchIndex: { + enabled: boolean + url: string + disableLocalSearch: boolean + isDefaultSearch: boolean + } + } + + plugin: { + registered: ServerConfigPlugin[] + + registeredExternalAuths: RegisteredExternalAuthConfig[] + + registeredIdAndPassAuths: RegisteredIdAndPassAuthConfig[] + } + + theme: { + registered: ServerConfigTheme[] + default: string + } email: { enabled: boolean @@ -35,7 +81,7 @@ export interface ServerConfig { } signup: { - allowed: boolean, + allowed: boolean allowedForCurrentIP: boolean requiresEmailVerification: boolean } @@ -45,7 +91,36 @@ export interface ServerConfig { enabled: boolean } + webtorrent: { + enabled: boolean + } + enabledResolutions: number[] + + profile: string + availableProfiles: string[] + } + + live: { + enabled: boolean + + maxDuration: number + maxInstanceLives: number + maxUserLives: number + allowReplay: boolean + + transcoding: { + enabled: boolean + + enabledResolutions: number[] + + profile: string + availableProfiles: string[] + } + + rtmp: { + port: number + } } import: { @@ -76,13 +151,22 @@ export interface ServerConfig { } } + banner: { + file: { + size: { + max: number + } + extensions: string[] + } + } + video: { image: { size: { max: number } extensions: string[] - }, + } file: { extensions: string[] } @@ -92,7 +176,7 @@ export interface ServerConfig { file: { size: { max: number - }, + } extensions: string[] } } @@ -105,10 +189,35 @@ export interface ServerConfig { trending: { videos: { intervalDays: number + algorithms: { + enabled: string[] + default: string + } } } tracker: { enabled: boolean } + + followings: { + instance: { + autoFollowIndex: { + indexUrl: string + } + } + } + + broadcastMessage: { + enabled: boolean + message: string + level: BroadcastMessageLevel + dismissable: boolean + } + + homepage: { + enabled: boolean + } } + +export type HTMLServerConfig = Omit