From: Art Cancro Date: Wed, 22 Jun 2011 20:23:52 +0000 (-0400) Subject: The 'static redirects' file may now contain a special token called 'home' which can... X-Git-Tag: v8.01~205 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=a1ef8530c29c9ffec07dffacb303a1deb697a585 The 'static redirects' file may now contain a special token called 'home' which can specify the site-wide default landing page. --- 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);