X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit%2Flistsub.c;h=64f809e522f93feba0a380c1c6dba81ebcabf5b0;hp=ce9b1ed5250a37555f3167242adf42abe826b280;hb=HEAD;hpb=64a9d779e6d2f3e8b9b8492aea68fbf881d6d71b diff --git a/webcit/listsub.c b/webcit/listsub.c index ce9b1ed52..95f9ecfdb 100644 --- a/webcit/listsub.c +++ b/webcit/listsub.c @@ -1,226 +1,137 @@ -/* - * $Id$ - * - * Web forms for handling mailing list subscribe/unsubscribe requests. - */ +// Web forms for handling mailing list subscribe/unsubscribe requests. +// +// Copyright (c) 1996-2022 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, 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. #include "webcit.h" -/* - * List subscription handling - */ -void do_listsub(void) -{ - char cmd[256]; - char room[256]; - char token[256]; - char email[256]; - char subtype[256]; - char escaped_email[256]; - char escaped_room[256]; - - char buf[SIZ]; - int self; - char sroom[SIZ]; - - strcpy(WC->wc_fullname, ""); - strcpy(WC->wc_username, ""); - strcpy(WC->wc_password, ""); - strcpy(WC->wc_roomname, ""); - - output_headers(1, 0, 0, 1, 1, 0); - begin_burst(); - - wprintf("
\n" - "\n" - "\n" - "");
-
- svput("BOXTITLE", WCS_STRING, _("List subscribe/unsubscribe"));
- do_template("beginbox");
- wprintf(" "); - - /* - * Subscribe command - */ - if (!strcasecmp(cmd, "subscribe")) { - serv_printf("SUBS subscribe|%s|%s|%s|%s://%s/listsub", - room, - email, - subtype, - (is_https ? "https" : "http"), - WC->http_host - ); - serv_getln(buf, sizeof buf); - if (buf[0] == '2') { - stresc(escaped_email, 256, email, 0, 0); - stresc(escaped_room, 256, room, 0, 0); - - wprintf(" "); - wprintf(_("Confirmation request sent")); - wprintf(""); - wprintf(_("You are subscribing %s" - " to the %s mailing list. " - "The listserver has " - "sent you an e-mail with one additional " - "Web link for you to click on to confirm " - "your subscription. This extra step is for " - "your protection, as it prevents others from " - "being able to subscribe you to lists " - "without your consent." - "Please click on the link which is being " - "e-mailed to you and your subscription will " - "be confirmed. \n"), - escaped_email, escaped_room); - wprintf("%s \n", - &buf[4]); - goto FORM; - } +// List subscription handling +int Conditional_LISTSUB_EXECUTE_SUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) { + int rc; + StrBuf *Line; + const char *ImpMsg; + const StrBuf *Room, *Email; + + if (strcmp(bstr("cmd"), "subscribe")) { + return 0; } - /* - * Unsubscribe command - */ - else if (!strcasecmp(cmd, "unsubscribe")) { - serv_printf("SUBS unsubscribe|%s|%s|%s://%s/listsub", - room, - email, - (is_https ? "https" : "http"), - WC->http_host - ); - serv_getln(buf, sizeof buf); - if (buf[0] == '2') { - wprintf(" Confirmation request sent" - "You are unsubscribing "); - escputs(email); - wprintf(" from the ""); - escputs(room); - wprintf("" mailing list. The listserver has " - "sent you an e-mail with one additional " - "Web link for you to click on to confirm " - "your unsubscription. This extra step is for " - "your protection, as it prevents others from " - "being able to unsubscribe you from " - "lists without your consent." - "Please click on the link which is being " - "e-mailed to you and your unsubscription will " - "be confirmed. \n" - "Back... \n", - &buf[4]); - goto FORM; - } + Room = sbstr("room"); + if (Room == NULL) { + ImpMsg = _("You need to specify the mailinglist to subscribe to."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + Email = sbstr("email"); + if (Email == NULL) { + ImpMsg = _("You need to specify the email address you'd like to subscribe with."); + AppendImportantMessage(ImpMsg, -1); + return 0; } - /* - * Confirm command - */ - else if (!strcasecmp(cmd, "confirm")) { - serv_printf("SUBS confirm|%s|%s", - room, - token - ); - serv_getln(buf, sizeof buf); - if (buf[0] == '2') { - wprintf(" Confirmation successful!"); - } - else { - wprintf("Confirmation failed." - "This could mean one of two things:
\n", &buf[4]); + Line = NewStrBuf(); + serv_printf("LSUB subscribe|%s|%s|%s/listsub", ChrPtr(Room), ChrPtr(Email), ChrPtr(site_prefix)); + StrBuf_ServGetln(Line); + rc = GetServerStatusMsg(Line, NULL, 1, 2); + FreeStrBuf(&Line); + if (rc == 2) { + putbstr("__FAIL", NewStrBufPlain(HKEY("1"))); } + return rc == 2; +} - /* - * Any other (invalid) command causes the form to be displayed - */ - else { -FORM: wprintf("\n" - ); - - wprintf(" When you attempt to subscribe or unsubscribe to " - "a mailing list, you will receive an e-mail containing" - " one additional web link to click on for final " - "confirmation. This extra step is for your " - "protection, as it prevents others from being able to " - "subscribe or unsubscribe you to lists. \n" - ); +int Conditional_LISTSUB_EXECUTE_UNSUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) { + int rc; + StrBuf *Line; + const char *ImpMsg; + const StrBuf *Room, *Email; + + if (strcmp(bstr("cmd"), "unsubscribe")) { + return 0; + } + + Room = sbstr("room"); + if (Room == NULL) { + ImpMsg = _("You need to specify the mailinglist to subscribe to."); + AppendImportantMessage(ImpMsg, -1); + return 0; + } + Email = sbstr("email"); + if (Email == NULL) { + ImpMsg = _("You need to specify the email address you'd like to subscribe with."); + AppendImportantMessage(ImpMsg, -1); + return 0; } - wprintf(" |