/[LeafOK_CVS]/lbbs/src/bbs_net.c
ViewVC logotype

Diff of /lbbs/src/bbs_net.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.41 by sysadm, Thu May 15 05:14:57 2025 UTC Revision 1.46 by sysadm, Wed Jun 4 13:42:53 2025 UTC
# Line 124  int load_bbsnet_conf(const char *file_co Line 124  int load_bbsnet_conf(const char *file_co
124                  p_menu_item->submenu = 0;                  p_menu_item->submenu = 0;
125                  p_menu_item->priv = 0;                  p_menu_item->priv = 0;
126                  p_menu_item->level = 0;                  p_menu_item->level = 0;
                 p_menu_item->display = 0;  
127                  p_menu_item->name[0] =                  p_menu_item->name[0] =
128                          (char)(menu_item_id < MAXSTATION / 2 ? 'A' + menu_item_id : 'a' + menu_item_id);                          (char)(menu_item_id < MAXSTATION / 2 ? 'A' + menu_item_id : 'a' + menu_item_id);
129                  p_menu_item->name[1] = '\0';                  p_menu_item->name[1] = '\0';
# Line 358  int bbsnet_connect(int n) Line 357  int bbsnet_connect(int n)
357                                  else if (events[i].data.fd == STDIN_FILENO)                                  else if (events[i].data.fd == STDIN_FILENO)
358                                  {                                  {
359                                          ch = igetch(0);                                          ch = igetch(0);
360                                          if (ch == Ctrl('C'))                                          if (ch == Ctrl('C') || ch == KEY_ESC)
361                                          {                                          {
362                                                  goto cleanup;                                                  goto cleanup;
363                                          }                                          }
# Line 386  int bbsnet_connect(int n) Line 385  int bbsnet_connect(int n)
385    
386          prints("\033[1;31m连接成功!\033[m\r\n");          prints("\033[1;31m连接成功!\033[m\r\n");
387          iflush();          iflush();
388          log_std("BBSNET connect to %s:%d\n", remote_addr, remote_port);          log_common("BBSNET connect to %s:%d\n", remote_addr, remote_port);
389    
390          ev.events = EPOLLIN | EPOLLOUT | EPOLLET;          ev.events = EPOLLIN | EPOLLOUT | EPOLLET;
391          ev.data.fd = sock;          ev.data.fd = sock;
# Line 457  int bbsnet_connect(int n) Line 456  int bbsnet_connect(int n)
456                                          }                                          }
457                                          else if (ret == 0) // broken pipe                                          else if (ret == 0) // broken pipe
458                                          {                                          {
459                                                  log_std("read(STDIN) EOF\n");                                                  log_common("read(STDIN) EOF\n");
460                                                  stdin_read_wait = 0;                                                  stdin_read_wait = 0;
461                                                  loop = 0;                                                  loop = 0;
462                                                  break;                                                  break;
# Line 497  int bbsnet_connect(int n) Line 496  int bbsnet_connect(int n)
496                                          }                                          }
497                                          else if (ret == 0) // broken pipe                                          else if (ret == 0) // broken pipe
498                                          {                                          {
499                                                  log_std("write(socket) EOF\n");                                                  log_common("write(socket) EOF\n");
500                                                  sock_write_wait = 0;                                                  sock_write_wait = 0;
501                                                  loop = 0;                                                  loop = 0;
502                                                  break;                                                  break;
# Line 542  int bbsnet_connect(int n) Line 541  int bbsnet_connect(int n)
541                                          }                                          }
542                                          else if (ret == 0) // broken pipe                                          else if (ret == 0) // broken pipe
543                                          {                                          {
544                                                  log_std("read(socket) EOF\n");                                                  log_common("read(socket) EOF\n");
545                                                  sock_read_wait = 0;                                                  sock_read_wait = 0;
546                                                  loop = 0;                                                  loop = 0;
547                                                  break;                                                  break;
# Line 581  int bbsnet_connect(int n) Line 580  int bbsnet_connect(int n)
580                                          }                                          }
581                                          else if (ret == 0) // broken pipe                                          else if (ret == 0) // broken pipe
582                                          {                                          {
583                                                  log_std("write(STDOUT) EOF\n");                                                  log_common("write(STDOUT) EOF\n");
584                                                  stdout_write_wait = 0;                                                  stdout_write_wait = 0;
585                                                  loop = 0;                                                  loop = 0;
586                                                  break;                                                  break;
# Line 623  cleanup: Line 622  cleanup:
622          t_used = time(0) - t_used;          t_used = time(0) - t_used;
623          tm_used = gmtime(&t_used);          tm_used = gmtime(&t_used);
624    
625          log_std("BBSNET disconnect, %d days %d hours %d minutes %d seconds used\n",          log_common("BBSNET disconnect, %d days %d hours %d minutes %d seconds used\n",
626                          tm_used->tm_mday - 1, tm_used->tm_hour, tm_used->tm_min,                          tm_used->tm_mday - 1, tm_used->tm_hour, tm_used->tm_min,
627                          tm_used->tm_sec);                          tm_used->tm_sec);
628    
# Line 655  bbsnet_refresh() Line 654  bbsnet_refresh()
654          return 0;          return 0;
655  }  }
656    
657  int bbsnet_selchange(int new_pos)  int bbsnet_selchange()
658  {  {
659            int i = bbsnet_menu.menu_item_pos[0];
660    
661          moveto(20, 0);          moveto(20, 0);
662          clrtoeol();          clrtoeol();
663          prints("|\x1b[1m单位:\x1b[1;33m%-18s\x1b[m  站名:\x1b[1;33m%s\x1b[m",          prints("|\x1b[1m单位:\x1b[1;33m%-18s\x1b[m  站名:\x1b[1;33m%s\x1b[m",
664                     bbsnet_conf[new_pos].host2, bbsnet_conf[new_pos].host1);                     bbsnet_conf[i].host2, bbsnet_conf[i].host1);
665          moveto(20, 79);          moveto(20, 79);
666          prints("|");          prints("|");
667          moveto(21, 0);          moveto(21, 0);
668          clrtoeol();          clrtoeol();
669          prints("|\x1b[1m连往:\x1b[1;33m%-20s", bbsnet_conf[new_pos].ip);          prints("|\x1b[1m连往:\x1b[1;33m%-20s", bbsnet_conf[i].ip);
670          if (bbsnet_conf[new_pos].port != 23)          if (bbsnet_conf[i].port != 23)
671          {          {
672                  prints("  %d", bbsnet_conf[new_pos].port);                  prints("  %d", bbsnet_conf[i].port);
673          }          }
674          prints("\x1b[m");          prints("\x1b[m");
675          moveto(21, 79);          moveto(21, 79);
# Line 680  int bbsnet_selchange(int new_pos) Line 681  int bbsnet_selchange(int new_pos)
681    
682  int bbs_net()  int bbs_net()
683  {  {
684          int ch, pos, i;          int ch, i;
685    
686          load_bbsnet_conf(CONF_BBSNET);          load_bbsnet_conf(CONF_BBSNET);
687    
# Line 688  int bbs_net() Line 689  int bbs_net()
689    
690          clearscr();          clearscr();
691          bbsnet_refresh();          bbsnet_refresh();
         pos = bbsnet_menu.menu_item_pos[0];  
692          display_menu(&bbsnet_menu);          display_menu(&bbsnet_menu);
693          bbsnet_selchange(pos);          bbsnet_selchange();
694    
695          while (!SYS_server_exit)          while (!SYS_server_exit)
696          {          {
# Line 698  int bbs_net() Line 698  int bbs_net()
698                  switch (ch)                  switch (ch)
699                  {                  {
700                  case KEY_NULL:  // broken pipe                  case KEY_NULL:  // broken pipe
701                    case KEY_ESC:
702                  case Ctrl('C'): // user cancel                  case Ctrl('C'): // user cancel
703                          goto cleanup;                          goto cleanup;
704                  case KEY_TIMEOUT:                  case KEY_TIMEOUT:
# Line 708  int bbs_net() Line 709  int bbs_net()
709                          continue;                          continue;
710                  case CR:                  case CR:
711                          igetch_reset();                          igetch_reset();
712                          pos = bbsnet_menu.menu_item_pos[0];                          bbsnet_connect(bbsnet_menu.menu_item_pos[0]);
                         bbsnet_connect(pos);  
713                          bbsnet_refresh();                          bbsnet_refresh();
714                          display_menu(&bbsnet_menu);                          display_menu(&bbsnet_menu);
715                          bbsnet_selchange(pos);                          bbsnet_selchange();
716                          break;                          break;
717                  case KEY_UP:                  case KEY_UP:
718                          for (i = 0; i < STATION_PER_LINE; i++)                          for (i = 0; i < STATION_PER_LINE; i++)
719                          {                          {
720                                  menu_control(&bbsnet_menu, KEY_UP);                                  menu_control(&bbsnet_menu, KEY_UP);
721                          }                          }
722                          pos = bbsnet_menu.menu_item_pos[0];                          bbsnet_selchange();
                         bbsnet_selchange(pos);  
723                          break;                          break;
724                  case KEY_DOWN:                  case KEY_DOWN:
725                          for (i = 0; i < STATION_PER_LINE; i++)                          for (i = 0; i < STATION_PER_LINE; i++)
726                          {                          {
727                                  menu_control(&bbsnet_menu, KEY_DOWN);                                  menu_control(&bbsnet_menu, KEY_DOWN);
728                          }                          }
729                          pos = bbsnet_menu.menu_item_pos[0];                          bbsnet_selchange();
                         bbsnet_selchange(pos);  
730                          break;                          break;
731                  case KEY_LEFT:                  case KEY_LEFT:
732                          menu_control(&bbsnet_menu, KEY_UP);                          menu_control(&bbsnet_menu, KEY_UP);
733                          pos = bbsnet_menu.menu_item_pos[0];                          bbsnet_selchange();
                         bbsnet_selchange(pos);  
734                          break;                          break;
735                  case KEY_RIGHT:                  case KEY_RIGHT:
736                          menu_control(&bbsnet_menu, KEY_DOWN);                          menu_control(&bbsnet_menu, KEY_DOWN);
737                          pos = bbsnet_menu.menu_item_pos[0];                          bbsnet_selchange();
738                          bbsnet_selchange(pos);                          break;
739                    case KEY_HOME:
740                    case KEY_PGUP:
741                            menu_control(&bbsnet_menu, KEY_PGUP);
742                            bbsnet_selchange();
743                            break;
744                    case KEY_END:
745                    case KEY_PGDN:
746                            menu_control(&bbsnet_menu, KEY_PGDN);
747                            bbsnet_selchange();
748                          break;                          break;
749                  default:                  default:
750                          menu_control(&bbsnet_menu, ch);                          menu_control(&bbsnet_menu, ch);
751                          pos = bbsnet_menu.menu_item_pos[0];                          bbsnet_selchange();
                         bbsnet_selchange(pos);  
752                          break;                          break;
753                  }                  }
754                  BBS_last_access_tm = time(0);                  BBS_last_access_tm = time(0);


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1