74 |
static int count(char *, char *); |
static int count(char *, char *); |
75 |
static void copy_mail(Mail_T, Mail_T); |
static void copy_mail(Mail_T, Mail_T); |
76 |
static void replace(char **, char *, char *); |
static void replace(char **, char *, char *); |
77 |
static void smtp_alert(Service_T, int, char *, va_list); |
static void do_alert(Service_T, int, char *, va_list); |
78 |
static void substitute(Mail_T*, char *name, char *event); |
static void substitute(Mail_T*, char *name, char *event); |
79 |
|
|
80 |
|
|
87 |
* @param s A Service_T object |
* @param s A Service_T object |
88 |
* @param m An optional message string. May be NULL. |
* @param m An optional message string. May be NULL. |
89 |
*/ |
*/ |
90 |
void smtp_alert_timeout(Service_T s, char *m, ...) { |
void alert_timeout(Service_T s, char *m, ...) { |
91 |
|
|
92 |
va_list ap; |
va_list ap; |
93 |
|
|
94 |
ASSERT(s); |
ASSERT(s); |
95 |
|
|
96 |
va_start(ap, m); |
va_start(ap, m); |
97 |
smtp_alert(s, DO_TIMEOUT, m, ap); |
do_alert(s, DO_TIMEOUT, m, ap); |
98 |
va_end(ap); |
va_end(ap); |
99 |
|
|
100 |
|
|
107 |
* @param s A service_t object |
* @param s A service_t object |
108 |
* @param m An optional message string. May be NULL. |
* @param m An optional message string. May be NULL. |
109 |
*/ |
*/ |
110 |
void smtp_alert_checksum(Service_T s, char *m, ...) { |
void alert_checksum(Service_T s, char *m, ...) { |
111 |
|
|
112 |
va_list ap; |
va_list ap; |
113 |
|
|
114 |
ASSERT(s); |
ASSERT(s); |
115 |
|
|
116 |
va_start(ap, m); |
va_start(ap, m); |
117 |
smtp_alert(s, DO_CHECKSUM, m, ap); |
do_alert(s, DO_CHECKSUM, m, ap); |
118 |
va_end(ap); |
va_end(ap); |
119 |
|
|
120 |
} |
} |
125 |
* @param s A service_t object |
* @param s A service_t object |
126 |
* @param m An optional message string. May be NULL. |
* @param m An optional message string. May be NULL. |
127 |
*/ |
*/ |
128 |
void smtp_alert_restart(Service_T s, char *m, ...) { |
void alert_restart(Service_T s, char *m, ...) { |
129 |
|
|
130 |
va_list ap; |
va_list ap; |
131 |
|
|
132 |
ASSERT(s); |
ASSERT(s); |
133 |
|
|
134 |
va_start(ap, m); |
va_start(ap, m); |
135 |
smtp_alert(s, DO_RESTART, m, ap); |
do_alert(s, DO_RESTART, m, ap); |
136 |
va_end(ap); |
va_end(ap); |
137 |
|
|
138 |
} |
} |
143 |
* @param s A service_t object |
* @param s A service_t object |
144 |
* @param m An optional message string. May be NULL. |
* @param m An optional message string. May be NULL. |
145 |
*/ |
*/ |
146 |
void smtp_alert_resource(Service_T s, char *m, ...) { |
void alert_resource(Service_T s, char *m, ...) { |
147 |
|
|
148 |
va_list ap; |
va_list ap; |
149 |
|
|
150 |
ASSERT(s); |
ASSERT(s); |
151 |
|
|
152 |
va_start(ap, m); |
va_start(ap, m); |
153 |
smtp_alert(s, DO_RESOURCE, m, ap); |
do_alert(s, DO_RESOURCE, m, ap); |
154 |
va_end(ap); |
va_end(ap); |
155 |
|
|
156 |
} |
} |
161 |
* @param s A service_t object |
* @param s A service_t object |
162 |
* @param m An optional message string. May be NULL. |
* @param m An optional message string. May be NULL. |
163 |
*/ |
*/ |
164 |
void smtp_alert_stop(Service_T s, char *m, ...) { |
void alert_stop(Service_T s, char *m, ...) { |
165 |
|
|
166 |
va_list ap; |
va_list ap; |
167 |
|
|
168 |
ASSERT(s); |
ASSERT(s); |
169 |
|
|
170 |
va_start(ap, m); |
va_start(ap, m); |
171 |
smtp_alert(s, DO_STOP, m, ap); |
do_alert(s, DO_STOP, m, ap); |
172 |
va_end(ap); |
va_end(ap); |
173 |
|
|
174 |
} |
} |
179 |
* @param s A service_t object |
* @param s A service_t object |
180 |
* @param m An optional message string. May be NULL. |
* @param m An optional message string. May be NULL. |
181 |
*/ |
*/ |
182 |
void smtp_alert_failed(Service_T s, char *m, ...) { |
void alert_failed(Service_T s, char *m, ...) { |
183 |
|
|
184 |
va_list ap; |
va_list ap; |
185 |
|
|
186 |
ASSERT(s); |
ASSERT(s); |
187 |
|
|
188 |
va_start(ap, m); |
va_start(ap, m); |
189 |
smtp_alert(s, DO_FAILED, m, ap); |
do_alert(s, DO_FAILED, m, ap); |
190 |
va_end(ap); |
va_end(ap); |
191 |
|
|
192 |
} |
} |
197 |
* @param s A service_t object |
* @param s A service_t object |
198 |
* @param m An optional message string. May be NULL. |
* @param m An optional message string. May be NULL. |
199 |
*/ |
*/ |
200 |
void smtp_alert_timestamp(Service_T s, char *m, ...) { |
void alert_timestamp(Service_T s, char *m, ...) { |
201 |
|
|
202 |
va_list ap; |
va_list ap; |
203 |
|
|
204 |
ASSERT(s); |
ASSERT(s); |
205 |
|
|
206 |
va_start(ap, m); |
va_start(ap, m); |
207 |
smtp_alert(s, DO_TIMESTAMP, m, ap); |
do_alert(s, DO_TIMESTAMP, m, ap); |
208 |
va_end(ap); |
va_end(ap); |
209 |
|
|
210 |
} |
} |
214 |
|
|
215 |
|
|
216 |
/* |
/* |
217 |
* Send a smtp notification |
* Execute an alert; Send smtp notifications and/or execute external |
218 |
|
* alert programs. |
219 |
*/ |
*/ |
220 |
static void smtp_alert(Service_T s, int event, char *optmsg, va_list ap) { |
static void do_alert(Service_T s, int event, char *optmsg, va_list ap) { |
221 |
|
|
222 |
ASSERT(s); |
ASSERT(s); |
223 |
|
|
238 |
*/ |
*/ |
239 |
for(m= s->maillist; m; m= m->next) { |
for(m= s->maillist; m; m= m->next) { |
240 |
|
|
241 |
int notify[]= { m->alert_on_timeout, |
int notify[]= { m->alerts.alert_on_timeout, |
242 |
m->alert_on_restart, |
m->alerts.alert_on_restart, |
243 |
m->alert_on_checksum, |
m->alerts.alert_on_checksum, |
244 |
m->alert_on_resource, |
m->alerts.alert_on_resource, |
245 |
m->alert_on_stop, |
m->alerts.alert_on_stop, |
246 |
m->alert_on_restart, |
m->alerts.alert_on_restart, |
247 |
m->alert_on_timestamp}; |
m->alerts.alert_on_timestamp}; |
248 |
|
|
249 |
if ( notify[event] ) { |
if ( notify[event] ) { |
250 |
|
|
277 |
pthread_sigmask(SIG_SETMASK, &os, NULL); |
pthread_sigmask(SIG_SETMASK, &os, NULL); |
278 |
|
|
279 |
} |
} |
280 |
|
|
281 |
|
|
282 |
|
if(s->execlist) { |
283 |
|
|
284 |
|
/* FIXME do exec alert */ |
285 |
|
|
286 |
|
} |
287 |
|
|
288 |
} |
} |
289 |
|
|
290 |
|
|