]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/server/server-config.model.ts
49bb01708cbae88876d9a7d7d5e549741044869c
[github/Chocobozzz/PeerTube.git] / shared / models / server / server-config.model.ts
1 import { NSFWPolicyType } from '../videos/nsfw-policy.type'
2 import { ClientScript } from '../plugins/plugin-package-json.model'
3 import { PluginClientScope } from '../plugins/plugin-scope.type'
4
5 export interface ServerConfigPlugin {
6 name: string
7 version: string
8 description: string
9 clientScripts: { [name in PluginClientScope]: ClientScript }
10 }
11
12 export interface ServerConfigTheme extends ServerConfigPlugin {
13 css: string[]
14 }
15
16 export interface ServerConfig {
17 serverVersion: string
18 serverCommit?: string
19
20 instance: {
21 name: string
22 shortDescription: string
23 defaultClientRoute: string
24 isNSFW: boolean
25 defaultNSFWPolicy: NSFWPolicyType
26 customizations: {
27 javascript: string
28 css: string
29 }
30 }
31
32 plugin: {
33 registered: ServerConfigPlugin[]
34 }
35
36 theme: {
37 registered: ServerConfigTheme[]
38 default: string
39 }
40
41 email: {
42 enabled: boolean
43 }
44
45 contactForm: {
46 enabled: boolean
47 }
48
49 signup: {
50 allowed: boolean,
51 allowedForCurrentIP: boolean
52 requiresEmailVerification: boolean
53 }
54
55 transcoding: {
56 hls: {
57 enabled: boolean
58 }
59
60 enabledResolutions: number[]
61 }
62
63 import: {
64 videos: {
65 http: {
66 enabled: boolean
67 }
68 torrent: {
69 enabled: boolean
70 }
71 }
72 }
73
74 autoBlacklist: {
75 videos: {
76 ofUsers: {
77 enabled: boolean
78 }
79 }
80 }
81
82 avatar: {
83 file: {
84 size: {
85 max: number
86 }
87 extensions: string[]
88 }
89 }
90
91 video: {
92 image: {
93 size: {
94 max: number
95 }
96 extensions: string[]
97 },
98 file: {
99 extensions: string[]
100 }
101 }
102
103 videoCaption: {
104 file: {
105 size: {
106 max: number
107 },
108 extensions: string[]
109 }
110 }
111
112 user: {
113 videoQuota: number
114 videoQuotaDaily: number
115 }
116
117 trending: {
118 videos: {
119 intervalDays: number
120 }
121 }
122
123 tracker: {
124 enabled: boolean
125 }
126 }