Renderers cleanup part 1
[citadel.git] / webcit / webcit.c
index 8a0ba58a98cb1d31dac5b5d3b397f312beccfda1..4108ecb38c3971355b6f5ad650ed7cbd02c9b133 100644 (file)
@@ -3,7 +3,7 @@
  * persistent session to the Citadel server, handling HTTP WebCit requests as
  * they arrive and presenting a user interface.
  *
- * Copyright (c) 1996-2013 by the citadel.org team
+ * Copyright (c) 1996-2018 by the citadel.org team
  *
  * This program is open source software.  You can redistribute it and/or
  * modify it under the terms of the GNU General Public License, version 3.
@@ -21,7 +21,7 @@ HashList *HandlerHash = NULL;
 
 void stuff_to_cookie(int unset_cookie);
 extern int GetConnected(void);
-
+extern int verbose;
 
 void PutRequestLocalMem(void *Data, DeleteHashDataFunc DeleteIt)
 {
@@ -141,7 +141,9 @@ void output_headers(        int do_httpheaders,     /* 1 = output HTTP headers                        */
        wcsession *WCC = WC;
        char httpnow[128];
 
-       if (WCC->Hdr->HaveRange > 1)
+       if (WCC->isFailure) 
+               hprintf("HTTP/2.2 500 Internal Server Error");
+       else if (WCC->Hdr->HaveRange > 1)
                hprintf("HTTP/1.1 206 Partial Content\r\n");
        else
                hprintf("HTTP/1.1 200 OK\r\n");
@@ -237,7 +239,8 @@ void http_redirect(const char *whichpage) {
  */
 void http_transmit_thing(const char *content_type, int is_static)
 {
-       syslog(LOG_DEBUG, "http_transmit_thing(%s)%s", content_type, ((is_static > 0) ? " (static)" : ""));
+       if (verbose)
+               syslog(LOG_DEBUG, "http_transmit_thing(%s)%s", content_type, ((is_static > 0) ? " (static)" : ""));
        output_headers(0, 0, 0, 0, 0, is_static);
 
        hprintf("Content-type: %s\r\n"
@@ -252,7 +255,8 @@ void http_transmit_thing(const char *content_type, int is_static)
 void http_transmit_headers(const char *content_type, int is_static, long is_chunked, int is_gzip)
 {
        wcsession *WCC = WC;
-       syslog(LOG_DEBUG, "http_transmit_thing(%s)%s", content_type, ((is_static > 0) ? " (static)" : ""));
+       if (verbose)
+               syslog(LOG_DEBUG, "http_transmit_thing(%s)%s", content_type, ((is_static > 0) ? " (static)" : ""));
        output_headers(0, 0, 0, 0, 0, is_static);
 
        if (is_gzip)
@@ -403,7 +407,8 @@ void ajax_servcmd(void)
        char *junk;
        size_t len;
 
-       syslog(LOG_DEBUG, "ajax_servcmd() g_cmd=\"%s\"", bstr("g_cmd") );
+       if (verbose)
+               syslog(LOG_DEBUG, "ajax_servcmd() g_cmd=\"%s\"", bstr("g_cmd") );
        begin_ajax_response();
        Buf = NewStrBuf();
        serv_puts(bstr("g_cmd"));
@@ -499,8 +504,9 @@ void push_destination(void) {
        }
 
        FreeStrBuf(&WCC->PushedDestination);
-       WCC->PushedDestination = NewStrBufDup(SBSTR("url"));
-       syslog(LOG_DEBUG, "Push: %s", ChrPtr(WCC->PushedDestination));
+       WCC->PushedDestination = NewStrBufDup(sbstr("url"));
+       if (verbose)
+               syslog(LOG_DEBUG, "Push: %s", ChrPtr(WCC->PushedDestination));
        wc_printf("OK");
 }
 
@@ -538,7 +544,8 @@ void pop_destination(void) {
        /*
         * All righty then!  We have a destination saved, so go there now.
         */
-       syslog(LOG_DEBUG, "Pop: %s", ChrPtr(WCC->PushedDestination));
+       if (verbose)
+               syslog(LOG_DEBUG, "Pop: %s", ChrPtr(WCC->PushedDestination));
        http_redirect(ChrPtr(WCC->PushedDestination));
 }
 
@@ -658,9 +665,10 @@ void session_loop(void)
 
        /* If the client sent a nonce that is incorrect, kill the request. */
        if (havebstr("nonce")) {
-               syslog(LOG_DEBUG, "Comparing supplied nonce %s to session nonce %d", 
-                       bstr("nonce"), WCC->nonce
-               );
+               if (verbose)
+                       syslog(LOG_DEBUG, "Comparing supplied nonce %s to session nonce %d", 
+                              bstr("nonce"), WCC->nonce
+                               );
                if (ibstr("nonce") != WCC->nonce) {
                        syslog(LOG_INFO, "Ignoring request with mismatched nonce.");
                        hprintf("HTTP/1.1 404 Security check failed\r\n");
@@ -738,15 +746,18 @@ void session_loop(void)
         */
        if (havebstr("go")) {
                int ret;
-               syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("go"));
+               if (verbose)
+                       syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("go"));
                ret = gotoroom(sbstr("go"));    /* do quietly to avoid session output! */
                if ((ret/100) != 2) {
-                       syslog(LOG_DEBUG, "Unable to change to [%s]; Reason: %d", bstr("go"), ret);
+                       if (verbose)
+                               syslog(LOG_DEBUG, "Unable to change to [%s]; Reason: %d", bstr("go"), ret);
                }
        }
        else if (havebstr("gotofirst")) {
                int ret;
-               syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("gotofirst"));
+               if (verbose)
+                       syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("gotofirst"));
                ret = gotoroom(sbstr("gotofirst"));     /* do quietly to avoid session output! */
                if ((ret/100) != 2) {
                        syslog(LOG_INFO, "Unable to change to [%s]; Reason: %d", bstr("gotofirst"), ret);
@@ -760,14 +771,16 @@ void session_loop(void)
        else if ( (StrLength(WCC->CurRoom.name) == 0) && ( (StrLength(WCC->Hdr->c_roomname) > 0) )) {
                int ret;
 
-               syslog(LOG_DEBUG, "We are in '%s' but cookie indicates '%s', going there...",
-                       ChrPtr(WCC->CurRoom.name),
-                       ChrPtr(WCC->Hdr->c_roomname)
+               if (verbose)
+                       syslog(LOG_DEBUG, "We are in '%s' but cookie indicates '%s', going there...",
+                              ChrPtr(WCC->CurRoom.name),
+                              ChrPtr(WCC->Hdr->c_roomname)
                );
                ret = gotoroom(WCC->Hdr->c_roomname);   /* do quietly to avoid session output! */
                if ((ret/100) != 2) {
-                       syslog(LOG_DEBUG, "COOKIEGOTO: Unable to change to [%s]; Reason: %d",
-                               ChrPtr(WCC->Hdr->c_roomname), ret);
+                       if (verbose)
+                               syslog(LOG_DEBUG, "COOKIEGOTO: Unable to change to [%s]; Reason: %d",
+                                      ChrPtr(WCC->Hdr->c_roomname), ret);
                }
        }
 
@@ -833,7 +846,8 @@ void display_default_landing_page(void) {
                /* default action */
 
                if (havebstr("go")) {
-                       syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("go"));
+                       if (verbose)
+                               syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("go"));
                        smart_goto(sbstr("go"));
                }
                else if (default_landing_page) {
@@ -894,7 +908,7 @@ void tmplput_importantmessage(StrBuf *Target, WCTemplputParams *TP)
        
        if (WCC != NULL) {
                if (StrLength(WCC->ImportantMsg) > 0) {
-                       StrEscAppend(Target, WCC->ImportantMsg, NULL, 0, 0);
+                       StrBufAppendTemplate(Target, TP, WCC->ImportantMsg, 0);
                }
        }
 }
@@ -942,7 +956,7 @@ InitModule_WEBCIT
        RegisterConditional("COND:IS_HTTPS", 0, Conditional_IS_HTTPS, CTX_NONE);
 
        RegisterNamespace("CSSLOCAL", 0, 0, tmplput_csslocal, NULL, CTX_NONE);
-       RegisterNamespace("IMPORTANTMESSAGE", 0, 0, tmplput_importantmessage, NULL, CTX_NONE);
+       RegisterNamespace("IMPORTANTMESSAGE", 0, 1, tmplput_importantmessage, NULL, CTX_NONE);
        RegisterNamespace("TRAILING_JAVASCRIPT", 0, 0, tmplput_trailing_javascript, NULL, CTX_NONE);
        RegisterNamespace("URL:DISPLAYNAME", 0, 1, tmplput_HANDLER_DISPLAYNAME, NULL, CTX_NONE);
        RegisterNamespace("PACKAGESTRING", 0, 1, tmplput_packagestring, NULL, CTX_NONE);