]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/server/server-config.model.ts
Add latency setting support
[github/Chocobozzz/PeerTube.git] / shared / models / server / server-config.model.ts
index 0ff0792167d65076a22a112545de7ec0dafe9874..d7fbed13c469b95f744002e1276ff5047fffa567 100644 (file)
@@ -1,11 +1,14 @@
+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 {
@@ -14,12 +17,16 @@ export interface ServerConfigTheme extends ServerConfigPlugin {
 
 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
 }
@@ -28,12 +35,54 @@ 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
@@ -45,6 +94,13 @@ export interface ServerConfig {
       users: boolean
       anonymous: boolean
     }
+
+    searchIndex: {
+      enabled: boolean
+      url: string
+      disableLocalSearch: boolean
+      isDefaultSearch: boolean
+    }
   }
 
   plugin: {
@@ -72,6 +128,7 @@ export interface ServerConfig {
     allowed: boolean
     allowedForCurrentIP: boolean
     requiresEmailVerification: boolean
+    minimumAge: number
   }
 
   transcoding: {
@@ -84,6 +141,39 @@ export interface ServerConfig {
     }
 
     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: {
@@ -114,6 +204,15 @@ export interface ServerConfig {
     }
   }
 
+  banner: {
+    file: {
+      size: {
+        max: number
+      }
+      extensions: string[]
+    }
+  }
+
   video: {
     image: {
       size: {
@@ -140,9 +239,17 @@ export interface ServerConfig {
     videoQuotaDaily: number
   }
 
+  videoChannels: {
+    maxPerUser: number
+  }
+
   trending: {
     videos: {
       intervalDays: number
+      algorithms: {
+        enabled: string[]
+        default: string
+      }
     }
   }
 
@@ -157,4 +264,17 @@ export interface ServerConfig {
       }
     }
   }
+
+  broadcastMessage: {
+    enabled: boolean
+    message: string
+    level: BroadcastMessageLevel
+    dismissable: boolean
+  }
+
+  homepage: {
+    enabled: boolean
+  }
 }
+
+export type HTMLServerConfig = Omit<ServerConfig, 'signup'>