From b65de1be4dcf626c552be613d531d3f6e23c6085 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 16 Dec 2021 09:38:27 +0100 Subject: Use different p2p policy for embeds and webapp --- client/e2e/src/utils/hooks.ts | 7 +- .../app/core/users/user-local-storage.service.ts | 2 +- client/src/standalone/videos/embed.ts | 2 +- config/default.yaml | 10 ++- config/production.yaml.example | 6 +- server/controllers/api/users/index.ts | 4 +- server/initializers/config.ts | 7 +- server/initializers/installer.ts | 2 +- server/lib/auth/oauth-model.ts | 2 +- server/lib/server-config-manager.ts | 7 +- server/tests/api/server/config-defaults.ts | 97 +++++++++++++++++----- shared/models/server/server-config.model.ts | 8 +- 12 files changed, 118 insertions(+), 36 deletions(-) diff --git a/client/e2e/src/utils/hooks.ts b/client/e2e/src/utils/hooks.ts index 2f3d10fe3..e139d8183 100644 --- a/client/e2e/src/utils/hooks.ts +++ b/client/e2e/src/utils/hooks.ts @@ -57,7 +57,12 @@ function buildConfig (suiteFile: string = undefined) { licence: 4 }, p2p: { - enabled: false + webapp: { + enabled: false + }, + embed: { + enabled: false + } } } } diff --git a/client/src/app/core/users/user-local-storage.service.ts b/client/src/app/core/users/user-local-storage.service.ts index 85da46e0d..d15bf735b 100644 --- a/client/src/app/core/users/user-local-storage.service.ts +++ b/client/src/app/core/users/user-local-storage.service.ts @@ -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(UserLocalStorageKeys.NSFW_POLICY) || defaultNSFWPolicy, diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index 94f1096b7..c04f94d20 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts @@ -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) diff --git a/config/default.yaml b/config/default.yaml index 421c19569..e254c2c28 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -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: diff --git a/config/production.yaml.example b/config/production.yaml.example index 13219fd5d..0ce0b9d0e 100644 --- a/config/production.yaml.example +++ b/config/production.yaml.example @@ -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: diff --git a/server/controllers/api/users/index.ts b/server/controllers/api/users/index.ts index f3b4508d9..fcee58f6b 100644 --- a/server/controllers/api/users/index.ts +++ b/server/controllers/api/users/index.ts @@ -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, diff --git a/server/initializers/config.ts b/server/initializers/config.ts index a6ea6d888..f2e9f7088 100644 --- a/server/initializers/config.ts +++ b/server/initializers/config.ts @@ -80,7 +80,12 @@ const CONFIG = { LICENCE: config.get('defaults.publish.licence') }, P2P: { - ENABLED: config.get('defaults.p2p.enabled') + WEBAPP: { + ENABLED: config.get('defaults.p2p.webapp.enabled') + }, + EMBED: { + ENABLED: config.get('defaults.p2p.embed.enabled') + } } }, diff --git a/server/initializers/installer.ts b/server/initializers/installer.ts index 19adaf177..7c29a42e1 100644 --- a/server/initializers/installer.ts +++ b/server/initializers/installer.ts @@ -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 } diff --git a/server/lib/auth/oauth-model.ts b/server/lib/auth/oauth-model.ts index 754bee36d..b68cce6d2 100644 --- a/server/lib/auth/oauth-model.ts +++ b/server/lib/auth/oauth-model.ts @@ -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, diff --git a/server/lib/server-config-manager.ts b/server/lib/server-config-manager.ts index d759f85e1..18032ef86 100644 --- a/server/lib/server-config-manager.ts +++ b/server/lib/server-config-manager.ts @@ -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 + } } }, diff --git a/server/tests/api/server/config-defaults.ts b/server/tests/api/server/config-defaults.ts index 340d4b44b..117fc20d7 100644 --- a/server/tests/api/server/config-defaults.ts +++ b/server/tests/api/server/config-defaults.ts @@ -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 + }) }) }) diff --git a/shared/models/server/server-config.model.ts b/shared/models/server/server-config.model.ts index 71540e603..0e3b4a3d2 100644 --- a/shared/models/server/server-config.model.ts +++ b/shared/models/server/server-config.model.ts @@ -57,7 +57,13 @@ export interface ServerConfig { } p2p: { - enabled: boolean + webapp: { + enabled: boolean + } + + embed: { + enabled: boolean + } } } -- cgit v1.2.3