1 /*************************************************
3 *************************************************/
5 /* Copyright (c) The Exim Maintainers 2021 - 2024 */
6 /* Copyright (c) University of Cambridge 1995 - 2018 */
7 /* See the file NOTICE for conditions of use and distribution. */
8 /* SPDX-License-Identifier: GPL-2.0-or-later */
13 /* This source module contains all the global variables used in
14 the exim monitor, including those that are used by the standard
15 Exim modules that are included in Eximon. For comments on their
16 usage, see em_hdr.h and globals.h. */
19 /* The first set are unique to Eximon */
22 XtAppContext X_appcon;
24 XtActionsRec actionTable[] = {
25 { "dialogAction", (XtActionProc)dialogAction}};
27 int actionTableSize = sizeof(actionTable)/sizeof(XtActionsRec);
29 XtTranslations queue_trans;
30 XtTranslations text_trans;
32 Widget dialog_ref_widget;
33 Widget toplevel_widget;
34 Widget log_widget = NULL;
36 Widget unhide_widget = NULL;
41 int action_output = FALSE;
42 int action_queue_update = TRUE;
43 uschar actioned_message[24];
44 uschar *action_required;
45 uschar *alternate_config = NULL;
47 #ifdef EXPERIMENTAL_BRIGHTMAIL
49 uschar *bmi_verdicts = NULL;
54 uschar *exim_path = US BIN_DIRECTORY "/exim"
55 "\0<---------------Space to patch exim_path->";
57 int eximon_initialized = FALSE;
59 int log_buffer_size = 10240;
60 BOOL log_datestamping = FALSE;
62 uschar *log_display_buffer;
63 uschar *log_file = NULL;
64 uschar log_file_open[256];
65 uschar *log_font = NULL;
67 long int log_position;
70 uschar *menu_event = US"Shift<Btn1Down>";
71 int menu_is_up = FALSE;
75 pipe_item *pipe_chain = NULL;
77 uschar *qualify_domain = NULL;
78 int queue_depth = 200;
79 uschar *queue_font = NULL;
80 int queue_max_addresses = 10;
81 skip_item *queue_skip = NULL;
82 uschar *queue_stripchart_name = NULL;
83 int queue_update = 60;
84 int queue_width = 600;
86 pcre2_code *yyyymmdd_regex;
88 uschar *size_stripchart = NULL;
89 uschar *size_stripchart_name = NULL;
90 int spool_is_split = FALSE;
91 int start_small = FALSE;
92 int stripchart_height = 90;
93 int stripchart_number = 1;
94 pcre2_code **stripchart_regex;
95 uschar **stripchart_title;
96 int *stripchart_total;
97 int stripchart_update = 60;
98 int stripchart_width = 80;
99 int stripchart_varstart = 1;
101 int text_depth = 200;
102 int tick_queue_accumulator = 999999;
104 uschar *window_title = US"exim monitor";
107 /***********************************************************/
108 /***********************************************************/
111 /* These ones are used by Exim modules included in Eximon. Not all are
112 actually relevant to the operation of Eximon. If SPOOL_DIRECTORY is not
113 defined (Exim was compiled with it unset), just define it empty. The script
114 that fires up the monitor fishes the value out by using -bP anyway. */
116 #ifndef SPOOL_DIRECTORY
117 #define SPOOL_DIRECTORY ""
120 tree_node *acl_var_c = NULL;
121 tree_node *acl_var_m = NULL;
122 uschar *active_hostname = NULL;
123 BOOL allow_unqualified_recipient = FALSE;
124 BOOL allow_unqualified_sender = FALSE;
125 uschar *authenticated_id = NULL;
126 uschar *authenticated_sender = NULL;
128 uschar *big_buffer = NULL;
129 int big_buffer_size = BIG_BUFFER_SIZE;
130 int body_linecount = 0;
131 int body_zerocount = 0;
133 BOOL deliver_firsttime = FALSE;
134 BOOL deliver_freeze = FALSE;
135 time_t deliver_frozen_at = 0;
136 BOOL deliver_manual_thaw = FALSE;
139 uschar *dkim_cur_signer = NULL;
140 uschar *dkim_signers = NULL;
141 uschar *dkim_signing_domain = NULL;
142 uschar *dkim_signing_selector = NULL;
143 uschar *dkim_verify_signers = US"$dkim_signers";
144 unsigned dkim_collect_input = 0;
145 BOOL dkim_disable_verify = FALSE;
148 BOOL dont_deliver = FALSE;
151 uschar *dsn_envid = NULL;
153 struct global_flags f = {
154 .sender_local = FALSE,
157 #ifdef WITH_CONTENT_SCAN
158 int fake_response = OK;
161 header_line *header_last = NULL;
162 header_line *header_list = NULL;
164 BOOL host_lookup_deferred = FALSE;
165 BOOL host_lookup_failed = FALSE;
166 uschar *interface_address = NULL;
167 int interface_port = 0;
169 BOOL local_error_message = FALSE;
170 uschar *local_scan_data = NULL;
171 BOOL log_timezone = FALSE;
173 #ifdef WITH_CONTENT_SCAN
174 uschar *spam_bar = NULL;
175 uschar *spam_report = NULL;
176 uschar *spam_score = NULL;
177 uschar *spam_score_int = NULL;
180 int max_received_linelength= 0;
183 uschar *message_id_external;
184 uschar message_id_option[MESSAGE_ID_LENGTH + 3];
186 int message_linecount = 0;
187 int message_size = 0;
188 uschar message_subdir[2] = { 0, 0 };
190 gid_t originator_gid;
191 uschar *originator_login;
192 uid_t originator_uid;
194 uschar *primary_hostname = NULL;
196 uschar *queue_name = US"";
198 int received_count = 0;
199 uschar *received_protocol = NULL;
200 struct timeval received_time = { 0, 0 };
201 struct timeval received_time_complete = { 0, 0 };
202 int recipients_count = 0;
203 recipient_item *recipients_list = NULL;
204 int recipients_list_max = 0;
205 BOOL running_in_test_harness=FALSE;
207 const uschar *sender_address = NULL;
208 uschar *sender_fullhost = NULL;
209 uschar *sender_helo_name = NULL;
210 uschar *sender_host_address = NULL;
211 uschar *sender_host_auth_pubname = NULL;
212 uschar *sender_host_authenticated = NULL;
213 uschar *sender_host_name = NULL;
214 int sender_host_port = 0;
215 uschar *sender_ident = NULL;
216 BOOL sender_set_untrusted = FALSE;
217 uschar *smtp_active_hostname = NULL;
219 BOOL split_spool_directory = FALSE;
220 uschar *spool_directory = US SPOOL_DIRECTORY;
221 int string_datestamp_offset=-1;
222 int string_datestamp_length= 0;
223 int string_datestamp_type = -1;
225 BOOL timestamps_utc = FALSE;
226 tls_support tls_in = {
227 .active = { .sock = -1 }
228 /* remainder zero/null/false */
231 tree_node *tree_duplicates = NULL;
232 tree_node *tree_nonrecipients = NULL;
233 tree_node *tree_unusable = NULL;
235 uschar *version_date = US"?";
236 uschar *version_string = US"?";
238 int warning_count = 0;
240 /* End of em_globals.c */