]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/server/server-config.model.ts
Add P2P enabled/disabled in player card
[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 p2p: {
60 enabled: boolean
61 }
62 }
63
64 webadmin: {
65 configuration: {
66 edition: {
67 allowed: boolean
68 }
69 }
70 }
71
72 instance: {
73 name: string
74 shortDescription: string
75 isNSFW: boolean
76 defaultNSFWPolicy: NSFWPolicyType
77 defaultClientRoute: string
78 customizations: {
79 javascript: string
80 css: string
81 }
82 }
83
84 search: {
85 remoteUri: {
86 users: boolean
87 anonymous: boolean
88 }
89
90 searchIndex: {
91 enabled: boolean
92 url: string
93 disableLocalSearch: boolean
94 isDefaultSearch: boolean
95 }
96 }
97
98 plugin: {
99 registered: ServerConfigPlugin[]
100
101 registeredExternalAuths: RegisteredExternalAuthConfig[]
102
103 registeredIdAndPassAuths: RegisteredIdAndPassAuthConfig[]
104 }
105
106 theme: {
107 registered: ServerConfigTheme[]
108 default: string
109 }
110
111 email: {
112 enabled: boolean
113 }
114
115 contactForm: {
116 enabled: boolean
117 }
118
119 signup: {
120 allowed: boolean
121 allowedForCurrentIP: boolean
122 requiresEmailVerification: boolean
123 minimumAge: number
124 }
125
126 transcoding: {
127 hls: {
128 enabled: boolean
129 }
130
131 webtorrent: {
132 enabled: boolean
133 }
134
135 enabledResolutions: number[]
136
137 profile: string
138 availableProfiles: string[]
139 }
140
141 live: {
142 enabled: boolean
143
144 maxDuration: number
145 maxInstanceLives: number
146 maxUserLives: number
147 allowReplay: boolean
148
149 transcoding: {
150 enabled: boolean
151
152 enabledResolutions: number[]
153
154 profile: string
155 availableProfiles: string[]
156 }
157
158 rtmp: {
159 port: number
160 }
161 }
162
163 import: {
164 videos: {
165 http: {
166 enabled: boolean
167 }
168 torrent: {
169 enabled: boolean
170 }
171 }
172 }
173
174 autoBlacklist: {
175 videos: {
176 ofUsers: {
177 enabled: boolean
178 }
179 }
180 }
181
182 avatar: {
183 file: {
184 size: {
185 max: number
186 }
187 extensions: string[]
188 }
189 }
190
191 banner: {
192 file: {
193 size: {
194 max: number
195 }
196 extensions: string[]
197 }
198 }
199
200 video: {
201 image: {
202 size: {
203 max: number
204 }
205 extensions: string[]
206 }
207 file: {
208 extensions: string[]
209 }
210 }
211
212 videoCaption: {
213 file: {
214 size: {
215 max: number
216 }
217 extensions: string[]
218 }
219 }
220
221 user: {
222 videoQuota: number
223 videoQuotaDaily: number
224 }
225
226 videoChannels: {
227 maxPerUser: number
228 }
229
230 trending: {
231 videos: {
232 intervalDays: number
233 algorithms: {
234 enabled: string[]
235 default: string
236 }
237 }
238 }
239
240 tracker: {
241 enabled: boolean
242 }
243
244 followings: {
245 instance: {
246 autoFollowIndex: {
247 indexUrl: string
248 }
249 }
250 }
251
252 broadcastMessage: {
253 enabled: boolean
254 message: string
255 level: BroadcastMessageLevel
256 dismissable: boolean
257 }
258
259 homepage: {
260 enabled: boolean
261 }
262 }
263
264 export type HTMLServerConfig = Omit<ServerConfig, 'signup'>