Merge branch 'release/4.3.0' into develop
This commit is contained in:
commit
ca68986083
|
@ -2,6 +2,11 @@
|
|||
|
||||
## v4.3.0
|
||||
|
||||
### IMPORTANT NOTES
|
||||
|
||||
* Redis **<** 5.x is not supported anymore
|
||||
* FFmpeg **<** 4.3 is not supported anymore
|
||||
|
||||
### Maintenance
|
||||
|
||||
* Use `yt-dlp` by default instead of `youtube-dl` for new installations (because of much more dev activity)
|
||||
|
|
|
@ -36,6 +36,10 @@ input[type=number] {
|
|||
position: absolute;
|
||||
top: 0.2em;
|
||||
right: 2.5rem;
|
||||
|
||||
@media screen and (max-width: $mobile-view) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
input[disabled] {
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<ng-template #templateActionLabel let-action>
|
||||
<my-global-icon *ngIf="action.iconName" [iconName]="action.iconName" [ngClass]="'icon-' + action.iconName" aria-hidden="true"></my-global-icon>
|
||||
|
||||
<div class="d-flex flex-column">
|
||||
<div class="item-label">
|
||||
<span i18n>{{ action.label }}</span>
|
||||
<small class="muted" *ngIf="action.description">{{ action.description }}</small>
|
||||
</div>
|
||||
|
|
|
@ -53,6 +53,8 @@
|
|||
}
|
||||
|
||||
.dropdown-menu {
|
||||
max-width: 75vw;
|
||||
|
||||
.dropdown-header {
|
||||
padding: 0.2rem 1rem;
|
||||
}
|
||||
|
@ -72,3 +74,13 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.item-label {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 1px;
|
||||
|
||||
> * {
|
||||
@include ellipsis;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
node: ">=12.x"
|
||||
yarn: ">=1.x"
|
||||
postgres: ">=10.x"
|
||||
redis-server: ">=2.8.18"
|
||||
ffmpeg: ">=4.1"
|
|
@ -1,7 +1,8 @@
|
|||
import { getServerActor } from '@server/models/application/application'
|
||||
import { logger } from '@uploadx/core'
|
||||
import express from 'express'
|
||||
import { truncate } from 'lodash'
|
||||
import { SitemapStream, streamToPromise } from 'sitemap'
|
||||
import { SitemapStream, streamToPromise, ErrorLevel } from 'sitemap'
|
||||
import { buildNSFWFilter } from '../helpers/express-utils'
|
||||
import { ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants'
|
||||
import { asyncMiddleware } from '../middlewares'
|
||||
|
@ -34,7 +35,18 @@ async function getSitemap (req: express.Request, res: express.Response) {
|
|||
urls = urls.concat(await getSitemapVideoChannelUrls())
|
||||
urls = urls.concat(await getSitemapAccountUrls())
|
||||
|
||||
const sitemapStream = new SitemapStream({ hostname: WEBSERVER.URL })
|
||||
const sitemapStream = new SitemapStream({
|
||||
hostname: WEBSERVER.URL,
|
||||
errorHandler: (err: Error, level: ErrorLevel) => {
|
||||
if (level === 'warn') {
|
||||
logger.warn('Warning in sitemap generation.', { err })
|
||||
} else if (level === 'throw') {
|
||||
logger.error('Error in sitemap generation.', { err })
|
||||
|
||||
throw err
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
for (const urlObj of urls) {
|
||||
sitemapStream.write(urlObj)
|
||||
|
@ -83,7 +95,8 @@ async function getSitemapLocalVideoUrls () {
|
|||
url: WEBSERVER.URL + v.getWatchStaticPath(),
|
||||
video: [
|
||||
{
|
||||
title: v.name,
|
||||
// Sitemap title should be < 100 characters
|
||||
title: truncate(v.name, { length: 100, omission: '...' }),
|
||||
// Sitemap description should be < 2000 characters
|
||||
description: truncate(v.description || v.name, { length: 2000, omission: '...' }),
|
||||
player_loc: WEBSERVER.URL + v.getEmbedStaticPath(),
|
||||
|
|
|
@ -601,7 +601,7 @@ describe('Test moderation notifications', function () {
|
|||
})
|
||||
|
||||
it('Should not send a notification to moderators on new video without auto-blacklist', async function () {
|
||||
this.timeout(60000)
|
||||
this.timeout(120000)
|
||||
|
||||
const name = 'video without auto-blacklist ' + buildUUID()
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import { expect } from 'chai'
|
||||
import { cleanupTests, createSingleServer, makeGetRequest, PeerTubeServer, setAccessTokensToServers } from '@shared/server-commands'
|
||||
import { HttpStatusCode, VideoPrivacy } from '@shared/models'
|
||||
import { expectLogDoesNotContain } from './shared'
|
||||
|
||||
describe('Test misc endpoints', function () {
|
||||
let server: PeerTubeServer
|
||||
|
@ -183,6 +184,23 @@ describe('Test misc endpoints', function () {
|
|||
expect(res.text).to.contain('<url><loc>http://localhost:' + server.port + '/accounts/user1</loc></url>')
|
||||
expect(res.text).to.contain('<url><loc>http://localhost:' + server.port + '/accounts/user2</loc></url>')
|
||||
})
|
||||
|
||||
it('Should not fail with big title/description videos', async function () {
|
||||
const name = 'v'.repeat(115)
|
||||
|
||||
await server.videos.upload({ attributes: { name, description: 'd'.repeat(2500), nsfw: false } })
|
||||
|
||||
const res = await makeGetRequest({
|
||||
url: server.url,
|
||||
path: '/sitemap.xml?t=2', // avoid using cache
|
||||
expectedStatus: HttpStatusCode.OK_200
|
||||
})
|
||||
|
||||
await expectLogDoesNotContain(server, 'Warning in sitemap generation')
|
||||
await expectLogDoesNotContain(server, 'Error in sitemap generation')
|
||||
|
||||
expect(res.text).to.contain(`<video:title>${'v'.repeat(97)}...</video:title>`)
|
||||
})
|
||||
})
|
||||
|
||||
after(async function () {
|
||||
|
|
|
@ -2,7 +2,16 @@
|
|||
|
||||
:warning: **Warning**: dependencies guide is maintained by the community. Some parts may be outdated! :warning:
|
||||
|
||||
Follow the below guides, and check their versions match [required external dependencies versions](https://github.com/Chocobozzz/PeerTube/blob/master/engines.yaml). You can check them automatically via `sudo npx engineslist`.
|
||||
Follow the below guides, and check their versions match [required external dependencies versions](https://github.com/Chocobozzz/PeerTube/blob/master/engines.yaml).
|
||||
|
||||
Main dependencies version supported by PeerTube:
|
||||
|
||||
* `node` >=14.x
|
||||
* `yarn` >=1.x
|
||||
* `postgres` >=10.x
|
||||
* `redis-server` >=5.x
|
||||
* `ffmpeg` >=4.3
|
||||
|
||||
|
||||
_note_: only **LTS** versions of external dependencies are supported. If no LTS version matching the version constraint is available, only **release** versions are supported.
|
||||
|
||||
|
@ -64,6 +73,7 @@ sudo apt update
|
|||
sudo apt install certbot nginx ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git cron wget
|
||||
ffmpeg -version # Should be >= 4.1
|
||||
g++ -v # Should be >= 5.x
|
||||
redis-server --version # Should be >= 5.x
|
||||
```
|
||||
|
||||
Now that dependencies are installed, before running PeerTube you should start PostgreSQL and Redis:
|
||||
|
@ -263,6 +273,7 @@ This is necessary because `ffmpeg` is not in the Fedora repos.
|
|||
sudo dnf install nginx ffmpeg postgresql-server postgresql-contrib openssl gcc-c++ make redis git vim
|
||||
ffmpeg -version # Should be >= 4.1
|
||||
g++ -v # Should be >= 5.x
|
||||
redis-server --version # Should be >= 5.x
|
||||
```
|
||||
|
||||
8. Configure nginx
|
||||
|
|
Loading…
Reference in New Issue