#include #include #include "kconfig.h" #include "logs.h" #include "motd.h" #include "libterm/term.h" #include "libterm/term_io.h" #include "ini.h" int main( int argc, char **argv ) { int ret_len; int quit_main_menu = 0; int column, row; int main_menu_input=0; char main_menu_cmd; term_screen ts; term_init( &ts ); term_set_raw_mode( &ts ); term_clr_scr( &ts ); //lunch captcha and try to detect if its random bot #ifdef CONFIG_CAPTCHA if ( captcha_test1( ts ) != 1) { goto exit_restore_terminal; } bbs_log_captcha( NULL ); #endif //write to log that some user have accesed bbs //too much fake stuff comes to log bbs_log_main( NULL ); //write to default place #ifdef CONFIG_MOTD bbs_motd_draw( &ts, "art/motd.txt" ); sleep( 3 ); print_build_info(); #endif while ( quit_main_menu == 0 ) { //prepare screen for main menu output term_clr_scr( &ts ); //column = term_cur_pos_c( &ts ); //row = term_cur_pos_r( &ts ); term_cur_set_r( &ts, 0 ); term_cur_set_c( &ts, 0 ); #ifdef CONFIG_MOTD printf("(M)otd "); #endif #ifdef CONFIG_ARTICLES printf("(A)rticles "); #endif #ifdef CONFIG_DOORGAMES printf("(D)oor games "); #endif #ifdef CONFIG_TWIT printf("(T)wit "); #endif #ifdef CONFIG_BOARD printf("(B)oard "); #endif #ifdef CONFIG_LOGIN printf("(L)ogin "); #endif #ifdef CONFIG_TODO printf("T(o)do "); #endif #ifdef CONFIG_MESSAGING printf("Mesa(G)es "); #endif printf("(Q)uit (S)ysinfo"); fflush( stdout ); term_cur_set_c( &ts, 0 ); term_cur_set_r( &ts, term_get_maxrow( &ts ) ); printf(":"); fflush( stdout ); //ret_len = getline( &str, &str_size, stdin ); main_menu_input = term_getc( &ts ); //if something whent wrong dont know why, need to get some test case if ( main_menu_input == -1 ) continue; main_menu_cmd = (char)main_menu_input; switch ( main_menu_cmd ) { //------------------------------------------------------------------ #ifdef CONFIG_MOTD case 'm': case 'M': { bbs_motd_draw( &ts, "art/motd.txt" ); sleep( 3 ); } break; #endif //------------------------------------------------------------------ case 's': case 'S': { bbs_sysinfo( &ts ); } break; //------------------------------------------------------------------ #ifdef CONFIG_ARTICLES case 'a': case 'A': { bbs_article_list( &ts, "./article/" ); } break; #endif //------------------------------------------------------------------ #ifdef CONFIG_TWIT case 't': case 'T': { printf("Twitter like\n"); } break; #endif //------------------------------------------------------------------ #ifdef CONFIG_DOORGAMES case 'd': case 'D': { printf("Door games\n"); } break; #endif //------------------------------------------------------------------ #ifndef CONFIG_MESSAGING case 'g': case 'G': { printf("Messages\n"); } break; #endif //------------------------------------------------------------------ #ifdef CONFIG_BOARD case 'b': case 'B': { printf("Board\n"); } break; #endif //------------------------------------------------------------------ #ifdef CONFIG_LOGIN case 'l': case 'L': { printf("Login?\n"); } break; #endif //------------------------------------------------------------------ #ifdef CONFIG_TODO case 'o': case 'O': { printf("Todo list\n"); bbs_todo( &ts, NULL ); } break; #endif //------------------------------------------------------------------ case 'q': case 'Q': quit_main_menu = 1; bbs_log_quit( NULL ); break; default: printf("Unknow command\n"); } } #ifdef CONFIG_MOTD bbs_motd_draw( &ts, "art/quit.txt" ); sleep( 3 ); #endif exit_restore_terminal: term_clr_scr( &ts ); term_set_orig_mode( &ts ); return 0; }