diff --git a/Makefile.freebsd.WWW b/Makefile.freebsd.WWW index 7bce1d2..bd4fa77 100644 --- a/Makefile.freebsd.WWW +++ b/Makefile.freebsd.WWW @@ -6,7 +6,7 @@ ZMODEM = Xmodem/libzmodem.a LUA = lua/liblua.a MICROHTTPD=-lmicrohttpd -lb64 -OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o +OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o www_last10.o %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) diff --git a/Makefile.linux.WWW b/Makefile.linux.WWW index a5668f3..6fc14d9 100644 --- a/Makefile.linux.WWW +++ b/Makefile.linux.WWW @@ -6,7 +6,7 @@ ZMODEM = Xmodem/libzmodem.a LUA = lua/liblua.a MICROHTTPD=-lmicrohttpd -lb64 -OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o +OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o www_last10.o %.o: %.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) diff --git a/bbs.h b/bbs.h index a5eb0c7..9178308 100644 --- a/bbs.h +++ b/bbs.h @@ -240,6 +240,7 @@ extern char *www_msgs_messagelist(struct user_record *user, int conference, int extern char *www_msgs_messageview(struct user_record *user, int conference, int area, int msg); extern int www_send_msg(struct user_record *user, char *to, char *subj, int conference, int area, char *replyid, char *body); extern char *www_new_msg(struct user_record *user, int conference, int area); +extern char *www_last10(); #endif #endif diff --git a/www.c b/www.c index d16cb5c..2770b56 100644 --- a/www.c +++ b/www.c @@ -506,6 +506,16 @@ int www_handler(void * cls, struct MHD_Connection * connection, const char * url whole_page = (char *)malloc(strlen(header) + strlen(page) + strlen(footer) + 1); + sprintf(whole_page, "%s%s%s", header, page, footer); + } else if (strcasecmp(url, "/last10/") == 0 || strcasecmp(url, "/last10") == 0) { + page = www_last10(); + if (page == NULL) { + free(header); + free(footer); + return MHD_NO; + } + whole_page = (char *)malloc(strlen(header) + strlen(page) + strlen(footer) + 1); + sprintf(whole_page, "%s%s%s", header, page, footer); } else if (strcasecmp(url, "/email/") == 0 || strcasecmp(url, "/email") == 0) { con_inf->user = www_auth_ok(connection, url_); diff --git a/www_last10.c b/www_last10.c new file mode 100644 index 0000000..7e0346d --- /dev/null +++ b/www_last10.c @@ -0,0 +1,78 @@ +#if defined(ENABLE_WWW) + +#include +#include +#include +#include "bbs.h" + + +extern struct bbs_config conf; + +char *www_last10() { + char *page; + int max_len; + int len; + char buffer[4096]; + struct last10_callers callers[10]; + + int i,z; + struct tm l10_time; + FILE *fptr = fopen("last10.dat", "rb"); + + if (fptr != NULL) { + + for (i=0;i<10;i++) { + if (fread(&callers[i], sizeof(struct last10_callers), 1, fptr) < 1) { + break; + } + } + + fclose(fptr); + } else { + i = 0; + } + + page = (char *)malloc(4096); + max_len = 4096; + len = 0; + memset(page, 0, 4096); + + sprintf(buffer, "

Last 10 Callers

\n"); + if (len + strlen(buffer) > max_len - 1) { + max_len += 4096; + page = (char *)realloc(page, max_len); + } + strcat(page, buffer); + len += strlen(buffer); + + sprintf(buffer, "
\n"); + if (len + strlen(buffer) > max_len - 1) { + max_len += 4096; + page = (char *)realloc(page, max_len); + } + strcat(page, buffer); + len += strlen(buffer); + + for (z=0;z%s
%s
%.2d:%.2d %.2d-%.2d-%.2d
\n", callers[z].name, callers[z].location, l10_time.tm_hour, l10_time.tm_min, l10_time.tm_mday, l10_time.tm_mon + 1, l10_time.tm_year - 100); + if (len + strlen(buffer) > max_len - 1) { + max_len += 4096; + page = (char *)realloc(page, max_len); + } + strcat(page, buffer); + len += strlen(buffer); + } + + sprintf(buffer, "\n"); + if (len + strlen(buffer) > max_len - 1) { + max_len += 4096; + page = (char *)realloc(page, max_len); + } + strcat(page, buffer); + len += strlen(buffer); + + return page; +} + +#endif