]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Use different p2p policy for embeds and webapp
authorChocobozzz <me@florianbigard.com>
Thu, 16 Dec 2021 08:38:27 +0000 (09:38 +0100)
committerChocobozzz <me@florianbigard.com>
Thu, 16 Dec 2021 09:08:55 +0000 (10:08 +0100)
12 files changed:
client/e2e/src/utils/hooks.ts
client/src/app/core/users/user-local-storage.service.ts
client/src/standalone/videos/embed.ts
config/default.yaml
config/production.yaml.example
server/controllers/api/users/index.ts
server/initializers/config.ts
server/initializers/installer.ts
server/lib/auth/oauth-model.ts
server/lib/server-config-manager.ts
server/tests/api/server/config-defaults.ts
shared/models/server/server-config.model.ts

index 2f3d10fe39dd8c6f174c6fef76c179e02850cc06..e139d8183739dc3f36e5c604694b7d5a6f9c7236 100644 (file)
@@ -57,7 +57,12 @@ function buildConfig (suiteFile: string = undefined) {
           licence: 4
         },
         p2p: {
-          enabled: false
+          webapp: {
+            enabled: false
+          },
+          embed: {
+            enabled: false
+          }
         }
       }
     }
index 85da46e0dabbc7483857286378cfd3e7a49e616e..d15bf735ba3005a2a83a03d43d0117a6844f4c98 100644 (file)
@@ -101,7 +101,7 @@ export class UserLocalStorageService {
     const htmlConfig = this.server.getHTMLConfig()
 
     const defaultNSFWPolicy = htmlConfig.instance.defaultNSFWPolicy
-    const defaultP2PEnabled = htmlConfig.defaults.p2p.enabled
+    const defaultP2PEnabled = htmlConfig.defaults.p2p.webapp.enabled
 
     return {
       nsfwPolicy: this.localStorageService.getItem<NSFWPolicyType>(UserLocalStorageKeys.NSFW_POLICY) || defaultNSFWPolicy,
index 94f1096b774e7d3549d85dbd4417c3788c93b89d..c04f94d202119cfeda13e0e55d5e3b60c7aac592 100644 (file)
@@ -793,7 +793,7 @@ export class PeerTubeEmbed {
   private isP2PEnabled (video: Video) {
     const userP2PEnabled = getBoolOrDefault(
       peertubeLocalStorage.getItem(UserLocalStorageKeys.P2P_ENABLED),
-      this.config.defaults.p2p.enabled
+      this.config.defaults.p2p.embed.enabled
     )
 
     return isP2PEnabled(video, this.config, userP2PEnabled)
index 421c195690438e2f0ea3ed438d7f8f92633e00f7..e254c2c28bf0e4a71343821bbe2ccd2765d48caa 100644 (file)
@@ -93,9 +93,15 @@ defaults:
     licence: null
 
   p2p:
-    # Enable P2P by default
+    # Enable P2P by default in PeerTube client
     # Can be enabled/disabled by anonymous users and logged in users
-    enabled: true
+    webapp:
+      enabled: true
+
+    # Enable P2P by default in PeerTube embed
+    # Can be enabled/disabled by URL option
+    embed:
+      enabled: true
 
 # From the project root directory
 storage:
index 13219fd5d8ce6f1bf8a7d6234162c1c1c54f99f6..0ce0b9d0ee9bd686dc831b0206f885ca67a8ccf2 100644 (file)
@@ -93,7 +93,11 @@ defaults:
   p2p:
     # Enable P2P by default
     # Can be enabled/disabled by anonymous users and logged in users
-    enabled: true
+    webapp:
+      enabled: true
+
+    embed:
+      enabled: true
 
 # From the project root directory
 storage:
index f3b4508d932ba66ef4fa6ea51bc0fbe441d9e71f..fcee58f6b0614f0b7680b9d79753aa17fac0e6f3 100644 (file)
@@ -183,7 +183,7 @@ async function createUser (req: express.Request, res: express.Response) {
     password: body.password,
     email: body.email,
     nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
-    p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED,
+    p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
     autoPlayVideo: true,
     role: body.role,
     videoQuota: body.videoQuota,
@@ -233,7 +233,7 @@ async function registerUser (req: express.Request, res: express.Response) {
     password: body.password,
     email: body.email,
     nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
-    p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED,
+    p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
     autoPlayVideo: true,
     role: UserRole.USER,
     videoQuota: CONFIG.USER.VIDEO_QUOTA,
index a6ea6d888230d2d29903b79e00ba904453ff23c4..f2e9f7088b8c16a0e12668583d095c48fdf8f97d 100644 (file)
@@ -80,7 +80,12 @@ const CONFIG = {
       LICENCE: config.get<number>('defaults.publish.licence')
     },
     P2P: {
-      ENABLED: config.get<boolean>('defaults.p2p.enabled')
+      WEBAPP: {
+        ENABLED: config.get<boolean>('defaults.p2p.webapp.enabled')
+      },
+      EMBED: {
+        ENABLED: config.get<boolean>('defaults.p2p.embed.enabled')
+      }
     }
   },
 
index 19adaf17764222d679dd7f3b5140a99f7b77e4ce..7c29a42e13a198eebfe00610ab61c538f02d37cd 100644 (file)
@@ -144,7 +144,7 @@ async function createOAuthAdminIfNotExist () {
     role,
     verified: true,
     nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
-    p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED,
+    p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
     videoQuota: -1,
     videoQuotaDaily: -1
   }
index 754bee36ddb0a117db8e3a6fe67032c257c688a3..b68cce6d232b4d2c2cdaf1616a6731051f349766 100644 (file)
@@ -226,7 +226,7 @@ async function createUserFromExternal (pluginAuth: string, options: {
     password: null,
     email: options.email,
     nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
-    p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED,
+    p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
     autoPlayVideo: true,
     role: options.role,
     videoQuota: CONFIG.USER.VIDEO_QUOTA,
index d759f85e17c3ee1187eb56dc1e41bb3620224fb9..18032ef86c2822da659e23074c772ad4b2f5b9ff 100644 (file)
@@ -63,7 +63,12 @@ class ServerConfigManager {
           licence: CONFIG.DEFAULTS.PUBLISH.LICENCE
         },
         p2p: {
-          enabled: CONFIG.DEFAULTS.P2P.ENABLED
+          webapp: {
+            enabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED
+          },
+          embed: {
+            enabled: CONFIG.DEFAULTS.P2P.EMBED.ENABLED
+          }
         }
       },
 
index 340d4b44bb7c79584a231a427c14cc2d6e369d86..117fc20d7a5eefef878e88c358b94acf32ff4113 100644 (file)
@@ -125,40 +125,91 @@ describe('Test config defaults', function () {
 
   describe('Default P2P values', function () {
 
-    before(async function () {
-      const overrideConfig = {
-        defaults: {
-          p2p: {
-            enabled: false
+    describe('Webapp default value', function () {
+
+      before(async function () {
+        const overrideConfig = {
+          defaults: {
+            p2p: {
+              webapp: {
+                enabled: false
+              }
+            }
           }
         }
-      }
 
-      await server.kill()
-      await server.run(overrideConfig)
-    })
+        await server.kill()
+        await server.run(overrideConfig)
+      })
 
-    it('Should not have P2P enabled', async function () {
-      const config = await server.config.getConfig()
+      it('Should have appropriate P2P config', async function () {
+        const config = await server.config.getConfig()
 
-      expect(config.defaults.p2p.enabled).to.be.false
-    })
+        expect(config.defaults.p2p.webapp.enabled).to.be.false
+        expect(config.defaults.p2p.embed.enabled).to.be.true
+      })
+
+      it('Should create a user with this default setting', async function () {
+        await server.users.create({ username: 'user_p2p_1' })
+        const userToken = await server.login.getAccessToken('user_p2p_1')
+
+        const { p2pEnabled } = await server.users.getMyInfo({ token: userToken })
+        expect(p2pEnabled).to.be.false
+      })
 
-    it('Should create a user with this default setting', async function () {
-      await server.users.create({ username: 'user_p2p_1' })
-      const userToken = await server.login.getAccessToken('user_p2p_1')
+      it('Should register a user with this default setting', async function () {
+        await server.users.register({ username: 'user_p2p_2' })
 
-      const { p2pEnabled } = await server.users.getMyInfo({ token: userToken })
-      expect(p2pEnabled).to.be.false
+        const userToken = await server.login.getAccessToken('user_p2p_2')
+
+        const { p2pEnabled } = await server.users.getMyInfo({ token: userToken })
+        expect(p2pEnabled).to.be.false
+      })
     })
 
-    it('Should register a user with this default setting', async function () {
-      await server.users.register({ username: 'user_p2p_2' })
+    describe('Embed default value', function () {
+
+      before(async function () {
+        const overrideConfig = {
+          defaults: {
+            p2p: {
+              embed: {
+                enabled: false
+              }
+            }
+          },
+          signup: {
+            limit: 15
+          }
+        }
+
+        await server.kill()
+        await server.run(overrideConfig)
+      })
+
+      it('Should have appropriate P2P config', async function () {
+        const config = await server.config.getConfig()
 
-      const userToken = await server.login.getAccessToken('user_p2p_2')
+        expect(config.defaults.p2p.webapp.enabled).to.be.true
+        expect(config.defaults.p2p.embed.enabled).to.be.false
+      })
+
+      it('Should create a user with this default setting', async function () {
+        await server.users.create({ username: 'user_p2p_3' })
+        const userToken = await server.login.getAccessToken('user_p2p_3')
+
+        const { p2pEnabled } = await server.users.getMyInfo({ token: userToken })
+        expect(p2pEnabled).to.be.true
+      })
 
-      const { p2pEnabled } = await server.users.getMyInfo({ token: userToken })
-      expect(p2pEnabled).to.be.false
+      it('Should register a user with this default setting', async function () {
+        await server.users.register({ username: 'user_p2p_4' })
+
+        const userToken = await server.login.getAccessToken('user_p2p_4')
+
+        const { p2pEnabled } = await server.users.getMyInfo({ token: userToken })
+        expect(p2pEnabled).to.be.true
+      })
     })
   })
 
index 71540e603416b902a42e8a2e8b53b4e8c9b5b223..0e3b4a3d266891409b86276c7d68e40af2d96938 100644 (file)
@@ -57,7 +57,13 @@ export interface ServerConfig {
     }
 
     p2p: {
-      enabled: boolean
+      webapp: {
+        enabled: boolean
+      }
+
+      embed: {
+        enabled: boolean
+      }
     }
   }