--- lbbs/src/bbs_main.c 2004/10/19 02:08:35 1.2 +++ lbbs/src/bbs_main.c 2005/03/22 08:59:31 1.26 @@ -1,5 +1,5 @@ /*************************************************************************** - bbsd.c - description + bbs_main.c - description ------------------- begin : Mon Oct 18 2004 copyright : (C) 2004 by Leaflet @@ -15,12 +15,148 @@ * * ***************************************************************************/ +#include "bbs.h" #include "common.h" +#include "io.h" +#include "menu.h" +#include "bbs_cmd.h" +#include +#include int -bbs_main() +bbs_main () { - log_std("bbs_main()\n"); - - return 0; + char temp[256]; + int ret; + + set_input_echo (0); + + bbs_info (); + + //Welcome + bbs_welcome (); + + //Login + ret = bbs_login (); + if (ret < 0) + return -1; + log_std ("User \"%s\"(%ld) login from %s:%d\n", + BBS_username, BBS_priv.uid, hostaddr_client, port_client); + clearscr (); + + //BBS Top 10 + strcpy (temp, app_home_dir); + strcat (temp, "data/bbs_top.txt"); + display_file_ex (temp, 1, 1); + + //Main + bbs_center (); + + //Logout + bbs_exit (); + log_std ("User logout\n"); + + return 0; +} + +int +bbs_info () +{ + prints ("»¶Ó­¹âÁÙ \033[1;33m%s \033[32m[%s] \033[37m( %s )\r\n", + BBS_name, BBS_server, app_version); + + iflush (); + + return 0; +} + +int +bbs_exit () +{ + char temp[256]; + + strcpy (temp, app_home_dir); + strcat (temp, "data/goodbye.txt"); + display_file_ex (temp, 1, 0); + + sleep (1); + + return 0; +} + +int +bbs_center () +{ + int ch, result, redraw; + char action[MAX_MENUACTION_LENGTH], temp[256]; + time_t t_last_action; + + BBS_last_access_tm = t_last_action = time (0); + + clearscr (); + + show_top (""); + show_active_board (); + show_bottom (""); + display_menu (get_menu (&bbs_menu, "TOPMENU")); + + while (1) + { + ch = igetch (); + + if (time (0) - t_last_action >= 10) + { + t_last_action = time (0); + show_active_board (); + show_bottom (""); + } + + switch (ch) + { + case KEY_NULL: + return 0; + case KEY_TIMEOUT: + if (time (0) - BBS_last_access_tm >= MAX_DELAY_TIME) + { + return -1; + } + continue; + default: + strcpy (action, menu_control (&bbs_menu, ch)); + redraw = 1; + switch (get_cmd_value (action)) + { + case EXITBBS: + return 0; + case BBSNET: + bbs_net (); + break; + case LICENSE: + strcpy (temp, app_home_dir); + strcat (temp, "data/license.txt"); + display_file_ex (temp, 0, 1); + break; + case COPYRIGHT: + strcpy (temp, app_home_dir); + strcat (temp, "data/copyright.txt"); + display_file_ex (temp, 0, 1); + break; + case UNKNOWN_CMD: + default: + redraw = 0; + break; + } + if (redraw) + { + clearscr (); + show_top (""); + show_active_board (); + show_bottom (""); + display_current_menu (&bbs_menu); + } + } + BBS_last_access_tm = time (0); + } + + return 0; }