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