]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/server/server-config.model.ts
Add client hooks
[github/Chocobozzz/PeerTube.git] / shared / models / server / server-config.model.ts
index 004cf6ddb909ce5812eaca8b8e219c6a2d971d9a..49bb01708cbae88876d9a7d7d5e549741044869c 100644 (file)
@@ -1,27 +1,89 @@
+import { NSFWPolicyType } from '../videos/nsfw-policy.type'
+import { ClientScript } from '../plugins/plugin-package-json.model'
+import { PluginClientScope } from '../plugins/plugin-scope.type'
+
+export interface ServerConfigPlugin {
+  name: string
+  version: string
+  description: string
+  clientScripts: { [name in PluginClientScope]: ClientScript }
+}
+
+export interface ServerConfigTheme extends ServerConfigPlugin {
+  css: string[]
+}
+
 export interface ServerConfig {
   serverVersion: string
+  serverCommit?: string
 
   instance: {
-    name: string;
+    name: string
+    shortDescription: string
+    defaultClientRoute: string
+    isNSFW: boolean
+    defaultNSFWPolicy: NSFWPolicyType
     customizations: {
       javascript: string
       css: string
     }
   }
 
+  plugin: {
+    registered: ServerConfigPlugin[]
+  }
+
+  theme: {
+    registered: ServerConfigTheme[]
+    default: string
+  }
+
+  email: {
+    enabled: boolean
+  }
+
+  contactForm: {
+    enabled: boolean
+  }
+
   signup: {
-    allowed: boolean
+    allowed: boolean,
+    allowedForCurrentIP: boolean
+    requiresEmailVerification: boolean
   }
 
   transcoding: {
+    hls: {
+      enabled: boolean
+    }
+
     enabledResolutions: number[]
   }
 
+  import: {
+    videos: {
+      http: {
+        enabled: boolean
+      }
+      torrent: {
+        enabled: boolean
+      }
+    }
+  }
+
+  autoBlacklist: {
+    videos: {
+      ofUsers: {
+        enabled: boolean
+      }
+    }
+  }
+
   avatar: {
     file: {
       size: {
         max: number
-      },
+      }
       extensions: string[]
     }
   }
@@ -37,4 +99,28 @@ export interface ServerConfig {
       extensions: string[]
     }
   }
+
+  videoCaption: {
+    file: {
+      size: {
+        max: number
+      },
+      extensions: string[]
+    }
+  }
+
+  user: {
+    videoQuota: number
+    videoQuotaDaily: number
+  }
+
+  trending: {
+    videos: {
+      intervalDays: number
+    }
+  }
+
+  tracker: {
+    enabled: boolean
+  }
 }