diff options
author | goodale <goodale@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-15 12:45:27 +0000 |
---|---|---|
committer | goodale <goodale@1faa4e14-9dd3-4be0-9f0e-ffe519881164> | 2000-09-15 12:45:27 +0000 |
commit | 9ca8518895939d3ae82c937bed7f2b545a9f9e39 (patch) | |
tree | 6a4f12a4f4c472bffac1dbffb2b5a877bf2c0beb /src/Content.c | |
parent | 3c4f4b1e6a1de4d6e16a70af4d11fc11ddb11da9 (diff) |
Made parallel aware.
Added stuff for parameter steering. See doc/Steering.txt.
Added stuff for HTTP Basic authentication. See doc/Auth.txt.
Tom
git-svn-id: http://svn.cactuscode.org/arrangements/CactusConnect/HTTPD/trunk@9 1faa4e14-9dd3-4be0-9f0e-ffe519881164
Diffstat (limited to 'src/Content.c')
-rw-r--r-- | src/Content.c | 67 |
1 files changed, 65 insertions, 2 deletions
diff --git a/src/Content.c b/src/Content.c index 3e95e74..b1f6c34 100644 --- a/src/Content.c +++ b/src/Content.c @@ -12,6 +12,7 @@ @@*/ #include <stdio.h> +#include <string.h> #include "cctk.h" @@ -19,6 +20,8 @@ #include "http_Request.h" +#include "http_Auth.h" + static char *rcsid = "$Header$"; CCTK_FILEVERSION(DevThorns_httpd_Content_c) @@ -47,6 +50,8 @@ static int ShowStaticPage(cGH *cctkGH, httpRequest *request, void *data); static int TestPage(cGH *cctkGH, httpRequest *request, void *data); +static int AuthPage(cGH *cctkGH, httpRequest *request, void *data); + static int CompareStrings(const void *string1, const void *string2); /******************************************************************** @@ -91,6 +96,10 @@ int HTTP_RegisterPages(void) /* Register a test page */ HTTP_RegisterPage("/test_page", TestPage, NULL); + HTTP_RegisterPage("/auth_page", AuthPage, NULL); + + HTTP_AuthAddUser("user","goodale","foo","none"); + /* Registrer images */ RegisterImages(); } @@ -696,9 +705,9 @@ static int TestPage(cGH *cctkGH, httpRequest *request, void *data) write(request->filedes, message, strlen(message)); - value = HTTP_ArgumentValue(request, "cmd"); + value = HTTP_ArgumentValue(request, "text"); - sprintf(message, "cmd = %s<hr>\n", value); + sprintf(message, "text = %s<hr>\n", value); write(request->filedes, message, strlen(message)); @@ -715,3 +724,57 @@ static int TestPage(cGH *cctkGH, httpRequest *request, void *data) return retval; } + + +static const char *notauthorized_page = +"<HTML>\n<HEAD><TITLE>Error 401: Not Authorized</TITLE></HEAD>\ +<BODY>You are not authorized to access this page</BODY>\n<HTML>\n"; + +static const char *authorized_page = +"<HTML>\n<HEAD><TITLE>Authorized</TITLE></HEAD>\ +<BODY>Congratulations !</BODY>\n<HTML>\n"; + +static int AuthPage(cGH *cctkGH, httpRequest *request, void *data) +{ + int retval; + char message[1024]; + + int notauthorised; + + notauthorised = HTTP_AuthenticateBasic(request, "user"); + + if(!notauthorised) + { + strcpy(message,"HTTP/1.0 200 Ok\r\n"); + + write(request->filedes, message, strlen(message)); + + strcpy(message,"WWW-Authenticate: Basic realm=\"foo\"\r\n"); + + write(request->filedes, message, strlen(message)); + + strcpy(message,"Content-Type: text/html\r\n\r\n"); + + write(request->filedes, message, strlen(message)); + + write(request->filedes, authorized_page, strlen(authorized_page)); + } + else + { + strcpy(message,"HTTP/1.0 401 Unauthorized\r\n"); + + write(request->filedes, message, strlen(message)); + + strcpy(message,"WWW-Authenticate: Basic realm=\"foo\"\r\n"); + + write(request->filedes, message, strlen(message)); + + strcpy(message,"Content-Type: text/html\r\n\r\n"); + + write(request->filedes, message, strlen(message)); + + write(request->filedes, notauthorized_page, strlen(notauthorized_page)); + } + + return 0; +} |