X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fmodels%2Fserver%2Fserver-config.model.ts;h=67ad809f7a96e2cc564c2642649723e36b89f0a4;hb=49f0468d44468528c2fb2c8b0efd19cdaeeec43d;hp=a6d28e05ef8c575055e55cbc91e6c644977aff11;hpb=2a8c5d0af13f3ccb9a505e1fbc9d324b9d33ba1f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/models/server/server-config.model.ts b/shared/models/server/server-config.model.ts index a6d28e05e..67ad809f7 100644 --- a/shared/models/server/server-config.model.ts +++ b/shared/models/server/server-config.model.ts @@ -1,32 +1,182 @@ +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]: 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 + } + 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 - 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: { + registered: ServerConfigTheme[] + default: string + } + email: { enabled: boolean } + contactForm: { + enabled: boolean + } + signup: { - allowed: boolean, - allowedForCurrentIP: boolean, + allowed: boolean + allowedForCurrentIP: boolean requiresEmailVerification: boolean + minimumAge: number } transcoding: { + hls: { + enabled: boolean + } + + webtorrent: { + enabled: boolean + } + 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 + } + } + + videoStudio: { + enabled: boolean } import: { @@ -40,11 +190,28 @@ export interface ServerConfig { } } + autoBlacklist: { + videos: { + ofUsers: { + enabled: boolean + } + } + } + avatar: { file: { size: { max: number - }, + } + extensions: string[] + } + } + + banner: { + file: { + size: { + max: number + } extensions: string[] } } @@ -55,7 +222,7 @@ export interface ServerConfig { max: number } extensions: string[] - }, + } file: { extensions: string[] } @@ -65,7 +232,7 @@ export interface ServerConfig { file: { size: { max: number - }, + } extensions: string[] } } @@ -74,4 +241,43 @@ export interface ServerConfig { videoQuota: number videoQuotaDaily: number } + + videoChannels: { + maxPerUser: number + } + + 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