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.2.0/cgi/cgiutils.c 2009-09-11 16:14:43.130251761 +0300
25 +++ nagios-3.2.0/cgi/cgiutils.c 2009-09-15 14:46:13.332409409 +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);
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 if(escape_html_tags==FALSE)
65 else if(((char)input[x]==(char)' ') || ((char)input[x]==(char)'-') || ((char)input[x]==(char)'.') || ((char)input[x]==(char)'_') || ((char)input[x]==(char)':'))
66 encoded_html_string[y++]=input[x];
68 + /* high bit chars don't get encoded, so we won't be breaking utf8 characters */
69 + else if ((unsigned char)input[x] >= 0x7f)
70 + encoded_html_string[y++]=input[x];
71 /* for simplicity, all other chars represented by their numeric value */
73 encoded_html_string[y]='\x0';
74 --- nagios-3.0.3/cgi/cmd.c 2008-05-19 21:42:26.000000000 +0300
75 +++ nagios-3.0.3-cgi/cgi/cmd.c 2008-10-11 12:34:44.496658785 +0300
78 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
80 +extern char *http_charset;
82 extern int nagios_process_state;
84 extern int check_external_commands;
87 if(content_type==WML_CONTENT){
89 - printf("Content-type: text/vnd.wap.wml\r\n\r\n");
90 + printf("Content-type: text/vnd.wap.wml; charset=\"%s\"\r\n\r\n", http_charset);
92 printf("<?xml version=\"1.0\"?>\n");
93 printf("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n");
98 - printf("Content-type: text/html\r\n\r\n");
99 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
103 --- nagios-3.0.3/cgi/config.c 2008-04-13 21:34:27.000000000 +0300
104 +++ nagios-3.0.3-cgi/cgi/config.c 2008-10-11 12:34:44.496658785 +0300
106 extern char url_logo_images_path[MAX_FILENAME_LENGTH];
107 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
109 +extern char *http_charset;
111 extern host *host_list;
112 extern service *service_list;
113 extern hostgroup *hostgroup_list;
115 printf("Pragma: no-cache\r\n");
116 printf("Last-Modified: %s\r\n",date_time);
117 printf("Expires: %s\r\n",date_time);
118 - printf("Content-type: text/html\r\n\r\n");
119 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
123 --- nagios-3.0.3/cgi/extinfo.c 2008-01-24 04:51:30.000000000 +0200
124 +++ nagios-3.0.3-cgi/cgi/extinfo.c 2008-10-11 12:34:44.500659016 +0300
126 extern int nagios_process_state;
127 extern int refresh_rate;
129 +extern char *http_charset;
131 extern time_t program_start;
132 extern int nagios_pid;
133 extern int daemon_mode;
135 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
136 printf("Expires: %s\r\n",date_time);
138 - printf("Content-type: text/html\r\n\r\n");
139 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
143 --- nagios-3.0.3/cgi/histogram.c 2008-05-19 21:42:26.000000000 +0300
144 +++ nagios-3.0.3-cgi/cgi/histogram.c 2008-10-11 12:34:44.512659708 +0300
146 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
147 extern char physical_images_path[MAX_FILENAME_LENGTH];
149 +extern char *http_charset;
151 extern int log_rotation_method;
153 extern host *host_list;
155 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
156 printf("Expires: %s\r\n",date_time);
158 - printf("Content-type: text/html\r\n\r\n");
159 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
163 --- nagios-3.0.3-cgi/cgi/history.c 2008-10-11 12:34:44.480657862 +0300
164 +++ nagios-3.0.3/cgi/history.c 2008-10-11 12:38:12.164637148 +0300
166 extern char url_images_path[MAX_FILENAME_LENGTH];
167 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
169 +extern char *http_charset;
171 extern int log_rotation_method;
173 extern int enable_splunk_integration;
175 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
176 printf("Expires: %s\r\n",date_time);
178 - printf("Content-type: text/html\r\n\r\n");
179 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
183 --- nagios-3.0.3/cgi/notifications.c 2008-05-19 21:42:27.000000000 +0300
184 +++ nagios-3.0.3-cgi/cgi/notifications.c 2008-10-11 12:34:44.500659016 +0300
186 extern char url_docs_path[MAX_FILENAME_LENGTH];
187 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
189 +extern char *http_charset;
191 extern int log_rotation_method;
195 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
196 printf("Expires: %s\r\n",date_time);
198 - printf("Content-type: text/html\r\n\r\n");
199 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
203 --- nagios-3.0.3/cgi/outages.c 2008-01-09 19:51:23.000000000 +0200
204 +++ nagios-3.0.3-cgi/cgi/outages.c 2008-10-11 12:34:44.500659016 +0300
206 extern hoststatus *hoststatus_list;
207 extern servicestatus *servicestatus_list;
209 +extern char *http_charset;
211 extern char main_config_file[MAX_FILENAME_LENGTH];
212 extern char url_html_path[MAX_FILENAME_LENGTH];
213 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
215 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
216 printf("Expires: %s\r\n",date_time);
218 - printf("Content-type: text/html\r\n\r\n");
219 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
223 --- nagios-3.0.3/cgi/showlog.c 2008-01-09 19:51:23.000000000 +0200
224 +++ nagios-3.0.3-cgi/cgi/showlog.c 2008-10-11 12:34:44.500659016 +0300
226 extern char url_images_path[MAX_FILENAME_LENGTH];
227 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
229 +extern char *http_charset;
231 extern int log_rotation_method;
233 extern int enable_splunk_integration;
235 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
236 printf("Expires: %s\r\n",date_time);
238 - printf("Content-type: text/html\r\n\r\n");
239 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
243 --- nagios-3.0.3/cgi/status.c 2008-06-23 23:47:46.000000000 +0300
244 +++ nagios-3.0.3-cgi/cgi/status.c 2008-10-11 12:34:44.504659246 +0300
246 extern char url_media_path[MAX_FILENAME_LENGTH];
247 extern char log_file[MAX_FILENAME_LENGTH];
249 +extern char *http_charset;
251 extern char *service_critical_sound;
252 extern char *service_warning_sound;
253 extern char *service_unknown_sound;
255 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
256 printf("Expires: %s\r\n",date_time);
258 - printf("Content-type: text/html\r\n\r\n");
259 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
263 --- nagios-3.0.3/cgi/statusmap.c 2008-05-19 21:42:28.000000000 +0300
264 +++ nagios-3.0.3-cgi/cgi/statusmap.c 2008-10-11 12:34:44.508659477 +0300
266 extern char url_logo_images_path[MAX_FILENAME_LENGTH];
267 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
269 +extern char *http_charset;
271 extern host *host_list;
272 extern hostgroup *hostgroup_list;
273 extern service *service_list;
275 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
276 printf("Expires: %s\r\n",date_time);
278 - printf("Content-Type: text/html\r\n\r\n");
279 + printf("Content-Type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
283 --- nagios-3.0.3/cgi/statuswml.c 2008-05-19 21:42:28.000000000 +0300
284 +++ nagios-3.0.3-cgi/cgi/statuswml.c 2008-10-11 12:34:44.504659246 +0300
287 extern char *ping_syntax;
289 +extern char *http_charset;
291 #define DISPLAY_HOST 0
292 #define DISPLAY_SERVICE 1
293 #define DISPLAY_HOSTGROUP 2
295 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
296 printf("Expires: %s\r\n",date_time);
298 - printf("Content-type: text/vnd.wap.wml\r\n\r\n");
299 + printf("Content-type: text/vnd.wap.wml; charset=\"%s\"\r\n\r\n", http_charset);
301 printf("<?xml version=\"1.0\"?>\n");
302 printf("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n");
303 --- nagios-3.0.3/cgi/statuswrl.c 2007-07-16 19:41:46.000000000 +0300
304 +++ nagios-3.0.3-cgi/cgi/statuswrl.c 2008-10-11 12:34:44.508659477 +0300
306 extern char url_images_path[MAX_FILENAME_LENGTH];
307 extern char url_logo_images_path[MAX_FILENAME_LENGTH];
309 +extern char *http_charset;
311 extern char *statuswrl_include;
313 extern host *host_list;
315 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
316 printf("Expires: %s\r\n",date_time);
318 - printf("Content-Type: x-world/x-vrml\r\n\r\n");
319 + printf("Content-Type: x-world/x-vrml; charset=\"%s\"\r\n\r\n", http_charset);
323 --- nagios-3.0.3/cgi/summary.c 2008-01-24 04:51:30.000000000 +0200
324 +++ nagios-3.0.3-cgi/cgi/summary.c 2008-10-11 12:34:44.504659246 +0300
326 extern char url_images_path[MAX_FILENAME_LENGTH];
327 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
329 +extern char *http_charset;
331 extern host *host_list;
332 extern hostgroup *hostgroup_list;
333 extern service *service_list;
335 printf("Expires: %s\r\n",date_time);
337 if(output_format==HTML_OUTPUT)
338 - printf("Content-type: text/html\r\n\r\n");
339 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
341 - printf("Content-type: text/plain\r\n\r\n");
342 + printf("Content-type: text/plain; charset=\"%s\"\r\n\r\n", http_charset);
346 --- nagios-3.0.3/cgi/tac.c 2008-02-21 08:17:37.000000000 +0200
347 +++ nagios-3.0.3-cgi/cgi/tac.c 2008-10-11 12:34:44.508659477 +0300
349 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
350 extern char url_media_path[MAX_FILENAME_LENGTH];
352 +extern char *http_charset;
354 extern int refresh_rate;
356 extern char *service_critical_sound;
358 get_time_string(&expire_time,date_time,(int)sizeof(date_time),HTTP_DATE_TIME);
359 printf("Expires: %s\r\n",date_time);
361 - printf("Content-type: text/html\r\n\r\n");
362 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
366 --- nagios-3.0.3/cgi/trends.c 2008-06-23 23:47:46.000000000 +0300
367 +++ nagios-3.0.3-cgi/cgi/trends.c 2008-10-11 12:34:44.512659708 +0300
369 extern char url_stylesheets_path[MAX_FILENAME_LENGTH];
370 extern char physical_images_path[MAX_FILENAME_LENGTH];
372 +extern char *http_charset;
374 extern int log_rotation_method;
376 extern host *host_list;
377 @@ -1114,7 +1116,7 @@
378 get_time_string(&expire_time,date_time,sizeof(date_time),HTTP_DATE_TIME);
379 printf("Expires: %s\r\n",date_time);
381 - printf("Content-type: text/html\r\n\r\n");
382 + printf("Content-type: text/html; charset=\"%s\"\r\n\r\n", http_charset);
386 --- nagios-3.0.3/include/cgiutils.h.in 2007-11-11 01:34:26.000000000 +0200
387 +++ nagios-3.0.3-cgi/include/cgiutils.h.in 2008-10-11 12:34:44.468657170 +0300
389 #define LIFO_ERROR_FILE 2
390 #define LIFO_ERROR_DATA 3
392 +/************************** HTTP CHARSET ****************************/
394 +#define DEFAULT_HTTP_CHARSET "utf-8"
398 --- nagios-3.0.3/sample-config/cgi.cfg.in 2007-10-07 22:42:52.000000000 +0300
399 +++ nagios-3.0.3-cgi/sample-config/cgi.cfg.in 2008-10-11 12:34:44.472657400 +0300
401 url_html_path=@htmurl@
405 +# This defines charset that is sent with HTTP headers.
410 # CONTEXT-SENSITIVE HELP
411 # This option determines whether or not a context-sensitive