]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/server/server-config.model.ts
Remove comments, rates and views from stats
[github/Chocobozzz/PeerTube.git] / shared / models / server / server-config.model.ts
1 import { VideoPrivacy } from '../videos/video-privacy.enum'
2 import { ClientScriptJSON } from '../plugins/plugin-package-json.model'
3 import { NSFWPolicyType } from '../videos/nsfw-policy.type'
4 import { BroadcastMessageLevel } from './broadcast-message-level.type'
5
6 export interface ServerConfigPlugin {
7 name: string
8 npmName: string
9 version: string
10 description: string
11 clientScripts: { [name: string]: ClientScriptJSON }
12 }
13
14 export interface ServerConfigTheme extends ServerConfigPlugin {
15 css: string[]
16 }
17
18 export interface RegisteredExternalAuthConfig {
19 npmName: string
20 name: string
21 version: string
22 authName: string
23 authDisplayName: string
24 }
25
26 export interface RegisteredIdAndPassAuthConfig {
27 npmName: string
28 name: string
29 version: string
30 authName: string
31 weight: number
32 }
33
34 export interface ServerConfig {
35 serverVersion: string
36 serverCommit?: string
37
38 client: {
39 videos: {
40 miniature: {
41 displayAuthorAvatar: boolean
42 preferAuthorDisplayName: boolean
43 }
44 resumableUpload: {
45 maxChunkSize: number
46 }
47 }
48
49 menu: {
50 login: {
51 redirectOnSingleExternalAuth: boolean
52 }
53 }
54 }
55
56 defaults: {
57 publish: {
58 downloadEnabled: boolean
59 commentsEnabled: boolean
60 privacy: VideoPrivacy
61 licence: number
62 }
63
64 p2p: {
65 webapp: {
66 enabled: boolean
67 }
68
69 embed: {
70 enabled: boolean
71 }
72 }
73 }
74
75 webadmin: {
76 configuration: {
77 edition: {
78 allowed: boolean
79 }
80 }
81 }
82
83 instance: {
84 name: string
85 shortDescription: string
86 isNSFW: boolean
87 defaultNSFWPolicy: NSFWPolicyType
88 defaultClientRoute: string
89 customizations: {
90 javascript: string
91 css: string
92 }
93 }
94
95 search: {
96 remoteUri: {
97 users: boolean
98 anonymous: boolean
99 }
100
101 searchIndex: {
102 enabled: boolean
103 url: string
104 disableLocalSearch: boolean
105 isDefaultSearch: boolean
106 }
107 }
108
109 plugin: {
110 registered: ServerConfigPlugin[]
111
112 registeredExternalAuths: RegisteredExternalAuthConfig[]
113
114 registeredIdAndPassAuths: RegisteredIdAndPassAuthConfig[]
115 }
116
117 theme: {
118 registered: ServerConfigTheme[]
119 default: string
120 }
121
122 email: {
123 enabled: boolean
124 }
125
126 contactForm: {
127 enabled: boolean
128 }
129
130 signup: {
131 allowed: boolean
132 allowedForCurrentIP: boolean
133 requiresEmailVerification: boolean
134 minimumAge: number
135 }
136
137 transcoding: {
138 hls: {
139 enabled: boolean
140 }
141
142 webtorrent: {
143 enabled: boolean
144 }
145
146 enabledResolutions: number[]
147
148 profile: string
149 availableProfiles: string[]
150 }
151
152 live: {
153 enabled: boolean
154
155 allowReplay: boolean
156 latencySetting: {
157 enabled: boolean
158 }
159
160 maxDuration: number
161 maxInstanceLives: number
162 maxUserLives: number
163
164 transcoding: {
165 enabled: boolean
166
167 enabledResolutions: number[]
168
169 profile: string
170 availableProfiles: string[]
171 }
172
173 rtmp: {
174 port: number
175 }
176 }
177
178 videoStudio: {
179 enabled: boolean
180 }
181
182 import: {
183 videos: {
184 http: {
185 enabled: boolean
186 }
187 torrent: {
188 enabled: boolean
189 }
190 }
191 }
192
193 autoBlacklist: {
194 videos: {
195 ofUsers: {
196 enabled: boolean
197 }
198 }
199 }
200
201 avatar: {
202 file: {
203 size: {
204 max: number
205 }
206 extensions: string[]
207 }
208 }
209
210 banner: {
211 file: {
212 size: {
213 max: number
214 }
215 extensions: string[]
216 }
217 }
218
219 video: {
220 image: {
221 size: {
222 max: number
223 }
224 extensions: string[]
225 }
226 file: {
227 extensions: string[]
228 }
229 }
230
231 videoCaption: {
232 file: {
233 size: {
234 max: number
235 }
236 extensions: string[]
237 }
238 }
239
240 user: {
241 videoQuota: number
242 videoQuotaDaily: number
243 }
244
245 videoChannels: {
246 maxPerUser: number
247 }
248
249 trending: {
250 videos: {
251 intervalDays: number
252 algorithms: {
253 enabled: string[]
254 default: string
255 }
256 }
257 }
258
259 tracker: {
260 enabled: boolean
261 }
262
263 followings: {
264 instance: {
265 autoFollowIndex: {
266 indexUrl: string
267 }
268 }
269 }
270
271 broadcastMessage: {
272 enabled: boolean
273 message: string
274 level: BroadcastMessageLevel
275 dismissable: boolean
276 }
277
278 homepage: {
279 enabled: boolean
280 }
281 }
282
283 export type HTMLServerConfig = Omit<ServerConfig, 'signup'>