aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/initializers/constants.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/initializers/constants.ts')
-rw-r--r--server/initializers/constants.ts70
1 files changed, 59 insertions, 11 deletions
diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts
index eb54781b6..3908bbf05 100644
--- a/server/initializers/constants.ts
+++ b/server/initializers/constants.ts
@@ -1,5 +1,5 @@
1import { RepeatOptions } from 'bullmq' 1import { RepeatOptions } from 'bullmq'
2import { randomBytes } from 'crypto' 2import { Encoding, randomBytes } from 'crypto'
3import { invert } from 'lodash' 3import { invert } from 'lodash'
4import { join } from 'path' 4import { join } from 'path'
5import { randomInt, root } from '@shared/core-utils' 5import { randomInt, root } from '@shared/core-utils'
@@ -25,7 +25,7 @@ import { CONFIG, registerConfigChangedHandler } from './config'
25 25
26// --------------------------------------------------------------------------- 26// ---------------------------------------------------------------------------
27 27
28const LAST_MIGRATION_VERSION = 740 28const LAST_MIGRATION_VERSION = 745
29 29
30// --------------------------------------------------------------------------- 30// ---------------------------------------------------------------------------
31 31
@@ -116,7 +116,8 @@ const ROUTE_CACHE_LIFETIME = {
116 ACTIVITY_PUB: { 116 ACTIVITY_PUB: {
117 VIDEOS: '1 second' // 1 second, cache concurrent requests after a broadcast for example 117 VIDEOS: '1 second' // 1 second, cache concurrent requests after a broadcast for example
118 }, 118 },
119 STATS: '4 hours' 119 STATS: '4 hours',
120 WELL_KNOWN: '1 day'
120} 121}
121 122
122// --------------------------------------------------------------------------- 123// ---------------------------------------------------------------------------
@@ -636,9 +637,18 @@ let PRIVATE_RSA_KEY_SIZE = 2048
636// Password encryption 637// Password encryption
637const BCRYPT_SALT_SIZE = 10 638const BCRYPT_SALT_SIZE = 10
638 639
640const ENCRYPTION = {
641 ALGORITHM: 'aes-256-cbc',
642 IV: 16,
643 SALT: 'peertube',
644 ENCODING: 'hex' as Encoding
645}
646
639const USER_PASSWORD_RESET_LIFETIME = 60000 * 60 // 60 minutes 647const USER_PASSWORD_RESET_LIFETIME = 60000 * 60 // 60 minutes
640const USER_PASSWORD_CREATE_LIFETIME = 60000 * 60 * 24 * 7 // 7 days 648const USER_PASSWORD_CREATE_LIFETIME = 60000 * 60 * 24 * 7 // 7 days
641 649
650const TWO_FACTOR_AUTH_REQUEST_TOKEN_LIFETIME = 60000 * 10 // 10 minutes
651
642const USER_EMAIL_VERIFY_LIFETIME = 60000 * 60 // 60 minutes 652const USER_EMAIL_VERIFY_LIFETIME = 60000 * 60 // 60 minutes
643 653
644const NSFW_POLICY_TYPES: { [ id: string ]: NSFWPolicyType } = { 654const NSFW_POLICY_TYPES: { [ id: string ]: NSFWPolicyType } = {
@@ -652,10 +662,15 @@ const NSFW_POLICY_TYPES: { [ id: string ]: NSFWPolicyType } = {
652// Express static paths (router) 662// Express static paths (router)
653const STATIC_PATHS = { 663const STATIC_PATHS = {
654 THUMBNAILS: '/static/thumbnails/', 664 THUMBNAILS: '/static/thumbnails/',
665
655 WEBSEED: '/static/webseed/', 666 WEBSEED: '/static/webseed/',
667 PRIVATE_WEBSEED: '/static/webseed/private/',
668
656 REDUNDANCY: '/static/redundancy/', 669 REDUNDANCY: '/static/redundancy/',
670
657 STREAMING_PLAYLISTS: { 671 STREAMING_PLAYLISTS: {
658 HLS: '/static/streaming-playlists/hls' 672 HLS: '/static/streaming-playlists/hls',
673 PRIVATE_HLS: '/static/streaming-playlists/hls/private/'
659 } 674 }
660} 675}
661const STATIC_DOWNLOAD_PATHS = { 676const STATIC_DOWNLOAD_PATHS = {
@@ -670,6 +685,13 @@ const LAZY_STATIC_PATHS = {
670 VIDEO_CAPTIONS: '/lazy-static/video-captions/', 685 VIDEO_CAPTIONS: '/lazy-static/video-captions/',
671 TORRENTS: '/lazy-static/torrents/' 686 TORRENTS: '/lazy-static/torrents/'
672} 687}
688const OBJECT_STORAGE_PROXY_PATHS = {
689 PRIVATE_WEBSEED: '/object-storage-proxy/webseed/private/',
690
691 STREAMING_PLAYLISTS: {
692 PRIVATE_HLS: '/object-storage-proxy/streaming-playlists/hls/private/'
693 }
694}
673 695
674// Cache control 696// Cache control
675const STATIC_MAX_AGE = { 697const STATIC_MAX_AGE = {
@@ -689,7 +711,7 @@ const PREVIEWS_SIZE = {
689 height: 480, 711 height: 480,
690 minWidth: 400 712 minWidth: 400
691} 713}
692const ACTOR_IMAGES_SIZE: { [key in ActorImageType]: { width: number, height: number }[]} = { 714const ACTOR_IMAGES_SIZE: { [key in ActorImageType]: { width: number, height: number }[] } = {
693 [ActorImageType.AVATAR]: [ 715 [ActorImageType.AVATAR]: [
694 { 716 {
695 width: 120, 717 width: 120,
@@ -735,12 +757,32 @@ const LRU_CACHE = {
735 }, 757 },
736 ACTOR_IMAGE_STATIC: { 758 ACTOR_IMAGE_STATIC: {
737 MAX_SIZE: 500 759 MAX_SIZE: 500
760 },
761 STATIC_VIDEO_FILES_RIGHTS_CHECK: {
762 MAX_SIZE: 5000,
763 TTL: parseDurationToMs('10 seconds')
764 },
765 VIDEO_TOKENS: {
766 MAX_SIZE: 100_000,
767 TTL: parseDurationToMs('8 hours')
738 } 768 }
739} 769}
740 770
741const RESUMABLE_UPLOAD_DIRECTORY = join(CONFIG.STORAGE.TMP_DIR, 'resumable-uploads') 771const DIRECTORIES = {
742const HLS_STREAMING_PLAYLIST_DIRECTORY = join(CONFIG.STORAGE.STREAMING_PLAYLISTS_DIR, 'hls') 772 RESUMABLE_UPLOAD: join(CONFIG.STORAGE.TMP_DIR, 'resumable-uploads'),
743const HLS_REDUNDANCY_DIRECTORY = join(CONFIG.STORAGE.REDUNDANCY_DIR, 'hls') 773
774 HLS_STREAMING_PLAYLIST: {
775 PUBLIC: join(CONFIG.STORAGE.STREAMING_PLAYLISTS_DIR, 'hls'),
776 PRIVATE: join(CONFIG.STORAGE.STREAMING_PLAYLISTS_DIR, 'hls', 'private')
777 },
778
779 VIDEOS: {
780 PUBLIC: CONFIG.STORAGE.VIDEOS_DIR,
781 PRIVATE: join(CONFIG.STORAGE.VIDEOS_DIR, 'private')
782 },
783
784 HLS_REDUNDANCY: join(CONFIG.STORAGE.REDUNDANCY_DIR, 'hls')
785}
744 786
745const RESUMABLE_UPLOAD_SESSION_LIFETIME = SCHEDULER_INTERVALS_MS.REMOVE_DANGLING_RESUMABLE_UPLOADS 787const RESUMABLE_UPLOAD_SESSION_LIFETIME = SCHEDULER_INTERVALS_MS.REMOVE_DANGLING_RESUMABLE_UPLOADS
746 788
@@ -796,6 +838,10 @@ const REDUNDANCY = {
796} 838}
797 839
798const ACCEPT_HEADERS = [ 'html', 'application/json' ].concat(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS) 840const ACCEPT_HEADERS = [ 'html', 'application/json' ].concat(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS)
841const OTP = {
842 HEADER_NAME: 'x-peertube-otp',
843 HEADER_REQUIRED_VALUE: 'required; app'
844}
799 845
800const ASSETS_PATH = { 846const ASSETS_PATH = {
801 DEFAULT_AUDIO_BACKGROUND: join(root(), 'dist', 'server', 'assets', 'default-audio-background.jpg'), 847 DEFAULT_AUDIO_BACKGROUND: join(root(), 'dist', 'server', 'assets', 'default-audio-background.jpg'),
@@ -944,13 +990,14 @@ const VIDEO_FILTERS = {
944export { 990export {
945 WEBSERVER, 991 WEBSERVER,
946 API_VERSION, 992 API_VERSION,
993 ENCRYPTION,
947 VIDEO_LIVE, 994 VIDEO_LIVE,
948 PEERTUBE_VERSION, 995 PEERTUBE_VERSION,
949 LAZY_STATIC_PATHS, 996 LAZY_STATIC_PATHS,
997 OBJECT_STORAGE_PROXY_PATHS,
950 SEARCH_INDEX, 998 SEARCH_INDEX,
951 RESUMABLE_UPLOAD_DIRECTORY, 999 DIRECTORIES,
952 RESUMABLE_UPLOAD_SESSION_LIFETIME, 1000 RESUMABLE_UPLOAD_SESSION_LIFETIME,
953 HLS_REDUNDANCY_DIRECTORY,
954 P2P_MEDIA_LOADER_PEER_VERSION, 1001 P2P_MEDIA_LOADER_PEER_VERSION,
955 ACTOR_IMAGES_SIZE, 1002 ACTOR_IMAGES_SIZE,
956 ACCEPT_HEADERS, 1003 ACCEPT_HEADERS,
@@ -977,13 +1024,13 @@ export {
977 FOLLOW_STATES, 1024 FOLLOW_STATES,
978 DEFAULT_USER_THEME_NAME, 1025 DEFAULT_USER_THEME_NAME,
979 SERVER_ACTOR_NAME, 1026 SERVER_ACTOR_NAME,
1027 TWO_FACTOR_AUTH_REQUEST_TOKEN_LIFETIME,
980 PLUGIN_GLOBAL_CSS_FILE_NAME, 1028 PLUGIN_GLOBAL_CSS_FILE_NAME,
981 PLUGIN_GLOBAL_CSS_PATH, 1029 PLUGIN_GLOBAL_CSS_PATH,
982 PRIVATE_RSA_KEY_SIZE, 1030 PRIVATE_RSA_KEY_SIZE,
983 VIDEO_FILTERS, 1031 VIDEO_FILTERS,
984 ROUTE_CACHE_LIFETIME, 1032 ROUTE_CACHE_LIFETIME,
985 SORTABLE_COLUMNS, 1033 SORTABLE_COLUMNS,
986 HLS_STREAMING_PLAYLIST_DIRECTORY,
987 JOB_TTL, 1034 JOB_TTL,
988 DEFAULT_THEME_NAME, 1035 DEFAULT_THEME_NAME,
989 NSFW_POLICY_TYPES, 1036 NSFW_POLICY_TYPES,
@@ -1032,6 +1079,7 @@ export {
1032 PLUGIN_EXTERNAL_AUTH_TOKEN_LIFETIME, 1079 PLUGIN_EXTERNAL_AUTH_TOKEN_LIFETIME,
1033 ASSETS_PATH, 1080 ASSETS_PATH,
1034 FILES_CONTENT_HASH, 1081 FILES_CONTENT_HASH,
1082 OTP,
1035 loadLanguages, 1083 loadLanguages,
1036 buildLanguages, 1084 buildLanguages,
1037 generateContentHash 1085 generateContentHash