*/
#include "webcit.h"
-
+#include "webserver.h"
#define MAX_FLOORS 128
char floorlist[MAX_FLOORS][SIZ]; /**< list of our floor names */
case VIEW_CALENDAR: return(1);
case VIEW_TASKS: return(1);
case VIEW_NOTES: return(1);
- case VIEW_WIKI: return(0); /**< because it isn't finished yet */
+
+#ifdef TECH_PREVIEW
+ case VIEW_WIKI: return(1);
+#else /* TECH_PREVIEW */
+ case VIEW_WIKI: return(0); /* because it isn't finished yet */
+#endif /* TECH_PREVIEW */
+
case VIEW_CALBRIEF: return(0);
case VIEW_JOURNAL: return(0);
- default: return(0); /**< should never get here */
+ default: return(0); /* should never get here */
}
}
wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
wprintf("<label for=\"search_name\">");
wprintf(_("Search: "));
- wprintf("</label> <input "
- "type=\"text\" name=\"query\" size=\"15\" maxlength=\"128\" "
+ wprintf("</label> <input ");
+ wprintf("%s", serv_info.serv_fulltext_enabled ? "" : "disabled ");
+ wprintf("type=\"text\" name=\"query\" size=\"15\" maxlength=\"128\" "
"id=\"search_name\" class=\"inputbox\">\n"
);
wprintf("</form>\n");
case VIEW_CALENDAR:
case VIEW_CALBRIEF:
wprintf("<li class=\"addevent\"><a href=\"display_enter");
- if (!IsEmptyStr(bstr("year" ))) wprintf("?year=%s", bstr("year"));
- if (!IsEmptyStr(bstr("month"))) wprintf("?month=%s", bstr("month"));
- if (!IsEmptyStr(bstr("day" ))) wprintf("?day=%s", bstr("day"));
+ if (havebstr("year" )) wprintf("?year=%s", bstr("year"));
+ if (havebstr("month")) wprintf("?month=%s", bstr("month"));
+ if (havebstr("day" )) wprintf("?day=%s", bstr("day"));
wprintf("\">"
"<img align=\"middle\" src=\"static/addevent_24x.gif\" "
"border=\"0\"><span class=\"navbar_link\">"
-/**
- *\brief Goto next room having unread messages.
+/*
+ * Goto next room having unread messages.
+ *
* We want to skip over rooms that the user has already been to, and take the
* user back to the lobby when done. The room we end up in is placed in
* newroom - which is set to 0 (the lobby) initially.
void gotonext(void)
{
char buf[256];
- struct march *mptr, *mptr2;
+ struct march *mptr = NULL;
+ struct march *mptr2 = NULL;
char room_name[128];
char next_room[128];
+ int ELoop = 0;
- /**
+ /*
* First check to see if the march-mode list is already allocated.
* If it is, pop the first room off the list and go there.
*/
serv_getln(buf, sizeof buf);
if (buf[0] == '1')
while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ if (IsEmptyStr(buf)) {
+ if (ELoop > 10000)
+ return;
+ if (ELoop % 100 == 0)
+ sleeeeeeeeeep(1);
+ ELoop ++;
+ continue;
+ }
extract_token(room_name, buf, 0, '|', sizeof room_name);
if (strcasecmp(room_name, WC->wc_roomname)) {
mptr = (struct march *) malloc(sizeof(struct march));
safestrncpy(mptr->march_name, room_name, sizeof mptr->march_name);
mptr->march_floor = extract_int(buf, 2);
mptr->march_order = extract_int(buf, 3);
- if (WC->march == NULL) {
+ if (WC->march == NULL)
WC->march = mptr;
- } else {
- mptr2 = WC->march;
- while (mptr2->next != NULL)
- mptr2 = mptr2->next;
+ else
mptr2->next = mptr;
- }
+ mptr2 = mptr;
}
+ buf[0] = '\0';
}
- /**
+ /*
* add _BASEROOM_ to the end of the march list, so the user will end up
* in the system base room (usually the Lobby>) at the end of the loop
*/
mptr2 = mptr2->next;
mptr2->next = mptr;
}
- /**
+ /*
* ...and remove the room we're currently in, so a <G>oto doesn't make us
* walk around in circles
*/
}
-/**
- * \brief goto next room
- * \param next_room next room to go to
+/*
+ * goto next room
*/
void smart_goto(char *next_room) {
gotoroom(next_room);
-/**
- * \brief mark all messages in current room as having been read
+/*
+ * mark all messages in current room as having been read
*/
void slrp_highest(void)
{
}
-/**
- * \brief un-goto the previous room
+/*
+ * un-goto the previous room
*/
void ungoto(void)
{
int order;
int view;
int flags2;
-}room_states;
+} room_states;
-/**
- * \brief Set/clear/read the "self-service list subscribe" flag for a room
+/*
+ * Set/clear/read the "self-service list subscribe" flag for a room
*
- * \param newval set to 0 to clear, 1 to set, any other value to leave unchanged.
- * \return return the new value.
+ * set newval to 0 to clear, 1 to set, any other value to leave unchanged.
+ * returns the new value.
*/
int self_service(int newval) {
}
-int
-is_selflist(room_states *RoomFlags)
+int is_selflist(room_states *RoomFlags)
{
return ((RoomFlags->flags2 & QR2_SELFLIST) != 0);
}
-int
-is_publiclist(room_states *RoomFlags)
+int is_publiclist(room_states *RoomFlags)
{
return ((RoomFlags->flags2 & QR2_SMTP_PUBLIC) != 0);
}
-int
-is_moderatedlist(room_states *RoomFlags)
+int is_moderatedlist(room_states *RoomFlags)
{
return ((RoomFlags->flags2 & QR2_MODERATED) != 0);
}
-/**
- * \brief Set/clear/read the "self-service list subscribe" flag for a room
+/*
+ * Set/clear/read the "self-service list subscribe" flag for a room
*
- * \param newval set to 0 to clear, 1 to set, any other value to leave unchanged.
- * \return return the new value.
+ * set newval to 0 to clear, 1 to set, any other value to leave unchanged.
+ * returns the new value.
*/
int get_roomflags(room_states *RoomOps)
-/**
- * \brief display the form for editing a room
+/*
+ * display the form for editing a room
*/
void display_editroom(void)
{
wprintf("</li>\n");
wprintf("</ul>\n");
- /** end tabbed dialog */
+ /* end tabbed dialog */
- /** begin content of whatever tab is open now */
+ /* begin content of whatever tab is open now */
if (!strcmp(tab, "admin")) {
wprintf("<div class=\"tabcontent\">");
}
- /** Sharing the room with other Citadel nodes... */
+ /* Sharing the room with other Citadel nodes... */
if (!strcmp(tab, "sharing")) {
wprintf("<div class=\"tabcontent\">");
}
}
- /** Display the stuff */
+ /* Display the stuff */
wprintf("<CENTER><br />"
"<table border=1 cellpadding=5><tr>"
"<td><B><I>");
wprintf("</div>");
}
- /** Mailing list management */
+ /* Mailing list management */
if (!strcmp(tab, "listserv")) {
room_states RoomFlags;
wprintf("<div class=\"tabcontent\">");
_("Add recipients from Contacts or other address books"),
_("Add recipients from Contacts or other address books")
);
- /** Pop open an address book -- end **/
+ /* Pop open an address book -- end **/
wprintf("<br />\n<form method=\"GET\" action=\"toggle_self_service\">\n");
}
- /** Configuration of The Dreaded Auto-Purger */
+ /* Configuration of The Dreaded Auto-Purger */
if (!strcmp(tab, "expire")) {
wprintf("<div class=\"tabcontent\">");
wprintf("</div>");
}
- /** Access controls */
+ /* Access controls */
if (!strcmp(tab, "access")) {
wprintf("<div class=\"tabcontent\">");
display_whok();
wprintf("</div>");
}
- /** Fetch messages from remote locations */
+ /* Fetch messages from remote locations */
if (!strcmp(tab, "feeds")) {
wprintf("<div class=\"tabcontent\">");
wprintf(_("Password"));
wprintf("</th><th>");
wprintf(_("Keep messages on server?"));
+ wprintf("</th><th>");
+ wprintf(_("Interval"));
wprintf("</th><th> </th></tr>");
serv_puts("GNET");
wprintf("<td>%s</td>", extract_int(buf, 4) ? _("Yes") : _("No"));
+ wprintf("<td>%ld</td>", extract_long(buf, 5)); // Fetching interval
+
wprintf("<td class=\"button_link\">");
wprintf(" <a href=\"netedit&cmd=remove&tab=feeds&line=pop3client|");
urlescputs(recp);
wprintf("<input type=\"checkbox\" id=\"add_as_pop3keep\" NAME=\"line_pop3keep\" VALUE=\"1\">");
wprintf("</td>");
wprintf("<td>");
+ wprintf("<input type=\"text\" id=\"add_as_pop3int\" NAME=\"line_pop3int\" MAXLENGTH=\"5\">");
+ wprintf("</td>");
+ wprintf("<td>");
wprintf("<input type=\"submit\" NAME=\"add_button\" VALUE=\"%s\">", _("Add"));
wprintf("</td></tr>");
wprintf("</form></table>\n");
}
- /** end content of whatever tab is open now */
+ /* end content of whatever tab is open now */
wprintf("</div>\n");
address_book_popup();
}
-/**
- * \brief Toggle self-service list subscription
+/*
+ * Toggle self-service list subscription
*/
void toggle_self_service(void) {
-// int newval = 0;
room_states RoomFlags;
get_roomflags (&RoomFlags);
- // Yank out the bits we want to change
- RoomFlags.flags2 = RoomFlags.flags2 &
- !(QR2_SELFLIST|QR2_SMTP_PUBLIC|QR2_MODERATED);
-
- if (!strcasecmp(bstr("QR2_SelfList"), "yes"))
+ if (yesbstr("QR2_SelfList"))
RoomFlags.flags2 = RoomFlags.flags2 | QR2_SELFLIST;
- if (!strcasecmp(bstr("QR2_SMTP_PUBLIC"), "yes"))
+ else
+ RoomFlags.flags2 = RoomFlags.flags2 & ~QR2_SELFLIST;
+
+ if (yesbstr("QR2_SMTP_PUBLIC"))
RoomFlags.flags2 = RoomFlags.flags2 | QR2_SMTP_PUBLIC;
- if (!strcasecmp(bstr("QR2_Moderated"), "yes"))
+ else
+ RoomFlags.flags2 = RoomFlags.flags2 & ~QR2_SMTP_PUBLIC;
+
+ if (yesbstr("QR2_Moderated"))
RoomFlags.flags2 = RoomFlags.flags2 | QR2_MODERATED;
+ else
+ RoomFlags.flags2 = RoomFlags.flags2 & ~QR2_MODERATED;
+ if (yesbstr("QR2_SubsOnly"))
+ RoomFlags.flags2 = RoomFlags.flags2 | QR2_SMTP_PUBLIC;
+ else
+ RoomFlags.flags2 = RoomFlags.flags2 & ~QR2_SMTP_PUBLIC;
set_roomflags (&RoomFlags);
-/**
- * \brief save new parameters for a room
+/*
+ * save new parameters for a room
*/
void editroom(void)
{
int bump;
- if (IsEmptyStr(bstr("ok_button"))) {
+ if (!havebstr("ok_button")) {
strcpy(WC->ImportantMessage,
_("Cancelled. Changes were not saved."));
display_editroom();
er_flags &= ~QR_MAILBOX;
}
- if (!strcmp(bstr("prefonly"), "yes")) {
+ if (yesbstr("prefonly")) {
er_flags |= QR_PREFONLY;
} else {
er_flags &= ~QR_PREFONLY;
}
- if (!strcmp(bstr("readonly"), "yes")) {
+ if (yesbstr("readonly")) {
er_flags |= QR_READONLY;
} else {
er_flags &= ~QR_READONLY;
}
- if (!strcmp(bstr("collabdel"), "yes")) {
+ if (yesbstr("collabdel")) {
er_flags2 |= QR2_COLLABDEL;
} else {
er_flags2 &= ~QR2_COLLABDEL;
}
- if (!strcmp(bstr("permanent"), "yes")) {
+ if (yesbstr("permanent")) {
er_flags |= QR_PERMANENT;
} else {
er_flags &= ~QR_PERMANENT;
}
- if (!strcmp(bstr("subjectreq"), "yes")) {
+ if (yesbstr("subjectreq")) {
er_flags2 |= QR2_SUBJECTREQ;
} else {
er_flags2 &= ~QR2_SUBJECTREQ;
}
- if (!strcmp(bstr("network"), "yes")) {
+ if (yesbstr("network")) {
er_flags |= QR_NETWORK;
} else {
er_flags &= ~QR_NETWORK;
}
- if (!strcmp(bstr("directory"), "yes")) {
+ if (yesbstr("directory")) {
er_flags |= QR_DIRECTORY;
} else {
er_flags &= ~QR_DIRECTORY;
}
- if (!strcmp(bstr("ulallowed"), "yes")) {
+ if (yesbstr("ulallowed")) {
er_flags |= QR_UPLOAD;
} else {
er_flags &= ~QR_UPLOAD;
}
- if (!strcmp(bstr("dlallowed"), "yes")) {
+ if (yesbstr("dlallowed")) {
er_flags |= QR_DOWNLOAD;
} else {
er_flags &= ~QR_DOWNLOAD;
}
- if (!strcmp(bstr("visdir"), "yes")) {
+ if (yesbstr("visdir")) {
er_flags |= QR_VISDIR;
} else {
er_flags &= ~QR_VISDIR;
if (!strcmp(bstr("bump"), "yes"))
bump = 1;
- er_floor = atoi(bstr("er_floor"));
+ er_floor = ibstr("er_floor");
sprintf(buf, "SETR %s|%s|%s|%u|%d|%d|%d|%d|%u",
er_name, er_password, er_dirname, er_flags, bump, er_floor,
}
-/**
- * \brief Display form for Invite, Kick, and show Who Knows a room
+/*
+ * Display form for Invite, Kick, and show Who Knows a room
*/
void do_invt_kick(void) {
char buf[SIZ], room[SIZ], username[SIZ];
strcpy(username, bstr("username"));
- if (!IsEmptyStr(bstr("kick_button"))) {
+ if (havebstr("kick_button")) {
sprintf(buf, "KICK %s", username);
serv_puts(buf);
serv_getln(buf, sizeof buf);
}
}
- if (!IsEmptyStr(bstr("invite_button"))) {
+ if (havebstr("invite_button")) {
sprintf(buf, "INVT %s", username);
serv_puts(buf);
serv_getln(buf, sizeof buf);
-/**
- * \brief Display form for Invite, Kick, and show Who Knows a room
+/*
+ * Display form for Invite, Kick, and show Who Knows a room
*/
void display_whok(void)
{
"<input type=\"hidden\" name=\"invite_button\" value=\"Invite\">"
"<input type=\"submit\" value=\"%s\">"
"</form></CENTER>\n", _("Invite"));
- /** Pop open an address book -- begin **/
+ /* Pop open an address book -- begin **/
wprintf(
"<a href=\"javascript:PopOpenAddressBook('username_id|%s');\" "
"title=\"%s\">"
_("User"),
_("Users"), _("Users")
);
- /** Pop open an address book -- end **/
+ /* Pop open an address book -- end **/
wprintf("</td></tr></table>\n");
address_book_popup();
-/**
- * \brief display the form for entering a new room
+/*
+ * display the form for entering a new room
*/
void display_entroom(void)
{
wprintf("</select>\n");
wprintf("</td></tr>");
- /**
+ /*
* Our clever little snippet of JavaScript automatically selects
* a public room if the view is set to Bulletin Board or wiki, and
* it selects a mailbox room otherwise. The user can override this,
-/**
- * \brief support function for entroom() -- sets the default view
+/*
+ * support function for entroom() -- sets the default view
*/
void er_set_default_view(int newview) {
-/**
- * \brief enter a new room
+/*
+ * Create a new room
*/
void entroom(void)
{
int er_num_type;
int er_view;
- if (IsEmptyStr(bstr("ok_button"))) {
+ if (!havebstr("ok_button")) {
strcpy(WC->ImportantMessage,
_("Cancelled. No new room was created."));
display_main_menu();
strcpy(er_name, bstr("er_name"));
strcpy(er_type, bstr("type"));
strcpy(er_password, bstr("er_password"));
- er_floor = atoi(bstr("er_floor"));
- er_view = atoi(bstr("er_view"));
+ er_floor = ibstr("er_floor");
+ er_view = ibstr("er_view");
er_num_type = 0;
if (!strcmp(er_type, "hidden"))
char hold_rm[SIZ];
char buf[SIZ];
- if (IsEmptyStr(bstr("ok_button"))) {
+ if (!havebstr("ok_button")) {
display_main_menu();
return;
}
*/
strcpy(final_destination, WC->wc_roomname);
- if (!IsEmptyStr(bstr("ok_button"))) {
+ if (havebstr("ok_button")) {
serv_printf("GOTO %s", WC->wc_roomname);
serv_getln(buf, sizeof buf);
if (buf[0] == '2') {
char cmpb0[SIZ];
char cmpb1[SIZ];
int i, num_addrs;
-
- if (!IsEmptyStr(bstr("line_pop3host"))) {
+ // TODO: do line dynamic!
+ if (havebstr("line_pop3host")) {
strcpy(line, bstr("prefix"));
strcat(line, bstr("line_pop3host"));
strcat(line, "|");
strcat(line, "|");
strcat(line, bstr("line_pop3pass"));
strcat(line, "|");
- strcat(line, atoi(bstr("line_pop3keep")) ? "1" : "0" );
+ strcat(line, ibstr("line_pop3keep") ? "1" : "0" );
+ strcat(line, "|");
+ sprintf(&line[strlen(line)],"%ld", lbstr("line_pop3int"));
strcat(line, bstr("suffix"));
}
- else if (!IsEmptyStr(bstr("line"))) {
+ else if (havebstr("line")) {
strcpy(line, bstr("prefix"));
strcat(line, bstr("line"));
strcat(line, bstr("suffix"));
serv_puts(buf);
}
- if (!IsEmptyStr(bstr("add_button"))) {
+ if (havebstr("add_button")) {
num_addrs = num_tokens(bstr("line"), ',');
if (num_addrs < 2) {
/* just adding one node or address */
void change_view(void) {
int view;
- view = atol(bstr("view"));
+ view = lbstr("view");
do_change_view(view);
}
/** Determine whether the user is trying to change views */
if (bstr("view") != NULL) {
- if (!IsEmptyStr(bstr("view"))) {
+ if (havebstr("view")) {
set_preference("roomlistview", bstr("view"), 1);
}
}
void set_room_policy(void) {
char buf[SIZ];
- if (IsEmptyStr(bstr("ok_button"))) {
+ if (!havebstr("ok_button")) {
strcpy(WC->ImportantMessage,
_("Cancelled. Changes were not saved."));
display_editroom();
return;
}
- serv_printf("SPEX room|%d|%d", atoi(bstr("roompolicy")), atoi(bstr("roomvalue")));
+ serv_printf("SPEX room|%d|%d", ibstr("roompolicy"), ibstr("roomvalue"));
serv_getln(buf, sizeof buf);
strcpy(WC->ImportantMessage, &buf[4]);
if (WC->axlevel >= 6) {
strcat(WC->ImportantMessage, "<br />\n");
- serv_printf("SPEX floor|%d|%d", atoi(bstr("floorpolicy")), atoi(bstr("floorvalue")));
+ serv_printf("SPEX floor|%d|%d", ibstr("floorpolicy"), bstr("floorvalue"));
serv_getln(buf, sizeof buf);
strcat(WC->ImportantMessage, &buf[4]);
}