diff options
author | allen <allen@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-21 09:05:21 +0000 |
---|---|---|
committer | allen <allen@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-21 09:05:21 +0000 |
commit | db8e32396434e839819e65add9747f4038b7bcbf (patch) | |
tree | 1f34563226bd56ce6b3c938a977c863f6a2a2019 /src | |
parent | 07b6471179a5937d345bbabd23a2b2dd4ef6da0c (diff) |
Added new default header
HTTP_ContentHeader takes an additional string arguement to contribute
something to the header
git-svn-id: http://svn.cactuscode.org/arrangements/CactusConnect/HTTPD/trunk@71 1faa4e14-9dd3-4be0-9f0e-ffe519881164
Diffstat (limited to 'src')
-rw-r--r-- | src/Content.c | 126 | ||||
-rw-r--r-- | src/Groups.c | 6 | ||||
-rw-r--r-- | src/Headers.c | 74 | ||||
-rw-r--r-- | src/http_Content.h | 4 |
4 files changed, 152 insertions, 58 deletions
diff --git a/src/Content.c b/src/Content.c index e9378fe..591e44d 100644 --- a/src/Content.c +++ b/src/Content.c @@ -94,7 +94,7 @@ int HTTPi_RegisterGroupsPages(void); ********************* Local Data ***************************** ********************************************************************/ -static struct httpLink *ContentLinks = NULL; +struct httpLink *ContentLinks = NULL; #define USER_LENGTH 255 @@ -302,7 +302,7 @@ static int MainPage(cGH *cctkGH, httpRequest *request, void *data) HTTP_Write(request, message, strlen(message)); /* Write out the main header part */ - HTTP_ContentHeader(1,4096,message); + HTTP_ContentHeader(cctkGH, 1, 4096, message,NULL); HTTP_Write(request, message, strlen(message)); strcpy(message, "<center><h1>Simulation Home Page</h1></center>"); @@ -487,7 +487,7 @@ static int MainPage(cGH *cctkGH, httpRequest *request, void *data) /* Write out the footer part. */ - HTTP_ContentFooter(0,4096,message); + HTTP_ContentFooter(cctkGH, 0, 4096, message); retval = HTTP_Write(request, message, strlen(message)); /* retval = HTTP_Write(request, base_page, strlen(base_page)); */ @@ -579,7 +579,7 @@ static int MainParameterPage(cGH *cctkGH, httpRequest *request, void *data) strcpy(message,"<HTML>\n"); HTTP_Write(request, message, strlen(message)); - HTTP_ContentHeader(0,4098,message); + HTTP_ContentHeader(cctkGH,0,4098,message,NULL); HTTP_Write(request, message, strlen(message)); strcpy(message, "<center>"); @@ -619,10 +619,10 @@ static int MainParameterPage(cGH *cctkGH, httpRequest *request, void *data) strcpy(message,"</table></center>"); HTTP_Write(request, message, strlen(message)); - + /* Write out the footer part. */ - HTTP_ContentFooter(0,4098,message); + HTTP_ContentFooter(cctkGH, 0, 4098, message); retval = HTTP_Write(request, message, strlen(message)); return retval; @@ -657,8 +657,10 @@ static const char *notauthorized_page = static int ThornParameterPage(cGH *cctkGH, httpRequest *request, void *data) { int retval=0; + int i; char message[4098]; - const char *thorn; + char menu[4098]; + const char *thorn, *menuthorn; int first; const cParamData *pData; char *value; @@ -768,7 +770,24 @@ static int ThornParameterPage(cGH *cctkGH, httpRequest *request, void *data) sprintf(message, "<HTML><HEAD><TITLE>Cactus Parameters Request : %s</TITLE></HEAD>\n", thorn); - HTTP_ContentHeader(0,4098,message); + HTTP_Write(request, message, strlen(message)); + + if (CCTK_NumCompiledThorns()>0) + { + strcpy(menu,"<dt><b>Parameters:</b>\n"); + } + /* Menu for this page */ + for (i = 0; i < CCTK_NumCompiledThorns (); i++) + { + menuthorn = CCTK_CompiledThorn (i); + if (CCTK_IsThornActive (menuthorn)) + { + sprintf(menu, + "%s <dt> <A HREF=\"/Parameters/%s/\">%s</A>\n", + menu,menuthorn, menuthorn); + } + } + HTTP_ContentHeader(cctkGH,0,4098,message,menu); strcat(message,"<BODY>"); HTTP_Write(request, message, strlen(message)); @@ -817,51 +836,77 @@ static int ThornParameterPage(cGH *cctkGH, httpRequest *request, void *data) value = CCTK_ParameterValString (pData->name, pData->thorn); if(value) { - if (pData->steerable == CCTK_STEERABLE_ALWAYS && !readonly) - { + if (pData->steerable == CCTK_STEERABLE_ALWAYS) + { if (nsteerable == 0) { - strcat(message,"<h2>Steerable Parameters</h2>" - "<table cellpadding=5 cellspacing=5>"); + strcat(message,"<h2>Steerable Parameters</h2>"); + if (readonly) + { + strcat(message,"<p><i>The following parameters are steerable, " + "but you do not have authorisation to change them. " + "To change parameters you must first register on the " + "<a href=\"/control.html\">Simulation Control Page</a>." + "</i></p>"); + } + strcat(message,"<table cellpadding=5 cellspacing=5>"); } nsteerable++; - if (pData->type == PARAMETER_BOOLEAN) + if (!readonly) { - param_bool = *((CCTK_INT *)CCTK_ParameterGet(pData->name,thorn,¶m_type)); - sprintf(message, - "%s<TR><TD align=left valign=center>%s</TD>" - "<TD align=left valign=center>" - "Yes <INPUT type=\"radio\" name=\"%s\" %s value=\"1\">" - " No <INPUT type=\"radio\" name=\"%s\" %s value=\"0\">" - "</TD><TD><SMALL>%s (%s)</SMALL></TR>\n", - message,pData->name,pData->name, - param_bool ? "checked" : "", pData->name, - param_bool ? "" : "checked",pData->description,pData->defval); + if (pData->type == PARAMETER_BOOLEAN) + { + param_bool = + *((CCTK_INT *)CCTK_ParameterGet(pData->name,thorn,¶m_type)); + sprintf(message, + "%s<TR><TD align=left valign=center>%s</TD>" + "<TD align=left valign=center>" + "Yes <INPUT type=\"radio\" name=\"%s\" %s value=\"1\">" + " No <INPUT type=\"radio\" name=\"%s\" %s value=\"0\">" + "</TD><TD><SMALL>%s (%s)</SMALL></TR>\n", + message,pData->name,pData->name, + param_bool ? "checked" : "", pData->name, + param_bool ? "" : "checked",pData->description,pData->defval); + } + else + { + sprintf(message, + "%s<TR><TD align=left valign=center>%s</TD>" + "<TD align=left valign=center>" + "<INPUT TYPE=TEXT NAME=\"%s\" VALUE=\"%s\">" + "</TD><TD><SMALL>%s (%s)</SMALL></TR>\n", + message, pData->name, pData->name, + value, pData->description,pData->defval); + } } else { sprintf(message, "%s<TR><TD align=left valign=center>%s</TD>" - "<TD align=left valign=center>" - "<INPUT TYPE=TEXT NAME=\"%s\" VALUE=\"%s\">" - "</TD><TD><SMALL>%s (%s)</SMALL></TR>\n", + "<TD align=left valign=center>%s</TD><TD>" + "<SMALL>%s (%s)</SMALL></TR>\n", message, pData->name, pData->name, value, pData->description,pData->defval); } - } + } free (value); } HTTP_Write(request, message, strlen(message)); } + printf("nsteerable is %d\n",nsteerable); if (nsteerable>0) { strcpy(message, "</TABLE>\n"); - HTTP_Write(request, message, strlen(message)); } + else + { + strcpy(message, "<p>This thorn has no steerable parameters.</p>\n"); + } + HTTP_Write(request, message, strlen(message)); if(!readonly && nsteerable>0) { @@ -914,8 +959,12 @@ static int ThornParameterPage(cGH *cctkGH, httpRequest *request, void *data) if (nfixed>0) { strcpy(message, "</TABLE>\n"); - HTTP_Write(request, message, strlen(message)); } + else + { + strcpy(message, "<p>This thorn has no fixed parameters.</p>\n"); + } + HTTP_Write(request, message, strlen(message)); } @@ -925,7 +974,7 @@ static int ThornParameterPage(cGH *cctkGH, httpRequest *request, void *data) /* Write out the footer part. */ - HTTP_ContentFooter(0,4098,message); + HTTP_ContentFooter(cctkGH, 0, 4098, message); retval = HTTP_Write(request, message, strlen(message)); } /* n_arguments > 0 */ @@ -1073,7 +1122,8 @@ static int ControlPage(cGH *cctkGH, httpRequest *request, void *data) strcpy(message, "<HTML><HEAD><TITLE>Cactus Control and Status Page</TITLE>\n"); HTTP_Write(request, message, strlen(message)); - HTTP_ContentHeader(0,4098,message); + HTTP_ContentHeader(cctkGH, 0,4098,message,NULL); + strcat(message, "<center><h1>Control and Status Page</h1></center>"); HTTP_Write(request, message, strlen(message)); @@ -1171,7 +1221,7 @@ static int ControlPage(cGH *cctkGH, httpRequest *request, void *data) /* Write out the footer part. */ - HTTP_ContentFooter(0,4098,message); + HTTP_ContentFooter(cctkGH, 0, 4098, message); retval = HTTP_Write(request, message, strlen(message)); } else @@ -1408,7 +1458,7 @@ static int ControlTerminationPage(cGH *cctkGH, httpRequest *request) HTTP_Write(request, message, strlen(message)); /* Write out the main header part */ - HTTP_ContentHeader(1,4098,message); + HTTP_ContentHeader(cctkGH,1,4098,message,NULL); HTTP_Write(request, message, strlen(message)); strcpy(message, "<center><h1>Simulation Home Page</h1></center>"); @@ -1547,7 +1597,7 @@ static int ControlTerminationPage(cGH *cctkGH, httpRequest *request) /* Write out the footer part. */ - HTTP_ContentFooter(0,4098,message); + HTTP_ContentFooter(cctkGH,0,4098,message); retval = HTTP_Write(request, message, strlen(message)); /* retval = HTTP_Write(request, base_page, strlen(base_page)); */ @@ -1619,7 +1669,7 @@ static int AboutPage(cGH *cctkGH, httpRequest *request, void *data) /* Start the page */ strcpy(message, "<HTML><HEAD><TITLE>About Cactus Server</TITLE></HEAD>\n"); - HTTP_ContentHeader(0,4098,message); + HTTP_ContentHeader(cctkGH,0,4098,message,NULL); strcat(message,"<BODY>"); HTTP_Write(request, message, strlen(message)); @@ -1652,7 +1702,7 @@ static int AboutPage(cGH *cctkGH, httpRequest *request, void *data) /* Write out the footer part. */ - HTTP_ContentFooter(0,4098,message); + HTTP_ContentFooter(cctkGH,0,4098,message); retval = HTTP_Write(request, message, strlen(message)); return retval; @@ -1704,7 +1754,7 @@ static int CookieTestPage(cGH *cctkGH, httpRequest *request, void *data) strcpy(message, "<HTML><HEAD><TITLE>Cookie Test</TITLE>\n"); HTTP_Write(request, message, strlen(message)); - HTTP_ContentHeader(0,4098,message); + HTTP_ContentHeader(cctkGH,0,4098,message,NULL); HTTP_Write(request, message, strlen(message)); strcat(message, "<center><h1>Cookie Test</h1></center>"); @@ -1733,7 +1783,7 @@ static int CookieTestPage(cGH *cctkGH, httpRequest *request, void *data) /* Write out the footer part. */ - HTTP_ContentFooter(0,4098,message); + HTTP_ContentFooter(cctkGH,0,4098,message); retval = HTTP_Write(request, message, strlen(message)); return retval; diff --git a/src/Groups.c b/src/Groups.c index 7a27ef8..8d40112 100644 --- a/src/Groups.c +++ b/src/Groups.c @@ -116,7 +116,7 @@ static int GroupsPage(cGH *cctkGH, httpRequest *request, void *data) /* HTTP_Write out the header part. */ - HTTP_ContentHeader(0,strlen(message),message); + HTTP_ContentHeader(cctkGH,0,strlen(message),message,NULL); retval = HTTP_Write(request, message, strlen(message)); @@ -225,12 +225,12 @@ static int GroupsPage(cGH *cctkGH, httpRequest *request, void *data) */ } - strcpy(message,"</TABLE></FORM></center>/n"); + strcpy(message,"</TABLE></FORM></center>\n"); HTTP_Write(request, message, strlen(message)); /* Write out the footer part. */ - HTTP_ContentFooter(0,strlen(message),message); + HTTP_ContentFooter(cctkGH,0,strlen(message),message); retval = HTTP_Write(request, message, strlen(message)); return retval; diff --git a/src/Headers.c b/src/Headers.c index 038b568..9c16211 100644 --- a/src/Headers.c +++ b/src/Headers.c @@ -21,6 +21,17 @@ CCTK_FILEVERSION(DevThorns_httpd_Headers_c) ********************* Local Data Types *********************** ********************************************************************/ +extern struct httpLink *ContentLinks; + +struct httpLink +{ + struct httpLink *next; + char *URL; + char *name; + char *description; + int flags; +}; + /******************************************************************** ********************* Local Routine Prototypes ********************* ********************************************************************/ @@ -80,13 +91,29 @@ static const char *cactus_footer = @endhistory @@*/ -int HTTP_ContentHeader(int choice, int len, char *header) +int HTTP_ContentHeader(cGH *GH, int choice, int len, char *header, char *menu) { char title[TITLE_ARRAY_SIZE]; char currentdate[50]; char currenttime[50]; + char quicklinks[524]; + struct httpLink *link; int titlelen,datelen,timelen; + + if(ContentLinks) + { + strcpy(quicklinks,"<dl><dt><b>Options:</b>"); + for(link = ContentLinks; link; link=link->next) + { + sprintf(quicklinks, + "%s<dt> <A HREF=\"%s\">%s</a></dt>\n", + quicklinks, link->URL, link->name); + + } + + sprintf(quicklinks,"%s</dl>\n",quicklinks); + } if (choice == 0) { @@ -99,18 +126,36 @@ int HTTP_ContentHeader(int choice, int len, char *header) sprintf( header, "</HEAD>\n<BODY BGCOLOR=\"#FFFFFF\" link=\"#1B831D\" " "vlink=\"#768000\" alink=\"#00FF00\">\n" - "<table width=100%% border=0>\n<tr>\n<td align=left>\n"); - strcat(header,"<font color=#1B831D><small>\n"); - strncat(header, title, titlelen*sizeof(char)); - strcat(header,"<br>"); - strncat(header, currentdate, datelen*sizeof(char)); - strcat(header, " "); - strncat(header, currenttime, timelen*sizeof(char)); - strcat(header, "</small></font>\n"); - strcat(header, "</td>\n<td align=right valign=top>\n" - "<A HREF=\"/\">Master Run Page</A>\n" - "</td>\n</tr>\n</table>\n<center>\n<table width=70%% border=0>\n" - "<tr>\n<td>\n"); + "<center>\n<table cellpadding=10 width=100%% border=0>\n" + "<tr>\n<td bgcolor=#E5FFA2 valign=top align=left width=20%%>\n"); + strcat(header, "<A HREF=\"/\">Master Run Page</A>\n"); + sprintf(header,"%s\n" + "<small><dl>" + "<dt><b>Environment:</b>" + "<dt>Time: %s" + "<dt>Date: %s" + "</dl></small>", + header,currenttime,currentdate); + sprintf(header,"%s <small><dl><dt><b>Simulation:</b>" + "<dt><i>%s</i>" + "<dt>Iteration: %d" + "<dt>Physical time: %4.2f" + "</dl>" + ,header,title,GH->cctk_iteration,GH->cctk_time); + if (ContentLinks) + { + strcat(header,quicklinks); + } + strcat(header,"</small>"); + + if (menu) + { + strcat(header,"<dt><small>"); + strcat(header,menu); + strcat(header,"</dt></small>"); + } + + strcat(header,"</td><td valign=top>\n"); } else { @@ -135,11 +180,10 @@ int HTTP_ContentHeader(int choice, int len, char *header) @endhistory @@*/ -int HTTP_ContentFooter(int choice, int len, char *footer) +int HTTP_ContentFooter(cGH *GH, int choice, int len, char *footer) { strcpy(footer,cactus_footer); return strlen(footer); } - diff --git a/src/http_Content.h b/src/http_Content.h index cf995b5..c79b7a8 100644 --- a/src/http_Content.h +++ b/src/http_Content.h @@ -26,8 +26,8 @@ int HTTP_ContentLink(const char *URL, int HTTP_ContentSendFromFile(httpRequest *request, int filedes); -void HTTP_ContentHeader(int choice, int len, char *header); -void HTTP_ContentFooter(int choice, int len, char *footer); +int HTTP_ContentHeader(cGH *cctkGH, int choice, int len, char *mess, char *menu); +int HTTP_ContentFooter(cGH *cctkGH, int choice, int len, char *mess); #ifdef __cplusplus } |