]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/server/server-config.model.ts
@peertube/embed-api 0.0.
[github/Chocobozzz/PeerTube.git] / shared / models / server / server-config.model.ts
1 import { ClientScript } from '../plugins/plugin-package-json.model'
2 import { NSFWPolicyType } from '../videos/nsfw-policy.type'
3 import { BroadcastMessageLevel } from './broadcast-message-level.type'
4
5 export interface ServerConfigPlugin {
6 name: string
7 version: string
8 description: string
9 clientScripts: { [name: string]: ClientScript }
10 }
11
12 export interface ServerConfigTheme extends ServerConfigPlugin {
13 css: string[]
14 }
15
16 export interface RegisteredExternalAuthConfig {
17 npmName: string
18 name: string
19 version: string
20 authName: string
21 authDisplayName: string
22 }
23
24 export interface RegisteredIdAndPassAuthConfig {
25 npmName: string
26 name: string
27 version: string
28 authName: string
29 weight: number
30 }
31
32 export 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 trending: {
207 videos: {
208 intervalDays: number
209 algorithms: {
210 enabled: string[]
211 default: string
212 }
213 }
214 }
215
216 tracker: {
217 enabled: boolean
218 }
219
220 followings: {
221 instance: {
222 autoFollowIndex: {
223 indexUrl: string
224 }
225 }
226 }
227
228 broadcastMessage: {
229 enabled: boolean
230 message: string
231 level: BroadcastMessageLevel
232 dismissable: boolean
233 }
234
235 homepage: {
236 enabled: boolean
237 }
238 }
239
240 export type HTMLServerConfig = Omit<ServerConfig, 'signup'>