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