265 lines
10 KiB
C
265 lines
10 KiB
C
|
|
/************************************************************************
|
|
*
|
|
* MACROS.H - Common macro functions
|
|
* Written By: Ethan Galstad (egalstad@nagios.org)
|
|
* Last Modified: 10-28-2007
|
|
*
|
|
* License:
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
************************************************************************/
|
|
|
|
#ifndef _MACROS_H
|
|
#define _MACROS_H
|
|
|
|
#include "config.h"
|
|
#include "common.h"
|
|
#include "objects.h"
|
|
|
|
|
|
|
|
/****************** LENGTH LIMITATIONS ****************/
|
|
|
|
#define MAX_COMMAND_ARGUMENTS 32 /* maximum number of $ARGx$ macros */
|
|
|
|
|
|
/****************** MACRO DEFINITIONS *****************/
|
|
|
|
#define MACRO_ENV_VAR_PREFIX "NAGIOS_"
|
|
|
|
#define MAX_USER_MACROS 256 /* maximum number of $USERx$ macros */
|
|
|
|
#define MACRO_X_COUNT 153 /* size of macro_x[] array */
|
|
|
|
#define MACRO_HOSTNAME 0
|
|
#define MACRO_HOSTALIAS 1
|
|
#define MACRO_HOSTADDRESS 2
|
|
#define MACRO_SERVICEDESC 3
|
|
#define MACRO_SERVICESTATE 4
|
|
#define MACRO_SERVICESTATEID 5
|
|
#define MACRO_SERVICEATTEMPT 6
|
|
#define MACRO_LONGDATETIME 7
|
|
#define MACRO_SHORTDATETIME 8
|
|
#define MACRO_DATE 9
|
|
#define MACRO_TIME 10
|
|
#define MACRO_TIMET 11
|
|
#define MACRO_LASTHOSTCHECK 12
|
|
#define MACRO_LASTSERVICECHECK 13
|
|
#define MACRO_LASTHOSTSTATECHANGE 14
|
|
#define MACRO_LASTSERVICESTATECHANGE 15
|
|
#define MACRO_HOSTOUTPUT 16
|
|
#define MACRO_SERVICEOUTPUT 17
|
|
#define MACRO_HOSTPERFDATA 18
|
|
#define MACRO_SERVICEPERFDATA 19
|
|
#define MACRO_CONTACTNAME 20
|
|
#define MACRO_CONTACTALIAS 21
|
|
#define MACRO_CONTACTEMAIL 22
|
|
#define MACRO_CONTACTPAGER 23
|
|
#define MACRO_ADMINEMAIL 24
|
|
#define MACRO_ADMINPAGER 25
|
|
#define MACRO_HOSTSTATE 26
|
|
#define MACRO_HOSTSTATEID 27
|
|
#define MACRO_HOSTATTEMPT 28
|
|
#define MACRO_NOTIFICATIONTYPE 29
|
|
#define MACRO_NOTIFICATIONNUMBER 30 /* deprecated - see HOSTNOTIFICATIONNUMBER and SERVICENOTIFICATIONNUMBER macros */
|
|
#define MACRO_HOSTEXECUTIONTIME 31
|
|
#define MACRO_SERVICEEXECUTIONTIME 32
|
|
#define MACRO_HOSTLATENCY 33
|
|
#define MACRO_SERVICELATENCY 34
|
|
#define MACRO_HOSTDURATION 35
|
|
#define MACRO_SERVICEDURATION 36
|
|
#define MACRO_HOSTDURATIONSEC 37
|
|
#define MACRO_SERVICEDURATIONSEC 38
|
|
#define MACRO_HOSTDOWNTIME 39
|
|
#define MACRO_SERVICEDOWNTIME 40
|
|
#define MACRO_HOSTSTATETYPE 41
|
|
#define MACRO_SERVICESTATETYPE 42
|
|
#define MACRO_HOSTPERCENTCHANGE 43
|
|
#define MACRO_SERVICEPERCENTCHANGE 44
|
|
#define MACRO_HOSTGROUPNAME 45
|
|
#define MACRO_HOSTGROUPALIAS 46
|
|
#define MACRO_SERVICEGROUPNAME 47
|
|
#define MACRO_SERVICEGROUPALIAS 48
|
|
#define MACRO_HOSTACKAUTHOR 49
|
|
#define MACRO_HOSTACKCOMMENT 50
|
|
#define MACRO_SERVICEACKAUTHOR 51
|
|
#define MACRO_SERVICEACKCOMMENT 52
|
|
#define MACRO_LASTSERVICEOK 53
|
|
#define MACRO_LASTSERVICEWARNING 54
|
|
#define MACRO_LASTSERVICEUNKNOWN 55
|
|
#define MACRO_LASTSERVICECRITICAL 56
|
|
#define MACRO_LASTHOSTUP 57
|
|
#define MACRO_LASTHOSTDOWN 58
|
|
#define MACRO_LASTHOSTUNREACHABLE 59
|
|
#define MACRO_SERVICECHECKCOMMAND 60
|
|
#define MACRO_HOSTCHECKCOMMAND 61
|
|
#define MACRO_MAINCONFIGFILE 62
|
|
#define MACRO_STATUSDATAFILE 63
|
|
#define MACRO_HOSTDISPLAYNAME 64
|
|
#define MACRO_SERVICEDISPLAYNAME 65
|
|
#define MACRO_RETENTIONDATAFILE 66
|
|
#define MACRO_OBJECTCACHEFILE 67
|
|
#define MACRO_TEMPFILE 68
|
|
#define MACRO_LOGFILE 69
|
|
#define MACRO_RESOURCEFILE 70
|
|
#define MACRO_COMMANDFILE 71
|
|
#define MACRO_HOSTPERFDATAFILE 72
|
|
#define MACRO_SERVICEPERFDATAFILE 73
|
|
#define MACRO_HOSTACTIONURL 74
|
|
#define MACRO_HOSTNOTESURL 75
|
|
#define MACRO_HOSTNOTES 76
|
|
#define MACRO_SERVICEACTIONURL 77
|
|
#define MACRO_SERVICENOTESURL 78
|
|
#define MACRO_SERVICENOTES 79
|
|
#define MACRO_TOTALHOSTSUP 80
|
|
#define MACRO_TOTALHOSTSDOWN 81
|
|
#define MACRO_TOTALHOSTSUNREACHABLE 82
|
|
#define MACRO_TOTALHOSTSDOWNUNHANDLED 83
|
|
#define MACRO_TOTALHOSTSUNREACHABLEUNHANDLED 84
|
|
#define MACRO_TOTALHOSTPROBLEMS 85
|
|
#define MACRO_TOTALHOSTPROBLEMSUNHANDLED 86
|
|
#define MACRO_TOTALSERVICESOK 87
|
|
#define MACRO_TOTALSERVICESWARNING 88
|
|
#define MACRO_TOTALSERVICESCRITICAL 89
|
|
#define MACRO_TOTALSERVICESUNKNOWN 90
|
|
#define MACRO_TOTALSERVICESWARNINGUNHANDLED 91
|
|
#define MACRO_TOTALSERVICESCRITICALUNHANDLED 92
|
|
#define MACRO_TOTALSERVICESUNKNOWNUNHANDLED 93
|
|
#define MACRO_TOTALSERVICEPROBLEMS 94
|
|
#define MACRO_TOTALSERVICEPROBLEMSUNHANDLED 95
|
|
#define MACRO_PROCESSSTARTTIME 96
|
|
#define MACRO_HOSTCHECKTYPE 97
|
|
#define MACRO_SERVICECHECKTYPE 98
|
|
#define MACRO_LONGHOSTOUTPUT 99
|
|
#define MACRO_LONGSERVICEOUTPUT 100
|
|
#define MACRO_TEMPPATH 101
|
|
#define MACRO_HOSTNOTIFICATIONNUMBER 102
|
|
#define MACRO_SERVICENOTIFICATIONNUMBER 103
|
|
#define MACRO_HOSTNOTIFICATIONID 104
|
|
#define MACRO_SERVICENOTIFICATIONID 105
|
|
#define MACRO_HOSTEVENTID 106
|
|
#define MACRO_LASTHOSTEVENTID 107
|
|
#define MACRO_SERVICEEVENTID 108
|
|
#define MACRO_LASTSERVICEEVENTID 109
|
|
#define MACRO_HOSTGROUPNAMES 110
|
|
#define MACRO_SERVICEGROUPNAMES 111
|
|
#define MACRO_HOSTACKAUTHORNAME 112
|
|
#define MACRO_HOSTACKAUTHORALIAS 113
|
|
#define MACRO_SERVICEACKAUTHORNAME 114
|
|
#define MACRO_SERVICEACKAUTHORALIAS 115
|
|
#define MACRO_MAXHOSTATTEMPTS 116
|
|
#define MACRO_MAXSERVICEATTEMPTS 117
|
|
#define MACRO_SERVICEISVOLATILE 118
|
|
#define MACRO_TOTALHOSTSERVICES 119
|
|
#define MACRO_TOTALHOSTSERVICESOK 120
|
|
#define MACRO_TOTALHOSTSERVICESWARNING 121
|
|
#define MACRO_TOTALHOSTSERVICESUNKNOWN 122
|
|
#define MACRO_TOTALHOSTSERVICESCRITICAL 123
|
|
#define MACRO_HOSTGROUPNOTES 124
|
|
#define MACRO_HOSTGROUPNOTESURL 125
|
|
#define MACRO_HOSTGROUPACTIONURL 126
|
|
#define MACRO_SERVICEGROUPNOTES 127
|
|
#define MACRO_SERVICEGROUPNOTESURL 128
|
|
#define MACRO_SERVICEGROUPACTIONURL 129
|
|
#define MACRO_HOSTGROUPMEMBERS 130
|
|
#define MACRO_SERVICEGROUPMEMBERS 131
|
|
#define MACRO_CONTACTGROUPNAME 132
|
|
#define MACRO_CONTACTGROUPALIAS 133
|
|
#define MACRO_CONTACTGROUPMEMBERS 134
|
|
#define MACRO_CONTACTGROUPNAMES 135
|
|
#define MACRO_NOTIFICATIONRECIPIENTS 136
|
|
#define MACRO_NOTIFICATIONISESCALATED 137
|
|
#define MACRO_NOTIFICATIONAUTHOR 138
|
|
#define MACRO_NOTIFICATIONAUTHORNAME 139
|
|
#define MACRO_NOTIFICATIONAUTHORALIAS 140
|
|
#define MACRO_NOTIFICATIONCOMMENT 141
|
|
#define MACRO_EVENTSTARTTIME 142
|
|
#define MACRO_HOSTPROBLEMID 143
|
|
#define MACRO_LASTHOSTPROBLEMID 144
|
|
#define MACRO_SERVICEPROBLEMID 145
|
|
#define MACRO_LASTSERVICEPROBLEMID 146
|
|
#define MACRO_ISVALIDTIME 147
|
|
#define MACRO_NEXTVALIDTIME 148
|
|
#define MACRO_LASTHOSTSTATE 149
|
|
#define MACRO_LASTHOSTSTATEID 150
|
|
#define MACRO_LASTSERVICESTATE 151
|
|
#define MACRO_LASTSERVICESTATEID 152
|
|
|
|
|
|
|
|
/************* MACRO CLEANING OPTIONS *****************/
|
|
|
|
#define STRIP_ILLEGAL_MACRO_CHARS 1
|
|
#define ESCAPE_MACRO_CHARS 2
|
|
#define URL_ENCODE_MACRO_CHARS 4
|
|
|
|
|
|
|
|
/****************** MACRO FUNCTIONS ******************/
|
|
|
|
int process_macros(char *,char **,int); /* replace macros with their actual values */
|
|
char *clean_macro_chars(char *,int); /* cleans macros characters before insertion into output string */
|
|
|
|
int grab_service_macros(service *); /* updates the service macro data */
|
|
int grab_host_macros(host *); /* updates the host macro data */
|
|
int grab_servicegroup_macros(servicegroup *); /* updates servicegroup macros */
|
|
int grab_hostgroup_macros(hostgroup *); /* updates hostgroup macros */
|
|
int grab_contact_macros(contact *); /* updates the contact macro data */
|
|
int grab_contactgroup_macros(contactgroup *); /* updates contactgroup macros */
|
|
int grab_datetime_macros(void); /* updates date/time macros */
|
|
int grab_on_demand_macro(char *); /* fetches an on-demand macro */
|
|
|
|
char *get_url_encoded_string(char *); /* URL encode a string */
|
|
|
|
int init_macros(void);
|
|
int init_macrox_names(void);
|
|
int add_macrox_name(int,char *);
|
|
int free_macrox_names(void);
|
|
|
|
int clear_argv_macros(void);
|
|
int clear_volatile_macros(void);
|
|
int clear_host_macros(void);
|
|
int clear_service_macros(void);
|
|
int clear_hostgroup_macros(void);
|
|
int clear_servicegroup_macros(void);
|
|
int clear_contact_macros(void);
|
|
int clear_contactgroup_macros(void);
|
|
int clear_summary_macros(void);
|
|
|
|
int grab_macro_value(char *,char **,int *,int *);
|
|
int grab_macrox_value(int,char *,char *,char **,int *);
|
|
int grab_custom_macro_value(char *,char *,char *,char **);
|
|
int grab_datetime_macro(int,char *,char *,char **);
|
|
int grab_standard_host_macro(int,host *,char **,int *);
|
|
int grab_standard_hostgroup_macro(int,hostgroup *,char **);
|
|
int grab_standard_service_macro(int,service *,char **,int *);
|
|
int grab_standard_servicegroup_macro(int,servicegroup *,char **);
|
|
int grab_standard_contact_macro(int,contact *,char **);
|
|
int grab_contact_address_macro(int,contact *,char **);
|
|
int grab_standard_contactgroup_macro(int,contactgroup *,char **);
|
|
int grab_custom_object_macro(char *,customvariablesmember *,char **);
|
|
|
|
|
|
#ifdef NSCORE
|
|
int set_all_macro_environment_vars(int);
|
|
int set_macrox_environment_vars(int);
|
|
int set_argv_macro_environment_vars(int);
|
|
int set_custom_macro_environment_vars(int);
|
|
int set_contact_address_environment_vars(int);
|
|
int set_macro_environment_var(char *,char *,int);
|
|
#endif
|
|
|
|
#endif
|