diff --git a/README.md b/README.md index 63cc70f..02b89bf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,17 @@ -## 持续更新中
+# 🛡️ SecPulse - 赛博脉动 + +> 面向网络安全领域的智能资讯聚合与推送系统 + +
+ +[![Python](https://img.shields.io/badge/Python-3.6+-blue.svg)](https://www.python.org/) +[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) + +**实时感知安全领域的脉搏跳动** 🔔 + +
+ +## 🚀 快速开始
RSS订阅链接来源:https://github.com/zhengjim/Chinese-Security-RSS
使用python-json进行格式化,然后使用飞书webhook机器人进行发送
./config/config.yaml 可指定发送渠道、运行方式等基础配置信息
@@ -6,15 +19,26 @@ RSS订阅链接来源:https://github.com/zhengjim/Chinese-Security-RSS
./config/github_config.yaml 可指定Github相关参数(支持热修改)
更新记录请查看./UpdateLOG.md +### 📱 推送渠道
+ +目前支持以下推送渠道:
+- 飞书(Feishu)
+- 企业微信(WeChat Work)
+#### 后续更新渠道:
+- 钉钉(DingTalk)
+- 蓝信(Lanxin)
+#### 停更渠道:
+邮件(Email,中断开发)
+ ### 项目特色
- 模块化:爬虫(获取信息部分)、分析(对获取的json信息进行筛选分析存储)、推送(推送至各渠道)、网页等各模块均可单独运行。
- 轻量化:默认使用sqlite以及其他常见的各系统自带的库,用户仅需配置python环境,不会占用过多内存。
- 简单化:配置好config后即可一步运行,效率极高。
-### 日志相关 +### 日志相关
请查看./resources/log文件夹下内容
-### 使用建议:
+### 🖥️ Linux后台运行建议:
Linux系统建议下载screen于后台持续运行本脚本。
debian/ubuntu/kali: `apt install screen`
centos: `yum install screen`
@@ -23,6 +47,8 @@ centos: `yum install screen`
重新进入会话:`screen -r 会话名称`
结束对话:进入会话后输入`exit`
+当然,您也可以直接使用install脚本一键注册systemd服务(注意,请将Core.py主函数中的send_first_message()注释掉,防止反复触发首次运行效果)
+ ### 使用方法:
先下载支持库:`pip install -r requirements.txt`
随后便可直接运行:`python Core.py`
@@ -30,7 +56,7 @@ web运行:`python ./web/app.py`
随后web网页将会在本地9801端口启动,访问即可,使用反向代理即可以域名映射到外网
直接访问web域名即可查看历史推送,访问路径/log即可查看程序运行日志,/weblog查看flask日志
-或者直接运行install.sh即可,目前脚本存在一定问题,正在尽力修复。 +或者直接运行install.sh即可,目前脚本存在一定问题,正在尽力修复。
### 配置
首先先在飞书中创建群组,然后再创建WebHook机器人
@@ -51,8 +77,19 @@ web运行:`python ./web/app.py`
`./config/github_config.yaml`中可配置github_token
-### 运行结果
+### 📊 运行效果展示
后端

飞书运行提示

飞书运行展示

飞书运行展示-安卓

+ +### 📝 更新日志
+详细的更新记录请查看 [UpdateLOG.md](./UpdateLOG.md) + +### 🤝 贡献指南
+欢迎提交Issue和Pull Request来改进本项目!
+您也可以通过QQ(2857911564)或者发送邮件(admin@masonliu.com)给我反馈问题。
+ +### 🙏 致谢
+RSS订阅链接来源:[Chinese-Security-RSS](https://github.com/zhengjim/Chinese-Security-RSS)
+感谢所有为开源社区做出贡献的开发者
\ No newline at end of file diff --git a/UpdateLOG.md b/UpdateLOG.md index 53f6936..c3f9985 100644 --- a/UpdateLOG.md +++ b/UpdateLOG.md @@ -51,4 +51,5 @@ - 2025年01月24日早:修复了json文件为空时程序中断的问题并优化了报错逻辑 - 2025年03月10日早:为程序添加了通用rss接口,可支持更多rss源 - 2025年03月14日晚:为程序添加了通用rss发送程序,同时修复了一个神奇的bug,现可支持更多rss源 -- 2026年05月04日晚:更新了当前的WEB UI样式并重新启动程序开发计划 \ No newline at end of file +- 2026年05月04日晚:更新了当前的WEB UI样式并重新启动程序开发计划 +- 2026年05月11日晚:稍微更新了一下sh脚本,项目更名为SecPulse(赛博脉动) \ No newline at end of file diff --git a/install.sh b/install.sh index d2bddee..b8f08d2 100644 --- a/install.sh +++ b/install.sh @@ -36,15 +36,27 @@ detect_python() { detect_python +# ========= 检查 pip 是否可用 ========= +if ! $PYTHON_CMD -m pip --version >/dev/null 2>&1; then + echo "❌ pip 未安装或不可用,请先安装 pip" + exit 1 +fi + # ========= 安装依赖 ========= if [ -f "$BASE_DIR/requirements.txt" ]; then echo "安装 Python 依赖..." - # $PYTHON_CMD -m pip install --upgrade pip + # 升级 pip 到最新版本 + $PYTHON_CMD -m pip install --upgrade pip $PYTHON_CMD -m pip install -r "$BASE_DIR/requirements.txt" else echo "⚠️ 未找到 requirements.txt,跳过依赖安装" fi +# ========= 创建必要的目录结构 ========= +mkdir -p "$BASE_DIR/resources/log" +mkdir -p "$BASE_DIR/resources/history" +mkdir -p "$BASE_DIR/resources/db" + # ========= 创建 PyBot 服务 ========= sudo bash -c "cat > /etc/systemd/system/PyBot.service" <>> 处理服务: $SERVICE" @@ -14,6 +19,7 @@ for SERVICE in "${SERVICES[@]}"; do if systemctl is-active --quiet $SERVICE; then echo "停止服务..." sudo systemctl stop $SERVICE + sleep 2 # 等待服务完全停止 else echo "服务未运行" fi @@ -35,12 +41,18 @@ for SERVICE in "${SERVICES[@]}"; do echo "未找到服务文件" fi - # 4. 杀残留进程(保险) + # 4. 杀残留进程(更精确的匹配) echo "检查残留进程..." - PIDS=$(ps -ef | grep $SERVICE | grep -v grep | awk '{print $2}') + # 使用更精确的进程匹配方式,避免误杀其他进程 + PIDS=$(pgrep -f "${SERVICE}\.py" 2>/dev/null || pgrep -f "python.*${SERVICE}" 2>/dev/null) if [ -n "$PIDS" ]; then echo "杀死残留进程: $PIDS" - sudo kill -9 $PIDS + sudo kill -15 $PIDS 2>/dev/null # 先尝试正常终止 + sleep 2 + # 如果进程仍然存在,强制终止 + if ps -p $PIDS > /dev/null; then + sudo kill -9 $PIDS 2>/dev/null + fi else echo "无残留进程" fi @@ -53,21 +65,54 @@ echo "重新加载 systemd..." sudo systemctl daemon-reload sudo systemctl daemon-reexec -# 6. 可选清理日志 -read -p "是否清理 PyBot 日志?(y/n): " CLEAN_LOG -if [ "$CLEAN_LOG" == "y" ]; then +# 6. 可选清理日志和数据 +echo "" +read -p "是否清理 PyBot 日志文件?(y/n): " CLEAN_LOG +if [ "$CLEAN_LOG" == "y" ] || [ "$CLEAN_LOG" == "Y" ]; then + echo "清理应用日志..." + rm -f ./resources/log/core.log + rm -f ./resources/log/app.log echo "清理 journal 日志(保留1天)..." - sudo journalctl --vacuum-time=1d + sudo journalctl --vacuum-time=1d 2>/dev/null || echo "journalctl 清理跳过(可能无权限)" +fi + +read -p "是否清理历史数据和缓存?(y/n): " CLEAN_DATA +if [ "$CLEAN_DATA" == "y" ] || [ "$CLEAN_DATA" == "Y" ]; then + echo "清理历史数据..." + rm -f ./resources/history/*.md + rm -f ./resources/JSON/*.json + echo "注意:配置文件已保留,如需删除请手动操作 config/ 目录" +fi + +# 7. 可选:询问是否删除虚拟环境(如果存在) +if [ -d "venv" ] || [ -d ".venv" ]; then + read -p "是否删除 Python 虚拟环境?(y/n): " CLEAN_VENV + if [ "$CLEAN_VENV" == "y" ] || [ "$CLEAN_VENV" == "Y" ]; then + echo "删除虚拟环境..." + rm -rf venv .venv + fi fi echo "" echo "==============================" echo "卸载完成 ✅" echo "==============================" +echo "" +echo "📝 提示:" +echo " - 配置文件保留在 config/ 目录" +echo " - 如需完全删除项目,请手动删除整个项目文件夹" +echo " - Python 依赖包未卸载,如需要可运行: pip uninstall -r requirements.txt" +echo "" -# 7. 验证 +# 8. 验证 for SERVICE in "${SERVICES[@]}"; do - echo "" echo "验证服务: $SERVICE" - systemctl status $SERVICE 2>&1 | grep "could not be found" && echo "✔ 已彻底删除" || echo "⚠ 可能仍存在" -done \ No newline at end of file + if systemctl status $SERVICE 2>&1 | grep -q "could not be found"; then + echo " ✔ 服务已彻底删除" + else + echo " ⚠ 服务可能仍存在,请检查" + fi +done + +echo "" +echo "感谢使用 PyBot!👋" \ No newline at end of file diff --git a/开发计划.md b/开发计划.md index 6e14fa0..5aa71f8 100644 --- a/开发计划.md +++ b/开发计划.md @@ -1,4 +1,4 @@ -## PyBot RSS订阅机器人未来更新计划: +## SecPulse RSS订阅机器人未来更新计划: #### 新功能计划 1. Web界面全面转向PHP,并将于未来与综合导航频道(Infosec Navigator)合并 2. 数据库将由sqlite转型为MySQL @@ -10,5 +10,5 @@ #### 旧功能更新 1. 优化通用RSS订阅功能 -2. 优化PyBot程序运行中可能产生的问题(当前已知:Baidu源会导致程序异常中断) +2. 优化SecPulse程序运行中可能产生的问题(当前已知:Baidu源会导致程序异常中断) 3. 优化Linux服务注册脚本