Commit 3b8c280b authored by Alexander Wirt's avatar Alexander Wirt

Imported Upstream version 1.4.2

parent e522c868
......@@ -2,7 +2,26 @@
Icinga 1.4.x Change Log
#######################
1.4.1 - ??/06/2011
1.4.2 - 29/06/2011
ENHANCEMENTS
* classic ui: add a check for status data freshness into cgis #1667
FIXES
* core: fix freshness_threshold problem in host checks by using check_interval in HARD or OK state, else retry_interval (like service checks) #1331
* classic ui: re-fix xss vulnerability and string escaping for command expansion #1605 #1624
* classic ui: remove sidebar.html inclusion in index.html causing troubles on reload #1632
* classic ui: fixed: User can execute host/servicegroup commands even if not authorized for (Sven Nierlein) #1679
* classic ui: fixed: plugin_output_short didn't get checked properly and caused segfault in status.cgi #1673
* idoutils: do not update start_time of already started downtimes #1658
* idoutils: fix started downtime update for table scheduleddowntime in oracle #1658
* install: fix make install-idoutils overwrites sample - adding idoutils.cfg-sample instead #1625
1.4.1 - 08/06/2011
ENHANCEMENTS
......
......@@ -75,7 +75,7 @@ MKDIR=/bin/mkdir
###############################
# Global
###############################
ICINGA_VERSION=1.4.1
ICINGA_VERSION=1.4.2
CP=@CP@
......
......@@ -2615,7 +2615,10 @@ int is_host_result_fresh(host *temp_host, time_t current_time, int log_this){
/* use user-supplied freshness threshold or auto-calculate a freshness threshold to use? */
if(temp_host->freshness_threshold==0)
freshness_threshold=(temp_host->check_interval*interval_length)+temp_host->latency+additional_freshness_latency;
if(temp_host->state_type==HARD_STATE || temp_host->current_state==STATE_OK)
freshness_threshold=(temp_host->check_interval*interval_length)+temp_host->latency+additional_freshness_latency;
else
freshness_threshold=(temp_host->retry_interval*interval_length)+temp_host->latency+additional_freshness_latency;
else
freshness_threshold=temp_host->freshness_threshold;
......
......@@ -3,7 +3,7 @@
* ICINGA.C - Core Program Code For Icinga
*
* Program: Icinga
* Version: 1.4.1
* Version: 1.4.2
* License: GPL
* Copyright (c) 1999-2009 Ethan Galstad (http://www.nagios.org)
* Copyright (c) 2009-2011 Nagios Core Development Team and Community Contributors
......
......@@ -3,7 +3,7 @@
* ICINGASTATS.C - Displays Icinga Statistics
*
* Program: Icingastats
* Version: 1.4.1
* Version: 1.4.2
* License: GPL
* Copyright (c) 2003-2008 Ethan Galstad (egalstad@nagios.org)
* Copyright (c) 2009-2011 Nagios Core Development Team and Community Contributors
......
......@@ -858,3 +858,39 @@ int is_authorized_for_host_commands(host *hst, authdata *authinfo){
}
/* check is the current user is authorized to issue commands relating to a particular servicegroup */
int is_authorized_for_servicegroup_commands(servicegroup *sg, authdata *authinfo){
servicesmember *temp_servicesmember;
service *temp_service;
if(sg==NULL)
return FALSE;
/* see if user is authorized for all services commands in the servicegroup */
for(temp_servicesmember=sg->members;temp_servicesmember!=NULL;temp_servicesmember=temp_servicesmember->next){
temp_service=find_service(temp_servicesmember->host_name,temp_servicesmember->service_description);
if(is_authorized_for_service_commands(temp_service,authinfo)==FALSE)
return FALSE;
}
return TRUE;
}
/* check is the current user is authorized to issue commands relating to a particular hostgroup */
int is_authorized_for_hostgroup_commands(hostgroup *hg, authdata *authinfo){
hostsmember *temp_hostsmember;
host *temp_host;
if(hg==NULL)
return FALSE;
/* see if user is authorized for all hosts in the hostgroup */
for(temp_hostsmember=hg->members;temp_hostsmember!=NULL;temp_hostsmember=temp_hostsmember->next){
temp_host=find_host(temp_hostsmember->host_name);
if(is_authorized_for_host_commands(temp_host,authinfo)==FALSE)
return FALSE;
}
return TRUE;
}
......@@ -85,6 +85,7 @@ extern int enable_failure_prediction;
extern int process_performance_data;
extern time_t last_command_check;
extern time_t last_log_rotation;
extern time_t status_file_creation_time;
/** readlogs.c **/
int log_rotation_method=LOG_ROTATION_NONE;
......@@ -94,7 +95,7 @@ extern time_t next_scheduled_log_rotation;
char log_file[MAX_INPUT_BUFFER];
char log_archive_path[MAX_INPUT_BUFFER];
int status_update_interval=60;
int check_external_commands=0;
int log_external_commands_user=FALSE;
......@@ -628,6 +629,12 @@ int read_main_config_file(char *filename){
interval_length=(temp_buffer==NULL)?60:atoi(temp_buffer);
}
else if(strstr(input,"status_update_interval=")==input){
temp_buffer=strtok(input,"=");
temp_buffer=strtok(NULL,"\x0");
status_update_interval=(temp_buffer==NULL)?60:atoi(temp_buffer);
}
else if(strstr(input,"log_file=")==input){
temp_buffer=strtok(input,"=");
temp_buffer=strtok(NULL,"\x0");
......@@ -1529,6 +1536,9 @@ char * html_encode(char *input, int escape_newlines){
int x,y;
char temp_expansion[10];
if (input==NULL)
return "";
/* we need up to six times the space to do the conversion */
len=(int)strlen(input);
output_len=len*6;
......@@ -1773,6 +1783,9 @@ void display_info_table(char *title,int refresh, authdata *current_authdata, int
printf("<DIV CLASS='infoBoxBadProcStatus'>- Service checks are disabled</DIV>");
}
if(status_file_creation_time<(current_time-status_update_interval-10))
printf("<DIV CLASS='infoBoxBadProcStatus'>Warning: Status data OUTDATED! Last status data update was %d seconds ago!</DIV>",(int)(current_time-status_file_creation_time));
printf("</TD></TR>\n");
printf("</TABLE>\n");
......
......@@ -2175,11 +2175,11 @@ void commit_command_data(int cmd){
cmd==CMD_ENABLE_HOSTGROUP_SVC_CHECKS || cmd==CMD_DISABLE_HOSTGROUP_SVC_CHECKS || \
cmd==CMD_SCHEDULE_HOSTGROUP_HOST_DOWNTIME || cmd==CMD_SCHEDULE_HOSTGROUP_SVC_DOWNTIME ){
temp_hostgroup=find_hostgroup(hostgroup_name);
if(is_authorized_for_hostgroup(temp_hostgroup,&current_authdata)==TRUE)
if(is_authorized_for_hostgroup_commands(temp_hostgroup,&current_authdata)==TRUE)
is_authorized[x]=TRUE;
} else {
temp_servicegroup=find_servicegroup(servicegroup_name);
if(is_authorized_for_servicegroup(temp_servicegroup,&current_authdata)==TRUE)
if(is_authorized_for_servicegroup_commands(temp_servicegroup,&current_authdata)==TRUE)
is_authorized[x]=TRUE;
}
......
......@@ -112,7 +112,7 @@ void print_expand_input(int type){
else if (type==DISPLAY_HOSTESCALATIONS){ seldesc=" Escalations for Host"; }
printf("<tr><td align=left class='reportSelectSubTitle'>Show Only%s:</td></tr>\n",seldesc);
printf("<tr><td align=left class='reportSelectItem'><input type='text' name='expand'\n");
printf("value='%s'>",html_encode(to_expand,FALSE));
printf("value='%s'>",escape_string(to_expand));
}
int main(void){
......@@ -429,7 +429,7 @@ int process_cgivars(void){
error=TRUE;
break;
}
strncpy(to_expand,escape_string(variables[x]),MAX_COMMAND_BUFFER);
strncpy(to_expand,variables[x],MAX_COMMAND_BUFFER);
to_expand[MAX_COMMAND_BUFFER-1]='\0';
}
......@@ -516,7 +516,7 @@ void display_hosts(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Host%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P><DIV ALIGN=CENTER>\n");
printf("<TABLE BORDER=0 CLASS='data'>\n");
......@@ -1076,7 +1076,7 @@ void display_hostgroups(void){
printf("%sAction URL%s\n",csv_data_enclosure,csv_data_enclosure);
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Host Group%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -1209,7 +1209,7 @@ void display_servicegroups(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Service Group%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -1348,7 +1348,7 @@ void display_contacts(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Contact%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -1629,7 +1629,7 @@ void display_contactgroups(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Contact Group%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -1771,7 +1771,7 @@ void display_services(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Service%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":"s Named or on Host "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":"s Named or on Host "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -2314,7 +2314,7 @@ void display_timeperiods(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Time Period%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -2591,7 +2591,7 @@ void display_commands(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Command%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P><DIV ALIGN=CENTER>\n");
printf("<TABLE BORDER=0 CLASS='data'>\n");
......@@ -2664,7 +2664,7 @@ void display_servicedependencies(void){
printf("%sDependency Failure Options%s\n",csv_data_enclosure,csv_data_enclosure);
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Service Dependencie%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":"s Involving Host "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":"s Involving Host "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -2819,7 +2819,7 @@ void display_serviceescalations(void){
printf("%sEscalation Options%s\n",csv_data_enclosure,csv_data_enclosure);
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Service Escalation%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":"s on Host "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":"s on Host "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -3067,7 +3067,7 @@ void display_hostdependencies(void){
printf("%sDependency Failure Options%s\n",csv_data_enclosure,csv_data_enclosure);
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Host Dependencie%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":"s Involving Host "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":"s Involving Host "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -3202,7 +3202,7 @@ void display_hostescalations(void){
printf("%sEscalation Options%s\n",csv_data_enclosure,csv_data_enclosure);
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Host Escalation%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":"s for Host "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":"s for Host "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P>\n");
printf("<DIV ALIGN=CENTER>\n");
......@@ -3421,7 +3421,7 @@ void display_modules(void){
printf("\n");
} else {
printf("<P><DIV ALIGN=CENTER CLASS='dataTitle'>Module%s%s</DIV></P>\n",
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":html_encode(to_expand,FALSE)));
(*to_expand=='\0'?"s":" "),(*to_expand=='\0'?"":escape_string(to_expand)));
printf("<P><DIV ALIGN=CENTER>\n");
printf("<TABLE BORDER=0 CLASS='data'>\n");
......@@ -3548,9 +3548,9 @@ void display_command_expansion(void){
if ((*to_expand)!='\0'){
arg_count[0]=0;
printf("<TR CLASS='dataEven'><TD CLASS='dataEven'>To expand:</TD><TD CLASS='dataEven'>%s",command_args[0]);
printf("<TR CLASS='dataEven'><TD CLASS='dataEven'>To expand:</TD><TD CLASS='dataEven'>%s",escape_string(command_args[0]));
for (i=1;(i<MAX_COMMAND_ARGUMENTS)&&command_args[i];i++)
printf("!<FONT\n COLOR='%s'>%s</FONT>",hash_color(i),command_args[i]);
printf("!<FONT\n COLOR='%s'>%s</FONT>",hash_color(i),escape_string(command_args[i]));
printf("\n</TD></TR>\n");
/* check all commands */
......@@ -3607,7 +3607,7 @@ void display_command_expansion(void){
if (command_args[i]){
if (*(command_args[i])!='\0') printf("<FONT COLOR='%s'><B>%s%s%s</B></FONT>",
hash_color(i),((lead_space[i]>0)||(trail_space[i]>0)?"<U>&zwj;":""),
html_encode(command_args[i],FALSE),((lead_space[i]>0)||(trail_space[i]>0)?"&zwj;</U>":""));
escape_string(command_args[i]),((lead_space[i]>0)||(trail_space[i]>0)?"&zwj;</U>":""));
else printf("<FONT COLOR='#0000FF'>(empty)</FONT>");
}
else printf("<FONT COLOR='#0000FF'>(undefined)</FONT>");
......@@ -3632,13 +3632,13 @@ void display_command_expansion(void){
if (arg_count[i]==0){
printf("<TR CLASS='%s'><TD CLASS='%s' ALIGN='right'><FONT COLOR='#FF0000'>unused:</FONT></TD>\n",bg_class,bg_class);
printf("<TD CLASS='%s'>$ARG%u$=<FONT COLOR='%s'>%s%s%s</FONT></TD></TR>\n",bg_class,i,hash_color(i),
((lead_space[i]>0)||(trail_space[i]>0)?"<U>&zwj;":""),html_encode(command_args[i],FALSE),
((lead_space[i]>0)||(trail_space[i]>0)?"<U>&zwj;":""),escape_string(command_args[i]),
((lead_space[i]>0)||(trail_space[i]>0)?"&zwj;</U>":""));
}
else if (arg_count[i]>1){
printf("<TR CLASS='%s'><TD CLASS='%s' ALIGN='right'>used %u x:</TD>\n",bg_class,bg_class,i);
printf("<TD CLASS='%s'>$ARG%u$=<FONT COLOR='%s'>%s%s%s</FONT></TD></TR>\n",bg_class,i,hash_color(i),
((lead_space[i]>0)||(trail_space[i]>0)?"<U>&zwj;":""),html_encode(command_args[i],FALSE),
((lead_space[i]>0)||(trail_space[i]>0)?"<U>&zwj;":""),escape_string(command_args[i]),
((lead_space[i]>0)||(trail_space[i]>0)?"&zwj;</U>":""));
}
if ((lead_space[i]>0)||(trail_space[i]>0)){
......@@ -3673,13 +3673,13 @@ void display_command_expansion(void){
if (!arg_count[0]){
printf("<TR CLASS='dataOdd'><TD CLASS='dataOdd' ALIGN='right'><FONT\n");
printf("COLOR='#FF0000'>Error:</FONT></TD><TD CLASS='dataOdd'><FONT COLOR='#FF0000'>No\n");
printf("command &quot;%s&quot; found</FONT></TD></TR>\n",html_encode(command_args[0],FALSE));
printf("command &quot;%s&quot; found</FONT></TD></TR>\n",escape_string(command_args[0]));
}
}
printf("<TR CLASS='dataEven'><TD CLASS='dataEven'>To expand:</TD><TD CLASS='dataEven'><FORM\n");
printf("METHOD='GET' ACTION='%s'><INPUT TYPE='HIDDEN' NAME='type' VALUE='command'><INPUT\n",CONFIG_CGI);
printf("TYPE='text' NAME='expand' SIZE='100%%' VALUE='%s'>\n",html_encode(to_expand,FALSE));
printf("TYPE='text' NAME='expand' SIZE='100%%' VALUE='%s'>\n",escape_string(to_expand));
printf("<INPUT TYPE='SUBMIT' VALUE='Go'></FORM></TD></TR>\n");
printf("</TABLE>\n");
......
......@@ -5154,10 +5154,13 @@ int add_status_data(int status_type, hoststatus *host_status, servicestatus *ser
/* plugin ouput */
if (status_show_long_plugin_output!=FALSE && plugin_output_long!=NULL) {
if(content_type==CSV_CONTENT || content_type==JSON_CONTENT)
dummy=asprintf(&plugin_output,"%s %s",plugin_output_short,escape_newlines(plugin_output_long));
else
dummy=asprintf(&plugin_output,"%s<BR>%s",html_encode(plugin_output_short,TRUE),html_encode(plugin_output_long,TRUE));
if(content_type==CSV_CONTENT || content_type==JSON_CONTENT) {
if (plugin_output_short!=NULL)
dummy=asprintf(&plugin_output,"%s",escape_newlines(plugin_output_long));
else
dummy=asprintf(&plugin_output,"%s %s",plugin_output_short,escape_newlines(plugin_output_long));
} else
dummy=asprintf(&plugin_output,"%s<BR>%s",(plugin_output_short==NULL)?"":html_encode(plugin_output_short,TRUE),html_encode(plugin_output_long,TRUE));
} else if (plugin_output_short!=NULL) {
if(content_type==CSV_CONTENT || content_type==JSON_CONTENT)
dummy=asprintf(&plugin_output,"%s",plugin_output_short);
......
......@@ -2399,9 +2399,9 @@ ac_config_headers="$ac_config_headers include/config.h include/snprintf.h"
PKG_NAME=icinga-core
PKG_VERSION="1.4.1"
PKG_VERSION="1.4.2"
PKG_HOME_URL="http://www.icinga.org/"
PKG_REL_DATE="05-11-2011"
PKG_REL_DATE="06-29-2011"
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
......@@ -8307,7 +8307,7 @@ echo ""
echo "Creating sample config files in module/idoutils/config/ ..."
perl subst $srcdir/module/idoutils/config/icinga.cfg
perl subst $srcdir/module/idoutils/config/idoutils.cfg
perl subst $srcdir/module/idoutils/config/idoutils.cfg-sample
perl subst $srcdir/module/idoutils/config/ido2db.cfg-sample
perl subst $srcdir/module/idoutils/config/idomod.cfg-sample
......
......@@ -9,9 +9,9 @@ AC_CONFIG_HEADER(include/config.h include/snprintf.h)
AC_PREFIX_DEFAULT(/usr/local/icinga)
PKG_NAME=icinga-core
PKG_VERSION="1.4.1"
PKG_VERSION="1.4.2"
PKG_HOME_URL="http://www.icinga.org/"
PKG_REL_DATE="05-11-2011"
PKG_REL_DATE="06-29-2011"
dnl Figure out how to invoke "install" and what install options to use.
AC_PROG_INSTALL
......@@ -1205,7 +1205,7 @@ echo ""
echo "Creating sample config files in module/idoutils/config/ ..."
perl subst $srcdir/module/idoutils/config/icinga.cfg
perl subst $srcdir/module/idoutils/config/idoutils.cfg
perl subst $srcdir/module/idoutils/config/idoutils.cfg-sample
perl subst $srcdir/module/idoutils/config/ido2db.cfg-sample
perl subst $srcdir/module/idoutils/config/idomod.cfg-sample
......
......@@ -20,7 +20,7 @@
now=`date +%s`
commandfile='/usr/local/icinga/var/rw/icinga.cmd'
/bin/printf "[%lu] ACKNOWLEDGE_HOST_PROBLEM; $now &gt; $commandfile</programlisting>
/bin/printf "[%lu] ACKNOWLEDGE_HOST_PROBLEM;Host1;1;1;1;Max Mustermann;ein Kommentar\n" $now &gt; $commandfile</programlisting>
<!--
<para><emphasis role="bold">Index</emphasis></para>
......
......@@ -18,11 +18,15 @@
<para><link linkend="upgrading-rpm">Aktualisierung einer RPM-Installation</link></para>
<note><para>Wenn Sie die &name-idoutils; benutzen, dann müssen Sie auch diese aktualisieren. Weitere Informationen finden Sie im Abschnitt
<link linkend="upgrading_idoutils">IDOUtils-Datenbank aktualisieren</link>.</para></note>
<note>
<para>Wenn Sie die &name-idoutils; benutzen, dann müssen Sie auch diese aktualisieren. Weitere Informationen finden Sie im Abschnitt
<link linkend="upgrading_idoutils">IDOUtils-Datenbank aktualisieren</link>.</para>
</note>
<note><para>Wenn Sie &name-web; benutzen, dann müssen Sie auch diese aktualisieren. Weitere Informationen finden Sie im Abschnitt
<link linkend="upgrading_icingaweb">Aktualisierung von Icinga-Web und Icinga-Web-Datenbank</link>.</para></note>
<note>
<para>Wenn Sie &name-web; benutzen, dann müssen Sie auch diese aktualisieren. Weitere Informationen finden Sie im Abschnitt <link
linkend="upgrading_icingaweb">Aktualisierung von Icinga-Web und Icinga-Web-Datenbank</link>.</para>
</note>
<para><anchor xml:id="upgrading-icinga" /> <emphasis role="bold">Aktualisierung von &name-icinga;</emphasis></para>
......@@ -36,12 +40,13 @@
haben. Wenn irgendetwas schief geht oder nicht funktioniert, dann können Sie auf diese Weise schnell Ihre alte &name-icinga;-Version
wiederherstellen.</para>
<para>Werden Sie der icinga-Benutzer. Debian/Ubuntu-Benutzer sollten sudo -s icinga benutzen.</para>
<para>Werden Sie der icinga-Benutzer. Debian/Ubuntu-Benutzer sollten <code>sudo -s icinga</code> benutzen.</para>
<programlisting> $&gt; su -l icinga</programlisting>
<para>Holen Sie sich das Quellcode-Archiv der letzten &name-icinga;-Version (besuchen Sie &url-icinga; für den Verweis auf die letzte
Version) und entpacken Sie das Quellcode-Archiv.</para>
<para>Holen Sie sich das Quellcode-Archiv der letzten &name-icinga;-Version (besuchen Sie <link
xlink:href="http://www.icinga.org/">&url-icinga;</link> für den Verweis auf die letzte Version) und entpacken Sie das
Quellcode-Archiv.</para>
<para>Starten Sie das &name-icinga;-configure-Script mit den gleichen Optionen wie bei der letzten Installation, z.B. so:</para>
......@@ -76,7 +81,9 @@
<screen> #&gt; yum install php mod_php</screen>
<para><emphasis>openSuSE / SLES:</emphasis> Nutzen Sie yast zur Installation der Pakete <emphasis>php5</emphasis> und
<emphasis>apache2-mod_php5</emphasis>.</para>
<emphasis>apache2-mod_php5</emphasis> oder benutzen Sie zypper</para>
<para><programlisting> #&gt; zypper install php5 apache2-mod_php5</programlisting></para>
<para>Stellen Sie sicher, dass Sie eine gute Datensicherung Ihrer bestehenden &name-nagios;-Installation und der Konfigurationsdateien
haben. Wenn irgendetwas schief geht oder nicht funktioniert, dann können Sie auf diese Weise schnell Ihre alte &name-nagios;-Version
......@@ -87,20 +94,22 @@
<itemizedlist>
<listitem>
<para>der Default-Präfix nun "/usr/local/icinga" heißt</para>
<para>der Default-Präfix nun "<filename>/usr/local/icinga</filename>" heißt</para>
</listitem>
<listitem>
<para>die Umgebungs-Makros nun mit ICINGA_ beginnen</para>
<para>PNP4Nagios berücksichtigt das seit 0.6rc1 (2009.09.20), aber Sie benötigen die Makros lediglich im "sync"-Modus.</para>
<para>check_multi bietet Unterstützung seit 0.21 (2010.06.03), aber Sie müssen dazu die Installation mit beginnend mit dem Schritt
'configure --with-nagios_name=icinga' erneut durchführen, damit die check_multi-Prozedur mit geänderten Werten erstellt wird.
Stattdessen können Sie auch die Option "-s" zur Übergabe von Werten benutzen.</para>
'<code>configure --with-nagios_name=icinga</code>' erneut durchführen, damit die check_multi-Prozedur mit geänderten Werten erstellt
wird. Stattdessen können Sie auch die Option "-s" zur Übergabe von Werten benutzen.</para>
</listitem>
<listitem>
<para>die Konfigurationsdateien der (verbesserten) IDOUtils heißen nun idomod.cfg/ido2db.cfg anstatt ndomod.cfg/ndo2db.cfg</para>
<para>die Konfigurationsdateien der (verbesserten) IDOUtils heißen nun <filename>idomod.cfg/ido2db.cfg</filename> anstatt
<filename>ndomod.cfg/ndo2db.cfg</filename></para>
</listitem>
</itemizedlist>
......@@ -118,8 +127,8 @@
<screen> #&gt; tar xzf icinga-<emphasis>&ver-icinga;</emphasis>.tar.gz
#&gt; cd icinga-<emphasis>&ver-icinga;</emphasis> </screen>
<para>Starten Sie das &name-icinga;-configure-Script mit den Optionen, die Sie beim ./configure von &name-nagios; benutzt haben. Den
Aufruf finden Sie in der Datei config.log. Beispiel:</para>