[Fedora-directory-commits] adminserver/admserv/cgi-src40 viewlog.c, 1.8, 1.9 viewlog.properties, 1.4, 1.5

Nathan Kinder (nkinder) fedora-directory-commits at redhat.com
Wed Jun 27 22:25:02 UTC 2007


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" }




More information about the Fedora-directory-commits mailing list