Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cf843c3f12 | ||
![]() |
6966f37c4b | ||
![]() |
4fd8d34175 |
|
@ -43,7 +43,7 @@ We have many important notes in this release. We know it's a pain for sysadmin,
|
||||||
* Directory on filesystem must be **renamed** from `videos/` to `web-videos/` to represent the value of `storage.web_videos`
|
* Directory on filesystem must be **renamed** from `videos/` to `web-videos/` to represent the value of `storage.web_videos`
|
||||||
* Classic installation: `sudo -u peertube mv '/var/www/peertube/storage/videos/' '/var/www/peertube/storage/web-videos/'`
|
* Classic installation: `sudo -u peertube mv '/var/www/peertube/storage/videos/' '/var/www/peertube/storage/web-videos/'`
|
||||||
* Docker installation: `mv '/path-to-docker-installation/docker-volume/data/videos/' '/path-to-docker-installation/docker-volume/data/web-videos/'`
|
* Docker installation: `mv '/path-to-docker-installation/docker-volume/data/videos/' '/path-to-docker-installation/docker-volume/data/web-videos/'`
|
||||||
* `transcoding.webtorrent` must be **renamed** to `transcoding.web_videos`: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L522
|
* `transcoding.webtorrent` must be **renamed** to `transcoding.web_videos`: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L532
|
||||||
* `object_storage.videos` must be **renamed** to `object_storage.web_videos`. The value of `object_storage.web_videos.bucket_name` doesn't need to be changed: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L223
|
* `object_storage.videos` must be **renamed** to `object_storage.web_videos`. The value of `object_storage.web_videos.bucket_name` doesn't need to be changed: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L223
|
||||||
* `storage.storyboards` must be **added**: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L157
|
* `storage.storyboards` must be **added**: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L157
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ We have many important notes in this release. We know it's a pain for sysadmin,
|
||||||
* `location ~ ^(/static/(webseed|streaming-playlists)/private/)|^/download {` must be updated to `location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {`
|
* `location ~ ^(/static/(webseed|streaming-playlists)/private/)|^/download {` must be updated to `location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download {`
|
||||||
* `location ~ ^/static/(webseed|redundancy|streaming-playlists)/ {` must be updated to `location ~ ^/static/(webseed|web-videos|redundancy|streaming-playlists)/ {`
|
* `location ~ ^/static/(webseed|redundancy|streaming-playlists)/ {` must be updated to `location ~ ^/static/(webseed|web-videos|redundancy|streaming-playlists)/ {`
|
||||||
|
|
||||||
* Tracing requires `--experimental-loader=@opentelemetry/instrumentation/hook.mjs` node option: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L263
|
* Tracing requires `--experimental-loader=@opentelemetry/instrumentation/hook.mjs` node option: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L264
|
||||||
|
|
||||||
#### Developers important notes
|
#### Developers important notes
|
||||||
|
|
||||||
|
|
|
@ -242,6 +242,29 @@ describe('Test id and pass auth plugins', function () {
|
||||||
expect(laguna.pluginAuth).to.equal('peertube-plugin-test-id-pass-auth-two')
|
expect(laguna.pluginAuth).to.equal('peertube-plugin-test-id-pass-auth-two')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Should not update a user if not owned by the plugin auth', async function () {
|
||||||
|
{
|
||||||
|
await server.users.update({ userId: lagunaId, videoQuota: 43000, password: 'coucou', pluginAuth: null })
|
||||||
|
|
||||||
|
const body = await server.users.get({ userId: lagunaId })
|
||||||
|
expect(body.videoQuota).to.equal(43000)
|
||||||
|
expect(body.pluginAuth).to.be.null
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
await server.login.login({
|
||||||
|
user: { username: 'laguna', password: 'laguna password' },
|
||||||
|
expectedStatus: HttpStatusCode.BAD_REQUEST_400
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const body = await server.users.get({ userId: lagunaId })
|
||||||
|
expect(body.videoQuota).to.equal(43000)
|
||||||
|
expect(body.pluginAuth).to.be.null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
after(async function () {
|
after(async function () {
|
||||||
await cleanupTests([ server ])
|
await cleanupTests([ server ])
|
||||||
})
|
})
|
||||||
|
|
|
@ -89,8 +89,11 @@ async function getUser (usernameOrEmail?: string, password?: string, bypassLogin
|
||||||
|
|
||||||
let user = await UserModel.loadByEmail(bypassLogin.user.email)
|
let user = await UserModel.loadByEmail(bypassLogin.user.email)
|
||||||
|
|
||||||
if (!user) user = await createUserFromExternal(bypassLogin.pluginName, bypassLogin.user)
|
if (!user) {
|
||||||
else user = await updateUserFromExternal(user, bypassLogin.user, bypassLogin.userUpdater)
|
user = await createUserFromExternal(bypassLogin.pluginName, bypassLogin.user)
|
||||||
|
} else if (user.pluginAuth === bypassLogin.pluginName) {
|
||||||
|
user = await updateUserFromExternal(user, bypassLogin.user, bypassLogin.userUpdater)
|
||||||
|
}
|
||||||
|
|
||||||
// Cannot create a user
|
// Cannot create a user
|
||||||
if (!user) throw new AccessDeniedError('Cannot create such user: an actor with that name already exists.')
|
if (!user) throw new AccessDeniedError('Cannot create such user: an actor with that name already exists.')
|
||||||
|
|
|
@ -873,6 +873,8 @@ export class UserModel extends Model<Partial<AttributesOnly<UserModel>>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
isPasswordMatch (password: string) {
|
isPasswordMatch (password: string) {
|
||||||
|
if (!password || !this.password) return false
|
||||||
|
|
||||||
return comparePassword(password, this.password)
|
return comparePassword(password, this.password)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9766,10 +9766,10 @@ components:
|
||||||
description: P2P peers connected (doesn't include WebSeed peers)
|
description: P2P peers connected (doesn't include WebSeed peers)
|
||||||
resolutionChanges:
|
resolutionChanges:
|
||||||
type: number
|
type: number
|
||||||
description: How many resolution changes occured since the last metric creation
|
description: How many resolution changes occurred since the last metric creation
|
||||||
errors:
|
errors:
|
||||||
type: number
|
type: number
|
||||||
description: How many errors occured since the last metric creation
|
description: How many errors occurred since the last metric creation
|
||||||
downloadedBytesP2P:
|
downloadedBytesP2P:
|
||||||
type: number
|
type: number
|
||||||
description: How many bytes were downloaded with P2P since the last metric creation
|
description: How many bytes were downloaded with P2P since the last metric creation
|
||||||
|
|
|
@ -870,7 +870,7 @@ function register ({ registerClientRoute }) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
You can then access the page on `/p/my-super/route` (please note the additionnal `/p/` in the path).
|
You can then access the page on `/p/my-super/route` (please note the additional `/p/` in the path).
|
||||||
|
|
||||||
### Publishing
|
### Publishing
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,7 @@ peertube-runner list-registered
|
||||||
|
|
||||||
## Server tools
|
## Server tools
|
||||||
|
|
||||||
Server tools are scripts that interect directly with the code of your PeerTube instance.
|
Server tools are scripts that interact directly with the code of your PeerTube instance.
|
||||||
They must be run on the server, in `peertube-latest` directory.
|
They must be run on the server, in `peertube-latest` directory.
|
||||||
|
|
||||||
### Parse logs
|
### Parse logs
|
||||||
|
|
Loading…
Reference in New Issue
Block a user