diff options
Diffstat (limited to 'src/Content.c')
-rw-r--r-- | src/Content.c | 95 |
1 files changed, 90 insertions, 5 deletions
diff --git a/src/Content.c b/src/Content.c index 757fcc3..2f2ffba 100644 --- a/src/Content.c +++ b/src/Content.c @@ -69,6 +69,7 @@ struct httpLink static int RegisterImages(void); +static int RedirectPage(cGH *cctkGH, httpRequest *request, void *data); static int MainPage(cGH *cctkGH, httpRequest *request, void *data); static int AboutPage(cGH *cctkGH, httpRequest *request, void *data); @@ -87,6 +88,7 @@ static int CookieTestPage(cGH *cctkGH, httpRequest *request, void *data); ********************************************************************/ void HTTP_ContentWork(cGH *GH); +int HTTP_RegisterRedirect(void); int HTTP_RegisterPages(void); int HTTPi_RegisterGroupsPages(void); int HTTPi_RegisterThornPages(void); @@ -133,6 +135,7 @@ void HTTP_ContentWork(cGH *GH) #endif } + /*@@ @routine HTTP_RegisterPages @date Wed Sep 13 23:47:43 2000 @@ -190,6 +193,29 @@ int HTTP_RegisterPages(void) } /*@@ + @routine HTTP_RegisterRedirect + @date Fri April 20 23:47:43 2001 + @author John Shalf + @desc + Redirection Page Registration. + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ +int HTTP_RegisterRedirect(void){ + DECLARE_CCTK_PARAMETERS +#ifdef HTTP_DEBUG + printf("Registering Redirection Page"); +#endif + HTTP_RegisterPage("/index.html",RedirectPage,NULL); + RegisterImages(); +} + + /*@@ @routine HTTP_ContentLink @date Sun Sep 17 13:17:56 2000 @author Tom Goodale @@ -276,6 +302,70 @@ static int CompareStrings(const void *string1, const void *string2) /*@@ + @routine RedirectPage + @date Fri April 20 23:47:43 2001 + @author John Shalf + @desc + Redirects the webbrowser to the main server page + @enddesc + @calls + @calledby + @history + @hdate Thu Sep 14 10:54:22 2000 @hauthor John Shalf + @hdesc For clusters where its difficult to know which node is going to + have the webserver process, this opens a port on *all* distinct nodes + and redirects all web connection attempts to the root node for processing. + @endhistory + +@@*/ + +static int RedirectPage(cGH *cctkGH, httpRequest *request, void *data) +{ + + DECLARE_CCTK_PARAMETERS + + int retval; + char message[10098]; + char title[4098]; + char menu[4098]; + char *dir; + char *file; + struct httpLink *hlink; + + /* avoid compiler warning about unused parameter */ + data = data; + + /* Status message */ + strcpy(message,"HTTP/1.0 200 OK\r\n"); + + HTTP_Write(request, message, strlen(message)); + + /* Content-Type */ + strcpy(message,"Content-Type: text/html\r\n\r\n"); + + HTTP_Write(request, message, strlen(message)); + + /* Start the page */ + strcpy(message,"<HTML><HEAD><TITLE>Server Redirect</TITLE>\n"); + /* Write out the main header part */ + HTTP_Write(request, message, strlen(message)); + sprintf(message,"<META http-equiv=\"refresh\" content=\"1; URL=http://%s:%u\"></HEAD><body>\n", + HTTP_Master(),HTTP_Port()); + HTTP_Write(request,message,strlen(message)); + /* ********** Server Redirect To Master ************* */ + sprintf(message,"<p><h1>Redirect to master host=%s:%u</h1><p>\n", + HTTP_Master(),HTTP_Port()); + HTTP_Write(request,message,strlen(message)); + + HTTP_ContentFooter(cctkGH, 0, 4096, message); + retval = HTTP_Write(request, message, strlen(message)); + + /* retval = HTTP_Write(request, base_page, strlen(base_page)); */ + + return retval; +} + + /*@@ @routine MainPage @date Wed Sep 13 23:47:43 2000 @author Tom Goodale @@ -611,8 +701,6 @@ static int MainPage(cGH *cctkGH, httpRequest *request, void *data) HTTP_ContentFooter(cctkGH, 0, 4096, message); retval = HTTP_Write(request, message, strlen(message)); - /* retval = HTTP_Write(request, base_page, strlen(base_page)); */ - return retval; } @@ -1254,9 +1342,6 @@ static int ControlTerminationPage(cGH *cctkGH, httpRequest *request) HTTP_ContentFooter(cctkGH,0,4098,message); retval = HTTP_Write(request, message, strlen(message)); - - /* retval = HTTP_Write(request, base_page, strlen(base_page)); */ - return retval; } |