1 --- nagios-3.0.3/cgi/avail.c 2008-06-23 23:47:42.000000000 +0300
2 +++ nagios-3.0.3-cgi/cgi/avail.c 2008-10-11 12:34:44.496658785 +0300
4 extern char url_images_path[MAX_FILENAME_LENGTH];
5 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
7 +extern char *http_charset;
9 extern host *host_list;
10 extern hostgroup *hostgroup_list;
11 extern servicegroup *servicegroup_list;
13 printf("Expires: %s\r\n",date_time);
15 if(output_format==HTML_OUTPUT)
16 - printf("Content-type: text/html\r\n\r\n");
17 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
19 - printf("Content-type: text/plain\r\n\r\n");
20 + printf("Content-type: text/plain; charset=\"%s\"\r\n\r\n", http_charset);
24 --- nagios-3.0.3-cgi/cgi/cgiutils.c 2008-10-11 12:34:44.472657400 +0300
25 +++ nagios-3.2.0/cgi/cgiutils.c 2009-09-11 16:14:43.130251761 +0300
27 char *statuswrl_include=NULL;
29 char *illegal_output_chars=NULL;
30 +char *http_charset=NULL;
32 char *notes_url_target=NULL;
33 char *action_url_target=NULL;
35 host_unreachable_sound=NULL;
38 + my_free(http_charset);
39 + http_charset = strdup(DEFAULT_HTTP_CHARSET);
41 statusmap_background_image=NULL;
42 statuswrl_include=NULL;
45 else if(!strcmp(var,"illegal_macro_output_chars"))
46 illegal_output_chars=strdup(val);
48 + else if(!strcmp(var,"http_charset"))
49 + http_charset=strdup(val);
51 else if(!strcmp(var,"notes_url_target"))
52 notes_url_target=strdup(val);
55 else if(((char)input[x]==(char)' ') || ((char)input[x]==(char)'-') || ((char)input[x]==(char)'.') || ((char)input[x]==(char)'_') || ((char)input[x]==(char)':'))
56 encoded_html_string[y++]=input[x];
58 + /* high bit chars don't get encoded, so we won't be breaking utf8 characters */
59 + else if ((unsigned char)input[x] >= 0x7f)
60 + encoded_html_string[y++]=input[x];
61 /* for simplicity, all other chars represented by their numeric value */
63 encoded_html_string[y]='\x0';
64 --- nagios-3.0.3/cgi/cmd.c 2008-05-19 21:42:26.000000000 +0300
65 +++ nagios-3.0.3-cgi/cgi/cmd.c 2008-10-11 12:34:44.496658785 +0300
68 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
70 +extern char *http_charset;
72 extern int nagios_process_state;
74 extern int check_external_commands;
77 if(content_type==WML_CONTENT){
79 - printf("Content-type: text/vnd.wap.wml\r\n\r\n");
80 + printf("Content-type: text/vnd.wap.wml; charset=\"%s\"\r\n\r\n", http_charset);
82 printf("<?xml version=\"1.0\"?>\n");
83 printf("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n");
88 - printf("Content-type: text/html\r\n\r\n");
89 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
93 --- nagios-3.0.3/cgi/config.c 2008-04-13 21:34:27.000000000 +0300
94 +++ nagios-3.0.3-cgi/cgi/config.c 2008-10-11 12:34:44.496658785 +0300
96 extern char url_logo_images_path[MAX_FILENAME_LENGTH];
97 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
99 +extern char *http_charset;
101 extern host *host_list;
102 extern service *service_list;
103 extern hostgroup *hostgroup_list;
105 printf("Pragma: no-cache\r\n");
106 printf("Last-Modified: %s\r\n",date_time);
107 printf("Expires: %s\r\n",date_time);
108 - printf("Content-type: text/html\r\n\r\n");
109 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
113 --- nagios-3.0.3/cgi/extinfo.c 2008-01-24 04:51:30.000000000 +0200
114 +++ nagios-3.0.3-cgi/cgi/extinfo.c 2008-10-11 12:34:44.500659016 +0300
116 extern int nagios_process_state;
117 extern int refresh_rate;
119 +extern char *http_charset;
121 extern time_t program_start;
122 extern int nagios_pid;
123 extern int daemon_mode;
125 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
126 printf("Expires: %s\r\n",date_time);
128 - printf("Content-type: text/html\r\n\r\n");
129 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
133 --- nagios-3.0.3/cgi/histogram.c 2008-05-19 21:42:26.000000000 +0300
134 +++ nagios-3.0.3-cgi/cgi/histogram.c 2008-10-11 12:34:44.512659708 +0300
136 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
137 extern char physical_images_path[MAX_FILENAME_LENGTH];
139 +extern char *http_charset;
141 extern int log_rotation_method;
143 extern host *host_list;
145 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
146 printf("Expires: %s\r\n",date_time);
148 - printf("Content-type: text/html\r\n\r\n");
149 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
153 --- nagios-3.0.3-cgi/cgi/history.c 2008-10-11 12:34:44.480657862 +0300
154 +++ nagios-3.0.3/cgi/history.c 2008-10-11 12:38:12.164637148 +0300
156 extern char url_images_path[MAX_FILENAME_LENGTH];
157 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
159 +extern char *http_charset;
161 extern int log_rotation_method;
163 extern int enable_splunk_integration;
165 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
166 printf("Expires: %s\r\n",date_time);
168 - printf("Content-type: text/html\r\n\r\n");
169 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
173 --- nagios-3.0.3/cgi/notifications.c 2008-05-19 21:42:27.000000000 +0300
174 +++ nagios-3.0.3-cgi/cgi/notifications.c 2008-10-11 12:34:44.500659016 +0300
176 extern char url_docs_path[MAX_FILENAME_LENGTH];
177 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
179 +extern char *http_charset;
181 extern int log_rotation_method;
185 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
186 printf("Expires: %s\r\n",date_time);
188 - printf("Content-type: text/html\r\n\r\n");
189 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
193 --- nagios-3.0.3/cgi/outages.c 2008-01-09 19:51:23.000000000 +0200
194 +++ nagios-3.0.3-cgi/cgi/outages.c 2008-10-11 12:34:44.500659016 +0300
196 extern hoststatus *hoststatus_list;
197 extern servicestatus *servicestatus_list;
199 +extern char *http_charset;
201 extern char main_config_file[MAX_FILENAME_LENGTH];
202 extern char url_html_path[MAX_FILENAME_LENGTH];
203 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
205 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
206 printf("Expires: %s\r\n",date_time);
208 - printf("Content-type: text/html\r\n\r\n");
209 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
213 --- nagios-3.0.3/cgi/showlog.c 2008-01-09 19:51:23.000000000 +0200
214 +++ nagios-3.0.3-cgi/cgi/showlog.c 2008-10-11 12:34:44.500659016 +0300
216 extern char url_images_path[MAX_FILENAME_LENGTH];
217 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
219 +extern char *http_charset;
221 extern int log_rotation_method;
223 extern int enable_splunk_integration;
225 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
226 printf("Expires: %s\r\n",date_time);
228 - printf("Content-type: text/html\r\n\r\n");
229 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
233 --- nagios-3.0.3/cgi/status.c 2008-06-23 23:47:46.000000000 +0300
234 +++ nagios-3.0.3-cgi/cgi/status.c 2008-10-11 12:34:44.504659246 +0300
236 extern char url_media_path[MAX_FILENAME_LENGTH];
237 extern char log_file[MAX_FILENAME_LENGTH];
239 +extern char *http_charset;
241 extern char *service_critical_sound;
242 extern char *service_warning_sound;
243 extern char *service_unknown_sound;
245 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
246 printf("Expires: %s\r\n",date_time);
248 - printf("Content-type: text/html\r\n\r\n");
249 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
253 --- nagios-3.0.3/cgi/statusmap.c 2008-05-19 21:42:28.000000000 +0300
254 +++ nagios-3.0.3-cgi/cgi/statusmap.c 2008-10-11 12:34:44.508659477 +0300
256 extern char url_logo_images_path[MAX_FILENAME_LENGTH];
257 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
259 +extern char *http_charset;
261 extern host *host_list;
262 extern hostgroup *hostgroup_list;
263 extern service *service_list;
265 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
266 printf("Expires: %s\r\n",date_time);
268 - printf("Content-Type: text/html\r\n\r\n");
269 + printf("Content-Type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
273 --- nagios-3.0.3/cgi/statuswml.c 2008-05-19 21:42:28.000000000 +0300
274 +++ nagios-3.0.3-cgi/cgi/statuswml.c 2008-10-11 12:34:44.504659246 +0300
277 extern char *ping_syntax;
279 +extern char *http_charset;
281 #define DISPLAY_HOST 0
282 #define DISPLAY_SERVICE 1
283 #define DISPLAY_HOSTGROUP 2
285 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
286 printf("Expires: %s\r\n",date_time);
288 - printf("Content-type: text/vnd.wap.wml\r\n\r\n");
289 + printf("Content-type: text/vnd.wap.wml; charset=\"%s\"\r\n\r\n", http_charset);
291 printf("<?xml version=\"1.0\"?>\n");
292 printf("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n");
293 --- nagios-3.0.3/cgi/statuswrl.c 2007-07-16 19:41:46.000000000 +0300
294 +++ nagios-3.0.3-cgi/cgi/statuswrl.c 2008-10-11 12:34:44.508659477 +0300
296 extern char url_images_path[MAX_FILENAME_LENGTH];
297 extern char url_logo_images_path[MAX_FILENAME_LENGTH];
299 +extern char *http_charset;
301 extern char *statuswrl_include;
303 extern host *host_list;
305 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
306 printf("Expires: %s\r\n",date_time);
308 - printf("Content-Type: x-world/x-vrml\r\n\r\n");
309 + printf("Content-Type: x-world/x-vrml; charset=\"%s\"\r\n\r\n", http_charset);
313 --- nagios-3.0.3/cgi/summary.c 2008-01-24 04:51:30.000000000 +0200
314 +++ nagios-3.0.3-cgi/cgi/summary.c 2008-10-11 12:34:44.504659246 +0300
316 extern char url_images_path[MAX_FILENAME_LENGTH];
317 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
319 +extern char *http_charset;
321 extern host *host_list;
322 extern hostgroup *hostgroup_list;
323 extern service *service_list;
325 printf("Expires: %s\r\n",date_time);
327 if(output_format==HTML_OUTPUT)
328 - printf("Content-type: text/html\r\n\r\n");
329 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
331 - printf("Content-type: text/plain\r\n\r\n");
332 + printf("Content-type: text/plain; charset=\"%s\"\r\n\r\n", http_charset);
336 --- nagios-3.0.3/cgi/tac.c 2008-02-21 08:17:37.000000000 +0200
337 +++ nagios-3.0.3-cgi/cgi/tac.c 2008-10-11 12:34:44.508659477 +0300
339 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
340 extern char url_media_path[MAX_FILENAME_LENGTH];
342 +extern char *http_charset;
344 extern int refresh_rate;
346 extern char *service_critical_sound;
348 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
349 printf("Expires: %s\r\n",date_time);
351 - printf("Content-type: text/html\r\n\r\n");
352 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
356 --- nagios-3.0.3/cgi/trends.c 2008-06-23 23:47:46.000000000 +0300
357 +++ nagios-3.0.3-cgi/cgi/trends.c 2008-10-11 12:34:44.512659708 +0300
359 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
360 extern char physical_images_path[MAX_FILENAME_LENGTH];
362 +extern char *http_charset;
364 extern int log_rotation_method;
366 extern host *host_list;
367 @@ -1114,7 +1116,7 @@
368 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
369 printf("Expires: %s\r\n",date_time);
371 - printf("Content-type: text/html\r\n\r\n");
372 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
376 --- nagios-3.0.3/include/cgiutils.h.in 2007-11-11 01:34:26.000000000 +0200
377 +++ nagios-3.0.3-cgi/include/cgiutils.h.in 2008-10-11 12:34:44.468657170 +0300
379 #define LIFO_ERROR_FILE 2
380 #define LIFO_ERROR_DATA 3
382 +/************************** HTTP CHARSET ****************************/
384 +#define DEFAULT_HTTP_CHARSET "utf-8"
388 --- nagios-3.0.3/sample-config/cgi.cfg.in 2007-10-07 22:42:52.000000000 +0300
389 +++ nagios-3.0.3-cgi/sample-config/cgi.cfg.in 2008-10-11 12:34:44.472657400 +0300
391 url_html_path=@htmurl@
395 +# This defines charset that is sent with HTTP headers.
400 # CONTEXT-SENSITIVE HELP
401 # This option determines whether or not a context-sensitive