summaryrefslogtreecommitdiffstats
path: root/exim_monitor/em_globals.c
blob: 3d452c6ec177436fa30a372ac03315dba82aa9ce (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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
/*************************************************
*                Exim Monitor                    *
*************************************************/

/* Copyright (c) University of Cambridge 1995 - 2018 */
/* Copyright (c) The Exim Maintainers 2021 */
/* See the file NOTICE for conditions of use and distribution. */


#include "em_hdr.h"

/* This source module contains all the global variables used in
the exim monitor, including those that are used by the standard
Exim modules that are included in Eximon. For comments on their
usage, see em_hdr.h and globals.h. */


/* The first set are unique to Eximon */

Display *X_display;
XtAppContext X_appcon;

XtActionsRec actionTable[] = {
  { "dialogAction",  (XtActionProc)dialogAction}};

int actionTableSize = sizeof(actionTable)/sizeof(XtActionsRec);

XtTranslations queue_trans;
XtTranslations text_trans;

Widget  dialog_ref_widget;
Widget  toplevel_widget;
Widget  log_widget = NULL;
Widget  queue_widget;
Widget  unhide_widget = NULL;


FILE   *LOG;

int     action_output = FALSE;
int     action_queue_update = TRUE;
uschar  actioned_message[24];
uschar *action_required;
uschar *alternate_config = NULL;

#ifdef EXPERIMENTAL_BRIGHTMAIL
int     bmi_run                = 0;
uschar *bmi_verdicts           = NULL;
#endif

int     body_max = 20000;

uschar *exim_path              = US BIN_DIRECTORY "/exim"
                        "\0<---------------Space to patch exim_path->";

int     eximon_initialized = FALSE;

int     log_buffer_size = 10240;
BOOL    log_datestamping = FALSE;
int     log_depth = 150;
uschar *log_display_buffer;
uschar *log_file = NULL;
uschar  log_file_open[256];
uschar *log_font = NULL;
ino_t   log_inode;
long int log_position;
int     log_width = 600;

uschar *menu_event = US"Shift<Btn1Down>";
int     menu_is_up = FALSE;
int     min_height = 162;
int     min_width  = 103;

pipe_item *pipe_chain = NULL;

uschar *qualify_domain = NULL;
int     queue_depth = 200;
uschar *queue_font = NULL;
int     queue_max_addresses = 10;
skip_item *queue_skip = NULL;
uschar *queue_stripchart_name = NULL;
int     queue_update = 60;
int     queue_width = 600;

pcre2_code   *yyyymmdd_regex;

uschar *size_stripchart = NULL;
uschar *size_stripchart_name = NULL;
int     spool_is_split = FALSE;
int     start_small = FALSE;
int     stripchart_height = 90;
int     stripchart_number = 1;
pcre2_code  **stripchart_regex;
uschar **stripchart_title;
int    *stripchart_total;
int     stripchart_update = 60;
int     stripchart_width = 80;
int     stripchart_varstart = 1;

int     text_depth = 200;
int     tick_queue_accumulator = 999999;

uschar *window_title = US"exim monitor";


/***********************************************************/
/***********************************************************/


/* These ones are used by Exim modules included in Eximon. Not all are
actually relevant to the operation of Eximon. If SPOOL_DIRECTORY is not
defined (Exim was compiled with it unset), just define it empty. The script
that fires up the monitor fishes the value out by using -bP anyway. */

#ifndef SPOOL_DIRECTORY
#define SPOOL_DIRECTORY ""
#endif

tree_node *acl_var_c           = NULL;
tree_node *acl_var_m           = NULL;
uschar *active_hostname        = NULL;
BOOL    allow_unqualified_recipient = FALSE;
BOOL    allow_unqualified_sender = FALSE;
uschar *authenticated_id       = NULL;
uschar *authenticated_sender   = NULL;

uschar *big_buffer             = NULL;
int     big_buffer_size        = BIG_BUFFER_SIZE;
int     body_linecount         = 0;
int     body_zerocount         = 0;

BOOL    deliver_firsttime      = FALSE;
BOOL    deliver_freeze         = FALSE;
time_t  deliver_frozen_at      = 0;
BOOL    deliver_manual_thaw    = FALSE;

#ifndef DISABLE_DKIM
uschar *dkim_cur_signer          = NULL;
uschar *dkim_signers             = NULL;
uschar *dkim_signing_domain      = NULL;
uschar *dkim_signing_selector    = NULL;
uschar *dkim_verify_signers      = US"$dkim_signers";
unsigned dkim_collect_input      = 0;
BOOL    dkim_disable_verify      = FALSE;
#endif

BOOL    dont_deliver           = FALSE;

int     dsn_ret                = 0;
uschar *dsn_envid              = NULL;

struct global_flags f = {
 .sender_local		= FALSE,
};

#ifdef WITH_CONTENT_SCAN
int     fake_response          = OK;
#endif

header_line *header_last       = NULL;
header_line *header_list       = NULL;

BOOL    host_lookup_deferred   = FALSE;
BOOL    host_lookup_failed     = FALSE;
uschar *interface_address      = NULL;
int     interface_port         = 0;

BOOL    local_error_message    = FALSE;
uschar *local_scan_data        = NULL;
BOOL    log_timezone           = FALSE;

#ifdef WITH_CONTENT_SCAN
uschar *spam_bar               = NULL;
uschar *spam_report            = NULL;
uschar *spam_score             = NULL;
uschar *spam_score_int         = NULL;
#endif

int     max_received_linelength= 0;
int     message_age            = 0;
uschar *message_id;
uschar *message_id_external;
uschar  message_id_option[MESSAGE_ID_LENGTH + 3];

int     message_linecount      = 0;
int     message_size           = 0;
uschar  message_subdir[2]      = { 0, 0 };

gid_t   originator_gid;
uschar *originator_login;
uid_t   originator_uid;

uschar *primary_hostname       = NULL;

uschar *queue_name             = US"";

int     received_count         = 0;
uschar *received_protocol      = NULL;
struct timeval received_time   = { 0, 0 };
struct timeval received_time_complete = { 0, 0 };
int     recipients_count       = 0;
recipient_item *recipients_list = NULL;
int     recipients_list_max    = 0;
BOOL    running_in_test_harness=FALSE;

uschar *sender_address         = NULL;
uschar *sender_fullhost        = NULL;
uschar *sender_helo_name       = NULL;
uschar *sender_host_address    = NULL;
uschar *sender_host_auth_pubname = NULL;
uschar *sender_host_authenticated = NULL;
uschar *sender_host_name       = NULL;
int     sender_host_port       = 0;
uschar *sender_ident           = NULL;
BOOL    sender_set_untrusted   = FALSE;
uschar *smtp_active_hostname   = NULL;

BOOL    split_spool_directory  = FALSE;
uschar *spool_directory        = US SPOOL_DIRECTORY;
int     string_datestamp_offset=-1;
int     string_datestamp_length= 0;
int     string_datestamp_type  = -1;

BOOL    timestamps_utc         = FALSE;
tls_support tls_in = {
 .active = { .sock = -1 }
 /* remainder zero/null/false */
};

tree_node *tree_duplicates     = NULL;
tree_node *tree_nonrecipients  = NULL;
tree_node *tree_unusable       = NULL;

uschar *version_date           = US"?";
uschar *version_string         = US"?";

int     warning_count          = 0;

/* End of em_globals.c */