X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fauth.c;h=139ccda49dde88f6ac442d4a1bb1d92ad1a91066;hb=d120028b4c45f3c26d05186c8ba488fd2feef13f;hp=4ed68ff68efa7e21bf3899b2af6b617248f0c276;hpb=fc6832083dc3c224c955853a827a9151b19c2d12;p=citadel.git diff --git a/webcit/auth.c b/webcit/auth.c index 4ed68ff68..139ccda49 100644 --- a/webcit/auth.c +++ b/webcit/auth.c @@ -5,38 +5,22 @@ * */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include "webcit.h" -char *axdefs[] = -{ - "Deleted", - "New User", - "Problem User", - "Local User", - "Network User", - "Preferred User", - "Aide" -}; +char *axdefs[7]; + +void initialize_axdefs(void) { + axdefs[0] = _("Deleted"); + axdefs[1] = _("New User"); + axdefs[2] = _("Problem User"); + axdefs[3] = _("Local User"); + axdefs[4] = _("Network User"); + axdefs[5] = _("Preferred User"); + axdefs[6] = _("Aide"); +} + + + /* * Display the login screen @@ -45,7 +29,7 @@ void display_login(char *mesg) { char buf[SIZ]; - output_headers(1, 1, 2, 0, 0, 0, 0); + output_headers(1, 1, 2, 0, 0, 0); wprintf("
\n"); if (mesg != NULL) if (strlen(mesg) > 0) { @@ -53,9 +37,33 @@ void display_login(char *mesg) svprintf("mesg", WCS_STRING, "%s", buf); } + svprintf("LOGIN_INSTRUCTIONS", WCS_STRING, + _("
    " + "
  • If you already have an account on %s, " + "enter your user name and password and click "Login." " + "
  • If you are a new user, enter the name and password " + "you wish to use, " + "and click "New User." " + "
  • Please log off properly when finished. " + "
  • You must use a browser that supports frames and " + "cookies. " + "
  • Also keep in mind that if your browser is " + "configured to block pop-up windows, you will not be able " + "to receive any instant messages.
    " + "
"), + serv_info.serv_humannode + ); + + svprintf("USERNAME_BOX", WCS_STRING, "%s", _("User name:")); + svprintf("PASSWORD_BOX", WCS_STRING, "%s", _("Password:")); + svprintf("LANGUAGE_BOX", WCS_STRING, "%s", _("Language:")); + svprintf("LOGIN_BUTTON", WCS_STRING, "%s", _("Login")); + svprintf("NEWUSER_BUTTON", WCS_STRING, "%s", _("New User")); + svprintf("EXIT_BUTTON", WCS_STRING, "%s", _("Exit")); svprintf("hello", WCS_SERVCMD, "MESG hello"); - svprintf("BOXTITLE", WCS_STRING, "%s - powered by Citadel", + svprintf("BOXTITLE", WCS_STRING, _("%s - powered by Citadel"), serv_info.serv_humannode); + svcallback("DO_LANGUAGE_BOX", offer_languages); do_template("login"); @@ -77,7 +85,8 @@ void become_logged_in(char *user, char *pass, char *serv_response) char buf[SIZ]; WC->logged_in = 1; - extract_token(WC->wc_username, &serv_response[4], 0, '|', sizeof WC->wc_username); + extract_token(WC->wc_fullname, &serv_response[4], 0, '|', sizeof WC->wc_fullname); + safestrncpy(WC->wc_username, user, sizeof WC->wc_username); safestrncpy(WC->wc_password, pass, sizeof WC->wc_password); WC->axlevel = extract_int(&serv_response[4], 1); if (WC->axlevel >= 6) { @@ -94,6 +103,11 @@ void become_logged_in(char *user, char *pass, char *serv_response) WC->need_vali = extract_int(&buf[4], 2); extract_token(WC->cs_inet_email, &buf[4], 3, '|', sizeof WC->cs_inet_email); } + + get_preference("current_iconbar", buf, sizeof buf); + WC->current_iconbar = atoi(buf); + + get_preference("floordiv_expanded", WC->floordiv_expanded, sizeof WC->floordiv_expanded); } @@ -101,11 +115,16 @@ void do_login(void) { char buf[SIZ]; - if (!strcasecmp(bstr("action"), "Exit")) { + if (strlen(bstr("language")) > 0) { + set_selected_language(bstr("language")); + go_selected_language(); + } + + if (strlen(bstr("exit_action")) > 0) { do_logout(); return; } - if (!strcasecmp(bstr("action"), "Login")) { + if (strlen(bstr("login_action")) > 0) { serv_printf("USER %s", bstr("name")); serv_getln(buf, sizeof buf); if (buf[0] == '3') { @@ -123,9 +142,9 @@ void do_login(void) return; } } - if (!strcasecmp(bstr("action"), "New User")) { + if (strlen(bstr("newuser_action")) > 0) { if (strlen(bstr("pass")) == 0) { - display_login("Blank passwords are not allowed."); + display_login(_("Blank passwords are not allowed.")); return; } serv_printf("NEWU %s", bstr("name")); @@ -146,7 +165,7 @@ void do_login(void) do_welcome(); } } else { - display_login("Your password was not accepted."); + display_login(_("Your password was not accepted.")); } } @@ -185,7 +204,7 @@ void do_welcome(void) } if (!setup_wizard) { - http_redirect("/setup_wizard"); + http_redirect("setup_wizard"); } } #endif @@ -195,9 +214,12 @@ void do_welcome(void) */ get_preference("startpage", buf, sizeof buf); if (strlen(buf)==0) { - safestrncpy(buf, "/dotskip&room=_BASEROOM_", sizeof buf); + safestrncpy(buf, "dotskip&room=_BASEROOM_", sizeof buf); set_preference("startpage", buf, 1); } + if (buf[0] == '/') { + strcpy(buf, &buf[1]); + } http_redirect(buf); } @@ -206,6 +228,14 @@ void do_welcome(void) * Disconnect from the Citadel server, and end this WebCit session */ void end_webcit_session(void) { + char buf[256]; + + if (WC->logged_in) { + sprintf(buf, "%d", WC->current_iconbar); + set_preference("current_iconbar", buf, 0); + set_preference("floordiv_expanded", WC->floordiv_expanded, 1); + } + serv_puts("QUIT"); WC->killthis = 1; /* close() of citadel socket will be done by do_housekeeping() */ @@ -219,9 +249,10 @@ void do_logout(void) safestrncpy(WC->wc_username, "", sizeof WC->wc_username); safestrncpy(WC->wc_password, "", sizeof WC->wc_password); safestrncpy(WC->wc_roomname, "", sizeof WC->wc_roomname); + safestrncpy(WC->wc_fullname, "", sizeof WC->wc_fullname); /* Calling output_headers() this way causes the cookies to be un-set */ - output_headers(1, 1, 0, 1, 0, 0, 0); + output_headers(1, 1, 0, 1, 0, 0); wprintf("
"); serv_puts("MESG goodbye"); @@ -229,21 +260,24 @@ void do_logout(void) if (WC->serv_sock >= 0) { if (buf[0] == '1') { - fmout(NULL, "CENTER"); + fmout("CENTER"); } else { wprintf("Goodbye\n"); } } else { - wprintf("This program was unable to connect or stay " + wprintf(_("This program was unable to connect or stay " "connected to the Citadel server. Please report " - "this problem to your system administrator." + "this problem to your system administrator.") ); } - wprintf("
Log in again   " - "Close window" - "
\n"); + wprintf("
"); + wprintf(_("Log in again")); + wprintf("   " + ""); + wprintf(_("Close window")); + wprintf("\n"); wDumpContent(2); end_webcit_session(); } @@ -259,16 +293,16 @@ void validate(void) char buf[SIZ]; int a; - output_headers(1, 1, 2, 0, 0, 0, 0); + output_headers(1, 1, 2, 0, 0, 0); wprintf("
\n" "
" - "Validate new users" - "
\n" - "
\n
\n" - ); - + ""); + wprintf(_("Validate new users")); + wprintf("\n
\n
\n"); + + /* If the user just submitted a validation, process it... */ safestrncpy(buf, bstr("user"), sizeof buf); - if (strlen(buf) > 0) + if (strlen(buf) > 0) { if (strlen(bstr("axlevel")) > 0) { serv_printf("VALI %s|%s", buf, bstr("axlevel")); serv_getln(buf, sizeof buf); @@ -276,16 +310,25 @@ void validate(void) wprintf("%s
\n", &buf[4]); } } + } + + /* Now see if any more users require validation. */ serv_puts("GNUR"); serv_getln(buf, sizeof buf); - + if (buf[0] == '2') { + wprintf(""); + wprintf(_("No users require validation at this time.")); + wprintf("
\n"); + wDumpContent(1); + return; + } if (buf[0] != '3') { wprintf("%s
\n", &buf[4]); wDumpContent(1); return; } - wprintf("
" + wprintf("
" "
\n"); wprintf("
"); @@ -298,7 +341,7 @@ void validate(void) serv_getln(buf, sizeof buf); ++a; if (a == 1) - wprintf("User #%s

%s

", + wprintf("#%s

%s

", buf, &cmd[4]); if (a == 2) wprintf("PW: %s
\n", buf); @@ -315,16 +358,18 @@ void validate(void) if (a == 8) wprintf("%s
\n", buf); if (a == 9) - wprintf("Current access level: %d (%s)\n", + wprintf(_("Current access level: %d (%s)\n"), atoi(buf), axdefs[atoi(buf)]); } while (strcmp(buf, "000")); } else { wprintf("

%s

%s
\n", user, &cmd[4]); } - wprintf("
Select access level for this user:
\n"); + wprintf("
"); + wprintf(_("Select access level for this user:")); + wprintf("
\n"); for (a = 0; a <= 6; ++a) { - wprintf("%s   \n", a, axdefs[a]); @@ -353,7 +398,7 @@ void display_reg(int during_login) return; } - vcard_msgnum = locate_user_vcard(WC->wc_username, -1); + vcard_msgnum = locate_user_vcard(WC->wc_fullname, -1); if (vcard_msgnum < 0L) { if (during_login) do_welcome(); else display_main_menu(); @@ -361,10 +406,10 @@ void display_reg(int during_login) } if (during_login) { - do_edit_vcard(vcard_msgnum, "1", "/do_welcome"); + do_edit_vcard(vcard_msgnum, "1", "do_welcome"); } else { - do_edit_vcard(vcard_msgnum, "1", "/display_main_menu"); + do_edit_vcard(vcard_msgnum, "1", "display_main_menu"); } } @@ -379,10 +424,12 @@ void display_changepw(void) { char buf[SIZ]; - output_headers(1, 1, 2, 0, 0, 0, 0); + output_headers(1, 1, 2, 0, 0, 0); wprintf("
\n" "
" - "Change your password" + ""); + wprintf(_("Change your password")); + wprintf("" "
\n" "
\n
\n" ); @@ -395,29 +442,33 @@ void display_changepw(void) safestrncpy(WC->ImportantMessage, "", sizeof WC->ImportantMessage); } - wprintf("
" + wprintf("
" "
\n"); wprintf("

"); serv_puts("MESG changepw"); serv_getln(buf, sizeof buf); if (buf[0] == '1') { - fmout(NULL, "CENTER"); + fmout("CENTER"); } wprintf("
\n"); wprintf("
" "" - "\n"); + "\n"); wprintf("\n"); - wprintf("\n"); + wprintf("\n"); wprintf("\n"); wprintf("
Enter new password:
"); + wprintf(_("Enter new password:")); + wprintf("
Enter it again to confirm:
"); + wprintf(_("Enter it again to confirm:")); + wprintf("

\n"); - wprintf("" - " " - "\n"); + wprintf("", _("Change password")); + wprintf(" "); + wprintf("\n", _("Cancel")); wprintf("
\n"); wprintf("
\n"); wDumpContent(1); @@ -431,9 +482,9 @@ void changepw(void) char buf[SIZ]; char newpass1[32], newpass2[32]; - if (strcmp(bstr("action"), "Change")) { + if (strlen(bstr("change_action")) == 0) { safestrncpy(WC->ImportantMessage, - "Cancelled. Password was not changed.", + _("Cancelled. Password was not changed."), sizeof WC->ImportantMessage); display_main_menu(); return; @@ -444,7 +495,7 @@ void changepw(void) if (strcasecmp(newpass1, newpass2)) { safestrncpy(WC->ImportantMessage, - "They don't match. Password was not changed.", + _("They don't match. Password was not changed."), sizeof WC->ImportantMessage); display_changepw(); return; @@ -452,7 +503,7 @@ void changepw(void) if (strlen(newpass1) == 0) { safestrncpy(WC->ImportantMessage, - "Blank passwords are not allowed.", + _("Blank passwords are not allowed."), sizeof WC->ImportantMessage); display_changepw(); return;