]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/server-config-manager.ts
Update translations
[github/Chocobozzz/PeerTube.git] / server / lib / server-config-manager.ts
index 1aff6f4469b5be7219ae0d98491582dbb3be8035..924adb33715e3307f31cbf2ccd0896e265cd8ec8 100644 (file)
@@ -1,13 +1,14 @@
-import { isSignupAllowed, isSignupAllowedForCurrentIP } from '@server/helpers/signup'
-import { getServerCommit } from '@server/helpers/utils'
+import { getServerCommit } from '@server/helpers/version'
 import { CONFIG, isEmailEnabled } from '@server/initializers/config'
 import { CONSTRAINTS_FIELDS, DEFAULT_THEME_NAME, PEERTUBE_VERSION } from '@server/initializers/constants'
+import { isSignupAllowed, isSignupAllowedForCurrentIP } from '@server/lib/signup'
 import { ActorCustomPageModel } from '@server/models/account/actor-custom-page'
+import { PluginModel } from '@server/models/server/plugin'
 import { HTMLServerConfig, RegisteredExternalAuthConfig, RegisteredIdAndPassAuthConfig, ServerConfig } from '@shared/models'
 import { Hooks } from './plugins/hooks'
 import { PluginManager } from './plugins/plugin-manager'
 import { getThemeOrDefault } from './plugins/theme-utils'
