![]() |
Icinga-core 1.4.0
next gen monitoring
|
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