aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--server/helpers/custom-validators/activitypub/videos.ts9
-rw-r--r--server/lib/activitypub/videos.ts6
-rw-r--r--server/models/video/video.ts6
-rw-r--r--shared/models/activitypub/objects/common-objects.ts2
4 files changed, 13 insertions, 10 deletions
diff --git a/server/helpers/custom-validators/activitypub/videos.ts b/server/helpers/custom-validators/activitypub/videos.ts
index 702c09842..0362f43ab 100644
--- a/server/helpers/custom-validators/activitypub/videos.ts
+++ b/server/helpers/custom-validators/activitypub/videos.ts
@@ -148,22 +148,25 @@ function setRemoteVideoTruncatedContent (video: any) {
148} 148}
149 149
150function isRemoteVideoUrlValid (url: any) { 150function isRemoteVideoUrlValid (url: any) {
151 // FIXME: Old bug, we used the width to represent the resolution. Remove it in a few realease (currently beta.11)
152 if (url.width && !url.height) url.height = url.width
153
151 return url.type === 'Link' && 154 return url.type === 'Link' &&
152 ( 155 (
153 ACTIVITY_PUB.URL_MIME_TYPES.VIDEO.indexOf(url.mimeType) !== -1 && 156 ACTIVITY_PUB.URL_MIME_TYPES.VIDEO.indexOf(url.mimeType) !== -1 &&
154 isActivityPubUrlValid(url.href) && 157 isActivityPubUrlValid(url.href) &&
155 validator.isInt(url.width + '', { min: 0 }) && 158 validator.isInt(url.height + '', { min: 0 }) &&
156 validator.isInt(url.size + '', { min: 0 }) && 159 validator.isInt(url.size + '', { min: 0 }) &&
157 (!url.fps || validator.isInt(url.fps + '', { min: 0 })) 160 (!url.fps || validator.isInt(url.fps + '', { min: 0 }))
158 ) || 161 ) ||
159 ( 162 (
160 ACTIVITY_PUB.URL_MIME_TYPES.TORRENT.indexOf(url.mimeType) !== -1 && 163 ACTIVITY_PUB.URL_MIME_TYPES.TORRENT.indexOf(url.mimeType) !== -1 &&
161 isActivityPubUrlValid(url.href) && 164 isActivityPubUrlValid(url.href) &&
162 validator.isInt(url.width + '', { min: 0 }) 165 validator.isInt(url.height + '', { min: 0 })
163 ) || 166 ) ||
164 ( 167 (
165 ACTIVITY_PUB.URL_MIME_TYPES.MAGNET.indexOf(url.mimeType) !== -1 && 168 ACTIVITY_PUB.URL_MIME_TYPES.MAGNET.indexOf(url.mimeType) !== -1 &&
166 validator.isLength(url.href, { min: 5 }) && 169 validator.isLength(url.href, { min: 5 }) &&
167 validator.isInt(url.width + '', { min: 0 }) 170 validator.isInt(url.height + '', { min: 0 })
168 ) 171 )
169} 172}
diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts
index e2f46bd02..d1888556c 100644
--- a/server/lib/activitypub/videos.ts
+++ b/server/lib/activitypub/videos.ts
@@ -11,7 +11,7 @@ import { isVideoFileInfoHashValid } from '../../helpers/custom-validators/videos
11import { retryTransactionWrapper } from '../../helpers/database-utils' 11import { retryTransactionWrapper } from '../../helpers/database-utils'
12import { logger } from '../../helpers/logger' 12import { logger } from '../../helpers/logger'
13import { doRequest, doRequestAndSaveToFile } from '../../helpers/requests' 13import { doRequest, doRequestAndSaveToFile } from '../../helpers/requests'
14import { ACTIVITY_PUB, CONFIG, REMOTE_SCHEME, sequelizeTypescript, STATIC_PATHS, VIDEO_MIMETYPE_EXT } from '../../initializers' 14import { ACTIVITY_PUB, CONFIG, REMOTE_SCHEME, sequelizeTypescript, VIDEO_MIMETYPE_EXT } from '../../initializers'
15import { AccountVideoRateModel } from '../../models/account/account-video-rate' 15import { AccountVideoRateModel } from '../../models/account/account-video-rate'
16import { ActorModel } from '../../models/activitypub/actor' 16import { ActorModel } from '../../models/activitypub/actor'
17import { TagModel } from '../../models/video/tag' 17import { TagModel } from '../../models/video/tag'
@@ -147,7 +147,7 @@ function videoFileActivityUrlToDBAttributes (videoCreated: VideoModel, videoObje
147 for (const fileUrl of fileUrls) { 147 for (const fileUrl of fileUrls) {
148 // Fetch associated magnet uri 148 // Fetch associated magnet uri
149 const magnet = videoObject.url.find(u => { 149 const magnet = videoObject.url.find(u => {
150 return u.mimeType === 'application/x-bittorrent;x-scheme-handler/magnet' && u.width === fileUrl.width 150 return u.mimeType === 'application/x-bittorrent;x-scheme-handler/magnet' && u.height === fileUrl.height
151 }) 151 })
152 152
153 if (!magnet) throw new Error('Cannot find associated magnet uri for file ' + fileUrl.href) 153 if (!magnet) throw new Error('Cannot find associated magnet uri for file ' + fileUrl.href)
@@ -160,7 +160,7 @@ function videoFileActivityUrlToDBAttributes (videoCreated: VideoModel, videoObje
160 const attribute = { 160 const attribute = {
161 extname: VIDEO_MIMETYPE_EXT[ fileUrl.mimeType ], 161 extname: VIDEO_MIMETYPE_EXT[ fileUrl.mimeType ],
162 infoHash: parsed.infoHash, 162 infoHash: parsed.infoHash,
163 resolution: fileUrl.width, 163 resolution: fileUrl.height,
164 size: fileUrl.size, 164 size: fileUrl.size,
165 videoId: videoCreated.id, 165 videoId: videoCreated.id,
166 fps: fileUrl.fps 166 fps: fileUrl.fps
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index 5db718061..25a1cd177 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -1402,7 +1402,7 @@ export class VideoModel extends Model<VideoModel> {
1402 type: 'Link', 1402 type: 'Link',
1403 mimeType: VIDEO_EXT_MIMETYPE[file.extname], 1403 mimeType: VIDEO_EXT_MIMETYPE[file.extname],
1404 href: this.getVideoFileUrl(file, baseUrlHttp), 1404 href: this.getVideoFileUrl(file, baseUrlHttp),
1405 width: file.resolution, 1405 height: file.resolution,
1406 size: file.size, 1406 size: file.size,
1407 fps: file.fps 1407 fps: file.fps
1408 }) 1408 })
@@ -1411,14 +1411,14 @@ export class VideoModel extends Model<VideoModel> {
1411 type: 'Link', 1411 type: 'Link',
1412 mimeType: 'application/x-bittorrent', 1412 mimeType: 'application/x-bittorrent',
1413 href: this.getTorrentUrl(file, baseUrlHttp), 1413 href: this.getTorrentUrl(file, baseUrlHttp),
1414 width: file.resolution 1414 height: file.resolution
1415 }) 1415 })
1416 1416
1417 url.push({ 1417 url.push({
1418 type: 'Link', 1418 type: 'Link',
1419 mimeType: 'application/x-bittorrent;x-scheme-handler/magnet', 1419 mimeType: 'application/x-bittorrent;x-scheme-handler/magnet',
1420 href: this.generateMagnetUri(file, baseUrlHttp, baseUrlWs), 1420 href: this.generateMagnetUri(file, baseUrlHttp, baseUrlWs),
1421 width: file.resolution 1421 height: file.resolution
1422 }) 1422 })
1423 } 1423 }
1424 1424
diff --git a/shared/models/activitypub/objects/common-objects.ts b/shared/models/activitypub/objects/common-objects.ts
index 5b2b3adae..ff2cfdbb4 100644
--- a/shared/models/activitypub/objects/common-objects.ts
+++ b/shared/models/activitypub/objects/common-objects.ts
@@ -21,7 +21,7 @@ export interface ActivityUrlObject {
21 type: 'Link' 21 type: 'Link'
22 mimeType: 'video/mp4' | 'video/webm' | 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet' 22 mimeType: 'video/mp4' | 'video/webm' | 'application/x-bittorrent' | 'application/x-bittorrent;x-scheme-handler/magnet'
23 href: string 23 href: string
24 width: number 24 height: number
25 25
26 size?: number 26 size?: number
27 fps?: number 27 fps?: number