-import { VideoTranscodingProfilesManager } from './transcoding/video-transcoding-profiles'
+import { VideoTranscodingProfilesManager } from './transcoding/default-transcoding-profiles'
 
 /**
  *
@@ -42,6 +43,48 @@ class ServerConfigManager {
     const defaultTheme = getThemeOrDefault(CONFIG.THEME.DEFAULT, DEFAULT_THEME_NAME)
 
     return {
+      client: {
+        videos: {
+          miniature: {
+            displayAuthorAvatar: CONFIG.CLIENT.VIDEOS.MINIATURE.DISPLAY_AUTHOR_AVATAR,
+            preferAuthorDisplayName: CONFIG.CLIENT.VIDEOS.MINIATURE.PREFER_AUTHOR_DISPLAY_NAME
+          },
+          resumableUpload: {
+            maxChunkSize: CONFIG.CLIENT.VIDEOS.RESUMABLE_UPLOAD.MAX_CHUNK_SIZE
+          }
+        },
+        menu: {
+          login: {
+            redirectOnSingleExternalAuth: CONFIG.CLIENT.MENU.LOGIN.REDIRECT_ON_SINGLE_EXTERNAL_AUTH
+          }
+        }
+      },
+
+      defaults: {
+        publish: {
+          downloadEnabled: CONFIG.DEFAULTS.PUBLISH.DOWNLOAD_ENABLED,
+          commentsEnabled: CONFIG.DEFAULTS.PUBLISH.COMMENTS_ENABLED,
+          privacy: CONFIG.DEFAULTS.PUBLISH.PRIVACY,
+          licence: CONFIG.DEFAULTS.PUBLISH.LICENCE
+        },
+        p2p: {
+          webapp: {
+            enabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED
+          },
+          embed: {
+            enabled: CONFIG.DEFAULTS.P2P.EMBED.ENABLED
+          }
+        }
+      },
+
+      webadmin: {
+        configuration: {
+          edition: {
+            allowed: CONFIG.WEBADMIN.CONFIGURATION.EDITION.ALLOWED
+          }
+        }
+      },
+
       instance: {
         name: CONFIG.INSTANCE.NAME,
         shortDescription: CONFIG.INSTANCE.SHORT_DESCRIPTION,
@@ -83,11 +126,14 @@ class ServerConfigManager {
       serverVersion: PEERTUBE_VERSION,
       serverCommit: this.serverCommit,
       transcoding: {
+        remoteRunners: {
+          enabled: CONFIG.TRANSCODING.ENABLED && CONFIG.TRANSCODING.REMOTE_RUNNERS.ENABLED
+        },
         hls: {
-          enabled: CONFIG.TRANSCODING.HLS.ENABLED
+          enabled: CONFIG.TRANSCODING.ENABLED && CONFIG.TRANSCODING.HLS.ENABLED
         },
         webtorrent: {
-          enabled: CONFIG.TRANSCODING.WEBTORRENT.ENABLED
+          enabled: CONFIG.TRANSCODING.ENABLED && CONFIG.TRANSCODING.WEBTORRENT.ENABLED
         },
         enabledResolutions: this.getEnabledResolutions('vod'),
         profile: CONFIG.TRANSCODING.PROFILE,
@@ -97,12 +143,19 @@ class ServerConfigManager {
         enabled: CONFIG.LIVE.ENABLED,
 
         allowReplay: CONFIG.LIVE.ALLOW_REPLAY,
+        latencySetting: {
+          enabled: CONFIG.LIVE.LATENCY_SETTING.ENABLED
+        },
+
         maxDuration: CONFIG.LIVE.MAX_DURATION,
         maxInstanceLives: CONFIG.LIVE.MAX_INSTANCE_LIVES,
         maxUserLives: CONFIG.LIVE.MAX_USER_LIVES,
 
         transcoding: {
           enabled: CONFIG.LIVE.TRANSCODING.ENABLED,
+          remoteRunners: {
+            enabled: CONFIG.LIVE.TRANSCODING.ENABLED && CONFIG.LIVE.TRANSCODING.REMOTE_RUNNERS.ENABLED
+          },
           enabledResolutions: this.getEnabledResolutions('live'),
           profile: CONFIG.LIVE.TRANSCODING.PROFILE,
           availableProfiles: VideoTranscodingProfilesManager.Instance.getAvailableProfiles('live')
@@ -112,6 +165,12 @@ class ServerConfigManager {
           port: CONFIG.LIVE.RTMP.PORT
         }
       },
+      videoStudio: {
+        enabled: CONFIG.VIDEO_STUDIO.ENABLED,
+        remoteRunners: {
+          enabled: CONFIG.VIDEO_STUDIO.REMOTE_RUNNERS.ENABLED
+        }
+      },
       import: {
         videos: {
           http: {
@@ -120,6 +179,9 @@ class ServerConfigManager {
           torrent: {
             enabled: CONFIG.IMPORT.VIDEOS.TORRENT.ENABLED
           }
+        },
+        videoChannelSynchronization: {
+          enabled: CONFIG.IMPORT.VIDEO_CHANNEL_SYNCHRONIZATION.ENABLED
         }
       },
       autoBlacklist: {
@@ -168,6 +230,9 @@ class ServerConfigManager {
         videoQuota: CONFIG.USER.VIDEO_QUOTA,
         videoQuotaDaily: CONFIG.USER.VIDEO_QUOTA_DAILY
       },
+      videoChannels: {
+        maxPerUser: CONFIG.VIDEO_CHANNELS.MAX_PER_USER
+      },
       trending: {
         videos: {
           intervalDays: CONFIG.TRENDING.VIDEOS.INTERVAL_DAYS,
@@ -205,10 +270,17 @@ class ServerConfigManager {
   async getServerConfig (ip?: string): Promise<ServerConfig> {
     const { allowed } = await Hooks.wrapPromiseFun(
       isSignupAllowed,
+
       {
-        ip
+        ip,
+        signupMode: CONFIG.SIGNUP.REQUIRES_APPROVAL
+          ? 'request-registration'
+          : 'direct-registration'
       },
-      'filter:api.user.signup.allowed.result'
+
+      CONFIG.SIGNUP.REQUIRES_APPROVAL
+        ? 'filter:api.user.request-signup.allowed.result'
+        : 'filter:api.user.signup.allowed.result'
     )
 
     const allowedForCurrentIP = isSignupAllowedForCurrentIP(ip)
@@ -216,6 +288,8 @@ class ServerConfigManager {
     const signup = {
       allowed,
       allowedForCurrentIP,
+      minimumAge: CONFIG.SIGNUP.MINIMUM_AGE,
+      requiresApproval: CONFIG.SIGNUP.REQUIRES_APPROVAL,
       requiresEmailVerification: CONFIG.SIGNUP.REQUIRES_EMAIL_VERIFICATION
     }
 
@@ -227,6 +301,7 @@ class ServerConfigManager {
   getRegisteredThemes () {
     return PluginManager.Instance.getRegisteredThemes()
                         .map(t => ({
+                          npmName: PluginModel.buildNpmName(t.name, t.type),
                           name: t.name,
                           version: t.version,
                           description: t.description,
@@ -238,6 +313,7 @@ class ServerConfigManager {
   getRegisteredPlugins () {
     return PluginManager.Instance.getRegisteredPlugins()
                         .map(p => ({
+                          npmName: PluginModel.buildNpmName(p.name, p.type),
                           name: p.name,
                           version: p.version,
                           description: p.description,