Author: nkinder
Update of /cvs/dirsec/adminserver/admserv/cgi-src40
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv10464/admserv/cgi-src40
Modified Files:
viewlog.c viewlog.properties
Log Message:
Resolves: 246020
Summary: Modified viewlog CGI to work for Console.
Index: viewlog.c
===================================================================
RCS file: /cvs/dirsec/adminserver/admserv/cgi-src40/viewlog.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- viewlog.c 15 May 2007 16:45:45 -0000 1.8
+++ viewlog.c 27 Jun 2007 22:24:59 -0000 1.9
@@ -67,7 +67,8 @@
#define DBT_NO_DIR_FOUND resource_key(RESOURCE_FILE, "9")
#define DBT_NO_ID resource_key(RESOURCE_FILE, "10")
#define DBT_NO_ID_DESC resource_key(RESOURCE_FILE, "11")
-
+#define DBT_INV_NOHTML resource_key(RESOURCE_FILE, "12")
+#define DBT_INV_NOHTML_DESC resource_key(RESOURCE_FILE, "13")
/* html resource */
#define DBT_DISPLAY_LOGFILE_SELECT_BEGIN resource_key(RESOURCE_FILE, "20")
@@ -262,6 +263,8 @@
char *qs = getenv("QUERY_STRING");
char line[BIG_LINE];
FILE *html = open_html_file(MY_PAGE);
+ char *method = NULL;
+ char *nohtml = NULL;
char *num=NULL;
char *str=NULL;
char *file;
@@ -270,37 +273,53 @@
char **logfiles = NULL;
char tmp[BIG_LINE];
int x;
+ int print_html = 1;
+ int proceed = 0;
char msg[BUFSIZ];
i18nInit();
fprintf(stdout, "Content-type: text/html;charset=utf-8\n\n");
- if(qs) {
- get_begin(qs);
+ method = getenv("REQUEST_METHOD");
+ if(method) {
+ if(!strcmp(method, "GET")) {
+ qs = getenv("QUERY_STRING");
+ if(qs && *qs) {
+ get_begin(qs);
+ proceed = 1;
+ }
+ } else if(!strcmp(method, "POST")) {
+ post_begin(stdin);
+ proceed = 1;
+ }
+ }
- num=get_cgi_var("num", NULL, NULL);
- str=get_cgi_var("str", NULL, NULL);
- file=get_cgi_var("file", NULL, NULL);
- id=get_cgi_var("id", NULL, NULL);
-
- if(!id)
- rpt_err(INCORRECT_USAGE,
- getResourceString(DBT_NO_ID),
- getResourceString(DBT_NO_ID_DESC), NULL);
-
- if(num) {
- for(x=0; num[x]; x++) {
- if(!isdigit(num[x]))
- rpt_err(INCORRECT_USAGE, getResourceString(DBT_INV_NUMBER),
- getResourceString(DBT_INV_NUMBER_DESC), NULL);
- }
- }
- }
- else
- rpt_err(INCORRECT_USAGE,
- getResourceString(DBT_NO_ID),
- getResourceString(DBT_NO_ID_DESC), NULL);
+ if(!proceed)
+ {
+ rpt_err(INCORRECT_USAGE,
+ getResourceString(DBT_NO_ID),
+ getResourceString(DBT_NO_ID_DESC), NULL);
+ }
+
+ num=get_cgi_var("num", NULL, NULL);
+ str=get_cgi_var("str", NULL, NULL);
+ file=get_cgi_var("file", NULL, NULL);
+ id=get_cgi_var("id", NULL, NULL);
+ nohtml=get_cgi_var("nohtml", NULL, NULL);
+
+ if(!id)
+ rpt_err(INCORRECT_USAGE,
+ getResourceString(DBT_NO_ID),
+ getResourceString(DBT_NO_ID_DESC), NULL);
+
+ if(num) {
+ for(x=0; num[x]; x++) {
+ if(!isdigit(num[x]))
+ rpt_err(INCORRECT_USAGE, getResourceString(DBT_INV_NUMBER),
+ getResourceString(DBT_INV_NUMBER_DESC), NULL);
+ }
+ }
if(!num) num=DEF_SIZE;
@@ -313,55 +332,89 @@
}
}
- while(next_html_line(html, line)) {
- if(parse_line(line, NULL)) {
- if(directive_is(line, "LOG_TO_VIEW")) {
- display_logfiles(logdir, file);
- }
- else if(directive_is(line, "NUM_TO_VIEW")) {
- output_input("text", "num", num, NULL);
- }
- else if(directive_is(line, "STRING_TO_VIEW")) {
- output_input("text", "str", str, NULL);
- }
- else if(directive_is(line, "HIDDEN_ID")) {
- /* keep hidden track of what the current id are */
- fprintf(stdout, (const char*)getResourceString(DBT_MAIN_HIDDEN_TRACK), id);
- }
- else if(directive_is(line, "ID_TITLE")) {
- fprintf(stdout, (const char*)getResourceString(DBT_MAIN_ID_TITLE), id);
- }
- else if(directive_is(line, "ACCESS_LOG")) {
- FILE *cmd;
- char full_path[PATH_MAX];
+ if(nohtml) {
+ for(x=0; nohtml[x]; x++) {
+ if(!isdigit(nohtml[x]))
+ rpt_err(INCORRECT_USAGE, getResourceString(DBT_INV_NUMBER),
+ getResourceString(DBT_INV_NUMBER_DESC), NULL);
+ }
+
+ if (atoi(nohtml) > 0) {
+ /* print raw log content only */
+ print_html = 0;
+ }
+ }
+
+ if (print_html ) {
+ while(next_html_line(html, line)) {
+ if(parse_line(line, NULL)) {
+ if(directive_is(line, "LOG_TO_VIEW")) {
+ display_logfiles(logdir, file);
+ }
+ else if(directive_is(line, "NUM_TO_VIEW")) {
+ output_input("text", "num", num, NULL);
+ }
+ else if(directive_is(line, "STRING_TO_VIEW")) {
+ output_input("text", "str", str, NULL);
+ }
+ else if(directive_is(line, "HIDDEN_ID")) {
+ /* keep hidden track of what the current id are */
+ fprintf(stdout, (const
char*)getResourceString(DBT_MAIN_HIDDEN_TRACK), id);
+ }
+ else if(directive_is(line, "ID_TITLE")) {
+ fprintf(stdout, (const char*)getResourceString(DBT_MAIN_ID_TITLE),
id);
+ }
+ else if(directive_is(line, "ACCESS_LOG")) {
+ FILE *cmd;
+ char full_path[PATH_MAX];
#ifdef AIX
- fflush(stdout);
+ fflush(stdout);
#endif
- if (!file || !*file ||
- !util_is_valid_path_string(file) ||
- !util_verify_file_or_dir(logdir, PR_FILE_DIRECTORY, file, -1, PR_FILE_FILE)) {
- continue;
- }
-
- PR_snprintf(full_path, sizeof(full_path), "%s%c%s", logdir, FILE_PATHSEP,
file);
- form_unescape(full_path); /* bug 27409, 31807 */
- cmd = fopen(full_path, "r");
- fprintf(stdout, getResourceString(DBT_MAIN_WIDTH));
- PR_snprintf(tmp, sizeof(tmp), getResourceString(DBT_SUBTITLE), num, file, (str)?
getResourceString(DBT_WITH) : "",
- (str)? str : "");
-
- fprintf(stdout, (const char*)getResourceString(DBT_MAIN_TABLE),
- tmp);
-
- /* begin search */
- if(cmd) {
- search_file(cmd, atoi(num), str);
- fclose(cmd);
- }
- } else
- fputs(line, stdout);
- }
+ if (!file || !*file ||
+ !util_is_valid_path_string(file) ||
+ !util_verify_file_or_dir(logdir, PR_FILE_DIRECTORY, file, -1,
PR_FILE_FILE)) {
+ continue;
+ }
+
+ PR_snprintf(full_path, sizeof(full_path), "%s%c%s", logdir,
FILE_PATHSEP, file);
+ form_unescape(full_path); /* bug 27409, 31807 */
+ cmd = fopen(full_path, "r");
+ fprintf(stdout, getResourceString(DBT_MAIN_WIDTH));
+ PR_snprintf(tmp, sizeof(tmp), getResourceString(DBT_SUBTITLE), num,
file, (str)? getResourceString(DBT_WITH) : "",
+ (str)? str : "");
+
+ fprintf(stdout, (const char*)getResourceString(DBT_MAIN_TABLE),
tmp);
+
+ /* begin search */
+ if(cmd) {
+ search_file(cmd, atoi(num), str);
+ fclose(cmd);
+ }
+ } else
+ fputs(line, stdout);
+ }
+ }
+ } else {
+ /* only print the raw log content */
+ FILE *cmd;
+ char full_path[PATH_MAX];
+
+#ifdef AIX
+ fflush(stdout);
+#endif
+ if (file || *file || util_is_valid_path_string(file) ||
+ util_verify_file_or_dir(logdir, PR_FILE_DIRECTORY, file, -1, PR_FILE_FILE))
{
+ PR_snprintf(full_path, sizeof(full_path), "%s%c%s", logdir,
FILE_PATHSEP, file);
+ form_unescape(full_path); /* bug 27409, 31807 */
+ cmd = fopen(full_path, "r");
+
+ /* begin search */
+ if(cmd) {
+ search_file(cmd, atoi(num), str);
+ fclose(cmd);
+ }
+ }
}
return 0;
Index: viewlog.properties
===================================================================
RCS file: /cvs/dirsec/adminserver/admserv/cgi-src40/viewlog.properties,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- viewlog.properties 9 May 2007 00:26:30 -0000 1.4
+++ viewlog.properties 27 Jun 2007 22:24:59 -0000 1.5
@@ -34,6 +34,8 @@
viewlog9 { "Cannot find directories based on server id %s. You may need to start
the configuration directory server." }
viewlog10 { "No server id specified." }
viewlog11 { "Please specify a server id." }
+viewlog12 { "Invalid nohtml option." }
+viewlog13 { "The nohtml option should be 0 or 1." }
viewlog20 { "<select name=file>\n" }
viewlog21 { "<option value=%s selected>%s\n" }
viewlog22 { "<option value=%s>%s\n" }