/*
* These functions handle authentication of users to a Citadel server.
*
- * Copyright (c) 1996-2011 by the citadel.org team
+ * Copyright (c) 1996-2012 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.
+ * This program is open source software: you can redistribute it and/or 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"
* Disconnect from the Citadel server, and end this WebCit session
*/
void end_webcit_session(void) {
-
serv_puts("QUIT");
WC->killthis = 1;
/* close() of citadel socket will be done by do_housekeeping() */
/* Calling output_headers() this way causes the cookies to be un-set */
output_headers(1, 1, 0, 1, 0, 0);
-
- /* For sites in guest mode, redirect to the landing page after we're logged out */
- if (WC->serv_info->serv_supports_guest) {
- wc_printf(" <script type=\"text/javascript\"> "
- " window.location='/'; "
- " </script> "
- );
- }
-
- wc_printf("<div id=\"logout_screen\">");
- wc_printf("<div class=\"box\">");
- wc_printf("<div class=\"boxlabel\">");
- wc_printf(_("Log off"));
- wc_printf("</div><div class=\"boxcontent\">");
- serv_puts("MESG goodbye");
- serv_getln(buf, sizeof buf);
-
- if (WCC->serv_sock >= 0) {
- if (buf[0] == '1') {
- fmout("'CENTER'");
- } else {
- wc_printf("Goodbye\n");
- }
- }
- else {
- wc_printf(_("This program was unable to connect or stay "
- "connected to the Citadel server. Please report "
- "this problem to your system administrator.")
- );
- wc_printf("<a href=\"http://www.citadel.org/doku.php/"
- "faq:mastering_your_os:net#netstat\">%s</a>",
- _("Read More..."));
- }
-
- wc_printf("<hr /><div class=\"buttons\"> "
- "<span class=\"button_link\"><a href=\".\">");
- wc_printf(_("Log in again"));
- wc_printf("</a></span>");
- wc_printf("</div></div></div>\n");
- if (WC->serv_info->serv_supports_guest) {
+ do_template("logout");
+ if ((WCC->serv_info != NULL) && WCC->serv_info->serv_supports_guest) {
display_default_landing_page();
return;
}
}
-
-/*
- * display form for changing your password
- */
-void display_changepw(void)
-{
- wcsession *WCC = WC;
- WCTemplputParams SubTP;
- char buf[SIZ];
- StrBuf *Buf;
- output_headers(1, 1, 1, 0, 0, 0);
-
- Buf = NewStrBufPlain(_("Change your password"), -1);
- memset(&SubTP, 0, sizeof(WCTemplputParams));
- SubTP.Filter.ContextType = CTX_STRBUF;
- SubTP.Context = Buf;
- DoTemplate(HKEY("box_begin"), NULL, &SubTP);
-
- FreeStrBuf(&Buf);
-
- if (StrLength(WCC->ImportantMsg) > 0) {
- wc_printf("<span class=\"errormsg\">"
- "%s</span><br>\n", ChrPtr(WCC->ImportantMsg));
- FlushStrBuf(WCC->ImportantMsg);
- }
-
- serv_puts("MESG changepw");
- serv_getln(buf, sizeof buf);
- if (buf[0] == '1') {
- fmout("CENTER");
- }
-
- wc_printf("<form name=\"changepwform\" action=\"changepw\" method=\"post\">\n");
- wc_printf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
- wc_printf("<table class=\"altern\" ");
- wc_printf("<tr class=\"even\"><td>");
- wc_printf(_("Enter new password:"));
- wc_printf("</td><td>");
- wc_printf("<input type=\"password\" name=\"newpass1\" value=\"\" maxlength=\"20\"></td></tr>\n");
- wc_printf("<tr class=\"odd\"><td>");
- wc_printf(_("Enter it again to confirm:"));
- wc_printf("</td><td>");
- wc_printf("<input type=\"password\" name=\"newpass2\" value=\"\" maxlength=\"20\"></td></tr>\n");
- wc_printf("</table>\n");
-
- wc_printf("<div class=\"buttons\">\n");
- wc_printf("<input type=\"submit\" name=\"change_action\" value=\"%s\">", _("Change password"));
- wc_printf(" ");
- wc_printf("<input type=\"submit\" name=\"cancel_action\" value=\"%s\">\n", _("Cancel"));
- wc_printf("</div>\n");
- wc_printf("</form>\n");
-
- do_template("box_end");
- wDumpContent(1);
-}
-
/*
* change password
* if passwords match, propagate it to citserver.
if (strcasecmp(newpass1, newpass2)) {
AppendImportantMessage(_("They don't match. Password was not changed."), -1);
- display_changepw();
+ do_template("menu_change_pw");
return;
}
if (IsEmptyStr(newpass1)) {
AppendImportantMessage(_("Blank passwords are not allowed."), -1);
- display_changepw();
+ do_template("menu_change_pw");
return;
}
display_main_menu();
}
else {
- display_changepw();
+ do_template("menu_change_pw");
}
FreeStrBuf(&Line);
}
*/
StrBufAppendBufPlain(hdr->HR.plainauth, HKEY(":"), 0);
StrBufAppendBuf(hdr->HR.plainauth, hdr->HR.user_agent, 0);
- hdr->HR.SessionKey = hashlittle(SKEY(hdr->HR.plainauth), 89479832);
-/*
- syslog(1, "CheckAuthBasic: calculated sessionkey %ld\n",
- hdr->HR.SessionKey);
-*/
}
WebcitAddUrlHandler(HKEY("validate"), "", 0, validate, 0);
WebcitAddUrlHandler(HKEY("do_welcome"), "", 0, do_welcome, 0);
WebcitAddUrlHandler(HKEY("display_reg"), "", 0, _display_reg, 0);
- WebcitAddUrlHandler(HKEY("display_changepw"), "", 0, display_changepw, 0);
WebcitAddUrlHandler(HKEY("changepw"), "", 0, changepw, 0);
WebcitAddUrlHandler(HKEY("termquit"), "", 0, do_logout, 0);
WebcitAddUrlHandler(HKEY("do_logout"), "", 0, do_logout, ANONYMOUS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE);