aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/Config.java
blob: 16db57e0ccfbf38badd6421a415a008bbb0bb24e (plain)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package eu.siacs.conversations;

import android.graphics.Bitmap;

import de.thedevstack.conversationsplus.ConversationsPlusPreferences;
import eu.siacs.conversations.xmpp.chatstate.ChatState;

public final class Config {


	private static final int UNENCRYPTED = 1;
	private static final int OPENPGP = 2;
	private static final int OTR = 4;
	private static final int OMEMO = 8;

	private static final int ENCRYPTION_MASK = UNENCRYPTED | OPENPGP | OTR | OMEMO;

	public static boolean supportUnencrypted() {
		return (ENCRYPTION_MASK & UNENCRYPTED) != 0;
	}

	public static boolean supportOpenPgp() {
		return (ENCRYPTION_MASK & OPENPGP) != 0;
	}

	public static boolean supportOpenPgpOnly() {
		return supportOpenPgp() && !multipleEncryptionChoices();
	}

	public static boolean supportOtr() {
		return (ENCRYPTION_MASK & OTR) != 0;
	}

	public static boolean supportOmemo() {
		return ConversationsPlusPreferences.omemoEnabled();
	}

	public static boolean multipleEncryptionChoices() {
		return (ENCRYPTION_MASK & (ENCRYPTION_MASK - 1)) != 0;
	}

	public static final String LOGTAG = "conversations";


	public static final String DOMAIN_LOCK = null; //only allow account creation for this domain
	public static final String CONFERENCE_DOMAIN_LOCK = null; //only allow conference creation for this domain
	public static final boolean LOCK_DOMAINS_IN_CONVERSATIONS = false; //only add contacts and conferences for own domains

	public static final boolean SINGLE_ACCOUNT = false; //set to true to allow only one account
	public static final boolean DISALLOW_REGISTRATION_IN_UI = false; //hide the register checkbox

	public static final boolean ALLOW_NON_TLS_CONNECTIONS = false; //very dangerous. you should have a good reason to set this to true
	public static final boolean HIDE_MESSAGE_TEXT_IN_NOTIFICATION = false;
	public static final boolean SHOW_CONNECTED_ACCOUNTS = false; //show number of connected accounts in foreground notification

	public static final boolean ALWAYS_NOTIFY_BY_DEFAULT = false;

	public static final boolean LEGACY_NAMESPACE_HTTP_UPLOAD = false;

	public static final int PING_MAX_INTERVAL = 300;
	public static final int PING_MIN_INTERVAL = 30;
	public static final int PING_TIMEOUT = 15;
	public static final int SOCKET_TIMEOUT = 15;
	public static final int CONNECT_TIMEOUT = 90;
	public static final int CONNECT_DISCO_TIMEOUT = 20;
	public static final int CARBON_GRACE_PERIOD = 90;
	public static final int MINI_GRACE_PERIOD = 750;

	public static final boolean CLOSE_TCP_WHEN_SWITCHING_TO_BACKGROUND = false;

	public static final int AVATAR_SIZE = 192;
	public static final Bitmap.CompressFormat AVATAR_FORMAT = Bitmap.CompressFormat.PNG;

	public static final int IMAGE_SIZE = 1920;
	public static final Bitmap.CompressFormat IMAGE_FORMAT = Bitmap.CompressFormat.JPEG;
	public static final int IMAGE_QUALITY = 75;
	public static final int IMAGE_MAX_SIZE = 524288; //512KiB

	public static final int MESSAGE_MERGE_WINDOW = 20;

	public static final boolean UTF8_EMOTICONS = false;

	public static final int PAGE_SIZE = 50;
	public static final int MAX_NUM_PAGES = 3;

	public static final int PROGRESS_UI_UPDATE_INTERVAL = 750;
	public static final int REFRESH_UI_INTERVAL = 500;

	public static final boolean DISABLE_PROXY_LOOKUP = false; //useful to debug ibb
	public static final boolean DISABLE_HTTP_UPLOAD = false;
	public static final boolean DISABLE_STRING_PREP = false; // setting to true might increase startup performance
	public static final boolean EXTENDED_SM_LOGGING = false; // log stanza counts
	public static final boolean RESET_ATTEMPT_COUNT_ON_NETWORK_CHANGE = true; //setting to true might increase power consumption

	public static final boolean ENCRYPT_ON_HTTP_UPLOADED = false;

	public static final boolean REPORT_WRONG_FILESIZE_IN_OTR_JINGLE = true;

	public static final boolean SHOW_REGENERATE_AXOLOTL_KEYS_BUTTON = false;

	public static final boolean X509_VERIFICATION = false; //use x509 certificates to verify OMEMO keys

	public static final boolean IGNORE_ID_REWRITE_IN_MUC = true;

	public static final boolean REQUEST_DISCO = true;

	public static final long MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;
	public static final long MAM_MAX_CATCHUP =  MILLISECONDS_IN_DAY / 2;
	public static final int MAM_MAX_MESSAGES = 500;

	public static final ChatState DEFAULT_CHATSTATE = ChatState.ACTIVE;
	public static final int TYPING_TIMEOUT = 8;

	public static final String ENABLED_CIPHERS[] = {
		"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
		"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA384",
		"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA256",
		"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
		"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
		"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",

		"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",
		"TLS_DHE_RSA_WITH_AES_128_GCM_SHA384",
		"TLS_DHE_RSA_WITH_AES_256_GCM_SHA256",
		"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",

		"TLS_DHE_RSA_WITH_CAMELLIA_256_SHA",

		// Fallback.
		"TLS_RSA_WITH_AES_128_GCM_SHA256",
		"TLS_RSA_WITH_AES_128_GCM_SHA384",
		"TLS_RSA_WITH_AES_256_GCM_SHA256",
		"TLS_RSA_WITH_AES_256_GCM_SHA384",
		"TLS_RSA_WITH_AES_128_CBC_SHA256",
		"TLS_RSA_WITH_AES_128_CBC_SHA384",
		"TLS_RSA_WITH_AES_256_CBC_SHA256",
		"TLS_RSA_WITH_AES_256_CBC_SHA384",
		"TLS_RSA_WITH_AES_128_CBC_SHA",
		"TLS_RSA_WITH_AES_256_CBC_SHA",
	};

	public static final String WEAK_CIPHER_PATTERNS[] = {
		"_NULL_",
		"_EXPORT_",
		"_anon_",
		"_RC4_",
		"_DES_",
		"_MD5",
	};

	private Config() {
	}
}