From 85edcb5626d6843fbe4aa6f4d002e7ccbb5e7b58 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 27 Sep 2022 10:05:29 +0200 Subject: [PATCH 1/5] Fix number with text input overflow --- .../edit-custom-config/edit-custom-config.component.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss index 1bc9aebba..dda5d0b5e 100644 --- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss +++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.scss @@ -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] { From 52444ea13c72ccf6ff09c629710a545b7e8283df Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 27 Sep 2022 10:35:51 +0200 Subject: [PATCH 2/5] Fix moderation dropdown overflow on mobile --- .../buttons/action-dropdown.component.html | 2 +- .../buttons/action-dropdown.component.scss | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/client/src/app/shared/shared-main/buttons/action-dropdown.component.html b/client/src/app/shared/shared-main/buttons/action-dropdown.component.html index 017355bd0..37cf63fcd 100644 --- a/client/src/app/shared/shared-main/buttons/action-dropdown.component.html +++ b/client/src/app/shared/shared-main/buttons/action-dropdown.component.html @@ -18,7 +18,7 @@ -
+
{{ action.label }} {{ action.description }}
diff --git a/client/src/app/shared/shared-main/buttons/action-dropdown.component.scss b/client/src/app/shared/shared-main/buttons/action-dropdown.component.scss index fe65d6e7e..4c8a591aa 100644 --- a/client/src/app/shared/shared-main/buttons/action-dropdown.component.scss +++ b/client/src/app/shared/shared-main/buttons/action-dropdown.component.scss @@ -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; + } +} From 9ef3aeac3792e67217faf61117606882ff31ddf6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 27 Sep 2022 10:39:32 +0200 Subject: [PATCH 3/5] Update dependencies version supported by peertube --- CHANGELOG.md | 4 ++++ engines.yaml | 5 ----- support/doc/dependencies.md | 13 ++++++++++++- 3 files changed, 16 insertions(+), 6 deletions(-) delete mode 100644 engines.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 64d3c9bdb..64b5443ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## v4.3.0 +### IMPORTANT NOTES + + * Redis **<** 5.x is not supported anymore + ### Maintenance * Use `yt-dlp` by default instead of `youtube-dl` for new installations (because of much more dev activity) diff --git a/engines.yaml b/engines.yaml deleted file mode 100644 index 5a68ca4ba..000000000 --- a/engines.yaml +++ /dev/null @@ -1,5 +0,0 @@ -node: ">=12.x" -yarn: ">=1.x" -postgres: ">=10.x" -redis-server: ">=2.8.18" -ffmpeg: ">=4.1" diff --git a/support/doc/dependencies.md b/support/doc/dependencies.md index adce70c97..1973eaae3 100644 --- a/support/doc/dependencies.md +++ b/support/doc/dependencies.md @@ -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.1 + _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 From aca96f8007a5be97b7cfa36e3fee0b7003b1bcf5 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 27 Sep 2022 11:12:40 +0200 Subject: [PATCH 4/5] Support only ffmpeg >= 4.3 We have issues with video import when merging vp9 in mp4 container with lower versions --- CHANGELOG.md | 1 + support/doc/dependencies.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64b5443ae..9f057c152 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### IMPORTANT NOTES * Redis **<** 5.x is not supported anymore + * FFmpeg **<** 4.3 is not supported anymore ### Maintenance diff --git a/support/doc/dependencies.md b/support/doc/dependencies.md index 1973eaae3..bf53b8080 100644 --- a/support/doc/dependencies.md +++ b/support/doc/dependencies.md @@ -10,7 +10,7 @@ Main dependencies version supported by PeerTube: * `yarn` >=1.x * `postgres` >=10.x * `redis-server` >=5.x - * `ffmpeg` >=4.1 + * `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. From 2b32c5b37e0b10261a108cc7c23b72d64f806576 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 27 Sep 2022 16:19:36 +0200 Subject: [PATCH 5/5] Fix InvalidVideoTitle console warning --- server/controllers/bots.ts | 19 ++++++++++++++++--- .../notifications/moderation-notifications.ts | 2 +- server/tests/misc-endpoints.ts | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/server/controllers/bots.ts b/server/controllers/bots.ts index 2a8d6863a..a5ce1d79f 100644 --- a/server/controllers/bots.ts +++ b/server/controllers/bots.ts @@ -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(), diff --git a/server/tests/api/notifications/moderation-notifications.ts b/server/tests/api/notifications/moderation-notifications.ts index ad991210e..d8a7d576e 100644 --- a/server/tests/api/notifications/moderation-notifications.ts +++ b/server/tests/api/notifications/moderation-notifications.ts @@ -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() diff --git a/server/tests/misc-endpoints.ts b/server/tests/misc-endpoints.ts index 9e404b549..663ac044a 100644 --- a/server/tests/misc-endpoints.ts +++ b/server/tests/misc-endpoints.ts @@ -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('http://localhost:' + server.port + '/accounts/user1') expect(res.text).to.contain('http://localhost:' + server.port + '/accounts/user2') }) + + 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(`${'v'.repeat(97)}...`) + }) }) after(async function () {