From 9ca8518895939d3ae82c937bed7f2b545a9f9e39 Mon Sep 17 00:00:00 2001 From: goodale Date: Fri, 15 Sep 2000 12:45:27 +0000 Subject: 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 --- src/Content.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) (limited to 'src/Content.c') 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 +#include #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
\n", value); + sprintf(message, "text = %s
\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 = +"\nError 401: Not Authorized\ +You are not authorized to access this page\n\n"; + +static const char *authorized_page = +"\nAuthorized\ +Congratulations !\n\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; +} -- cgit v1.2.3