Icinga-core 1.4.0
next gen monitoring
cgi/extcmd_list.c
Go to the documentation of this file.
00001 /*****************************************************************************
00002  *
00003  * EXTCMD_LIST.C for Icinga CGIs
00004  *
00005  * Copyright (c) 1999-2009 Ethan Galstad (egalstad@nagios.org)
00006  * Copyright (c) 2009-2011 Icinga Development Team (http://www.icinga.org)
00007  *
00008  * License:
00009  *
00010  * This program is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License version 2 as
00012  * published by the Free Software Foundation.
00013  *
00014  * This program is distributed in the hope that it will be useful,
00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017  * GNU General Public License for more details.
00018  *
00019  * You should have received a copy of the GNU General Public License
00020  * along with this program; if not, write to the Free Software
00021  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00022  *
00023  *****************************************************************************/
00024 
00025 #include <stdio.h>
00026 #include <unistd.h>
00027 #include <stdlib.h>
00028 #include "../include/common.h"
00029 
00030 struct nagios_extcmd {
00031         const char *name;
00032         int id;
00033 /*      size_t namelen;
00034         int min_args;
00035         int (*handler)(struct nagios_extcmd *, int, char **);
00036         struct nagios_extcmd *next_handler;
00037  */
00038 };
00039 
00040 #define CMD_DEF(name, min_args, handler) \
00041         { #name, CMD_ ## name }
00042 /*      { #name, sizeof(#name) - 1, CMD_ ## name, min_args, handler, NULL } */
00043 struct nagios_extcmd in_core_commands[] =
00044 {
00045         CMD_DEF(NONE, 0, NULL),
00046         CMD_DEF(ADD_HOST_COMMENT, 0, NULL),
00047         CMD_DEF(DEL_HOST_COMMENT, 0, NULL),
00048         CMD_DEF(ADD_SVC_COMMENT, 0, NULL),
00049         CMD_DEF(DEL_SVC_COMMENT, 0, NULL),
00050         CMD_DEF(ENABLE_SVC_CHECK, 0, NULL),
00051         CMD_DEF(DISABLE_SVC_CHECK, 0, NULL),
00052         CMD_DEF(SCHEDULE_SVC_CHECK, 0, NULL),
00053         CMD_DEF(DELAY_SVC_NOTIFICATION, 0, NULL),
00054         CMD_DEF(DELAY_HOST_NOTIFICATION, 0, NULL),
00055         CMD_DEF(DISABLE_NOTIFICATIONS, 0, NULL),
00056         CMD_DEF(ENABLE_NOTIFICATIONS, 0, NULL),
00057         CMD_DEF(RESTART_PROCESS, 0, NULL),
00058         CMD_DEF(SHUTDOWN_PROCESS, 0, NULL),
00059         CMD_DEF(ENABLE_HOST_SVC_CHECKS, 0, NULL),
00060         CMD_DEF(DISABLE_HOST_SVC_CHECKS, 0, NULL),
00061         CMD_DEF(SCHEDULE_HOST_SVC_CHECKS, 0, NULL),
00062         CMD_DEF(DELAY_HOST_SVC_NOTIFICATIONS, 0, NULL),
00063         CMD_DEF(DEL_ALL_HOST_COMMENTS, 0, NULL),
00064         CMD_DEF(DEL_ALL_SVC_COMMENTS, 0, NULL),
00065         CMD_DEF(ENABLE_SVC_NOTIFICATIONS, 0, NULL),
00066         CMD_DEF(DISABLE_SVC_NOTIFICATIONS, 0, NULL),
00067         CMD_DEF(ENABLE_HOST_NOTIFICATIONS, 0, NULL),
00068         CMD_DEF(DISABLE_HOST_NOTIFICATIONS, 0, NULL),
00069         CMD_DEF(ENABLE_ALL_NOTIFICATIONS_BEYOND_HOST, 0, NULL),
00070         CMD_DEF(DISABLE_ALL_NOTIFICATIONS_BEYOND_HOST, 0, NULL),
00071         CMD_DEF(ENABLE_HOST_SVC_NOTIFICATIONS, 0, NULL),
00072         CMD_DEF(DISABLE_HOST_SVC_NOTIFICATIONS, 0, NULL),
00073         CMD_DEF(PROCESS_SERVICE_CHECK_RESULT, 0, NULL),
00074         CMD_DEF(SAVE_STATE_INFORMATION, 0, NULL),
00075         CMD_DEF(READ_STATE_INFORMATION, 0, NULL),
00076         CMD_DEF(ACKNOWLEDGE_HOST_PROBLEM, 0, NULL),
00077         CMD_DEF(ACKNOWLEDGE_SVC_PROBLEM, 0, NULL),
00078         CMD_DEF(START_EXECUTING_SVC_CHECKS, 0, NULL),
00079         CMD_DEF(STOP_EXECUTING_SVC_CHECKS, 0, NULL),
00080         CMD_DEF(START_ACCEPTING_PASSIVE_SVC_CHECKS, 0, NULL),
00081         CMD_DEF(STOP_ACCEPTING_PASSIVE_SVC_CHECKS, 0, NULL),
00082         CMD_DEF(ENABLE_PASSIVE_SVC_CHECKS, 0, NULL),
00083         CMD_DEF(DISABLE_PASSIVE_SVC_CHECKS, 0, NULL),
00084         CMD_DEF(ENABLE_EVENT_HANDLERS, 0, NULL),
00085         CMD_DEF(DISABLE_EVENT_HANDLERS, 0, NULL),
00086         CMD_DEF(ENABLE_HOST_EVENT_HANDLER, 0, NULL),
00087         CMD_DEF(DISABLE_HOST_EVENT_HANDLER, 0, NULL),
00088         CMD_DEF(ENABLE_SVC_EVENT_HANDLER, 0, NULL),
00089         CMD_DEF(DISABLE_SVC_EVENT_HANDLER, 0, NULL),
00090         CMD_DEF(ENABLE_HOST_CHECK, 0, NULL),
00091         CMD_DEF(DISABLE_HOST_CHECK, 0, NULL),
00092         CMD_DEF(START_OBSESSING_OVER_SVC_CHECKS, 0, NULL),
00093         CMD_DEF(STOP_OBSESSING_OVER_SVC_CHECKS, 0, NULL),
00094         CMD_DEF(REMOVE_HOST_ACKNOWLEDGEMENT, 0, NULL),
00095         CMD_DEF(REMOVE_SVC_ACKNOWLEDGEMENT, 0, NULL),
00096         CMD_DEF(SCHEDULE_FORCED_HOST_SVC_CHECKS, 0, NULL),
00097         CMD_DEF(SCHEDULE_FORCED_SVC_CHECK, 0, NULL),
00098         CMD_DEF(SCHEDULE_HOST_DOWNTIME, 0, NULL),
00099         CMD_DEF(SCHEDULE_SVC_DOWNTIME, 0, NULL),
00100         CMD_DEF(ENABLE_HOST_FLAP_DETECTION, 0, NULL),
00101         CMD_DEF(DISABLE_HOST_FLAP_DETECTION, 0, NULL),
00102         CMD_DEF(ENABLE_SVC_FLAP_DETECTION, 0, NULL),
00103         CMD_DEF(DISABLE_SVC_FLAP_DETECTION, 0, NULL),
00104         CMD_DEF(ENABLE_FLAP_DETECTION, 0, NULL),
00105         CMD_DEF(DISABLE_FLAP_DETECTION, 0, NULL),
00106         CMD_DEF(ENABLE_HOSTGROUP_SVC_NOTIFICATIONS, 0, NULL),
00107         CMD_DEF(DISABLE_HOSTGROUP_SVC_NOTIFICATIONS, 0, NULL),
00108         CMD_DEF(ENABLE_HOSTGROUP_HOST_NOTIFICATIONS, 0, NULL),
00109         CMD_DEF(DISABLE_HOSTGROUP_HOST_NOTIFICATIONS, 0, NULL),
00110         CMD_DEF(ENABLE_HOSTGROUP_SVC_CHECKS, 0, NULL),
00111         CMD_DEF(DISABLE_HOSTGROUP_SVC_CHECKS, 0, NULL),
00112         CMD_DEF(CANCEL_HOST_DOWNTIME, 0, NULL),
00113         CMD_DEF(CANCEL_SVC_DOWNTIME, 0, NULL),
00114         CMD_DEF(CANCEL_ACTIVE_HOST_DOWNTIME, 0, NULL),
00115         CMD_DEF(CANCEL_PENDING_HOST_DOWNTIME, 0, NULL),
00116         CMD_DEF(CANCEL_ACTIVE_SVC_DOWNTIME, 0, NULL),
00117         CMD_DEF(CANCEL_PENDING_SVC_DOWNTIME, 0, NULL),
00118         CMD_DEF(CANCEL_ACTIVE_HOST_SVC_DOWNTIME, 0, NULL),
00119         CMD_DEF(CANCEL_PENDING_HOST_SVC_DOWNTIME, 0, NULL),
00120         CMD_DEF(FLUSH_PENDING_COMMANDS, 0, NULL),
00121         CMD_DEF(DEL_HOST_DOWNTIME, 0, NULL),
00122         CMD_DEF(DEL_SVC_DOWNTIME, 0, NULL),
00123         CMD_DEF(ENABLE_FAILURE_PREDICTION, 0, NULL),
00124         CMD_DEF(DISABLE_FAILURE_PREDICTION, 0, NULL),
00125         CMD_DEF(ENABLE_PERFORMANCE_DATA, 0, NULL),
00126         CMD_DEF(DISABLE_PERFORMANCE_DATA, 0, NULL),
00127         CMD_DEF(SCHEDULE_HOSTGROUP_HOST_DOWNTIME, 0, NULL),
00128         CMD_DEF(SCHEDULE_HOSTGROUP_SVC_DOWNTIME, 0, NULL),
00129         CMD_DEF(SCHEDULE_HOST_SVC_DOWNTIME, 0, NULL),
00130         CMD_DEF(PROCESS_HOST_CHECK_RESULT, 0, NULL),
00131         CMD_DEF(START_EXECUTING_HOST_CHECKS, 0, NULL),
00132         CMD_DEF(STOP_EXECUTING_HOST_CHECKS, 0, NULL),
00133         CMD_DEF(START_ACCEPTING_PASSIVE_HOST_CHECKS, 0, NULL),
00134         CMD_DEF(STOP_ACCEPTING_PASSIVE_HOST_CHECKS, 0, NULL),
00135         CMD_DEF(ENABLE_PASSIVE_HOST_CHECKS, 0, NULL),
00136         CMD_DEF(DISABLE_PASSIVE_HOST_CHECKS, 0, NULL),
00137         CMD_DEF(START_OBSESSING_OVER_HOST_CHECKS, 0, NULL),
00138         CMD_DEF(STOP_OBSESSING_OVER_HOST_CHECKS, 0, NULL),
00139         CMD_DEF(SCHEDULE_HOST_CHECK, 0, NULL),
00140         CMD_DEF(SCHEDULE_FORCED_HOST_CHECK, 0, NULL),
00141         CMD_DEF(START_OBSESSING_OVER_SVC, 0, NULL),
00142         CMD_DEF(STOP_OBSESSING_OVER_SVC, 0, NULL),
00143         CMD_DEF(START_OBSESSING_OVER_HOST, 0, NULL),
00144         CMD_DEF(STOP_OBSESSING_OVER_HOST, 0, NULL),
00145         CMD_DEF(ENABLE_HOSTGROUP_HOST_CHECKS, 0, NULL),
00146         CMD_DEF(DISABLE_HOSTGROUP_HOST_CHECKS, 0, NULL),
00147         CMD_DEF(ENABLE_HOSTGROUP_PASSIVE_SVC_CHECKS, 0, NULL),
00148         CMD_DEF(DISABLE_HOSTGROUP_PASSIVE_SVC_CHECKS, 0, NULL),
00149         CMD_DEF(ENABLE_HOSTGROUP_PASSIVE_HOST_CHECKS, 0, NULL),
00150         CMD_DEF(DISABLE_HOSTGROUP_PASSIVE_HOST_CHECKS, 0, NULL),
00151         CMD_DEF(ENABLE_SERVICEGROUP_SVC_NOTIFICATIONS, 0, NULL),
00152         CMD_DEF(DISABLE_SERVICEGROUP_SVC_NOTIFICATIONS, 0, NULL),
00153         CMD_DEF(ENABLE_SERVICEGROUP_HOST_NOTIFICATIONS, 0, NULL),
00154         CMD_DEF(DISABLE_SERVICEGROUP_HOST_NOTIFICATIONS, 0, NULL),
00155         CMD_DEF(ENABLE_SERVICEGROUP_SVC_CHECKS, 0, NULL),
00156         CMD_DEF(DISABLE_SERVICEGROUP_SVC_CHECKS, 0, NULL),
00157         CMD_DEF(ENABLE_SERVICEGROUP_HOST_CHECKS, 0, NULL),
00158         CMD_DEF(DISABLE_SERVICEGROUP_HOST_CHECKS, 0, NULL),
00159         CMD_DEF(ENABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS, 0, NULL),
00160         CMD_DEF(DISABLE_SERVICEGROUP_PASSIVE_SVC_CHECKS, 0, NULL),
00161         CMD_DEF(ENABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS, 0, NULL),
00162         CMD_DEF(DISABLE_SERVICEGROUP_PASSIVE_HOST_CHECKS, 0, NULL),
00163         CMD_DEF(SCHEDULE_SERVICEGROUP_HOST_DOWNTIME, 0, NULL),
00164         CMD_DEF(SCHEDULE_SERVICEGROUP_SVC_DOWNTIME, 0, NULL),
00165         CMD_DEF(CHANGE_GLOBAL_HOST_EVENT_HANDLER, 0, NULL),
00166         CMD_DEF(CHANGE_GLOBAL_SVC_EVENT_HANDLER, 0, NULL),
00167         CMD_DEF(CHANGE_HOST_EVENT_HANDLER, 0, NULL),
00168         CMD_DEF(CHANGE_SVC_EVENT_HANDLER, 0, NULL),
00169         CMD_DEF(CHANGE_HOST_CHECK_COMMAND, 0, NULL),
00170         CMD_DEF(CHANGE_SVC_CHECK_COMMAND, 0, NULL),
00171         CMD_DEF(CHANGE_NORMAL_HOST_CHECK_INTERVAL, 0, NULL),
00172         CMD_DEF(CHANGE_NORMAL_SVC_CHECK_INTERVAL, 0, NULL),
00173         CMD_DEF(CHANGE_RETRY_SVC_CHECK_INTERVAL, 0, NULL),
00174         CMD_DEF(CHANGE_MAX_HOST_CHECK_ATTEMPTS, 0, NULL),
00175         CMD_DEF(CHANGE_MAX_SVC_CHECK_ATTEMPTS, 0, NULL),
00176         CMD_DEF(SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME, 0, NULL),
00177         CMD_DEF(ENABLE_HOST_AND_CHILD_NOTIFICATIONS, 0, NULL),
00178         CMD_DEF(DISABLE_HOST_AND_CHILD_NOTIFICATIONS, 0, NULL),
00179         CMD_DEF(SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME, 0, NULL),
00180         CMD_DEF(ENABLE_SERVICE_FRESHNESS_CHECKS, 0, NULL),
00181         CMD_DEF(DISABLE_SERVICE_FRESHNESS_CHECKS, 0, NULL),
00182         CMD_DEF(ENABLE_HOST_FRESHNESS_CHECKS, 0, NULL),
00183         CMD_DEF(DISABLE_HOST_FRESHNESS_CHECKS, 0, NULL),
00184         CMD_DEF(SET_HOST_NOTIFICATION_NUMBER, 0, NULL),
00185         CMD_DEF(SET_SVC_NOTIFICATION_NUMBER, 0, NULL),
00186         CMD_DEF(CHANGE_HOST_CHECK_TIMEPERIOD, 0, NULL),
00187         CMD_DEF(CHANGE_SVC_CHECK_TIMEPERIOD, 0, NULL),
00188         CMD_DEF(PROCESS_FILE, 0, NULL),
00189         CMD_DEF(CHANGE_CUSTOM_HOST_VAR, 0, NULL),
00190         CMD_DEF(CHANGE_CUSTOM_SVC_VAR, 0, NULL),
00191         CMD_DEF(CHANGE_CUSTOM_CONTACT_VAR, 0, NULL),
00192         CMD_DEF(ENABLE_CONTACT_HOST_NOTIFICATIONS, 0, NULL),
00193         CMD_DEF(DISABLE_CONTACT_HOST_NOTIFICATIONS, 0, NULL),
00194         CMD_DEF(ENABLE_CONTACT_SVC_NOTIFICATIONS, 0, NULL),
00195         CMD_DEF(DISABLE_CONTACT_SVC_NOTIFICATIONS, 0, NULL),
00196         CMD_DEF(ENABLE_CONTACTGROUP_HOST_NOTIFICATIONS, 0, NULL),
00197         CMD_DEF(DISABLE_CONTACTGROUP_HOST_NOTIFICATIONS, 0, NULL),
00198         CMD_DEF(ENABLE_CONTACTGROUP_SVC_NOTIFICATIONS, 0, NULL),
00199         CMD_DEF(DISABLE_CONTACTGROUP_SVC_NOTIFICATIONS, 0, NULL),
00200         CMD_DEF(CHANGE_RETRY_HOST_CHECK_INTERVAL, 0, NULL),
00201         CMD_DEF(SEND_CUSTOM_HOST_NOTIFICATION, 0, NULL),
00202         CMD_DEF(SEND_CUSTOM_SVC_NOTIFICATION, 0, NULL),
00203         CMD_DEF(CHANGE_HOST_NOTIFICATION_TIMEPERIOD, 0, NULL),
00204         CMD_DEF(CHANGE_SVC_NOTIFICATION_TIMEPERIOD, 0, NULL),
00205         CMD_DEF(CHANGE_CONTACT_HOST_NOTIFICATION_TIMEPERIOD, 0, NULL),
00206         CMD_DEF(CHANGE_CONTACT_SVC_NOTIFICATION_TIMEPERIOD, 0, NULL),
00207         CMD_DEF(CHANGE_HOST_MODATTR, 0, NULL),
00208         CMD_DEF(CHANGE_SVC_MODATTR, 0, NULL),
00209         CMD_DEF(CHANGE_CONTACT_MODATTR, 0, NULL),
00210         CMD_DEF(CHANGE_CONTACT_MODHATTR, 0, NULL),
00211         CMD_DEF(CHANGE_CONTACT_MODSATTR, 0, NULL),
00212 };
00213 #undef CMD_DEF
00214 
00215 #ifndef ARRAY_SIZE
00216 # define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
00217 #endif
00218 
00219 const char *extcmd_get_name(int id)
00220 {
00221         int i;
00222 
00223         for (i = 0; i < ARRAY_SIZE(in_core_commands); i++) {
00224                 struct nagios_extcmd *ecmd;
00225                 ecmd = &in_core_commands[i];
00226                 if (ecmd->id == id)
00227                         return ecmd->name;
00228         }
00229 
00230         return NULL;
00231 }
00232 
00233 #ifdef ECMD_LIST_TESTING
00234 int main(int argc, char **argv)
00235 {
00236         int i, no_handler = 0;
00237 
00238         for (i = 0; i < ARRAY_SIZE(in_core_commands); i++) {
00239                 struct nagios_extcmd *cmd = &in_core_commands[i];
00240                 if (!cmd->handler) {
00241                         no_handler++;
00242                         printf("%s has no handler\n", extcmd_get_name(i));
00243                 }
00244         }
00245         printf("%d of %d commands have no handler\n",
00246                no_handler, ARRAY_SIZE(in_core_commands));
00247 
00248         return 0;
00249 }
00250 #endif
 All Data Structures Files Functions Variables Typedefs Defines