From 113e1e0fbb6b719d4a9666514affd6133edddb0a Mon Sep 17 00:00:00 2001 From: sushen339 Date: Tue, 18 Nov 2025 13:48:43 +0800 Subject: [PATCH] --- blockip/.gitignore | 1 - blockip/bip | Bin 0 -> 54192 bytes blockip/include/stats.h | 4 ++++ blockip/src/main.c | 7 ++++++- blockip/src/stats.c | 27 +++++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 blockip/bip diff --git a/blockip/.gitignore b/blockip/.gitignore index 7e80388..f936069 100644 --- a/blockip/.gitignore +++ b/blockip/.gitignore @@ -3,7 +3,6 @@ *.a *.so *.out -bip # 目录 obj/ diff --git a/blockip/bip b/blockip/bip new file mode 100644 index 0000000000000000000000000000000000000000..fb258d33d9cfcb7820f04d884f198d7b41a03815 GIT binary patch literal 54192 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 literal 0 HcmV?d00001 diff --git a/blockip/include/stats.h b/blockip/include/stats.h index eb9fe08..fb88733 100644 --- a/blockip/include/stats.h +++ b/blockip/include/stats.h @@ -2,10 +2,14 @@ #define STATS_H #include "common.h" +#include /* 显示完整统计信息 */ void show_statistics(void); +/* 显示统计信息(支持动态监控) */ +void show_statistics_watch(bool watch_mode); + /* 显示活跃封禁列表 */ void show_active_bans(void); diff --git a/blockip/src/main.c b/blockip/src/main.c index 46ccf4d..c32dbf8 100644 --- a/blockip/src/main.c +++ b/blockip/src/main.c @@ -14,6 +14,7 @@ void show_help(void) { printf("--------------------------------------\n"); printf("使用方法:\n"); printf(" bip list 查看实时统计/活跃列表/日志\n"); + printf(" bip list -w/--watch 动态监控模式(每2秒刷新)\n"); printf(" bip show 显示本地持久化封禁列表\n"); printf(" bip add 手动封禁 IP (支持IPv4/IPv6/CIDR)\n"); printf(" 示例: 1.1.1.1 或 1.1.1.0/24 或 2001:db8::/32\n"); @@ -113,7 +114,11 @@ int main(int argc, char *argv[]) { /* list命令:显示统计信息 */ if (strcmp(command, "list") == 0) { - show_statistics(); + bool watch_mode = false; + if (argc >= 3 && (strcmp(argv[2], "-w") == 0 || strcmp(argv[2], "--watch") == 0)) { + watch_mode = true; + } + show_statistics_watch(watch_mode); return SUCCESS; } diff --git a/blockip/src/stats.c b/blockip/src/stats.c index e73afc5..786858e 100644 --- a/blockip/src/stats.c +++ b/blockip/src/stats.c @@ -254,3 +254,30 @@ void show_statistics(void) { log_show_recent(10); printf("\n"); } + +void show_statistics_watch(bool watch_mode) { + if (!watch_mode) { + show_statistics(); + return; + } + + /* 动态监控模式 */ + printf("\033[?25l"); /* 隐藏光标 */ + + while (1) { + printf("\033[2J\033[H"); /* 清屏并移到顶部 */ + + /* 显示时间戳 */ + time_t now = time(NULL); + struct tm *t = localtime(&now); + printf("%s[实时监控] 刷新时间: %04d-%02d-%02d %02d:%02d:%02d (按 Ctrl+C 退出)%s\n\n", + C_YELLOW, t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, + t->tm_hour, t->tm_min, t->tm_sec, C_RESET); + + show_statistics(); + + sleep(2); /* 每2秒刷新一次 */ + } + + printf("\033[?25h"); /* 恢复光标 */ +}