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