1
0
Fork 0

Use different p2p policy for embeds and webapp

This commit is contained in:
Chocobozzz 2021-12-16 09:38:27 +01:00
parent 9576506763
commit b65de1be4d
No known key found for this signature in database
GPG key ID: 583A612D890159BE
12 changed files with 118 additions and 36 deletions

View file

@ -57,7 +57,12 @@ function buildConfig (suiteFile: string = undefined) {
licence: 4 licence: 4
}, },
p2p: { p2p: {
webapp: {
enabled: false enabled: false
},
embed: {
enabled: false
}
} }
} }
} }

View file

@ -101,7 +101,7 @@ export class UserLocalStorageService {
const htmlConfig = this.server.getHTMLConfig() const htmlConfig = this.server.getHTMLConfig()
const defaultNSFWPolicy = htmlConfig.instance.defaultNSFWPolicy const defaultNSFWPolicy = htmlConfig.instance.defaultNSFWPolicy
const defaultP2PEnabled = htmlConfig.defaults.p2p.enabled const defaultP2PEnabled = htmlConfig.defaults.p2p.webapp.enabled
return { return {
nsfwPolicy: this.localStorageService.getItem<NSFWPolicyType>(UserLocalStorageKeys.NSFW_POLICY) || defaultNSFWPolicy, nsfwPolicy: this.localStorageService.getItem<NSFWPolicyType>(UserLocalStorageKeys.NSFW_POLICY) || defaultNSFWPolicy,

View file

@ -793,7 +793,7 @@ export class PeerTubeEmbed {
private isP2PEnabled (video: Video) { private isP2PEnabled (video: Video) {
const userP2PEnabled = getBoolOrDefault( const userP2PEnabled = getBoolOrDefault(
peertubeLocalStorage.getItem(UserLocalStorageKeys.P2P_ENABLED), peertubeLocalStorage.getItem(UserLocalStorageKeys.P2P_ENABLED),
this.config.defaults.p2p.enabled this.config.defaults.p2p.embed.enabled
) )
return isP2PEnabled(video, this.config, userP2PEnabled) return isP2PEnabled(video, this.config, userP2PEnabled)

View file

@ -93,8 +93,14 @@ defaults:
licence: null licence: null
p2p: p2p:
# Enable P2P by default # Enable P2P by default in PeerTube client
# Can be enabled/disabled by anonymous users and logged in users # Can be enabled/disabled by anonymous users and logged in users
webapp:
enabled: true
# Enable P2P by default in PeerTube embed
# Can be enabled/disabled by URL option
embed:
enabled: true enabled: true
# From the project root directory # From the project root directory

View file

@ -93,6 +93,10 @@ defaults:
p2p: p2p:
# Enable P2P by default # Enable P2P by default
# Can be enabled/disabled by anonymous users and logged in users # Can be enabled/disabled by anonymous users and logged in users
webapp:
enabled: true
embed:
enabled: true enabled: true
# From the project root directory # From the project root directory

View file

@ -183,7 +183,7 @@ async function createUser (req: express.Request, res: express.Response) {
password: body.password, password: body.password,
email: body.email, email: body.email,
nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY, nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED, p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
autoPlayVideo: true, autoPlayVideo: true,
role: body.role, role: body.role,
videoQuota: body.videoQuota, videoQuota: body.videoQuota,
@ -233,7 +233,7 @@ async function registerUser (req: express.Request, res: express.Response) {
password: body.password, password: body.password,
email: body.email, email: body.email,
nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY, nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED, p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
autoPlayVideo: true, autoPlayVideo: true,
role: UserRole.USER, role: UserRole.USER,
videoQuota: CONFIG.USER.VIDEO_QUOTA, videoQuota: CONFIG.USER.VIDEO_QUOTA,

View file

@ -80,7 +80,12 @@ const CONFIG = {
LICENCE: config.get<number>('defaults.publish.licence') LICENCE: config.get<number>('defaults.publish.licence')
}, },
P2P: { 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')
}
} }
}, },

View file

@ -144,7 +144,7 @@ async function createOAuthAdminIfNotExist () {
role, role,
verified: true, verified: true,
nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY, nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED, p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
videoQuota: -1, videoQuota: -1,
videoQuotaDaily: -1 videoQuotaDaily: -1
} }

View file

@ -226,7 +226,7 @@ async function createUserFromExternal (pluginAuth: string, options: {
password: null, password: null,
email: options.email, email: options.email,
nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY, nsfwPolicy: CONFIG.INSTANCE.DEFAULT_NSFW_POLICY,
p2pEnabled: CONFIG.DEFAULTS.P2P.ENABLED, p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
autoPlayVideo: true, autoPlayVideo: true,
role: options.role, role: options.role,
videoQuota: CONFIG.USER.VIDEO_QUOTA, videoQuota: CONFIG.USER.VIDEO_QUOTA,

View file

@ -63,7 +63,12 @@ class ServerConfigManager {
licence: CONFIG.DEFAULTS.PUBLISH.LICENCE licence: CONFIG.DEFAULTS.PUBLISH.LICENCE
}, },
p2p: { p2p: {
enabled: CONFIG.DEFAULTS.P2P.ENABLED webapp: {
enabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED
},
embed: {
enabled: CONFIG.DEFAULTS.P2P.EMBED.ENABLED
}
} }
}, },

View file

@ -125,23 +125,28 @@ describe('Test config defaults', function () {
describe('Default P2P values', function () { describe('Default P2P values', function () {
describe('Webapp default value', function () {
before(async function () { before(async function () {
const overrideConfig = { const overrideConfig = {
defaults: { defaults: {
p2p: { p2p: {
webapp: {
enabled: false enabled: false
} }
} }
} }
}
await server.kill() await server.kill()
await server.run(overrideConfig) await server.run(overrideConfig)
}) })
it('Should not have P2P enabled', async function () { it('Should have appropriate P2P config', async function () {
const config = await server.config.getConfig() 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 () { it('Should create a user with this default setting', async function () {
@ -162,6 +167,52 @@ describe('Test config defaults', function () {
}) })
}) })
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()
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
})
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
})
})
})
after(async function () { after(async function () {
await cleanupTests([ server ]) await cleanupTests([ server ])
}) })

View file

@ -57,8 +57,14 @@ export interface ServerConfig {
} }
p2p: { p2p: {
webapp: {
enabled: boolean enabled: boolean
} }
embed: {
enabled: boolean
}
}
} }
webadmin: { webadmin: {