*/
void monitor(void)
{
- wcsession *WCC = WC;
- char buf[SIZ];
-
- FlushStrBuf(WCC->wc_username);
- FlushStrBuf(WCC->wc_password);
- FlushStrBuf(WCC->wc_fullname);
- FlushRoomlist();
-
- serv_puts("LOUT");
- serv_getln(buf, sizeof buf);
- WCC->logged_in = 0;
+ output_headers(0, 0, 0, 0, 0, 0);
- FlushStrBuf(WCC->CurRoom.name);
-
- /* Calling output_headers() this way causes the cookies to be un-set */
- output_headers(1, 0, 0, 1, 1, 0);
+ hprintf("Content-type: text/plain\r\n"
+ "Server: " PACKAGE_STRING "\r\n"
+ "Connection: close\r\n"
+ );
+ begin_burst();
- wc_printf("<html><body><tt>");
- wc_printf("<strong>WebCit monitoring screen</strong><br>\n");
- wc_printf("Connection to Citadel server at %s:%s : %s<br>\n",
+ wc_printf("Connection to Citadel server at %s:%s : %s\r\n",
ctdlhost, ctdlport,
(WC->connected ? "SUCCESS" : "FAIL")
);
- wc_printf("</body></html>\n");
- wDumpContent(2);
- end_webcit_session();
+ wDumpContent(0);
}
room->Floor = (const Floor*) vFloor;
}
-/**
- * \brief Delete the current room
+/*
+ * Delete the current room
*/
void delete_room(void)
{
}
}
-/**
- * \brief zap a room
+/*
+ * zap a room
*/
void zap(void)
{
-/**
- * \brief Set the message expire policy for this room and/or floor
+/*
+ * Set the message expire policy for this room and/or floor
*/
void set_room_policy(void) {
char buf[SIZ];
-/**
- * \brief Perform changes to a room's network configuration
+/*
+ * Perform changes to a room's network configuration
*/
void netedit(void) {
FILE *fp;
}
+struct sitemap_room_list {
+ struct sitemap_room_list *next;
+ StrBuf *roomname;
+ int defview;
+};
+
+
+/*
+ * Load the room list for the sitemap
+ */
+struct sitemap_room_list *sitemap_load_roomlist(void) {
+ char buf[SIZ];
+ char roomname_plain[SIZ];
+ struct sitemap_room_list *roomlist = NULL;
+
+ serv_puts("LKRA");
+ serv_getln(buf, sizeof buf);
+ if (buf[0] == '1') while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ struct sitemap_room_list *ptr = malloc(sizeof(struct sitemap_room_list));
+ extract_token(roomname_plain, buf, 0, '|', sizeof roomname_plain);
+ ptr->roomname = NewStrBufPlain(roomname_plain, -1);
+ ptr->defview = extract_int(buf, 6);
+ ptr->next = roomlist;
+ roomlist = ptr;
+ }
+
+ return(roomlist);
+}
+
+
/*
* Entry point for RSS feed generator
*/
void sitemap(void) {
- HashList *roomlist = NULL;
- HashPos *it = NULL;
- long HKlen = 0;
- const char *HashKey = NULL;
- folder *room = NULL;
-
+ struct sitemap_room_list *roomlist = NULL;
output_headers(0, 0, 0, 0, 1, 0);
hprintf("Content-type: text/xml\r\n");
hprintf(
wc_printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
wc_printf("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n");
- roomlist = GetRoomListHashLKRA(NULL, NULL);
- if (!roomlist) syslog(LOG_CRIT, "GetRoomListHashLKRA() FAILED!");
- it = GetNewHashPos(roomlist, 0);
- if (!it) syslog(LOG_CRIT, "GetNewHashPos() FAILED!");
+ roomlist = sitemap_load_roomlist();
- while (GetNextHashPos(roomlist, it, &HKlen, &HashKey, (void *)&room))
+ while (roomlist != NULL)
{
- gotoroom(room->name);
+ gotoroom(roomlist->roomname);
/* Output the messages in this room only if it's a room type we can make sense of */
- switch(room->defview) {
+ switch(roomlist->defview) {
case VIEW_BBS:
sitemap_do_bbs();
break;
default:
break;
}
+
+ struct sitemap_room_list *ptr = roomlist;
+ roomlist = roomlist->next;
+ FreeStrBuf(&ptr->roomname);
+ free(ptr);
}
- DeleteHashPos(&it);
- DeleteHash(&WC->Rooms); /* roomlist is actually a pointer to WC->Rooms */
wc_printf("</urlset>\r\n");
wDumpContent(0);
}