From 30717e17deed1291ded9355c82dc26a56e7ec0ad Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Wed, 22 Jun 2011 16:23:52 -0400 Subject: [PATCH] The 'static redirects' file may now contain a special token called 'home' which can specify the site-wide default landing page. --- webcit/webcit.c | 14 ++++++++++---- webcit/webserver.c | 4 ++++ webcit/webserver.h | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/webcit/webcit.c b/webcit/webcit.c index 6727f3878..117f8fdf9 100644 --- a/webcit/webcit.c +++ b/webcit/webcit.c @@ -876,10 +876,16 @@ void display_default_landing_page(void) { wcsession *WCC = WC; if (WCC && WCC->serv_info && WCC->serv_info->serv_supports_guest) { - /* default action. probably revisit this. */ - StrBuf *teh_lobby = NewStrBufPlain(HKEY("_BASEROOM_")); - smart_goto(teh_lobby); - FreeStrBuf(&teh_lobby); + /* default action */ + + if (default_landing_page) { + http_redirect(default_landing_page); + } + else { + StrBuf *teh_lobby = NewStrBufPlain(HKEY("_BASEROOM_")); + smart_goto(teh_lobby); + FreeStrBuf(&teh_lobby); + } } else { display_login(); diff --git a/webcit/webserver.c b/webcit/webserver.c index 6e3aef7ac..e0887b586 100644 --- a/webcit/webserver.c +++ b/webcit/webserver.c @@ -25,6 +25,7 @@ int follow_xff = 0; /* Follow X-Forwarded-For: header */ int home_specified = 0; /* did the user specify a homedir? */ int DisableGzip = 0; struct redirector *redir = NULL; +char *default_landing_page = NULL; int num_redir = 0; extern pthread_mutex_t SessionListMutex; extern pthread_key_t MyConKey; @@ -131,6 +132,9 @@ void load_redirs(char *filename) { extract_token(redir[num_redir].urlpart, buf, 0, '|', sizeof(redir[num_redir].urlpart)); extract_token(redir[num_redir].redirect_to, buf, 1, '|', sizeof(redir[num_redir].redirect_to)); WebcitAddUrlHandler(redir[num_redir].urlpart, strlen(redir[num_redir].urlpart), "", 0, handle_redir, ANONYMOUS|COOKIEUNNEEDED|ISSTATIC); + if (!strcasecmp(redir[num_redir].urlpart, "home")) { + default_landing_page = redir[num_redir].redirect_to ; + } ++num_redir; } diff --git a/webcit/webserver.h b/webcit/webserver.h index 1a1832254..dadee85cb 100644 --- a/webcit/webserver.h +++ b/webcit/webserver.h @@ -10,6 +10,7 @@ struct redirector { extern struct redirector *redir; extern int num_redir; +extern char *default_landing_page; int ClientGetLine(ParsedHttpHdrs *Hdr, StrBuf *Target); int client_read_to(ParsedHttpHdrs *Hdr, StrBuf *Target, int bytes, int timeout); -- 2.30.2