1 /*************************************************
3 *************************************************/
5 /* Copyright (c) University of Cambridge 1995 - 2018 */
6 /* See the file NOTICE for conditions of use and distribution. */
11 /* This source module contains all the global variables used in
12 the exim monitor, including those that are used by the standard
13 Exim modules that are included in Eximon. For comments on their
14 usage, see em_hdr.h and globals.h. */
17 /* The first set are unique to Eximon */
20 XtAppContext X_appcon;
22 XtActionsRec actionTable[] = {
23 { "dialogAction", (XtActionProc)dialogAction}};
25 int actionTableSize = sizeof(actionTable)/sizeof(XtActionsRec);
27 XtTranslations queue_trans;
28 XtTranslations text_trans;
30 Widget dialog_ref_widget;
31 Widget toplevel_widget;
32 Widget log_widget = NULL;
34 Widget unhide_widget = NULL;
39 int action_output = FALSE;
40 int action_queue_update = TRUE;
41 uschar actioned_message[24];
42 uschar *action_required;
43 uschar *alternate_config = NULL;
45 #ifdef EXPERIMENTAL_BRIGHTMAIL
47 uschar *bmi_verdicts = NULL;
52 uschar *exim_path = US BIN_DIRECTORY "/exim"
53 "\0<---------------Space to patch exim_path->";
55 int eximon_initialized = FALSE;
57 int log_buffer_size = 10240;
58 BOOL log_datestamping = FALSE;
60 uschar *log_display_buffer;
61 uschar *log_file = NULL;
62 uschar log_file_open[256];
63 uschar *log_font = NULL;
65 long int log_position;
68 uschar *menu_event = US"Shift<Btn1Down>";
69 int menu_is_up = FALSE;
73 pipe_item *pipe_chain = NULL;
75 uschar *qualify_domain = NULL;
76 int queue_depth = 200;
77 uschar *queue_font = NULL;
78 int queue_max_addresses = 10;
79 skip_item *queue_skip = NULL;
80 uschar *queue_stripchart_name = NULL;
81 int queue_update = 60;
82 int queue_width = 600;
84 pcre2_code *yyyymmdd_regex;
86 uschar *size_stripchart = NULL;
87 uschar *size_stripchart_name = NULL;
88 int spool_is_split = FALSE;
89 int start_small = FALSE;
90 int stripchart_height = 90;
91 int stripchart_number = 1;
92 pcre2_code **stripchart_regex;
93 uschar **stripchart_title;
94 int *stripchart_total;
95 int stripchart_update = 60;
96 int stripchart_width = 80;
97 int stripchart_varstart = 1;
100 int tick_queue_accumulator = 999999;
102 uschar *window_title = US"exim monitor";
105 /***********************************************************/
106 /***********************************************************/
109 /* These ones are used by Exim modules included in Eximon. Not all are
110 actually relevant to the operation of Eximon. If SPOOL_DIRECTORY is not
111 defined (Exim was compiled with it unset), just define it empty. The script
112 that fires up the monitor fishes the value out by using -bP anyway. */
114 #ifndef SPOOL_DIRECTORY
115 #define SPOOL_DIRECTORY ""
118 tree_node *acl_var_c = NULL;
119 tree_node *acl_var_m = NULL;
120 uschar *active_hostname = NULL;
121 BOOL allow_unqualified_recipient = FALSE;
122 BOOL allow_unqualified_sender = FALSE;
123 uschar *authenticated_id = NULL;
124 uschar *authenticated_sender = NULL;
126 uschar *big_buffer = NULL;
127 int big_buffer_size = BIG_BUFFER_SIZE;
128 int body_linecount = 0;
129 int body_zerocount = 0;
131 BOOL deliver_firsttime = FALSE;
132 BOOL deliver_freeze = FALSE;
133 time_t deliver_frozen_at = 0;
134 BOOL deliver_manual_thaw = FALSE;
137 uschar *dkim_cur_signer = NULL;
138 uschar *dkim_signers = NULL;
139 uschar *dkim_signing_domain = NULL;
140 uschar *dkim_signing_selector = NULL;
141 uschar *dkim_verify_signers = US"$dkim_signers";
142 unsigned dkim_collect_input = 0;
143 BOOL dkim_disable_verify = FALSE;
146 BOOL dont_deliver = FALSE;
149 uschar *dsn_envid = NULL;
151 struct global_flags f = {
152 .sender_local = FALSE,
155 #ifdef WITH_CONTENT_SCAN
156 int fake_response = OK;
159 header_line *header_last = NULL;
160 header_line *header_list = NULL;
162 BOOL host_lookup_deferred = FALSE;
163 BOOL host_lookup_failed = FALSE;
164 uschar *interface_address = NULL;
165 int interface_port = 0;
167 BOOL local_error_message = FALSE;
168 uschar *local_scan_data = NULL;
169 BOOL log_timezone = FALSE;
171 #ifdef WITH_CONTENT_SCAN
172 uschar *spam_bar = NULL;
173 uschar *spam_report = NULL;
174 uschar *spam_score = NULL;
175 uschar *spam_score_int = NULL;
178 int max_received_linelength= 0;
181 uschar *message_id_external;
182 uschar message_id_option[MESSAGE_ID_LENGTH + 3];
184 int message_linecount = 0;
185 int message_size = 0;
186 uschar message_subdir[2] = { 0, 0 };
188 gid_t originator_gid;
189 uschar *originator_login;
190 uid_t originator_uid;
192 uschar *primary_hostname = NULL;
194 uschar *queue_name = US"";
196 int received_count = 0;
197 uschar *received_protocol = NULL;
198 struct timeval received_time = { 0, 0 };
199 struct timeval received_time_complete = { 0, 0 };
200 int recipients_count = 0;
201 recipient_item *recipients_list = NULL;
202 int recipients_list_max = 0;
203 BOOL running_in_test_harness=FALSE;
205 uschar *sender_address = NULL;
206 uschar *sender_fullhost = NULL;
207 uschar *sender_helo_name = NULL;
208 uschar *sender_host_address = NULL;
209 uschar *sender_host_auth_pubname = NULL;
210 uschar *sender_host_authenticated = NULL;
211 uschar *sender_host_name = NULL;
212 int sender_host_port = 0;
213 uschar *sender_ident = NULL;
214 BOOL sender_set_untrusted = FALSE;
215 uschar *smtp_active_hostname = NULL;
217 BOOL split_spool_directory = FALSE;
218 uschar *spool_directory = US SPOOL_DIRECTORY;
219 int string_datestamp_offset=-1;
220 int string_datestamp_length= 0;
221 int string_datestamp_type = -1;
223 BOOL timestamps_utc = FALSE;
224 tls_support tls_in = {
225 .active = { .sock = -1 }
226 /* remainder zero/null/false */
229 tree_node *tree_duplicates = NULL;
230 tree_node *tree_nonrecipients = NULL;
231 tree_node *tree_unusable = NULL;
233 uschar *version_date = US"?";
234 uschar *version_string = US"?";
236 int warning_count = 0;
238 /* End of em_globals.c */