--- lbbs/src/common.c 2025/06/21 02:15:18 1.34 +++ lbbs/src/common.c 2025/11/28 03:23:58 1.49 @@ -1,26 +1,58 @@ -/*************************************************************************** - common.c - description - ------------------- - Copyright : (C) 2004-2025 by Leaflet - Email : leaflet@leafok.com - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 3 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * common + * - common definitions + * + * Copyright (C) 2004-2025 Leaflet + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "common.h" -#include "log.h" -#include "menu.h" -#include -#include -#include -#include + +// Version +const char APP_INFO[] = PACKAGE_STRING " build on " __DATE__ " " __TIME__; +const char COPYRIGHT_INFO[] = "Copyright (C) 2004-2025 Leaflet \n" + "This program comes with ABSOLUTELY NO WARRANTY.\n" + "This is free software, and you are welcome to redistribute it \n" + "under certain conditions; see the GNU General Public License \n" + "version 3 for details.\n"; + +// Enviroment +const char CONF_BBSD[] = "conf/bbsd.conf"; +const char CONF_MENU[] = "var/menu_merged.conf"; +const char CONF_BBSNET[] = "conf/bbsnet.conf"; +const char CONF_BWF[] = "conf/badwords.conf"; +const char CONF_TOP10_MENU[] = "var/bbs_top_menu.conf"; +const char SSH_HOST_RSA_KEY_FILE[] = "conf/ssh_host_rsa_key"; +const char SSH_HOST_ED25519_KEY_FILE[] = "conf/ssh_host_ed25519_key"; + +const char LOG_FILE_INFO[] = "log/bbsd.log"; +const char LOG_FILE_ERROR[] = "log/error.log"; + +const char DATA_WELCOME[] = "data/welcome.txt"; +const char DATA_REGISTER[] = "data/register.txt"; +const char DATA_GOODBYE[] = "data/goodbye.txt"; +const char DATA_LICENSE[] = "data/license.txt"; +const char DATA_COPYRIGHT[] = "data/copyright.txt"; +const char DATA_VERSION[] = "data/version.txt"; +const char DATA_LOGIN_ERROR[] = "data/login_error.txt"; +const char DATA_ACTIVE_BOARD[] = "data/active_board.txt"; +const char DATA_READ_HELP[] = "data/read_help.txt"; +const char DATA_EDITOR_HELP[] = "data/editor_help.txt"; + +const char VAR_BBS_TOP[] = "var/bbs_top.txt"; + +const char VAR_ARTICLE_BLOCK_SHM[] = "var/article_block_shm.~"; +const char VAR_SECTION_LIST_SHM[] = "var/section_list_shm.~"; +const char VAR_TRIE_DICT_SHM[] = "var/trie_dict_shm.~"; +const char VAR_USER_LIST_SHM[] = "var/user_list_shm.~"; + +const char VAR_ARTICLE_CACHE_DIR[] = "var/articles/"; +const char VAR_GEN_EX_MENU_DIR[] = "var/gen_ex/"; +const char VAR_SECTION_AID_LOC_DIR[] = "var/section_aid_loc/"; // File loader const char *data_files_load_startup[] = { @@ -29,21 +61,21 @@ const char *data_files_load_startup[] = DATA_GOODBYE, DATA_LICENSE, DATA_COPYRIGHT, + DATA_VERSION, DATA_LOGIN_ERROR, DATA_ACTIVE_BOARD, DATA_READ_HELP, + DATA_EDITOR_HELP, VAR_BBS_TOP}; -int data_files_load_startup_count = 9; // Count of data_files_load_startup[] + +const int data_files_load_startup_count = sizeof(data_files_load_startup) / sizeof(const char *); // Global declaration for sockets -int socket_server[2]; -int socket_client; char hostaddr_client[IP_ADDR_LEN]; int port_client; // SSHv2 int SSH_v2 = 0; -ssh_bind sshbind; ssh_session SSH_session; ssh_channel SSH_channel; @@ -52,37 +84,11 @@ volatile int SYS_server_exit = 0; volatile int SYS_child_process_count = 0; volatile int SYS_child_exit = 0; volatile int SYS_conf_reload = 0; -volatile int SYS_data_file_reload = 0; -volatile int SYS_section_list_reload = 0; - -static const char *weekday[] = { - "天", "一", "二", "三", "四", "五", "六"}; // Common function -const char *get_time_str(char *s, size_t len) -{ - time_t curtime; - struct tm local_tm; - - time(&curtime); - localtime_r(&curtime, &local_tm); - size_t j = strftime(s, len, "%b %d %H:%M 星期", &local_tm); - - if (j == 0 || j + strlen(weekday[local_tm.tm_wday]) + 1 > len) - { - return NULL; - } - - strncat(s, weekday[local_tm.tm_wday], len - 1 - j); - - return s; -} - void sig_hup_handler(int i) { SYS_conf_reload = 1; - SYS_data_file_reload = 1; - SYS_section_list_reload = 1; } void sig_term_handler(int i) @@ -94,41 +100,3 @@ void sig_chld_handler(int i) { SYS_child_exit = 1; } - -const char *ip_mask(char *s, int level, char mask) -{ - char *p = s; - - if (level <= 0) - { - return s; - } - if (level > 4) - { - level = 4; - } - - for (int i = 0; i < 4 - level; i++) - { - p = strchr(p, '.'); - if (p == NULL) - { - return s; - } - p++; - } - - for (int i = 0; i < level; i++) - { - *p = mask; - p++; - if (i < level - 1) - { - *p = '.'; - p++; - } - } - *p = '\0'; - - return s; -}