Icinga-core 1.4.0
next gen monitoring
include/cgiutils.h
Go to the documentation of this file.
00001 /************************************************************************
00002  *
00003  * CGIUTILS.H - Header file for common CGI functions
00004  *
00005  * Copyright (c) 1999-2008  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 #ifndef _CGIUTILS_H
00025 #define _CGIUTILS_H
00026 
00027 #include "config.h"
00028 #include "logging.h"
00029 #include "objects.h"
00030 #include "cgiauth.h"
00031 #include "readlogs.h"
00032 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00037 
00038 /**************************** CGI REFRESH RATE ******************************/
00039 
00040 #define DEFAULT_REFRESH_RATE    60      /* 60 second refresh rate for CGIs */
00041 
00042 
00043 /******************************* CGI NAMES **********************************/
00044 
00045 #define AVAIL_CGI               "avail.cgi"
00046 #define CMD_CGI                 "cmd.cgi"
00047 #define CONFIG_CGI              "config.cgi"
00048 #define EXTINFO_CGI             "extinfo.cgi"
00049 #define HISTOGRAM_CGI           "histogram.cgi"
00050 #define HISTORY_CGI             "history.cgi"
00051 #define NOTIFICATIONS_CGI       "notifications.cgi"
00052 #define OUTAGES_CGI             "outages.cgi"
00053 #define SHOWLOG_CGI             "showlog.cgi"
00054 #define STATUS_CGI              "status.cgi"
00055 #define STATUSMAP_CGI           "statusmap.cgi"
00056 #define STATUSWML_CGI           "statuswml.cgi"
00057 #define STATUSWRL_CGI           "statuswrl.cgi"
00058 #define SUMMARY_CGI             "summary.cgi"
00059 #define TAC_CGI                 "tac.cgi"
00060 #define TRENDS_CGI              "trends.cgi"
00061 
00062 /* Are these ones still in use??? */
00063 #define TRACEROUTE_CGI          "traceroute.cgi"
00064 #define CHECKSANITY_CGI         "checksanity.cgi"
00065 #define MINISTATUS_CGI          "ministatus.cgi"
00066 
00067 
00068 /******************************* CGI IDS **********************************/
00069 
00070 #define AVAIL_CGI_ID            1
00071 #define CMD_CGI_ID              2
00072 #define CONFIG_CGI_ID           3
00073 #define EXTINFO_CGI_ID          4
00074 #define HISTOGRAM_CGI_ID        5
00075 #define HISTORY_CGI_ID          6
00076 #define NOTIFICATIONS_CGI_ID    7
00077 #define OUTAGES_CGI_ID          8
00078 #define SHOWLOG_CGI_ID          9
00079 #define STATUS_CGI_ID           10
00080 #define STATUSMAP_CGI_ID        11
00081 #define STATUSWML_CGI_ID        12
00082 #define STATUSWRL_CGI_ID        13
00083 #define SUMMARY_CGI_ID          14
00084 #define TAC_CGI_ID              15
00085 #define TRENDS_CGI_ID           16
00086 
00087 /* Are these ones still in use??? */
00088 #define TRACEROUTE_CGI_ID       17
00089 #define CHECKSANITY_CGI_ID      18
00090 #define MINISTATUS_CGI_ID       19
00091 
00092 /* for error msg */
00093 #define ERROR_CGI_ID    20
00094 
00095 
00096 /******************************* ERROR CGI IDS **********************************/
00097 
00098 #define ERROR_CGI_STATUS_DATA   1
00099 #define ERROR_CGI_OBJECT_DATA   2
00100 #define ERROR_CGI_CFG_FILE      3
00101 #define ERROR_CGI_MAIN_CFG      4
00102 
00103 
00104 /**************************** STYLE SHEET NAMES ******************************/
00105 
00106 #define COMMON_CSS              "common.css"
00107 #define JQUERY_DD_CSS           "dd.css"
00108 
00109 #define AVAIL_CSS               "avail.css"
00110 #define CMD_CSS                 "cmd.css"
00111 #define CONFIG_CSS              "config.css"
00112 #define EXTINFO_CSS             "extinfo.css"
00113 #define HISTOGRAM_CSS           "histogram.css"
00114 #define HISTORY_CSS             "history.css"
00115 #define NOTIFICATIONS_CSS       "notifications.css"
00116 #define OUTAGES_CSS             "outages.css"
00117 #define SHOWLOG_CSS             "showlog.css"
00118 #define STATUS_CSS              "status.css"
00119 #define STATUSMAP_CSS           "statusmap.css"
00120 #define SUMMARY_CSS             "summary.css"
00121 #define TAC_CSS                 "tac.css"
00122 #define TAC_HEADER_CSS          "tacheader.css"
00123 #define TRENDS_CSS              "trends.css"
00124 
00125 /* Are these ones still in use??? */
00126 #define CHECKSANITY_CSS         "checksanity.css"
00127 #define MINISTATUS_CSS          "ministatus.css"
00128 
00129 
00130 /**************************** JAVASCRIPT NAMES ******************************/
00131 
00132 #define CHECKBOX_FUNCTIONS_JS   "checkbox_functions.js"
00133 #define JQUERY_MAIN_JS          "jquery-1.4.2.min.js"
00134 #define JQUERY_DD_JS            "jquery.dd.js"
00135 #define SKINNYTIP_JS            "skinnytip.js"
00136 
00137 
00138 /********************************* ICONS ************************************/
00139 
00140 #define STATUS_ICON_WIDTH               20
00141 #define STATUS_ICON_HEIGHT              20
00142 
00143 #define INFO_ICON                       "info.png"
00144 #define INFO_ICON_ALT                   "Informational Message"
00145 #define START_ICON                      "start.gif"
00146 #define START_ICON_ALT                  "Program Start"
00147 #define STOP_ICON                       "stop.gif"
00148 #define STOP_ICON_ALT                   "Program End"
00149 #define RESTART_ICON                    "restart.gif"
00150 #define RESTART_ICON_ALT                "Program Restart"
00151 #define OK_ICON                         "recovery.png"
00152 #define OK_ICON_ALT                     "Service Ok"
00153 #define CRITICAL_ICON                   "critical.png"
00154 #define CRITICAL_ICON_ALT               "Service Critical"
00155 #define WARNING_ICON                    "warning.png"
00156 #define WARNING_ICON_ALT                "Service Warning"
00157 #define UNKNOWN_ICON                    "unknown.png"
00158 #define UNKNOWN_ICON_ALT                "Service Unknown"
00159 #define NOTIFICATION_ICON               "notify.gif"
00160 #define NOTIFICATION_ICON_ALT           "Service Notification"
00161 #define LOG_ROTATION_ICON               "logrotate.png"
00162 #define LOG_ROTATION_ICON_ALT           "Log Rotation"
00163 #define EXTERNAL_COMMAND_ICON           "command.png"
00164 #define EXTERNAL_COMMAND_ICON_ALT       "External Command"
00165 
00166 #define STATUS_DETAIL_ICON              "status2.gif"
00167 #define STATUS_OVERVIEW_ICON            "status.gif"
00168 #define STATUSMAP_ICON                  "status3.gif"
00169 #define STATUSWORLD_ICON                "status4.gif"
00170 #define EXTINFO_ICON                    "extinfo.gif"
00171 #define HISTORY_ICON                    "history.gif"
00172 #define CONTACTGROUP_ICON               "contactgroup.gif"
00173 #define TRENDS_ICON                     "trends.gif"
00174 #define COLLAPSE_ICON                   "icon_collapse.gif"
00175 #define EXPAND_ICON                     "icon_expand.gif"
00176 
00177 #define DISABLED_ICON                   "disabled.gif"
00178 #define ENABLED_ICON                    "enabled.gif"
00179 #define PASSIVE_ONLY_ICON               "passiveonly.gif"
00180 #define NOTIFICATIONS_DISABLED_ICON     "ndisabled.gif"
00181 #define ACKNOWLEDGEMENT_ICON            "ack.gif"
00182 #define REMOVE_ACKNOWLEDGEMENT_ICON     "noack.gif"
00183 #define COMMENT_ICON                    "comment.gif"
00184 #define DELETE_ICON                     "delete.gif"
00185 #define DELAY_ICON                      "delay.gif"
00186 #define DOWNTIME_ICON                   "downtime.gif"
00187 #define PASSIVE_ICON                    "passiveonly.gif"
00188 #define RIGHT_ARROW_ICON                "right.gif"
00189 #define LEFT_ARROW_ICON                 "left.gif"
00190 #define UP_ARROW_ICON                   "up.gif"
00191 #define DOWN_ARROW_ICON                 "down.gif"
00192 #define FLAPPING_ICON                   "flapping.gif"
00193 #define SCHEDULED_DOWNTIME_ICON         "downtime.gif"
00194 #define EMPTY_ICON                      "empty.gif"
00195 #define CMD_STOP_ICON                   "cmd_stop.png"
00196 
00197 #define ACTIVE_ICON                     "active.gif"
00198 #define ACTIVE_ICON_ALT                 "Active Mode"
00199 #define STANDBY_ICON                    "standby.gif"
00200 #define STANDBY_ICON_ALT                "Standby Mode"
00201 
00202 #define HOST_DOWN_ICON                  "critical.png"
00203 #define HOST_DOWN_ICON_ALT              "Host Down"
00204 #define HOST_UNREACHABLE_ICON           "critical.png"
00205 #define HOST_UNREACHABLE_ICON_ALT       "Host Unreachable"
00206 #define HOST_UP_ICON                    "recovery.png"
00207 #define HOST_UP_ICON_ALT                "Host Up"
00208 #define HOST_NOTIFICATION_ICON          "notify.gif"
00209 #define HOST_NOTIFICATION_ICON_ALT      "Host Notification"
00210 
00211 #define SERVICE_EVENT_ICON              "serviceevent.gif"
00212 #define SERVICE_EVENT_ICON_ALT          "Service Event Handler"
00213 #define HOST_EVENT_ICON                 "hostevent.gif"
00214 #define HOST_EVENT_ICON_ALT             "Host Event Handler"
00215 
00216 #define THERM_OK_IMAGE                  "thermok.png"
00217 #define THERM_WARNING_IMAGE             "thermwarn.png"
00218 #define THERM_CRITICAL_IMAGE            "thermcrit.png"
00219 
00220 #define CONFIGURATION_ICON              "config.gif"
00221 #define NOTES_ICON                      "notes.gif"
00222 #define ACTION_ICON                     "action.gif"
00223 #define DETAIL_ICON                     "detail.gif"
00224 
00225 #define PARENT_TRAVERSAL_ICON           "parentup.gif"
00226 
00227 #define TAC_DISABLED_ICON               "tacdisabled.png"
00228 #define TAC_ENABLED_ICON                "tacenabled.png"
00229 
00230 #define ZOOM1_ICON                      "zoom1.gif"
00231 #define ZOOM2_ICON                      "zoom2.gif"
00232 
00233 #define CONTEXT_HELP_ICON1              "contexthelp1.gif"
00234 #define CONTEXT_HELP_ICON2              "contexthelp2.gif"
00235 
00236 #define SPLUNK_SMALL_WHITE_ICON         "splunk1.gif"
00237 #define SPLUNK_SMALL_BLACK_ICON         "splunk2.gif"
00238 
00239 #define DATABASE_ICON                   "database.gif"
00240 #define AUTOSAVE_ICON                   "save.gif"
00241 #define DAEMON_WARNING_ICON             "warning_triangle.gif"
00242 #define STATS_ICON                      "stats.gif"
00243 
00244 #define TAC_HEADER_DEFAULT_LOGO         "Icinga_Header_Webinterface.jpg"
00245 #define TAC_HEADER_DEFAULT_LOGO_ALT     "Icinga"
00246 #define TAC_HEADER_LOGO                 "Icinga_TAC_Header_Webinterface.jpg"
00247 #define TAC_HEADER_HOST_ICON            "server.png"
00248 #define TAC_HEADER_SERVICE_ICON         "application-monitor.png"
00249 #define TAC_HEADER_EXECUTION_ICON       "hourglass-exclamation.png"
00250 #define TAC_HEADER_LATENCY_ICON         "hourglass-arrow.png"
00251 
00252 
00253 /************************** PLUGIN RETURN VALUES ****************************/
00254 
00255 #define STATE_OK                0
00256 #define STATE_WARNING           1
00257 #define STATE_CRITICAL          2
00258 #define STATE_UNKNOWN           3       /* changed from -1 on 02/24/2001 */
00259 
00260 
00261 /********************* EXTENDED INFO CGI DISPLAY TYPES  *********************/
00262 
00263 #define DISPLAY_PROCESS_INFO            0
00264 #define DISPLAY_HOST_INFO               1
00265 #define DISPLAY_SERVICE_INFO            2
00266 #define DISPLAY_COMMENTS                3
00267 #define DISPLAY_PERFORMANCE             4
00268 #define DISPLAY_HOSTGROUP_INFO          5
00269 #define DISPLAY_DOWNTIME                6
00270 #define DISPLAY_SCHEDULING_QUEUE        7
00271 #define DISPLAY_SERVICEGROUP_INFO       8
00272 
00273 
00274 /************************ COMMAND CGI COMMAND MODES *************************/
00275 
00276 #define CMDMODE_NONE            0
00277 #define CMDMODE_REQUEST         1
00278 #define CMDMODE_COMMIT          2
00279 
00280 
00281 /************************ CGI CONTENT TYPE *********************************/
00282 #define HTML_CONTENT            0
00283 #define WML_CONTENT             1
00284 #define IMAGE_CONTENT           2
00285 #define CSV_CONTENT             3
00286 #define JSON_CONTENT            4
00287 
00288 
00289 /************************ CSV OUTPUT CHARACTERS ****************************/
00290 #define CSV_DELIMITER           ";"
00291 #define CSV_DATA_ENCLOSURE      "'"
00292 
00293 
00294 /******************** HOST AND SERVICE NOTIFICATION TYPES ******************/
00295 
00296 #define NOTIFICATION_ALL                0       /* all service and host notifications */
00297 #define NOTIFICATION_SERVICE_ALL        1       /* all types of service notifications */
00298 #define NOTIFICATION_HOST_ALL           2       /* all types of host notifications */
00299 #define NOTIFICATION_SERVICE_WARNING    4
00300 #define NOTIFICATION_SERVICE_UNKNOWN    8
00301 #define NOTIFICATION_SERVICE_CRITICAL   16
00302 #define NOTIFICATION_SERVICE_RECOVERY   32
00303 #define NOTIFICATION_HOST_DOWN          64
00304 #define NOTIFICATION_HOST_UNREACHABLE   128
00305 #define NOTIFICATION_HOST_RECOVERY      256
00306 #define NOTIFICATION_SERVICE_ACK        512
00307 #define NOTIFICATION_HOST_ACK           1024
00308 #define NOTIFICATION_SERVICE_FLAP       2048
00309 #define NOTIFICATION_HOST_FLAP          4096
00310 #define NOTIFICATION_SERVICE_CUSTOM     8192
00311 #define NOTIFICATION_HOST_CUSTOM        16384
00312 
00313 
00314 /********************** HOST AND SERVICE ALERT TYPES **********************/
00315 
00316 #define HISTORY_ALL                     0       /* all service and host alert */
00317 #define HISTORY_SERVICE_ALL             1       /* all types of service alerts */
00318 #define HISTORY_HOST_ALL                2       /* all types of host alerts */
00319 #define HISTORY_SERVICE_WARNING         4
00320 #define HISTORY_SERVICE_UNKNOWN         8
00321 #define HISTORY_SERVICE_CRITICAL        16
00322 #define HISTORY_SERVICE_RECOVERY        32
00323 #define HISTORY_HOST_DOWN               64
00324 #define HISTORY_HOST_UNREACHABLE        128
00325 #define HISTORY_HOST_RECOVERY           256
00326 
00327 
00328 /****************************** SORT TYPES  *******************************/
00329 
00330 #define SORT_NONE                       0
00331 #define SORT_ASCENDING                  1
00332 #define SORT_DESCENDING                 2
00333 
00334 
00335 /***************************** SORT OPTIONS  ******************************/
00336 
00337 #define SORT_NOTHING                    0
00338 #define SORT_HOSTNAME                   1
00339 #define SORT_SERVICENAME                2
00340 #define SORT_SERVICESTATUS              3
00341 #define SORT_LASTCHECKTIME              4
00342 #define SORT_CURRENTATTEMPT             5
00343 #define SORT_STATEDURATION              6
00344 #define SORT_NEXTCHECKTIME              7
00345 #define SORT_HOSTSTATUS                 8
00346 
00347 
00348 /****************** HOST AND SERVICE FILTER PROPERTIES  *******************/
00349 
00350 #define HOST_SCHEDULED_DOWNTIME         1
00351 #define HOST_NO_SCHEDULED_DOWNTIME      2
00352 #define HOST_STATE_ACKNOWLEDGED         4
00353 #define HOST_STATE_UNACKNOWLEDGED       8
00354 #define HOST_CHECKS_DISABLED            16
00355 #define HOST_CHECKS_ENABLED             32
00356 #define HOST_EVENT_HANDLER_DISABLED     64
00357 #define HOST_EVENT_HANDLER_ENABLED      128
00358 #define HOST_FLAP_DETECTION_DISABLED    256
00359 #define HOST_FLAP_DETECTION_ENABLED     512
00360 #define HOST_IS_FLAPPING                1024
00361 #define HOST_IS_NOT_FLAPPING            2048
00362 #define HOST_NOTIFICATIONS_DISABLED     4096
00363 #define HOST_NOTIFICATIONS_ENABLED      8192
00364 #define HOST_PASSIVE_CHECKS_DISABLED    16384
00365 #define HOST_PASSIVE_CHECKS_ENABLED     32768
00366 #define HOST_PASSIVE_CHECK              65536
00367 #define HOST_ACTIVE_CHECK               131072
00368 #define HOST_HARD_STATE                 262144
00369 #define HOST_SOFT_STATE                 524288
00370 
00371 
00372 #define SERVICE_SCHEDULED_DOWNTIME      1
00373 #define SERVICE_NO_SCHEDULED_DOWNTIME   2
00374 #define SERVICE_STATE_ACKNOWLEDGED      4
00375 #define SERVICE_STATE_UNACKNOWLEDGED    8
00376 #define SERVICE_CHECKS_DISABLED         16
00377 #define SERVICE_CHECKS_ENABLED          32
00378 #define SERVICE_EVENT_HANDLER_DISABLED  64
00379 #define SERVICE_EVENT_HANDLER_ENABLED   128
00380 #define SERVICE_FLAP_DETECTION_ENABLED  256
00381 #define SERVICE_FLAP_DETECTION_DISABLED 512
00382 #define SERVICE_IS_FLAPPING             1024
00383 #define SERVICE_IS_NOT_FLAPPING         2048
00384 #define SERVICE_NOTIFICATIONS_DISABLED  4096
00385 #define SERVICE_NOTIFICATIONS_ENABLED   8192
00386 #define SERVICE_PASSIVE_CHECKS_DISABLED 16384
00387 #define SERVICE_PASSIVE_CHECKS_ENABLED  32768
00388 #define SERVICE_PASSIVE_CHECK           65536
00389 #define SERVICE_ACTIVE_CHECK            131072
00390 #define SERVICE_HARD_STATE              262144
00391 #define SERVICE_SOFT_STATE              524288
00392 
00393 
00394 /****************************** SSI TYPES  ********************************/
00395 
00396 #define SSI_HEADER                      0
00397 #define SSI_FOOTER                      1
00398 
00399 
00400 /************************ CONTEXT-SENSITIVE HELP  *************************/
00401 
00402 #define CONTEXTHELP_STATUS_DETAIL       "A1"
00403 #define CONTEXTHELP_STATUS_HGOVERVIEW   "A2"
00404 #define CONTEXTHELP_STATUS_HGSUMMARY    "A3"
00405 #define CONTEXTHELP_STATUS_HGGRID       "A4"
00406 #define CONTEXTHELP_STATUS_SVCPROBLEMS  "A5"
00407 #define CONTEXTHELP_STATUS_HOST_DETAIL  "A6"
00408 #define CONTEXTHELP_STATUS_HOSTPROBLEMS "A7"
00409 #define CONTEXTHELP_STATUS_SGOVERVIEW   "A8"
00410 #define CONTEXTHELP_STATUS_SGSUMMARY    "A9"
00411 #define CONTEXTHELP_STATUS_SGGRID       "A10"
00412 
00413 #define CONTEXTHELP_TAC                 "B1"
00414 
00415 #define CONTEXTHELP_MAP                 "C1"
00416 
00417 #define CONTEXTHELP_LOG                 "D1"
00418 
00419 #define CONTEXTHELP_HISTORY             "E1"
00420 
00421 #define CONTEXTHELP_NOTIFICATIONS       "F1"
00422 
00423 #define CONTEXTHELP_TRENDS_MENU1        "G1"
00424 #define CONTEXTHELP_TRENDS_MENU2        "G2"
00425 #define CONTEXTHELP_TRENDS_MENU3        "G3"
00426 #define CONTEXTHELP_TRENDS_MENU4        "G4"
00427 #define CONTEXTHELP_TRENDS_HOST         "G5"
00428 #define CONTEXTHELP_TRENDS_SERVICE      "G6"
00429 
00430 #define CONTEXTHELP_AVAIL_MENU1         "H1"
00431 #define CONTEXTHELP_AVAIL_MENU2         "H2"
00432 #define CONTEXTHELP_AVAIL_MENU3         "H3"
00433 #define CONTEXTHELP_AVAIL_MENU4         "H4"
00434 #define CONTEXTHELP_AVAIL_MENU5         "H5"
00435 #define CONTEXTHELP_AVAIL_HOSTGROUP     "H6"
00436 #define CONTEXTHELP_AVAIL_HOST          "H7"
00437 #define CONTEXTHELP_AVAIL_SERVICE       "H8"
00438 #define CONTEXTHELP_AVAIL_SERVICEGROUP  "H9"
00439 
00440 #define CONTEXTHELP_EXT_HOST            "I1"
00441 #define CONTEXTHELP_EXT_SERVICE         "I2"
00442 #define CONTEXTHELP_EXT_HOSTGROUP       "I3"
00443 #define CONTEXTHELP_EXT_PROCESS         "I4"
00444 #define CONTEXTHELP_EXT_PERFORMANCE     "I5"
00445 #define CONTEXTHELP_EXT_COMMENTS        "I6"
00446 #define CONTEXTHELP_EXT_DOWNTIME        "I7"
00447 #define CONTEXTHELP_EXT_QUEUE           "I8"
00448 #define CONTEXTHELP_EXT_SERVICEGROUP    "I9"
00449 
00450 #define CONTEXTHELP_CMD_INPUT           "J1"
00451 #define CONTEXTHELP_CMD_COMMIT          "J2"
00452 
00453 #define CONTEXTHELP_OUTAGES             "K1"
00454 
00455 #define CONTEXTHELP_CONFIG_MENU                 "L1"
00456 #define CONTEXTHELP_CONFIG_HOSTS                "L2"
00457 #define CONTEXTHELP_CONFIG_HOSTDEPENDENCIES     "L3"
00458 #define CONTEXTHELP_CONFIG_HOSTESCALATIONS      "L4"
00459 #define CONTEXTHELP_CONFIG_HOSTGROUPS           "L5"
00460 #define CONTEXTHELP_CONFIG_HOSTGROUPESCALATIONS "L6"
00461 #define CONTEXTHELP_CONFIG_SERVICES             "L7"
00462 #define CONTEXTHELP_CONFIG_SERVICEDEPENDENCIES  "L8"
00463 #define CONTEXTHELP_CONFIG_SERVICEESCALATIONS   "L9"
00464 #define CONTEXTHELP_CONFIG_CONTACTS             "L10"
00465 #define CONTEXTHELP_CONFIG_CONTACTGROUPS        "L11"
00466 #define CONTEXTHELP_CONFIG_TIMEPERIODS          "L12"
00467 #define CONTEXTHELP_CONFIG_COMMANDS             "L13"
00468 #define CONTEXTHELP_CONFIG_HOSTEXTINFO          "L14"
00469 #define CONTEXTHELP_CONFIG_SERVICEEXTINFO       "L15"
00470 #define CONTEXTHELP_CONFIG_SERVICEGROUPS        "L16"
00471 
00472 #define CONTEXTHELP_HISTOGRAM_MENU1     "M1"
00473 #define CONTEXTHELP_HISTOGRAM_MENU2     "M2"
00474 #define CONTEXTHELP_HISTOGRAM_MENU3     "M3"
00475 #define CONTEXTHELP_HISTOGRAM_MENU4     "M4"
00476 #define CONTEXTHELP_HISTOGRAM_HOST      "M5"
00477 #define CONTEXTHELP_HISTOGRAM_SERVICE   "M6"
00478 
00479 #define CONTEXTHELP_SUMMARY_MENU                        "N1"
00480 #define CONTEXTHELP_SUMMARY_RECENT_ALERTS               "N2"
00481 #define CONTEXTHELP_SUMMARY_ALERT_TOTALS                "N3"
00482 #define CONTEXTHELP_SUMMARY_HOSTGROUP_ALERT_TOTALS      "N4"
00483 #define CONTEXTHELP_SUMMARY_HOST_ALERT_TOTALS           "N5"
00484 #define CONTEXTHELP_SUMMARY_SERVICE_ALERT_TOTALS        "N6"
00485 #define CONTEXTHELP_SUMMARY_ALERT_PRODUCERS             "N7"
00486 #define CONTEXTHELP_SUMMARY_SERVICEGROUP_ALERT_TOTALS   "N8"
00487 
00488 
00489 /************************** HTTP CHARSET ****************************/
00490 
00491 #define DEFAULT_HTTP_CHARSET "utf-8"
00492 
00493 /************************** JSON OUTPUT VERSION ************************/
00494 
00495 #define JSON_OUTPUT_VERSION "1.4.0"
00496 
00497 
00498 /************************** BUFFER  ***************************************/
00499 
00500 #define MAX_MESSAGE_BUFFER              4096
00501 
00502 
00503 /************************** DISPLAY STYLE  ********************************/
00504 
00505 #define DISPLAY_NONE                    -1
00506 #define DISPLAY_HOSTS                   0
00507 #define DISPLAY_HOSTGROUPS              1
00508 #define DISPLAY_SERVICEGROUPS           2
00509 #define DISPLAY_CONTACTS                3
00510 #define DISPLAY_CONTACTGROUPS           4
00511 #define DISPLAY_SERVICES                5
00512 #define DISPLAY_TIMEPERIODS             6
00513 #define DISPLAY_COMMANDS                7
00514 #define DISPLAY_HOSTGROUPESCALATIONS    8    /* no longer implemented */
00515 #define DISPLAY_SERVICEDEPENDENCIES     9
00516 #define DISPLAY_SERVICEESCALATIONS      10
00517 #define DISPLAY_HOSTDEPENDENCIES        11
00518 #define DISPLAY_HOSTESCALATIONS         12
00519 #define DISPLAY_ALL                     13
00520 #define DISPLAY_MODULES                 14
00521 #define DISPLAY_COMMAND_EXPANSION       16211
00522 
00523 #define STYLE_OVERVIEW                  0
00524 #define STYLE_DETAIL                    1
00525 #define STYLE_SUMMARY                   2
00526 #define STYLE_GRID                      3
00527 #define STYLE_HOST_DETAIL               4
00528 
00529 /************************** HISTORY  ************************************/
00530 
00531 #define SERVICE_HISTORY                 0
00532 #define HOST_HISTORY                    1
00533 #define SERVICE_FLAPPING_HISTORY        2
00534 #define HOST_FLAPPING_HISTORY           3
00535 #define SERVICE_DOWNTIME_HISTORY        4
00536 #define HOST_DOWNTIME_HISTORY           5
00537 
00538 /************************** STATE  **************************************/
00539 
00540 #define STATE_ALL                       0
00541 #define STATE_SOFT                      1
00542 #define STATE_HARD                      2
00543 
00544 /********************* standard report times ****************************/
00545 
00546 #define TIMEPERIOD_CUSTOM       0
00547 #define TIMEPERIOD_TODAY        1
00548 #define TIMEPERIOD_YESTERDAY    2
00549 #define TIMEPERIOD_THISWEEK     3
00550 #define TIMEPERIOD_LASTWEEK     4
00551 #define TIMEPERIOD_THISMONTH    5
00552 #define TIMEPERIOD_LASTMONTH    6
00553 #define TIMEPERIOD_THISQUARTER  7
00554 #define TIMEPERIOD_LASTQUARTER  8
00555 #define TIMEPERIOD_THISYEAR     9
00556 #define TIMEPERIOD_LASTYEAR     10
00557 #define TIMEPERIOD_LAST24HOURS  11
00558 #define TIMEPERIOD_LAST7DAYS    12
00559 #define TIMEPERIOD_LAST31DAYS   13
00560 #define TIMEPERIOD_SINGLE_DAY   14
00561 #define TIMEPERIOD_NEXTPROBLEM  15
00562 
00563 /******************************** FUNCTIONS *******************************/
00564 
00565 void reset_cgi_vars(void);
00566 void free_memory(void);
00567 
00568 char * get_cgi_config_location(void);                           /* gets location of the CGI config file to read */
00569 char * get_cmd_file_location(void);                             /* gets location of external command file to write to */
00570 
00571 int read_cgi_config_file(char *);
00572 int read_main_config_file(char *);
00573 int read_all_object_configuration_data(char *,int);
00574 int read_all_status_data(char *,int);
00575 
00576 char *unescape_newlines(char *);
00577 char *escape_newlines(char *);
00578 void sanitize_plugin_output(char *);                            /* strips HTML and bad characters from plugin output */
00579 void strip_html_brackets(char *);                               /* strips > and < from string */
00580 
00581 void get_time_string(time_t *,char *,int,int);                  /* gets a date/time string */
00582 void get_interval_time_string(double,char *,int);               /* gets a time string for an interval of time */
00583 
00584 char * url_encode(char *);                                      /* encodes a string in proper URL format */
00585 char * html_encode(char *,int);                                 /* encodes a string in HTML format (for what the user sees) */
00586 char * escape_string(char *);                                   /* escape string for html form usage */
00587 
00588 void print_extra_hostgroup_url(char *,char *);
00589 void print_extra_servicegroup_url(char *,char *);
00590 
00591 void display_info_table(char *,int,authdata *, int);
00592 void display_nav_table(char *,int);
00593 
00594 void display_splunk_host_url(host *);
00595 void display_splunk_service_url(service *);
00596 void display_splunk_generic_url(char *,int);
00597 void strip_splunk_query_terms(char *);
00598 
00599 void include_ssi_files(char *,int);                             /* include user-defined SSI footers/headers */
00600 void include_ssi_file(char *);                                  /* include user-defined SSI footer/header */
00601 
00602 void cgi_config_file_error(char *);
00603 void main_config_file_error(char *);
00604 void object_data_error(void);
00605 void status_data_error(void);
00606 void print_error(char*, int);
00607 
00608 void display_context_help(char *);                              /* displays context-sensitive help window */
00609 
00610 void document_header(int,int);                                  /* print document header */
00611 void document_footer(int);                                      /* print document footer */
00612 
00613 void write_popup_code(int);                                     /* PopUp's for graphics */
00614 int check_daemon_running(void);
00615 
00616 void print_generic_error_message(char *, char *, int);
00617 
00618 char *get_export_csv_link(char *);                              /* function to make export csv link XSS save #1275 */
00619 
00620 int write_to_cgi_log(char *);
00621 int rotate_log_file(void);
00622 int my_rename(char *,char *);                                   /* renames a file - works across filesystems */
00623 int my_fcopy(char *,char *);                                    /* copies a file - works across filesystems */
00624 int my_fdcopy(char *, char *, int);                             /* copies a named source to an already opened destination file */
00625 
00626 void convert_timeperiod_to_times(int, time_t *, time_t *);      /* converts time period to start and end unix timestamps */
00627 int string_to_time(char *, time_t *);                           /* converts a defined formated string to unix timestamp */
00628 
00629 int is_dlst_time(time_t *);
00630 char *json_encode(char *);
00631 
00632 /******************************** MULTIURL PATCH *******************************/
00633 
00634 #ifndef DISABLE_MULTIURL
00635 
00636 #define MU_PATCH_ID     "+MU"
00637 
00638 int MU_lasturl, MU_thisurl;
00639 char MU_iconstr[16], *MU_origstr, *MU_ptr;
00640 
00641 /* Have process_macros() generate processed_string *BEFORE* starting the loop */
00642 
00643 #define BEGIN_MULTIURL_LOOP                                                                             \
00644         /* Init counters */     MU_lasturl=0; MU_iconstr[0]='\0';                                       \
00645         /* MAIN LOOP */         for (MU_origstr=MU_ptr=processed_string; (*MU_ptr)!='\0'; ) {           \
00646                 /* Internal init */     MU_thisurl=MU_lasturl;                                          \
00647                 /* Skip whitespace */   for (;isspace(*MU_ptr);MU_ptr++) ;                              \
00648                 /* Detect+skip ap. */   for (;(*MU_ptr)=='\'';MU_ptr++) MU_thisurl=MU_lasturl+1;        \
00649                 /* Ap. found? */        if (MU_thisurl>MU_lasturl) {                                    \
00650                         /* yes->split str */    sprintf(MU_iconstr,"%u-",MU_thisurl);                   \
00651                                                 processed_string=MU_ptr;                                \
00652                                                 for (;((*MU_ptr)!='\0')&&((*MU_ptr)!='\'');MU_ptr++) ;  \
00653                                                 if ((*MU_ptr)=='\'') { (*MU_ptr)='\0'; MU_ptr++;        \
00654                                                         for (;isspace(*MU_ptr);MU_ptr++) ; }            \
00655                                         } else {                                                        \
00656                         /* no->end loop */      MU_iconstr[0]='\0'; MU_ptr="";                          \
00657                                         }
00658 
00659 /* Do the original printf()s, additionally inserting MU_iconstr between icon path and icon (file)name */
00660 
00661 #define END_MULTIURL_LOOP                                                                               \
00662                 /* Int -> ext ctr */    MU_lasturl=MU_thisurl; processed_string=MU_ptr;                 \
00663         /* MAIN LOOP */         }                                                                       \
00664         /* Hide evidence */     processed_string=MU_origstr;
00665 
00666 /* Do the free(processed_string) *AFTER* ending the loop */
00667 
00668 #else /* ndef DISABLE_MULTIURL */
00669 
00670 #define MU_PATCH_ID     ""
00671 char *MU_iconstr="";
00672 
00673 #endif /* ndef DISABLE_MULTIURL */
00674 
00675 
00676 
00677 #ifdef __cplusplus
00678 }
00679 #endif
00680 
00681 #endif
00682 
 All Data Structures Files Functions Variables Typedefs Defines