ARC: harden against malformed headers
[exim.git] / src / exim_monitor / em_globals.c
CommitLineData
059ec3d9
PH
1/*************************************************
2* Exim Monitor *
3*************************************************/
4
f9ba5e22 5/* Copyright (c) University of Cambridge 1995 - 2018 */
059ec3d9
PH
6/* See the file NOTICE for conditions of use and distribution. */
7
8
9#include "em_hdr.h"
10
11/* This source module contains all the global variables used in
12the exim monitor, including those that are used by the standard
13Exim modules that are included in Eximon. For comments on their
14usage, see em_hdr.h and globals.h. */
15
16
17/* The first set are unique to Eximon */
18
19Display *X_display;
20XtAppContext X_appcon;
21
22XtActionsRec actionTable[] = {
23 { "dialogAction", (XtActionProc)dialogAction}};
24
25int actionTableSize = sizeof(actionTable)/sizeof(XtActionsRec);
26
27XtTranslations queue_trans;
28XtTranslations text_trans;
29
30Widget dialog_ref_widget;
31Widget toplevel_widget;
32Widget log_widget = NULL;
33Widget queue_widget;
34Widget unhide_widget = NULL;
35
36
37FILE *LOG;
38
39int action_output = FALSE;
40int action_queue_update = TRUE;
41uschar actioned_message[24];
42uschar *action_required;
43uschar *alternate_config = NULL;
44
8523533c
TK
45#ifdef EXPERIMENTAL_BRIGHTMAIL
46int bmi_run = 0;
47uschar *bmi_verdicts = NULL;
48#endif
49
059ec3d9
PH
50int body_max = 20000;
51
52uschar *exim_path = US BIN_DIRECTORY "/exim"
4d9c610b 53 "\0<---------------Space to patch exim_path->";
059ec3d9
PH
54
55int eximon_initialized = FALSE;
56
57int log_buffer_size = 10240;
58BOOL log_datestamping = FALSE;
59int log_depth = 150;
60uschar *log_display_buffer;
61uschar *log_file = NULL;
62uschar log_file_open[256];
63uschar *log_font = NULL;
64ino_t log_inode;
65long int log_position;
66int log_width = 600;
67
68uschar *menu_event = US"Shift<Btn1Down>";
69int menu_is_up = FALSE;
70int min_height = 162;
71int min_width = 103;
72
73pipe_item *pipe_chain = NULL;
74
75uschar *qualify_domain = NULL;
76int queue_depth = 200;
77uschar *queue_font = NULL;
78int queue_max_addresses = 10;
79skip_item *queue_skip = NULL;
80uschar *queue_stripchart_name = NULL;
81int queue_update = 60;
82int queue_width = 600;
83
84pcre *yyyymmdd_regex;
85
86uschar *size_stripchart = NULL;
87uschar *size_stripchart_name = NULL;
88int spool_is_split = FALSE;
89int start_small = FALSE;
90int stripchart_height = 90;
91int stripchart_number = 1;
92pcre **stripchart_regex;
93uschar **stripchart_title;
94int *stripchart_total;
95int stripchart_update = 60;
96int stripchart_width = 80;
97int stripchart_varstart = 1;
98
99int text_depth = 200;
100int tick_queue_accumulator = 999999;
101
102uschar *window_title = US"exim monitor";
103
104
105/***********************************************************/
106/***********************************************************/
107
108
109/* These ones are used by Exim modules included in Eximon. Not all are
110actually relevant to the operation of Eximon. If SPOOL_DIRECTORY is not
111defined (Exim was compiled with it unset), just define it empty. The script
112that fires up the monitor fishes the value out by using -bP anyway. */
113
114#ifndef SPOOL_DIRECTORY
115#define SPOOL_DIRECTORY ""
116#endif
117
38a0a95f
PH
118tree_node *acl_var_c = NULL;
119tree_node *acl_var_m = NULL;
059ec3d9
PH
120uschar *active_hostname = NULL;
121BOOL allow_unqualified_recipient = FALSE;
122BOOL allow_unqualified_sender = FALSE;
123uschar *authenticated_id = NULL;
124uschar *authenticated_sender = NULL;
125
126uschar *big_buffer = NULL;
127int big_buffer_size = BIG_BUFFER_SIZE;
128int body_linecount = 0;
129int body_zerocount = 0;
130
131BOOL deliver_firsttime = FALSE;
132BOOL deliver_freeze = FALSE;
19050083 133time_t deliver_frozen_at = 0;
059ec3d9 134BOOL deliver_manual_thaw = FALSE;
4d9c610b 135
015f07e6 136#ifndef DISABLE_DKIM
51cbd3e1
TK
137uschar *dkim_cur_signer = NULL;
138uschar *dkim_signers = NULL;
015f07e6
TK
139uschar *dkim_signing_domain = NULL;
140uschar *dkim_signing_selector = NULL;
51cbd3e1 141uschar *dkim_verify_signers = US"$dkim_signers";
64b67b65 142unsigned dkim_collect_input = 0;
015f07e6 143BOOL dkim_disable_verify = FALSE;
1d805650
TK
144#endif
145
059ec3d9
PH
146BOOL dont_deliver = FALSE;
147
6c1c3d1d
WB
148int dsn_ret = 0;
149uschar *dsn_envid = NULL;
6c1c3d1d 150
8768d548
JH
151struct global_flags f = {
152 .sender_local = FALSE,
153};
154
8523533c 155#ifdef WITH_CONTENT_SCAN
29aba418 156int fake_response = OK;
8523533c
TK
157#endif
158
059ec3d9
PH
159header_line *header_last = NULL;
160header_line *header_list = NULL;
161
b08b24c8 162BOOL host_lookup_deferred = FALSE;
059ec3d9
PH
163BOOL host_lookup_failed = FALSE;
164uschar *interface_address = NULL;
165int interface_port = 0;
166
167BOOL local_error_message = FALSE;
168uschar *local_scan_data = NULL;
169BOOL log_timezone = FALSE;
8523533c
TK
170
171#ifdef WITH_CONTENT_SCAN
83e11d00
MH
172uschar *spam_bar = NULL;
173uschar *spam_report = NULL;
174uschar *spam_score = NULL;
8523533c
TK
175uschar *spam_score_int = NULL;
176#endif
177
d677b2f2 178int max_received_linelength= 0;
059ec3d9
PH
179int message_age = 0;
180uschar *message_id;
181uschar *message_id_external;
182uschar message_id_option[MESSAGE_ID_LENGTH + 3];
183
184int message_linecount = 0;
185int message_size = 0;
186uschar message_subdir[2] = { 0, 0 };
187
188gid_t originator_gid;
189uschar *originator_login;
190uid_t originator_uid;
191
192uschar *primary_hostname = NULL;
193
a2da3176
JH
194uschar *queue_name = US"";
195
059ec3d9
PH
196int received_count = 0;
197uschar *received_protocol = NULL;
32dfdf8b 198struct timeval received_time = { 0, 0 };
059ec3d9
PH
199int recipients_count = 0;
200recipient_item *recipients_list = NULL;
201int recipients_list_max = 0;
a207d5dd 202BOOL running_in_test_harness=FALSE;
059ec3d9
PH
203
204uschar *sender_address = NULL;
205uschar *sender_fullhost = NULL;
206uschar *sender_helo_name = NULL;
207uschar *sender_host_address = NULL;
208uschar *sender_host_authenticated = NULL;
209uschar *sender_host_name = NULL;
210int sender_host_port = 0;
211uschar *sender_ident = NULL;
059ec3d9 212BOOL sender_set_untrusted = FALSE;
1f5b4c3d 213uschar *smtp_active_hostname = NULL;
059ec3d9
PH
214
215BOOL split_spool_directory = FALSE;
216uschar *spool_directory = US SPOOL_DIRECTORY;
217int string_datestamp_offset=-1;
f1e5fef5
PP
218int string_datestamp_length= 0;
219int string_datestamp_type = -1;
059ec3d9
PH
220
221BOOL timestamps_utc = FALSE;
817d9f57 222tls_support tls_in = {
74f1a423 223 {-1}, /* tls_active */
6c60858c 224 0, /* bits */
817d9f57 225 FALSE, /* tls_certificate_verified */
c0635b6d 226#ifdef SUPPORT_DANE
e91ad4a7
JH
227 FALSE, /* dane_verified */
228 0, /* tlsa_usage */
229#endif
817d9f57
JH
230 NULL, /* tls_cipher */
231 FALSE, /* tls_on_connect */
232 NULL, /* tls_on_connect_ports */
233 NULL, /* tls_peerdn */
234 NULL /* tls_sni */
235};
059ec3d9
PH
236
237tree_node *tree_duplicates = NULL;
238tree_node *tree_nonrecipients = NULL;
239tree_node *tree_unusable = NULL;
240
241uschar *version_date = US"?";
242uschar *version_string = US"?";
243
244int warning_count = 0;
245
246/* End of em_globals.c */