From e1968d13f46f5c549cdf2f5ab8b63080ba45e7da Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Thu, 22 Dec 2011 12:35:16 -0500 Subject: [PATCH] If no URL handler is found, try it as a room name. This will allow friendly URLs such as http://foo.example.com/MyRoomName --- webcit/context_loop.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/webcit/context_loop.c b/webcit/context_loop.c index 8295fff75..04c5cf0a3 100644 --- a/webcit/context_loop.c +++ b/webcit/context_loop.c @@ -7,18 +7,12 @@ * Copyright (c) 1996-2011 by the citadel.org team * * This program is open source software. You can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 3 of the - * License, or (at your option) any later version. + * modify it under the terms of the GNU General Public License version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "webcit.h" @@ -267,7 +261,6 @@ int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf) void *vLine, *vHandler; const char *Pos = NULL; - Hdr->HR.ReqLine = Line; /* The requesttype... GET, POST... */ StrBufExtract_token(Buf, Hdr->HR.ReqLine, 0, ' '); @@ -332,15 +325,23 @@ int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf) } if (Hdr->HR.Handler != NULL) { - if ((Hdr->HR.Handler->Flags & BOGUS) != 0) + if ((Hdr->HR.Handler->Flags & BOGUS) != 0) { return 1; + } Hdr->HR.DontNeedAuth = ( ((Hdr->HR.Handler->Flags & ISSTATIC) != 0) || ((Hdr->HR.Handler->Flags & ANONYMOUS) != 0) - ); + ); } else { Hdr->HR.DontNeedAuth = 1; /* Flat request? show him the login screen... */ + StrBuf *NewLine = NewStrBufPlain(HKEY("GET /readfwd?go=")); + StrBufUrlescAppend(NewLine, Buf, NULL); + StrBufAppendBufPlain(NewLine, HKEY(" HTTP/1.0"), 0); + syslog(LOG_DEBUG, "Replacing with: %s", ChrPtr(NewLine)); + int return_value = ReadHttpSubject(Hdr, NewLine, Buf); + FreeStrBuf(&NewLine); + return return_value; } return 0; -- 2.30.2