Added Last 10 Caller functionallity
This commit is contained in:
parent
56c092674f
commit
e7161ab489
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@ magicka
|
||||
msgs/*
|
||||
node*
|
||||
doors/*
|
||||
last10.dat
|
||||
|
55
bbs.c
55
bbs.c
@ -313,6 +313,59 @@ void disconnect(int socket) {
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void display_last10_callers(int socket, struct user_record *user, int record) {
|
||||
struct last10_callers callers[10];
|
||||
struct last10_callers new_entry;
|
||||
int i,z,j;
|
||||
char buffer[256];
|
||||
struct tm l10_time;
|
||||
FILE *fptr = fopen("last10.dat", "rb");
|
||||
|
||||
s_putstring(socket, "\r\n\e[1;37mLast 10 callers:\r\n");
|
||||
s_putstring(socket, "\e[1;30m-------------------------------------------------------------------------------\r\n");
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
for (z=0;z<i;z++) {
|
||||
localtime_r(&callers[z].time, &l10_time);
|
||||
sprintf(buffer, "\e[1;37m%-16s \e[1;36m%-32s \e[1;32m%02d:%02d %02d-%02d-%02d\e[0m\r\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);
|
||||
s_putstring(socket, buffer);
|
||||
}
|
||||
s_putstring(socket, "\e[1;30m-------------------------------------------------------------------------------\e[0m\r\n");
|
||||
if (strcasecmp(conf.sysop_name, user->loginname) != 0 && record) {
|
||||
memset(&new_entry, 0, sizeof(struct last10_callers));
|
||||
strcpy(new_entry.name, user->loginname);
|
||||
strcpy(new_entry.location, user->location);
|
||||
new_entry.time = time(NULL);
|
||||
|
||||
if (i == 10) {
|
||||
j = 1;
|
||||
} else {
|
||||
j = 0;
|
||||
}
|
||||
fptr = fopen("last10.dat", "wb");
|
||||
for (;j<i;j++) {
|
||||
fwrite(&callers[j], sizeof(struct last10_callers), 1, fptr);
|
||||
}
|
||||
fwrite(&new_entry, sizeof(struct last10_callers), 1, fptr);
|
||||
fclose(fptr);
|
||||
}
|
||||
sprintf(buffer, "Press any key to continue...\r\n");
|
||||
s_putstring(socket, buffer);
|
||||
s_getc(socket);
|
||||
}
|
||||
|
||||
void display_info(int socket) {
|
||||
char buffer[256];
|
||||
struct utsname name;
|
||||
@ -518,6 +571,8 @@ void runbbs(int socket, char *config_path) {
|
||||
// display info
|
||||
display_info(socket);
|
||||
|
||||
display_last10_callers(socket, user, 1);
|
||||
|
||||
// main menu
|
||||
main_menu(socket, user);
|
||||
|
||||
|
7
bbs.h
7
bbs.h
@ -7,6 +7,12 @@
|
||||
#define VERSION_MINOR 1
|
||||
#define VERSION_STR "dev"
|
||||
|
||||
struct last10_callers {
|
||||
char name[17];
|
||||
char location[33];
|
||||
time_t time;
|
||||
}__attribute__((packed));
|
||||
|
||||
struct door_config {
|
||||
char *name;
|
||||
char key;
|
||||
@ -80,6 +86,7 @@ extern void s_readstring(int socket, char *buffer, int max);
|
||||
extern char s_getc(int socket);
|
||||
extern void disconnect(int socket);
|
||||
extern void display_info(int socket);
|
||||
extern void display_last10_callers(int socket, struct user_record *user, int record);
|
||||
|
||||
extern int save_user(struct user_record *user);
|
||||
extern int check_user(char *loginname);
|
||||
|
@ -20,6 +20,11 @@ void main_menu(int socket, struct user_record *user) {
|
||||
c = s_getc(socket);
|
||||
|
||||
switch(tolower(c)) {
|
||||
case '1':
|
||||
{
|
||||
display_last10_callers(socket, user, 0);
|
||||
}
|
||||
break;
|
||||
case 'd':
|
||||
{
|
||||
doquit = door_menu(socket, user);
|
||||
|
Reference in New Issue
Block a user