]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/server/server-config.model.ts
d6c660aac05c56bda8d32ab237c1e7ed8b9b0873
[github/Chocobozzz/PeerTube.git] / shared / models / server / server-config.model.ts
1 import { NSFWPolicyType } from '../videos/nsfw-policy.type'
2 import { ClientScript } from '../plugins/plugin-package-json.model'
3
4 export type ServerConfigPlugin = {
5 name: string
6 version: string
7 description: string
8 clientScripts: { [name: string]: ClientScript }
9 }
10
11 export interface ServerConfig {
12 serverVersion: string
13 serverCommit?: string
14
15 instance: {
16 name: string
17 shortDescription: string
18 defaultClientRoute: string
19 isNSFW: boolean
20 defaultNSFWPolicy: NSFWPolicyType
21 customizations: {
22 javascript: string
23 css: string
24 }
25 }
26
27 plugin: {
28 registered: ServerConfigPlugin[]
29 }
30
31 theme: {
32 registered: ServerConfigPlugin[]
33 default: string
34 }
35
36 email: {
37 enabled: boolean
38 }
39
40 contactForm: {
41 enabled: boolean
42 }
43
44 signup: {
45 allowed: boolean,
46 allowedForCurrentIP: boolean
47 requiresEmailVerification: boolean
48 }
49
50 transcoding: {
51 hls: {
52 enabled: boolean
53 }
54
55 enabledResolutions: number[]
56 }
57
58 import: {
59 videos: {
60 http: {
61 enabled: boolean
62 }
63 torrent: {
64 enabled: boolean
65 }
66 }
67 }
68
69 autoBlacklist: {
70 videos: {
71 ofUsers: {
72 enabled: boolean
73 }
74 }
75 }
76
77 avatar: {
78 file: {
79 size: {
80 max: number
81 }
82 extensions: string[]
83 }
84 }
85
86 video: {
87 image: {
88 size: {
89 max: number
90 }
91 extensions: string[]
92 },
93 file: {
94 extensions: string[]
95 }
96 }
97
98 videoCaption: {
99 file: {
100 size: {
101 max: number
102 },
103 extensions: string[]
104 }
105 }
106
107 user: {
108 videoQuota: number
109 videoQuotaDaily: number
110 }
111
112 trending: {
113 videos: {
114 intervalDays: number
115 }
116 }
117
118 tracker: {
119 enabled: boolean
120 }
121 }