summary refs log tree commit diff
path: root/api/scripts/config_generator.js
blob: 5b5c52d416b5c509e5affa3ee1fa9b4b9c6e5e7d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
const { Snowflake } = require("@fosscord/server-util");
const crypto = require('crypto');
const fs = require('fs');


const defaultConfig = {
    // TODO: Get the network interfaces dinamically
    gateway: "ws://localhost",
    general: {
        instance_id: Snowflake.generate(),
    },
    permissions: {
        user: {
            createGuilds: true,
        }
    },
    limits: {
        user: {
            maxGuilds: 100,
            maxUsername: 32,
            maxFriends: 1000,
        },
        guild: {
            maxRoles: 250,
            maxMembers: 250000,
            maxChannels: 500,
            maxChannelsInCategory: 50,
            hideOfflineMember: 1000,
        },
        message: {
			characters: 2000,
			ttsCharacters: 200,
			maxReactions: 20,
			maxAttachmentSize: 8388608,
			maxBulkDelete: 100,
		},
		channel: {
			maxPins: 50,
			maxTopic: 1024,
		},
		rate: {
			ip: {
				enabled: true,
				count: 1000,
				timespan: 1000 * 60 * 10,
			},
			routes: {},
		},
	},
	security: {
		jwtSecret: crypto.randomBytes(256).toString("base64"),
		forwadedFor: null,
		// forwadedFor: "X-Forwarded-For" // nginx/reverse proxy
		// forwadedFor: "CF-Connecting-IP" // cloudflare:
		captcha: {
			enabled: false,
			service: null,
			sitekey: null,
			secret: null,
		},
	},
	login: {
		requireCaptcha: false,
	},
	register: {
		email: {
			necessary: true,
			allowlist: false,
			blocklist: true,
			domains: [], // TODO: efficiently save domain blocklist in database
			// domains: fs.readFileSync(__dirname + "/blockedEmailDomains.txt", { encoding: "utf8" }).split("\n"),
		},
		dateOfBirth: {
			necessary: true,
			minimum: 13,
		},
		requireInvite: false,
		requireCaptcha: true,
		allowNewRegistration: true,
		allowMultipleAccounts: true,
		password: {
			minLength: 8,
			minNumbers: 2,
			minUpperCase: 2,
			minSymbols: 0,
			blockInsecureCommonPasswords: false,
		},
    },
}

let data = JSON.stringify(defaultConfig);
fs.writeFileSync('./.docker/config/api.json', data);