Browse Source

Use different p2p policy for embeds and webapp

tags/v4.1.0-rc.1
Chocobozzz 1 year ago
parent
commit
b65de1be4d
No known key found for this signature in database GPG Key ID: 583A612D890159BE
12 changed files with 118 additions and 36 deletions
  1. +6
    -1
      client/e2e/src/utils/hooks.ts
  2. +1
    -1
      client/src/app/core/users/user-local-storage.service.ts
  3. +1
    -1
      client/src/standalone/videos/embed.ts
  4. +8
    -2
      config/default.yaml
  5. +5
    -1
      config/production.yaml.example
  6. +2
    -2
      server/controllers/api/users/index.ts
  7. +6
    -1
      server/initializers/config.ts
  8. +1
    -1
      server/initializers/installer.ts
  9. +1
    -1
      server/lib/auth/oauth-model.ts
  10. +6
    -1
      server/lib/server-config-manager.ts
  11. +74
    -23
      server/tests/api/server/config-defaults.ts
  12. +7
    -1
      shared/models/server/server-config.model.ts

+ 6
- 1
client/e2e/src/utils/hooks.ts View File

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


+ 1
- 1
client/src/app/core/users/user-local-storage.service.ts View 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,


+ 1
- 1
client/src/standalone/videos/embed.ts View 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)


+ 8
- 2
config/default.yaml View 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:


+ 5
- 1
config/production.yaml.example View 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:


+ 2
- 2
server/controllers/api/users/index.ts View 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,


+ 6
- 1
server/initializers/config.ts View 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')
}
}
},



+ 1
- 1
server/initializers/installer.ts View 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
}


+ 1
- 1
server/lib/auth/oauth-model.ts View 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,


+ 6
- 1
server/lib/server-config-manager.ts View 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
}
}
},



+ 74
- 23
server/tests/api/server/config-defaults.ts View 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
})
})
})



+ 7
- 1
shared/models/server/server-config.model.ts View File

@@ -57,7 +57,13 @@ export interface ServerConfig {
}

p2p: {
enabled: boolean
webapp: {
enabled: boolean
}

embed: {
enabled: boolean
}
}
}



Loading…
Cancel
Save