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