diff options
Diffstat (limited to 'server/initializers/constants.ts')
-rw-r--r-- | server/initializers/constants.ts | 70 |
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 @@ | |||
1 | import { RepeatOptions } from 'bullmq' | 1 | import { RepeatOptions } from 'bullmq' |
2 | import { randomBytes } from 'crypto' | 2 | import { Encoding, randomBytes } from 'crypto' |
3 | import { invert } from 'lodash' | 3 | import { invert } from 'lodash' |
4 | import { join } from 'path' | 4 | import { join } from 'path' |
5 | import { randomInt, root } from '@shared/core-utils' | 5 | import { randomInt, root } from '@shared/core-utils' |
@@ -25,7 +25,7 @@ import { CONFIG, registerConfigChangedHandler } from './config' | |||
25 | 25 | ||
26 | // --------------------------------------------------------------------------- | 26 | // --------------------------------------------------------------------------- |
27 | 27 | ||
28 | const LAST_MIGRATION_VERSION = 740 | 28 | const 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 |
637 | const BCRYPT_SALT_SIZE = 10 | 638 | const BCRYPT_SALT_SIZE = 10 |
638 | 639 | ||
640 | const ENCRYPTION = { | ||
641 | ALGORITHM: 'aes-256-cbc', | ||
642 | IV: 16, | ||
643 | SALT: 'peertube', | ||
644 | ENCODING: 'hex' as Encoding | ||
645 | } | ||
646 | |||
639 | const USER_PASSWORD_RESET_LIFETIME = 60000 * 60 // 60 minutes | 647 | const USER_PASSWORD_RESET_LIFETIME = 60000 * 60 // 60 minutes |
640 | const USER_PASSWORD_CREATE_LIFETIME = 60000 * 60 * 24 * 7 // 7 days | 648 | const USER_PASSWORD_CREATE_LIFETIME = 60000 * 60 * 24 * 7 // 7 days |
641 | 649 | ||
650 | const TWO_FACTOR_AUTH_REQUEST_TOKEN_LIFETIME = 60000 * 10 // 10 minutes | ||
651 | |||
642 | const USER_EMAIL_VERIFY_LIFETIME = 60000 * 60 // 60 minutes | 652 | const USER_EMAIL_VERIFY_LIFETIME = 60000 * 60 // 60 minutes |
643 | 653 | ||
644 | const NSFW_POLICY_TYPES: { [ id: string ]: NSFWPolicyType } = { | 654 | const 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) |
653 | const STATIC_PATHS = { | 663 | const 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 | } |
661 | const STATIC_DOWNLOAD_PATHS = { | 676 | const 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 | } |
688 | const 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 |
675 | const STATIC_MAX_AGE = { | 697 | const STATIC_MAX_AGE = { |
@@ -689,7 +711,7 @@ const PREVIEWS_SIZE = { | |||
689 | height: 480, | 711 | height: 480, |
690 | minWidth: 400 | 712 | minWidth: 400 |
691 | } | 713 | } |
692 | const ACTOR_IMAGES_SIZE: { [key in ActorImageType]: { width: number, height: number }[]} = { | 714 | const 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 | ||
741 | const RESUMABLE_UPLOAD_DIRECTORY = join(CONFIG.STORAGE.TMP_DIR, 'resumable-uploads') | 771 | const DIRECTORIES = { |
742 | const HLS_STREAMING_PLAYLIST_DIRECTORY = join(CONFIG.STORAGE.STREAMING_PLAYLISTS_DIR, 'hls') | 772 | RESUMABLE_UPLOAD: join(CONFIG.STORAGE.TMP_DIR, 'resumable-uploads'), |
743 | const 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 | ||
745 | const RESUMABLE_UPLOAD_SESSION_LIFETIME = SCHEDULER_INTERVALS_MS.REMOVE_DANGLING_RESUMABLE_UPLOADS | 787 | const RESUMABLE_UPLOAD_SESSION_LIFETIME = SCHEDULER_INTERVALS_MS.REMOVE_DANGLING_RESUMABLE_UPLOADS |
746 | 788 | ||
@@ -796,6 +838,10 @@ const REDUNDANCY = { | |||
796 | } | 838 | } |
797 | 839 | ||
798 | const ACCEPT_HEADERS = [ 'html', 'application/json' ].concat(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS) | 840 | const ACCEPT_HEADERS = [ 'html', 'application/json' ].concat(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS) |
841 | const OTP = { | ||
842 | HEADER_NAME: 'x-peertube-otp', | ||
843 | HEADER_REQUIRED_VALUE: 'required; app' | ||
844 | } | ||
799 | 845 | ||
800 | const ASSETS_PATH = { | 846 | const 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 = { | |||
944 | export { | 990 | export { |
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 |