--- lbbs/src/bbs_net.c 2025/11/30 11:12:06 1.85 +++ lbbs/src/bbs_net.c 2025/11/30 11:59:18 1.86 @@ -58,9 +58,9 @@ enum _bbs_net_constant_t struct _bbsnet_conf { - char host1[20]; - char host2[40]; - char ip[40]; + char org_name[40]; + char site_name[40]; + char host_name[IP_ADDR_LEN]; in_port_t port; int8_t use_ssh; char charset[CHARSET_MAX_LEN + 1]; @@ -74,7 +74,7 @@ static int load_bbsnet_conf(const char * MENU *p_menu; MENU_ITEM *p_menu_item; MENU_ITEM_ID menu_item_id; - char t[256], *t1, *t2, *t3, *t4, *t5, *t6, *saveptr; + char line[LINE_BUFFER_LEN], *t1, *t2, *t3, *t4, *t5, *t6, *saveptr; fp = fopen(file_config, "r"); if (fp == NULL) @@ -106,9 +106,9 @@ static int load_bbsnet_conf(const char * p_menu->screen_show = 0; menu_item_id = 0; - while (fgets(t, 255, fp) && menu_item_id < MAXSTATION) + while (fgets(line, sizeof(line), fp) && menu_item_id < MAXSTATION) { - t1 = strtok_r(t, MENU_CONF_DELIM, &saveptr); + t1 = strtok_r(line, MENU_CONF_DELIM, &saveptr); t2 = strtok_r(NULL, MENU_CONF_DELIM, &saveptr); t3 = strtok_r(NULL, MENU_CONF_DELIM, &saveptr); t4 = strtok_r(NULL, MENU_CONF_DELIM, &saveptr); @@ -116,17 +116,17 @@ static int load_bbsnet_conf(const char * t6 = strtok_r(NULL, MENU_CONF_DELIM, &saveptr); if (t1 == NULL || t2 == NULL || t3 == NULL || t4 == NULL || - t5 == NULL || t6 == NULL || t[0] == '#' || t[0] == '*') + t5 == NULL || t6 == NULL || line[0] == '#' || line[0] == '*') { continue; } - strncpy(bbsnet_conf[menu_item_id].host1, t2, sizeof(bbsnet_conf[menu_item_id].host1) - 1); - bbsnet_conf[menu_item_id].host1[sizeof(bbsnet_conf[menu_item_id].host1) - 1] = '\0'; - strncpy(bbsnet_conf[menu_item_id].host2, t1, sizeof(bbsnet_conf[menu_item_id].host2) - 1); - bbsnet_conf[menu_item_id].host2[sizeof(bbsnet_conf[menu_item_id].host2) - 1] = '\0'; - strncpy(bbsnet_conf[menu_item_id].ip, t3, sizeof(bbsnet_conf[menu_item_id].ip) - 1); - bbsnet_conf[menu_item_id].ip[sizeof(bbsnet_conf[menu_item_id].ip) - 1] = '\0'; + strncpy(bbsnet_conf[menu_item_id].site_name, t2, sizeof(bbsnet_conf[menu_item_id].site_name) - 1); + bbsnet_conf[menu_item_id].site_name[sizeof(bbsnet_conf[menu_item_id].site_name) - 1] = '\0'; + strncpy(bbsnet_conf[menu_item_id].org_name, t1, sizeof(bbsnet_conf[menu_item_id].org_name) - 1); + bbsnet_conf[menu_item_id].org_name[sizeof(bbsnet_conf[menu_item_id].org_name) - 1] = '\0'; + strncpy(bbsnet_conf[menu_item_id].host_name, t3, sizeof(bbsnet_conf[menu_item_id].host_name) - 1); + bbsnet_conf[menu_item_id].host_name[sizeof(bbsnet_conf[menu_item_id].host_name) - 1] = '\0'; bbsnet_conf[menu_item_id].port = (in_port_t)(t4 ? atoi(t4) : 23); bbsnet_conf[menu_item_id].use_ssh = (toupper(t5[0]) == 'Y'); strncpy(bbsnet_conf[menu_item_id].charset, t6, sizeof(bbsnet_conf[menu_item_id].charset) - 1); @@ -149,7 +149,7 @@ static int load_bbsnet_conf(const char * (char)(menu_item_id < MAXSTATION / 2 ? 'A' + menu_item_id : 'a' + menu_item_id); p_menu_item->name[1] = '\0'; snprintf(p_menu_item->text, sizeof(p_menu_item->text), "%c. %s", - p_menu_item->name[0], bbsnet_conf[menu_item_id].host1); + p_menu_item->name[0], bbsnet_conf[menu_item_id].site_name); p_menu->items[p_menu->item_count] = menu_item_id; p_menu->item_count++; @@ -277,7 +277,7 @@ static int bbsnet_connect(int n) } moveto(1, 1); - prints("通过SSH方式连接[%s]...", bbsnet_conf[n].host1); + prints("通过SSH方式连接[%s]...", bbsnet_conf[n].site_name); moveto(2, 1); prints("请输入用户名: "); iflush(); @@ -307,10 +307,10 @@ static int bbsnet_connect(int n) moveto(1, 1); prints("\033[1;32m正在测试往 %s (%s) 的连接,请稍候... \033[m\r\n", - bbsnet_conf[n].host1, bbsnet_conf[n].ip); + bbsnet_conf[n].site_name, bbsnet_conf[n].host_name); iflush(); - p_host = gethostbyname(bbsnet_conf[n].ip); + p_host = gethostbyname(bbsnet_conf[n].host_name); if (p_host == NULL) { @@ -523,7 +523,7 @@ static int bbsnet_connect(int n) if (ssh_options_set(session, SSH_OPTIONS_FD, &sock) < 0 || ssh_options_set(session, SSH_OPTIONS_PROCESS_CONFIG, &ssh_process_config) < 0 || ssh_options_set(session, SSH_OPTIONS_KNOWNHOSTS, SSH_KNOWN_HOSTS_FILE) < 0 || - ssh_options_set(session, SSH_OPTIONS_HOST, bbsnet_conf[n].ip) < 0 || + ssh_options_set(session, SSH_OPTIONS_HOST, bbsnet_conf[n].host_name) < 0 || ssh_options_set(session, SSH_OPTIONS_USER, remote_user) < 0 || ssh_options_set(session, SSH_OPTIONS_HOSTKEYS, "+ssh-rsa") < 0 || ssh_options_set(session, SSH_OPTIONS_LOG_VERBOSITY, &ssh_log_level) < 0) @@ -555,17 +555,17 @@ static int bbsnet_connect(int n) case SSH_KNOWN_HOSTS_UNKNOWN: if (ssh_session_update_known_hosts(session) != SSH_OK) { - log_error("ssh_session_update_known_hosts(%s) error\n", bbsnet_conf[n].ip); + log_error("ssh_session_update_known_hosts(%s) error\n", bbsnet_conf[n].host_name); prints("\033[1;31m无法添加服务器证书\033[m"); press_any_key(); goto cleanup; } - log_common("SSH key of (%s) is added into %s\n", bbsnet_conf[n].ip, SSH_KNOWN_HOSTS_FILE); + log_common("SSH key of (%s) is added into %s\n", bbsnet_conf[n].host_name, SSH_KNOWN_HOSTS_FILE); case SSH_KNOWN_HOSTS_OK: break; case SSH_KNOWN_HOSTS_CHANGED: case SSH_KNOWN_HOSTS_OTHER: - log_error("ssh_session_is_known_server(%s) error: %d\n", bbsnet_conf[n].ip, ret); + log_error("ssh_session_is_known_server(%s) error: %d\n", bbsnet_conf[n].host_name, ret); prints("\033[1;31m服务器证书已变更\033[m"); press_any_key(); goto cleanup; @@ -1173,13 +1173,13 @@ static int bbsnet_selchange() moveto(20, 1); clrtoeol(); prints("|\033[1m单位: \033[1;33m%s\033[m%*s 站名: \033[1;33m%s\033[m", - bbsnet_conf[i].host2, 20 - str_length(bbsnet_conf[i].host2, 1), "", bbsnet_conf[i].host1); + bbsnet_conf[i].org_name, 20 - str_length(bbsnet_conf[i].org_name, 1), "", bbsnet_conf[i].site_name); moveto(20, 80); prints("|"); moveto(21, 1); clrtoeol(); prints("|\033[1m连往: \033[1;33m%-20s\033[m 端口: \033[1;33m%-5d\033[m 类型: \033[1;33m%s\033[m", - bbsnet_conf[i].ip, bbsnet_conf[i].port, (bbsnet_conf[i].use_ssh ? "SSH" : "Telnet")); + bbsnet_conf[i].host_name, bbsnet_conf[i].port, (bbsnet_conf[i].use_ssh ? "SSH" : "Telnet")); moveto(21, 80); prints("|"); iflush();