X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fauth.c;h=863488b8c5dd1223347ecf4bb982d8776677460f;hb=d1a9b13de4ea01f1c299a16e06d207b687e7c576;hp=d182b40238be0efbf55132017a721ad9cbca0c0f;hpb=57eba726fbad7b16f7b9624e9d01f16eaccb35b2;p=citadel.git diff --git a/webcit/auth.c b/webcit/auth.c index d182b4023..863488b8c 100644 --- a/webcit/auth.c +++ b/webcit/auth.c @@ -948,11 +948,46 @@ int ConditionalRoomAcessDelete(StrBuf *Target, WCTemplputParams *TP) void _display_openid_login(void) {display_openid_login(NULL);} void _display_reg(void) {display_reg(0);} +void Header_HandleAuth(StrBuf *Line, ParsedHttpHdrs *hdr) +{ + const char *Pos = NULL; + if (strncasecmp(ChrPtr(Line), "Basic", 5) == 0) { + StrBufCutLeft(Line, 6); + StrBufDecodeBase64(Line); + StrBufExtract_NextToken(hdr->c_username, Line, &Pos, ':'); + StrBufExtract_NextToken(hdr->c_password, Line, &Pos, ':'); + hdr->got_auth = AUTH_BASIC; + } + else + lprintf(1, "Authentication scheme not supported! [%s]\n", ChrPtr(Line)); +} + +void Header_HandleCookie(StrBuf *Line, ParsedHttpHdrs *hdr) +{ + hdr->RawCookie = Line; + if (hdr->DontNeedAuth) + return; +/* + safestrncpy(c_httpauth_string, "", sizeof c_httpauth_string); + c_httpauth_user = NewStrBufPlain(HKEY(DEFAULT_HTTPAUTH_USER)); + c_httpauth_pass = NewStrBufPlain(HKEY(DEFAULT_HTTPAUTH_PASS)); +*/ + cookie_to_stuff(Line, &hdr->desired_session, + hdr->c_username, + hdr->c_password, + hdr->c_roomname); + hdr->got_auth = AUTH_COOKIE; +} + + void InitModule_AUTH (void) { + RegisterHeaderHandler(HKEY("COOKIE"), Header_HandleCookie); + RegisterHeaderHandler(HKEY("AUTHORIZATION"), Header_HandleAuth); + WebcitAddUrlHandler(HKEY(""), do_welcome, ANONYMOUS|COOKIEUNNEEDED); /* no url pattern at all? Show login. */ WebcitAddUrlHandler(HKEY("do_welcome"), do_welcome, ANONYMOUS|COOKIEUNNEEDED); WebcitAddUrlHandler(HKEY("login"), do_login, ANONYMOUS|COOKIEUNNEEDED);