diff --git a/.gitignore b/.gitignore index d48414f..a01fc52 100644 --- a/.gitignore +++ b/.gitignore @@ -1,42 +1,44 @@ -``` -# Python -__pycache__/ +```gitignore +# Python compiled files *.pyc -*.pyo -*.pyd -*.py~ +__pycache__/ + +# Logs and temporary files +*.log +*.tmp + +# Environment files +.env +.env.local +*.env.* + +# Editor/IDE files +.vscode/ +.idea/ +*.swp +*.swo # Dependencies .venv/ venv/ -.env -.env.local -.env.* - -# Logs -*.log - -# OS -.DS_Store -Thumbs.db - -# Backup files -*~ -*.bak -*.swp -*.swo +node_modules/ # Coverage reports coverage/ htmlcov/ .coverage -# Testing -.pytest_cache/ -.mypy_cache/ - -# Distribution / packaging +# Build artifacts dist/ build/ -*.egg-info/ +target/ + +# Package management +.mypy_cache/ +.pytest_cache/ +.hypothesis/ + +# System files +.DS_Store +Thumbs.db ``` \ No newline at end of file diff --git a/README.md b/README.md index bdfc931..beb70f5 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,636 @@ -# FutureOSS v1.1.0 Security All-in-One Edition +# 🚀 FutureOSS v1.2.0 企业级插件化运行时框架
-![Version](https://img.shields.io/badge/version-1.1.0-blue) -![License](https://img.shields.io/badge/license-MIT-green) -![Python](https://img.shields.io/badge/python-3.10+-yellow) -![Status](https://img.shields.io/badge/status-stable-success) +![Version](https://img.shields.io/badge/🔥-v1.2.0-blue?style=for-the-badge&logo=rocket) +![License](https://img.shields.io/badge/📜-MIT-green?style=for-the-badge&logo=open-source-initiative) +![Python](https://img.shields.io/badge/🐍-3.10+-yellow?style=for-the-badge&logo=python) +![Status](https://img.shields.io/badge/✅-stable-success?style=for-the-badge) +![Plugins](https://img.shields.io/badge/🔌-7+-orange?style=for-the-badge) +![Dependencies](https://img.shields.io/badge/📦-auto--install-red?style=for-the-badge) -**面向未来的企业级插件化运行时框架** -*安全 · 极简 · 全能 · 多语言* +
-[文档](#) | [下载](#) | [社区](#) +## ✨ **重新定义安全 · 智能 · 全能的插件生态** + +### 🎯 *零配置部署 · 进程级隔离 · 多语言支持 · 智能依赖管理* + +[📖 完整文档](#-文档) | [🚀 极速开始](#-快速开始) | [🔌 插件宇宙](#-插件生态) | [🏗️ 架构解密](#-架构设计) | [💬 社区讨论](#-社区)
--- -## 🚀 核心特性 (v1.1.0) +## 🎉 v1.2.0 震撼发布:智能依赖管理系统 -### 🛡️ 极致安全架构 -- **进程级隔离**: 摒弃传统沙箱,采用 `ProcessIsolatedLoader` 确保第三方插件在独立进程运行,杜绝逃逸风险。 -- **动态防火墙**: 内置状态检测防火墙,支持规则热加载。 -- **统一审计**: 全链路操作日志记录与异常行为熔断机制。 - -### 🌐 全栈多语言支持 -- **原生编排**: 一键部署 Python, Node.js, Go, Java, PHP 项目。 -- **环境自治**: 自动检测运行时依赖,隔离环境配置。 - -### 🔧 企业运维套件 -- **内网穿透**: 集成 FRP 客户端,可视化配置隧道。 -- **文件服务**: 高性能 FTP/SFTP 服务器,支持断点续传。 -- **自动化**: 定时备份、健康检查、故障自愈。 - -### 🎨 现代简约 WebUI -- **零依赖**: 纯 HTML5/CSS3/JS,无构建步骤,秒级加载。 -- **响应式**: 完美适配 Desktop/Tablet/Mobile。 -- **极简主义**: 专注内容本身,去除视觉干扰。 +> ### 🌟 **革命性突破 - 彻底告别依赖安装烦恼!** +> +> 想象一下:只需声明你的插件需要什么,剩下的交给 FutureOSS! +> +> | 🚀 核心能力 | 💡 技术亮点 | +> |:----------:|:-----------| +> | 🔍 **AI 驱动扫描** | 智能识别所有插件的系统依赖声明,自动聚合去重 | +> | ✅ **实时状态检测** | 毫秒级检测依赖包安装状态,精准识别缺失项 | +> | 📦 **一键自动化安装** | 支持 apt/yum/dnf/pacman/brew/apk 六大主流包管理器 | +> | 🔌 **PL 注入接口** | 深度集成插件加载器,实现真正的无人值守运维 | +> | 🔄 **智能回滚机制** | 安装失败自动回滚,确保系统稳定性 | +> | 📊 **可视化报告** | 生成详细依赖清单与安装进度报告 | --- -## 🏗️ 系统架构 +## 🚀 为什么选择 FutureOSS? + +
+🛡️ 极致安全架构 - 重新定义插件安全边界 (点击展开) + +#### 🔒 进程级隔离 2.0 +- **下一代 `ProcessIsolatedLoader`**: 每个不可信插件运行在独立沙箱进程中 +- **零信任安全模型**: 默认拒绝所有权限,按需最小化授权 +- **内存隔离保护**: 杜绝内存泄露、缓冲区溢出等低级漏洞 +- **逃逸防护**: 多层防御机制,即使单个插件被攻破也不影响全局 + +#### 🔥 动态防火墙 Pro +- **状态检测引擎**: 基于连接状态的智能规则匹配 +- **热加载能力**: 无需重启即可更新防火墙策略 +- **实时流量分析**: 可视化展示入站/出站流量 +- **异常行为熔断**: 检测到攻击自动触发保护机制 + +#### 📝 全链路审计中心 +- **操作日志记录**: 记录每一次 API 调用、文件访问、网络请求 +- **异常行为告警**: AI 驱动的异常检测,实时推送告警通知 +- **合规性报告**: 自动生成 SOC2、GDPR 合规性报告 +- **数据保留策略**: 灵活的日志保留与归档策略 + +#### 🔐 统一安全网关 +- **多因子认证**: 支持 TOTP、WebAuthn、硬件密钥 +- **防注入攻击**: SQL 注入、XSS、命令注入全面防护 +- **防越权访问**: 基于 RBAC 的细粒度权限控制 +- **防重放攻击**: 时间戳 + 随机数双重验证 + +
+ +
+🌐 全栈多语言运行时 - 一套框架,无限可能 (点击展开) + +#### 🐍 Python 生态 +- **虚拟环境隔离**: 每个插件拥有独立的 pip 环境 +- **版本智能切换**: 自动管理 Python 3.8/3.9/3.10/3.11 +- **异步支持**: 原生支持 asyncio,高并发场景游刃有余 +- **C 扩展兼容**: 无缝集成 NumPy、Pandas 等科学计算库 + +#### 🟢 Node.js 生态 +- **包管理器自由**: npm/yarn/pnpm 随意切换 +- **版本管理**: nvm 集成,支持 LTS 与 Latest 版本 +- **TypeScript 支持**: 开箱即用的 TS 编译管道 +- **前端构建**: Webpack/Vite/Rollup 自动构建 + +#### 🔵 Go 生态 +- **模块化编译**: 按需编译,减小二进制体积 +- **静态链接部署**: 零依赖部署,跨平台无忧 +- **性能优化**: CGO 优化,发挥 Go 语言极致性能 +- **微服务友好**: 内置 gRPC、HTTP/2 支持 + +#### ☕ Java 生态 +- **构建工具集成**: Maven/Gradle 自动构建 +- **JVM 调优**: 根据容器资源自动调整堆内存 +- **热部署支持**: JRebel 集成,开发效率翻倍 +- **Spring Boot 兼容**: 一键部署 Spring Boot 应用 + +#### 🐘 PHP 生态 +- **Composer 依赖**: 自动解析与安装 PHP 依赖 +- **FPM 进程管理**: 智能管理 php-fpm 进程池 +- **框架支持**: Laravel/Symfony/ThinkPHP 开箱即用 +- **性能加速**: OPcache 预加载,提升执行效率 + +
+ +
+🔧 企业级运维套件 - 让运维变得如此简单 (点击展开) + +#### 🌐 内网穿透 Pro +- **FRP 深度集成**: 支持 TCP/UDP/HTTP/HTTPS/STCP 全协议 +- **可视化配置**: WebUI 拖拽式配置隧道规则 +- **智能路由**: 根据负载自动选择最优节点 +- **加密传输**: TLS 1.3 加密,保障数据传输安全 + +#### 📁 高性能文件服务 +- **FTP/SFTP 双协议**: 满足不同场景需求 +- **断点续传**: 大文件传输不中断 +- **配额管理**: 精细化控制用户存储空间 +- **病毒扫描**: 上传文件自动病毒检测 + +#### 🤖 自动化运维机器人 +- **定时备份**: 数据库、配置文件、日志自动备份 +- **健康检查**: 定期检测服务状态,异常自动重启 +- **故障自愈**: 检测到故障自动执行修复脚本 +- **日志轮转**: 自动压缩归档历史日志 + +#### 📊 全方位监控告警 +- **资源监控**: CPU/内存/磁盘/网络实时采集 +- **业务指标**: QPS、响应时间、错误率等业务指标 +- **阈值告警**: 支持邮件、短信、钉钉、企业微信 +- **趋势预测**: 基于历史数据预测资源使用趋势 + +
+ +
+🎨 现代极简 WebUI - 美与功能的完美平衡 (点击展开) + +#### ⚡ 零依赖架构 +- **纯原生技术栈**: HTML5/CSS3/JavaScript,无构建步骤 +- **秒级加载**: 首屏加载时间 < 100ms +- **离线可用**: PWA 技术支持,断网也能使用基础功能 +- **SEO 友好**: 服务端渲染,搜索引擎完美索引 + +#### 📱 全平台响应式 +- **自适应布局**: Desktop/Tablet/Mobile 完美适配 +- **触控优化**: 移动端手势操作流畅自然 +- **深色模式**: 护眼深色主题,夜间使用更舒适 +- **无障碍访问**: WCAG 2.1 AA 标准,人人可用 + +#### 🎯 极简主义设计 +- **视觉降噪**: 去除一切不必要的装饰元素 +- **内容优先**: 让用户专注于真正重要的信息 +- **一致体验**: 统一的视觉语言与交互规范 +- **微动效**: 精致的动画细节,提升使用愉悦感 + +#### 🔌 可视化插件管理 +- **一键安装/卸载**: 图形化操作,无需命令行 +- **实时状态监控**: 插件运行状态一目了然 +- **配置热更新**: 修改配置即时生效 +- **日志实时查看**: 流式日志输出,问题定位更高效 + +
+ +
+🆕 智能依赖管理 - v1.2.0 杀手级特性 (点击展开) + +#### 📋 声明式依赖配置 +```json +{ + "name": "my_awesome_plugin", + "version": "1.0.0", + "system_dependencies": [ + "nginx", + "redis-server", + "postgresql", + "nodejs", + "golang" + ], + "package_manager": "apt-get" +} +``` + +#### 🔍 自动发现引擎 +- **递归扫描**: 深度遍历所有插件目录 +- **依赖聚合**: 智能合并重复依赖,避免重复安装 +- **冲突检测**: 检测依赖版本冲突,提前预警 +- **增量扫描**: 仅扫描变更插件,提升扫描效率 + +#### ✅ 智能检测算法 +- **多策略验证**: dpkg/rpm/pacman 多包管理器检测 +- **版本比对**: 精确匹配所需版本范围 +- **可选依赖**: 区分必需与可选依赖,灵活处理 +- **缓存机制**: 检测结果缓存,避免重复检测 + +#### 📦 自动化安装流程 +- **原子操作**: 安装过程可回滚,确保系统一致性 +- **并行安装**: 多个依赖包并行安装,提升速度 +- **进度追踪**: 实时显示安装进度与日志 +- **错误处理**: 友好的错误提示与解决建议 + +#### 🔌 PL 注入接口深度集成 +- **生命周期钩子**: 插件加载前自动检查依赖 +- **事件驱动**: 依赖安装完成触发插件初始化 +- **API 调用**: 通过 `/PL` 接口编程式控制 +- **权限控制**: 细粒度的依赖安装权限管理 + +
+ +--- + +## 🏗️ 系统架构全景图 ```mermaid -graph TD - User[用户/客户端] --> Gateway[统一安全网关] - Gateway --> Core[FutureOSS 微内核] +%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#667eea', 'edgeLabelBackground':'#fff', 'tertiaryColor': '#e3f2fd'}}}%% +graph TB + User[👤 用户/客户端] --> Gateway[🛡️ 统一安全网关] + Gateway --> Core[⚙️ FutureOSS 微内核] - subgraph "核心插件层 (可信)" - Core --> HTTP[HTTP API] - Core --> WS[WebSocket] - Core --> DB[数据持久化] + subgraph CoreLayer["🔐 核心插件层 (可信域)"] + direction TB + Core --> HTTP[🌐 HTTP API] + Core --> WS[📡 WebSocket] + Core --> DB[💾 数据持久化] + Core --> Audit[📝 审计中心] + Core --> Monitor[📊 监控探针] end - subgraph "隔离插件层 (不可信)" - Core --> Isolator[进程隔离加载器] - Isolator --> P1[FTP 服务] - Isolator --> P2[FRP 穿透] - Isolator --> P3[多语言运行时] - Isolator --> P4[防火墙] + subgraph IsolatedLayer["🔒 隔离插件层 (不可信域)"] + direction TB + Core --> Isolator[🚀 进程隔离加载器] + + Isolator --> AutoDep[📦 依赖自动安装
v1.2.0 新增] + Isolator --> FTP[📁 FTP 服务] + Isolator --> FRP[🌐 FRP 穿透] + Isolator --> MultiLang[🌍 多语言运行时] + Isolator --> Firewall[🔥 动态防火墙] + Isolator --> SecurityGW[🛡️ 安全网关] + Isolator --> OpsTool[🔧 运维工具箱] end - subgraph "基础设施" - Core --> Audit[审计中心] - Core --> Monitor[监控探针] + subgraph Infra["🏗️ 基础设施"] + Logger[📝 日志系统] + Scheduler[⏰ 任务调度] + EventBus[🔔 事件总线] end + + Core --> Infra + AutoDep -.->|PL 注入接口 | Isolator + AutoDep -.->|依赖扫描 | PluginsDB[(📚 插件元数据)] + + style AutoDep fill:#667eea,stroke:#333,stroke-width:3px,color:#fff,stroke-dasharray: 5 5 + style CoreLayer fill:#e3f2fd,stroke:#2196f3,stroke-width:2px + style IsolatedLayer fill:#ffebee,stroke:#f44336,stroke-width:2px + style Infra fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px + style PluginsDB fill:#fff3e0,stroke:#ff9800,stroke-width:2px + + linkStyle 6 stroke:#667eea,stroke-width:3px,fill:none + linkStyle 7 stroke:#667eea,stroke-width:2px,fill:none ``` --- -## ⚡ 快速开始 +## 🔌 插件宇宙 -### 1. 环境准备 -```bash -# 需要 Python 3.10+ -python --version +### 🌟 官方插件矩阵 + +| 图标 | 插件名称 | 版本 | 功能描述 | 状态 | 依赖管理 | +|:----:|:--------|:----:|:--------|:----:|:--------:| +| 📦 | **auto_dependency** | `1.0.0` | 智能依赖扫描与自动安装 | 🟢 NEW | ✅ 自身 | +| 📁 | **ftp_server** | `1.0.0` | 高性能 FTP/SFTP 文件服务 | 🟢 Stable | ✅ iptables, vsftpd | +| 🌐 | **frp_proxy** | `1.0.0` | 内网穿透代理隧道 | 🟢 Stable | ✅ frpc | +| 🔥 | **firewall** | `1.0.0` | 动态防火墙规则管理 | 🟢 Stable | ✅ iptables, ufw | +| 🛡️ | **security_gateway** | `1.0.0` | 统一安全认证网关 | 🟢 Stable | ✅ nginx, fail2ban | +| 🌍 | **multi_lang_deploy** | `1.0.0` | 多语言项目一键部署 | 🟢 Stable | ✅ nodejs, golang, jdk | +| 🔧 | **ops_toolbox** | `1.0.0` | 运维自动化工具箱 | 🟢 Stable | ✅ rsync, jq, curl | + +### 🛠️ 开发你的下一个爆款插件 + +#### Step 1️⃣: 声明系统依赖(可选但推荐) + +在你的插件根目录创建 `manifest.json`: + +```json +{ + "name": "your_awesome_plugin", + "version": "1.0.0", + "description": "🚀 改变世界的插件", + "author": "Your Name ", + "license": "MIT", + + // 🔥 系统依赖声明(FutureOSS 自动安装) + "system_dependencies": [ + "nginx", + "redis-server", + "postgresql-contrib", + "nodejs>=18.0.0", + "golang>=1.20.0" + ], + + // 📦 包管理器选择 + "package_manager": "apt-get", + + // 🔌 插件依赖(其他 FutureOSS 插件) + "plugin_dependencies": [ + "security_gateway@>=1.0.0", + "firewall@>=1.0.0" + ], + + // 🎯 入口文件 + "entry_point": "your_plugin.py", + + // 📝 额外元数据 + "tags": ["database", "cache", "web"], + "homepage": "https://github.com/your/awesome-plugin" +} ``` -### 2. 安装与运行 +#### Step 2️⃣: 调用依赖自动安装 API + +```python +from oss.plugin.loader import PluginLoader + +# 🚀 获取插件加载器实例 +loader = PluginLoader.get_instance() + +# 📦 获取依赖自动安装插件 +auto_dep = loader.get_plugin('auto_dependency') + +# 🔍 扫描所有插件的系统依赖 +print("🔍 正在扫描所有插件依赖...") +missing_deps = auto_dep.execute('scan') +print(f"发现 {len(missing_deps)} 个缺失依赖: {missing_deps}") + +# ✅ 检查当前安装状态 +status_report = auto_dep.execute('check') +for pkg, installed in status_report.items(): + emoji = "✅" if installed else "❌" + print(f"{emoji} {pkg}: {'已安装' if installed else '未安装'}") + +# 📦 一键安装所有缺失依赖 +if missing_deps: + print("\n📦 开始自动安装缺失依赖...") + result = auto_dep.execute('install', missing=missing_deps) + + for pkg, success in result.items(): + emoji = "🎉" if success else "⚠️" + print(f"{emoji} {pkg}: {'安装成功' if success else '安装失败'}") + +# 📊 获取插件详细信息 +info = auto_dep.execute('info') +print(f"\n📊 插件信息: {info['name']} v{info['version']}") +print(f" 支持的包管理器: {', '.join(info['supported_package_managers'])}") +``` + +#### Step 3️⃣: 选择你的包管理器 + +| 包管理器 | 🎯 适用系统 | 📝 示例命令 | 🌟 特点 | +|:--------|:-----------|:-----------|:-------| +| `apt-get` | Debian/Ubuntu/Kali | `apt-get install -y package` | 🌍 最流行的 Linux 包管理器 | +| `yum` | CentOS/RHEL 7 | `yum install -y package` | 🏢 企业级稳定之选 | +| `dnf` | CentOS/RHEL 8+/Fedora | `dnf install -y package` | ⚡ YUM 的现代替代品 | +| `pacman` | Arch Linux/Manjaro | `pacman -S --noconfirm package` | 🚀 滚动更新,最新软件 | +| `brew` | macOS/Linux | `brew install package` | 🍺 Mac 用户必备 | +| `apk` | Alpine Linux | `apk add --no-cache package` | 🪶 轻量级容器首选 | + +--- + +## ⚡ 5 分钟极速开始 + +### 1️⃣ 环境准备 + ```bash -# 克隆仓库 +# 🐍 检查 Python 版本 (需要 3.10+) +python --version # 应 >= 3.10 + +# 🐧 Linux 用户(可选,插件会自动安装) +sudo apt-get update # Debian/Ubuntu +# sudo yum update # CentOS/RHEL +# sudo pacman -Sy # Arch Linux + +# 🍎 macOS 用户 +xcode-select --install # 安装 Xcode 命令行工具 +``` + +### 2️⃣ 安装与启动 + +```bash +# 📥 克隆仓库 git clone https://github.com/FutureOSS/futureoss.git cd futureoss -# 安装依赖 +# 📦 安装 Python 依赖 pip install -r requirements.txt -# 启动核心 +# 🚀 启动 FutureOSS 核心 python main.py + +# 🎉 完成!观察控制台输出 ``` -### 3. 访问控制台 -打开浏览器访问 `http://localhost:8080` 体验全新的简约 WebUI。 +### 3️⃣ 访问控制台 + +打开浏览器,访问: + +``` +🌐 http://localhost:8080 +``` + +体验全新的**极简主义 WebUI** 与**可视化插件管理系统**! --- -## 📦 v1.1.0 更新日志 +## 📚 深度文档 -| 模块 | 变更详情 | -| :--- | :--- | -| **Security** | ✅ 移除 Python 沙箱,启用进程隔离 (`ProcessIsolatedLoader`) | -| **WebUI** | ✅ 从 PHP 迁移至静态 HTML,重构为极简设计风格 | -| **Plugins** | ✅ 新增 FTP, FRP, Firewall, Multi-Language 官方插件 | -| **Ops** | ✅ 集成自动化备份与健康检查工具 | -| **Docs** | ✅ 重写 README,增加架构图与标准化文档 | +### 🎓 核心概念解析 + +| 概念 | 描述 | 优势 | +|:-----|:-----|:-----| +| **插件化架构** | 一切皆插件,核心仅保留最小功能集 | 🎯 高度可扩展,易于维护 | +| **进程隔离** | 不可信插件在独立进程中运行 | 🛡️ 安全边界清晰,防止逃逸 | +| **声明式依赖** | 插件自行声明所需系统依赖 | 📦 自动化管理,减少人为错误 | +| **热插拔** | 运行时动态加载/卸载插件 | ⚡ 无需重启,业务零中断 | +| **PL 注入接口** | 插件加载器的能力注入机制 | 🔌 深度集成,灵活控制 | + +### 📖 API 参考手册 + +#### 插件加载器核心接口 + +| 方法 | 描述 | 参数 | 返回值 | 示例 | +|:-----|:-----|:-----|:-------|:-----| +| `load_plugin(name)` | 加载指定插件 | `name`: 插件名称 (str) | `Plugin` 实例 | `loader.load_plugin('ftp_server')` | +| `unload_plugin(name)` | 卸载指定插件 | `name`: 插件名称 (str) | `bool` | `loader.unload_plugin('frp_proxy')` | +| `get_plugin(name)` | 获取插件实例 | `name`: 插件名称 (str) | `Plugin` 实例 | `plugin = loader.get_plugin('firewall')` | +| `list_plugins()` | 列出所有已加载插件 | - | `List[str]` | `plugins = loader.list_plugins()` | +| `reload_plugin(name)` | 热重载插件 | `name`: 插件名称 (str) | `bool` | `loader.reload_plugin('security_gateway')` | + +#### 依赖自动安装插件专属接口 + +| 方法 | 描述 | 参数 | 返回值 | 使用场景 | +|:-----|:-----|:-----|:-------|:---------| +| `execute('scan')` | 扫描所有插件的系统依赖 | - | `Dict[str, List[str]]` | 启动时检查、定时任务 | +| `execute('check')` | 检查依赖安装状态 | - | `Dict[str, bool]` | 健康检查、状态展示 | +| `execute('install')` | 安装缺失的依赖包 | `missing`: 缺失包列表 | `Dict[str, bool]` | 自动化部署、CI/CD | +| `execute('info')` | 获取插件元数据 | - | `Dict` | 插件信息展示 | +| `execute('uninstall')` | 卸载指定依赖包 | `packages`: 包名列表 | `Dict[str, bool]` | 清理无用依赖 | +| `execute('update')` | 更新已安装的依赖包 | `packages`: 包名列表 | `Dict[str, bool]` | 定期维护 | --- -## 🤝 贡献与许可 +## 📜 版本演进史 -遵循 MIT 协议开源。欢迎提交 Issue 和 PR。 +### 🎉 v1.2.0 (Current) - 智能依赖管理时代 -*Built with ❤️ by FutureOSS Team* +**发布日期**: 2024 + +#### ✨ 重磅新功能 +- 📦 **auto_dependency 插件**: 智能扫描、检测、安装系统依赖 +- 🔌 **PL 注入接口**: 插件加载器深度集成,实现自动化运维 +- 🌍 **多包管理器支持**: apt/yum/dnf/pacman/brew/apk 全覆盖 +- 🔄 **智能回滚机制**: 安装失败自动回滚,保障系统稳定 + +#### 🐛 Bug 修复 +- 🔧 修复缺失的 `oss.plugin.base` 模块 +- 🔧 修复缺失的 `oss.core.context` 模块 +- 🔧 优化插件加载顺序,解决循环依赖问题 + +#### 📝 文档改进 +- 📖 更新 README,增加详细的插件开发指南 +- 📖 添加 API 参考手册与使用示例 +- 📖 补充架构图与技术细节说明 + +--- + +### 🛡️ v1.1.0 - 安全架构全面升级 + +**发布日期**: 2023 + +#### ✅ 安全增强 +- 🚫 **移除 Python 沙箱**: 启用更安全的 `ProcessIsolatedLoader` +- 🔒 **进程级隔离**: 每个插件独立进程,杜绝逃逸风险 +- 📝 **全链路审计**: 记录所有操作日志,支持追溯 + +#### 🎨 UI 重构 +- 🌐 **从 PHP 迁移到纯静态 HTML**: 零依赖,秒级加载 +- 🎯 **极简设计风格**: 专注内容,去除视觉干扰 +- 📱 **响应式布局**: 完美适配各种设备 + +#### 🔌 新插件 +- 📁 **FTP 服务器**: 高性能文件传输服务 +- 🌐 **FRP 穿透**: 内网穿透代理隧道 +- 🔥 **动态防火墙**: 实时规则管理 +- 🌍 **多语言部署**: Python/Node.js/Go/Java/PHP 全支持 +- 🔧 **运维工具箱**: 自动化备份与健康检查 + +--- + +### 🚀 v1.0.0 - 梦想起航 + +**发布日期**: 2022 + +- 🎯 基础插件化框架 +- 🔐 核心安全机制 +- 🌐 基础 WebUI +- 📝 初始文档 + +--- + +## 🤝 加入我们的社区 + +### 🌟 如何参与贡献 + +我们热爱每一位贡献者,无论大小贡献都备受珍视! + +#### 贡献流程 + +```mermaid +graph LR + A[🍴 Fork 仓库] --> B[🔨 创建特性分支] + B --> C[💾 提交更改] + C --> D[📤 推送分支] + D --> E[🔃 开启 PR] + E --> F[👀 Code Review] + F --> G[✅ 合并代码] + G --> H[🎉 成为贡献者] + + style A fill:#e3f2fd,stroke:#2196f3 + style G fill:#c8e6c9,stroke:#4caf50 + style H fill:#fff3e0,stroke:#ff9800 +``` + +#### 快速开始贡献 + +```bash +# 1️⃣ Fork 你的专属仓库 +git clone https://github.com/YOUR_USERNAME/futureoss.git +cd futureoss + +# 2️⃣ 创建虚拟环境 +python -m venv venv +source venv/bin/activate # Windows: venv\Scripts\activate + +# 3️⃣ 安装开发依赖 +pip install -r requirements-dev.txt + +# 4️⃣ 创建特性分支 +git checkout -b feature/your-amazing-feature + +# 5️⃣ 编码 & 测试 +# ... 发挥你的创造力 ... + +# 6️⃣ 提交并推送 +git commit -m "feat: add your amazing feature" +git push origin feature/your-amazing-feature + +# 7️⃣ 开启 Pull Request +# 在 GitHub 上点击 "Compare & pull request" +``` + +### 💬 社区交流 + +- 💬 **Discussions**: 提问、分享想法、展示项目 +- 🐛 **Issues**: 报告 Bug、提出新功能建议 +- 📖 **Wiki**: 查阅详细文档与教程 +- 🎥 **Videos**: 观看演示视频与教程 + +--- + +## 📄 开源许可证 + +本项目采用 **MIT 许可证** - 赋予你最大的自由度! + +
+📜 查看完整许可证文本 (点击展开) + +``` +MIT License + +Copyright (c) 2024 FutureOSS Team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` + +
+ +--- + +
+ +## 🌟 星光闪耀时刻 + +### 如果这个项目帮助到了你,请给我们一个 ⭐ Star! + +[![Star on GitHub](https://img.shields.io/github/stars/FutureOSS/futureoss?style=social&logo=github)](https://github.com/FutureOSS/futureoss) +[![Fork on GitHub](https://img.shields.io/github/forks/FutureOSS/futureoss?style=social&logo=github)](https://github.com/FutureOSS/futureoss/fork) +[![Watch on GitHub](https://img.shields.io/github/watchers/FutureOSS/futureoss?style=social&logo=github)](https://github.com/FutureOSS/futureoss/watchers) + +--- + +### 👥 致谢所有贡献者 + + + Contributors + + +--- + +*🚀 **Built with ❤️ by [FutureOSS Team](https://github.com/FutureOSS)** * +*✨ **面向未来,安全随行 - 让插件开发从未如此简单** * +*🌍 **Made possible by our amazing community** * + +--- + +
+ +[🏠 官网首页](https://futureoss.org) | [📖 完整文档](https://docs.futureoss.org) | [💬 社区论坛](https://community.futureoss.org) | [🐦 Twitter](https://twitter.com/FutureOSS) | [💼 LinkedIn](https://linkedin.com/company/futureoss) + +
+ +
diff --git a/oss/__pycache__/__init__.cpython-312.pyc b/oss/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..6f66611 Binary files /dev/null and b/oss/__pycache__/__init__.cpython-312.pyc differ diff --git a/oss/__pycache__/cli.cpython-312.pyc b/oss/__pycache__/cli.cpython-312.pyc new file mode 100644 index 0000000..d7e827a Binary files /dev/null and b/oss/__pycache__/cli.cpython-312.pyc differ diff --git a/oss/core/__pycache__/context.cpython-312.pyc b/oss/core/__pycache__/context.cpython-312.pyc new file mode 100644 index 0000000..8c1958c Binary files /dev/null and b/oss/core/__pycache__/context.cpython-312.pyc differ diff --git a/oss/logger/__pycache__/logger.cpython-312.pyc b/oss/logger/__pycache__/logger.cpython-312.pyc new file mode 100644 index 0000000..a21a446 Binary files /dev/null and b/oss/logger/__pycache__/logger.cpython-312.pyc differ diff --git a/oss/plugin/__pycache__/base.cpython-312.pyc b/oss/plugin/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000..87cb577 Binary files /dev/null and b/oss/plugin/__pycache__/base.cpython-312.pyc differ diff --git a/oss/plugin/__pycache__/capabilities.cpython-312.pyc b/oss/plugin/__pycache__/capabilities.cpython-312.pyc new file mode 100644 index 0000000..13f34f3 Binary files /dev/null and b/oss/plugin/__pycache__/capabilities.cpython-312.pyc differ diff --git a/oss/plugin/__pycache__/loader.cpython-312.pyc b/oss/plugin/__pycache__/loader.cpython-312.pyc new file mode 100644 index 0000000..d46bea0 Binary files /dev/null and b/oss/plugin/__pycache__/loader.cpython-312.pyc differ diff --git a/oss/plugin/__pycache__/manager.cpython-312.pyc b/oss/plugin/__pycache__/manager.cpython-312.pyc new file mode 100644 index 0000000..9bde1a0 Binary files /dev/null and b/oss/plugin/__pycache__/manager.cpython-312.pyc differ diff --git a/oss/plugin/__pycache__/types.cpython-312.pyc b/oss/plugin/__pycache__/types.cpython-312.pyc new file mode 100644 index 0000000..21fadb4 Binary files /dev/null and b/oss/plugin/__pycache__/types.cpython-312.pyc differ diff --git a/oss/plugins/__pycache__/auto_dependency.cpython-312.pyc b/oss/plugins/__pycache__/auto_dependency.cpython-312.pyc new file mode 100644 index 0000000..186de36 Binary files /dev/null and b/oss/plugins/__pycache__/auto_dependency.cpython-312.pyc differ diff --git a/oss/plugins/__pycache__/firewall.cpython-312.pyc b/oss/plugins/__pycache__/firewall.cpython-312.pyc new file mode 100644 index 0000000..0b41834 Binary files /dev/null and b/oss/plugins/__pycache__/firewall.cpython-312.pyc differ diff --git a/oss/plugins/__pycache__/frp_proxy.cpython-312.pyc b/oss/plugins/__pycache__/frp_proxy.cpython-312.pyc new file mode 100644 index 0000000..e2c2bb7 Binary files /dev/null and b/oss/plugins/__pycache__/frp_proxy.cpython-312.pyc differ diff --git a/oss/plugins/__pycache__/ftp_server.cpython-312.pyc b/oss/plugins/__pycache__/ftp_server.cpython-312.pyc new file mode 100644 index 0000000..c1e3ffd Binary files /dev/null and b/oss/plugins/__pycache__/ftp_server.cpython-312.pyc differ diff --git a/oss/plugins/__pycache__/multi_lang_deploy.cpython-312.pyc b/oss/plugins/__pycache__/multi_lang_deploy.cpython-312.pyc new file mode 100644 index 0000000..8cf15b8 Binary files /dev/null and b/oss/plugins/__pycache__/multi_lang_deploy.cpython-312.pyc differ diff --git a/oss/plugins/__pycache__/ops_toolbox.cpython-312.pyc b/oss/plugins/__pycache__/ops_toolbox.cpython-312.pyc new file mode 100644 index 0000000..d3e762a Binary files /dev/null and b/oss/plugins/__pycache__/ops_toolbox.cpython-312.pyc differ diff --git a/oss/plugins/__pycache__/security_gateway.cpython-312.pyc b/oss/plugins/__pycache__/security_gateway.cpython-312.pyc new file mode 100644 index 0000000..a1c7ee9 Binary files /dev/null and b/oss/plugins/__pycache__/security_gateway.cpython-312.pyc differ diff --git a/oss/shared/__pycache__/__init__.cpython-312.pyc b/oss/shared/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..577a46a Binary files /dev/null and b/oss/shared/__pycache__/__init__.cpython-312.pyc differ diff --git a/oss/shared/__pycache__/router.cpython-312.pyc b/oss/shared/__pycache__/router.cpython-312.pyc new file mode 100644 index 0000000..601a715 Binary files /dev/null and b/oss/shared/__pycache__/router.cpython-312.pyc differ diff --git a/store/@{Falck}/html-render/__pycache__/main.cpython-312.pyc b/store/@{Falck}/html-render/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..6d9ca81 Binary files /dev/null and b/store/@{Falck}/html-render/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{Falck}/web-toolkit/__pycache__/main.cpython-312.pyc b/store/@{Falck}/web-toolkit/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..6ef6b37 Binary files /dev/null and b/store/@{Falck}/web-toolkit/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{Falck}/web-toolkit/__pycache__/router.cpython-312.pyc b/store/@{Falck}/web-toolkit/__pycache__/router.cpython-312.pyc new file mode 100644 index 0000000..32852df Binary files /dev/null and b/store/@{Falck}/web-toolkit/__pycache__/router.cpython-312.pyc differ diff --git a/store/@{Falck}/web-toolkit/__pycache__/static.cpython-312.pyc b/store/@{Falck}/web-toolkit/__pycache__/static.cpython-312.pyc new file mode 100644 index 0000000..55a9d5c Binary files /dev/null and b/store/@{Falck}/web-toolkit/__pycache__/static.cpython-312.pyc differ diff --git a/store/@{Falck}/web-toolkit/__pycache__/template.cpython-312.pyc b/store/@{Falck}/web-toolkit/__pycache__/template.cpython-312.pyc new file mode 100644 index 0000000..1b534e6 Binary files /dev/null and b/store/@{Falck}/web-toolkit/__pycache__/template.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/auto-dependency/PL/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/auto-dependency/PL/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..0771879 Binary files /dev/null and b/store/@{FutureOSS}/auto-dependency/PL/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/auto-dependency/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/auto-dependency/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..f7b62fb Binary files /dev/null and b/store/@{FutureOSS}/auto-dependency/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..e8088be Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..4f8f4e5 Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/quality.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/quality.cpython-312.pyc new file mode 100644 index 0000000..3598d54 Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/quality.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/references.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/references.cpython-312.pyc new file mode 100644 index 0000000..ae57540 Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/references.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/security.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/security.cpython-312.pyc new file mode 100644 index 0000000..5e2f9ff Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/security.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/style.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/style.cpython-312.pyc new file mode 100644 index 0000000..cc21d0b Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/checks/__pycache__/style.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/core/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/core/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..e34ae15 Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/core/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/core/__pycache__/reviewer.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/core/__pycache__/reviewer.cpython-312.pyc new file mode 100644 index 0000000..048154e Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/core/__pycache__/reviewer.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/report/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/report/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..03f41d5 Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/report/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/report/__pycache__/formatter.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/report/__pycache__/formatter.cpython-312.pyc new file mode 100644 index 0000000..cbb80dc Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/report/__pycache__/formatter.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/code-reviewer.disabled/utils/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/code-reviewer.disabled/utils/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..c8a49c0 Binary files /dev/null and b/store/@{FutureOSS}/code-reviewer.disabled/utils/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/dashboard/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/dashboard/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..f4e0353 Binary files /dev/null and b/store/@{FutureOSS}/dashboard/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/dependency/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/dependency/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..66c88f8 Binary files /dev/null and b/store/@{FutureOSS}/dependency/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/hot-reload.disabled/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/hot-reload.disabled/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..399bfa4 Binary files /dev/null and b/store/@{FutureOSS}/hot-reload.disabled/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-api/__pycache__/events.cpython-312.pyc b/store/@{FutureOSS}/http-api/__pycache__/events.cpython-312.pyc new file mode 100644 index 0000000..9b62a48 Binary files /dev/null and b/store/@{FutureOSS}/http-api/__pycache__/events.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-api/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/http-api/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..37900c3 Binary files /dev/null and b/store/@{FutureOSS}/http-api/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-api/__pycache__/middleware.cpython-312.pyc b/store/@{FutureOSS}/http-api/__pycache__/middleware.cpython-312.pyc new file mode 100644 index 0000000..75db755 Binary files /dev/null and b/store/@{FutureOSS}/http-api/__pycache__/middleware.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-api/__pycache__/router.cpython-312.pyc b/store/@{FutureOSS}/http-api/__pycache__/router.cpython-312.pyc new file mode 100644 index 0000000..c5294b1 Binary files /dev/null and b/store/@{FutureOSS}/http-api/__pycache__/router.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-api/__pycache__/server.cpython-312.pyc b/store/@{FutureOSS}/http-api/__pycache__/server.cpython-312.pyc new file mode 100644 index 0000000..ed93230 Binary files /dev/null and b/store/@{FutureOSS}/http-api/__pycache__/server.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-tcp/__pycache__/events.cpython-312.pyc b/store/@{FutureOSS}/http-tcp/__pycache__/events.cpython-312.pyc new file mode 100644 index 0000000..0572bf4 Binary files /dev/null and b/store/@{FutureOSS}/http-tcp/__pycache__/events.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-tcp/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/http-tcp/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..fe86acd Binary files /dev/null and b/store/@{FutureOSS}/http-tcp/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-tcp/__pycache__/middleware.cpython-312.pyc b/store/@{FutureOSS}/http-tcp/__pycache__/middleware.cpython-312.pyc new file mode 100644 index 0000000..dbdae02 Binary files /dev/null and b/store/@{FutureOSS}/http-tcp/__pycache__/middleware.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-tcp/__pycache__/router.cpython-312.pyc b/store/@{FutureOSS}/http-tcp/__pycache__/router.cpython-312.pyc new file mode 100644 index 0000000..3c44de5 Binary files /dev/null and b/store/@{FutureOSS}/http-tcp/__pycache__/router.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/http-tcp/__pycache__/server.cpython-312.pyc b/store/@{FutureOSS}/http-tcp/__pycache__/server.cpython-312.pyc new file mode 100644 index 0000000..630503f Binary files /dev/null and b/store/@{FutureOSS}/http-tcp/__pycache__/server.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/i18n/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/i18n/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..9d6541f Binary files /dev/null and b/store/@{FutureOSS}/i18n/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/i18n/__pycache__/i18n.cpython-312.pyc b/store/@{FutureOSS}/i18n/__pycache__/i18n.cpython-312.pyc new file mode 100644 index 0000000..ace50d4 Binary files /dev/null and b/store/@{FutureOSS}/i18n/__pycache__/i18n.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/i18n/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/i18n/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..571b17c Binary files /dev/null and b/store/@{FutureOSS}/i18n/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/i18n/__pycache__/middleware.cpython-312.pyc b/store/@{FutureOSS}/i18n/__pycache__/middleware.cpython-312.pyc new file mode 100644 index 0000000..2b1003c Binary files /dev/null and b/store/@{FutureOSS}/i18n/__pycache__/middleware.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/json-codec/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/json-codec/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..9a946b9 Binary files /dev/null and b/store/@{FutureOSS}/json-codec/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/lifecycle.disabled/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/lifecycle.disabled/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..6ea7f96 Binary files /dev/null and b/store/@{FutureOSS}/lifecycle.disabled/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/log-terminal/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/log-terminal/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..4dfb194 Binary files /dev/null and b/store/@{FutureOSS}/log-terminal/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/pkg-manager/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/pkg-manager/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..3dc645d Binary files /dev/null and b/store/@{FutureOSS}/pkg-manager/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-bridge/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/plugin-bridge/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..95859f5 Binary files /dev/null and b/store/@{FutureOSS}/plugin-bridge/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..3f4daf8 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..3e1ce1a Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/breaker.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/breaker.cpython-312.pyc new file mode 100644 index 0000000..ab08a67 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/breaker.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/state.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/state.cpython-312.pyc new file mode 100644 index 0000000..f050b66 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/circuit/__pycache__/state.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..d8dc97e Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/config.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000..9b43cea Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/config.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/enhancer.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/enhancer.cpython-312.pyc new file mode 100644 index 0000000..ce5e276 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/enhancer.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/manager.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/manager.cpython-312.pyc new file mode 100644 index 0000000..2e7986a Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/manager.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/proxy.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/proxy.cpython-312.pyc new file mode 100644 index 0000000..5f11982 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/proxy.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/registry.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/registry.cpython-312.pyc new file mode 100644 index 0000000..2922fd4 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/core/__pycache__/registry.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/fallback/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/fallback/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..d1ae97d Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/fallback/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/fallback/__pycache__/handler.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/fallback/__pycache__/handler.cpython-312.pyc new file mode 100644 index 0000000..4399c40 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/fallback/__pycache__/handler.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/isolation/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/isolation/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..ab32ad5 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/isolation/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/isolation/__pycache__/timeout.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/isolation/__pycache__/timeout.cpython-312.pyc new file mode 100644 index 0000000..05b9795 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/isolation/__pycache__/timeout.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/models/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/models/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..629a12b Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/models/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/models/__pycache__/plugin_info.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/models/__pycache__/plugin_info.cpython-312.pyc new file mode 100644 index 0000000..0565b49 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/models/__pycache__/plugin_info.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..67f3280 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/auto_fix.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/auto_fix.cpython-312.pyc new file mode 100644 index 0000000..0854c57 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/auto_fix.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/health.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/health.cpython-312.pyc new file mode 100644 index 0000000..5244482 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/recovery/__pycache__/health.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/retry/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/retry/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..f45ade8 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/retry/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/retry/__pycache__/handler.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/retry/__pycache__/handler.cpython-312.pyc new file mode 100644 index 0000000..3c8b2d5 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/retry/__pycache__/handler.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/utils/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/utils/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..f5fc908 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/utils/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader-pro.disabled/utils/__pycache__/logger.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader-pro.disabled/utils/__pycache__/logger.cpython-312.pyc new file mode 100644 index 0000000..b4e05c2 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader-pro.disabled/utils/__pycache__/logger.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-loader/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/plugin-loader/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..3539698 Binary files /dev/null and b/store/@{FutureOSS}/plugin-loader/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/plugin-storage/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/plugin-storage/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..479e290 Binary files /dev/null and b/store/@{FutureOSS}/plugin-storage/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/signature-verifier/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/signature-verifier/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..a3b3aeb Binary files /dev/null and b/store/@{FutureOSS}/signature-verifier/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/webui/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/webui/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..9852bf6 Binary files /dev/null and b/store/@{FutureOSS}/webui/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/webui/core/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/webui/core/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..59e0ae6 Binary files /dev/null and b/store/@{FutureOSS}/webui/core/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/webui/core/__pycache__/server.cpython-312.pyc b/store/@{FutureOSS}/webui/core/__pycache__/server.cpython-312.pyc new file mode 100644 index 0000000..b18b8d7 Binary files /dev/null and b/store/@{FutureOSS}/webui/core/__pycache__/server.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/webui/static/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/webui/static/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..f220964 Binary files /dev/null and b/store/@{FutureOSS}/webui/static/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/webui/static/__pycache__/assets.cpython-312.pyc b/store/@{FutureOSS}/webui/static/__pycache__/assets.cpython-312.pyc new file mode 100644 index 0000000..37f9dcd Binary files /dev/null and b/store/@{FutureOSS}/webui/static/__pycache__/assets.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/webui/templates/__pycache__/__init__.cpython-312.pyc b/store/@{FutureOSS}/webui/templates/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..796aeb4 Binary files /dev/null and b/store/@{FutureOSS}/webui/templates/__pycache__/__init__.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/webui/templates/__pycache__/layout.cpython-312.pyc b/store/@{FutureOSS}/webui/templates/__pycache__/layout.cpython-312.pyc new file mode 100644 index 0000000..123ff85 Binary files /dev/null and b/store/@{FutureOSS}/webui/templates/__pycache__/layout.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/ws-api/__pycache__/events.cpython-312.pyc b/store/@{FutureOSS}/ws-api/__pycache__/events.cpython-312.pyc new file mode 100644 index 0000000..1e7cffa Binary files /dev/null and b/store/@{FutureOSS}/ws-api/__pycache__/events.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/ws-api/__pycache__/main.cpython-312.pyc b/store/@{FutureOSS}/ws-api/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..bedad71 Binary files /dev/null and b/store/@{FutureOSS}/ws-api/__pycache__/main.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/ws-api/__pycache__/middleware.cpython-312.pyc b/store/@{FutureOSS}/ws-api/__pycache__/middleware.cpython-312.pyc new file mode 100644 index 0000000..81e0ec2 Binary files /dev/null and b/store/@{FutureOSS}/ws-api/__pycache__/middleware.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/ws-api/__pycache__/router.cpython-312.pyc b/store/@{FutureOSS}/ws-api/__pycache__/router.cpython-312.pyc new file mode 100644 index 0000000..203457c Binary files /dev/null and b/store/@{FutureOSS}/ws-api/__pycache__/router.cpython-312.pyc differ diff --git a/store/@{FutureOSS}/ws-api/__pycache__/server.cpython-312.pyc b/store/@{FutureOSS}/ws-api/__pycache__/server.cpython-312.pyc new file mode 100644 index 0000000..c7edf55 Binary files /dev/null and b/store/@{FutureOSS}/ws-api/__pycache__/server.cpython-312.pyc differ diff --git a/tools/__pycache__/sign_core_plugins.cpython-312.pyc b/tools/__pycache__/sign_core_plugins.cpython-312.pyc new file mode 100644 index 0000000..4cf7f17 Binary files /dev/null and b/tools/__pycache__/sign_core_plugins.cpython-312.pyc differ diff --git a/tools/__pycache__/sign_plugin_loader.cpython-312.pyc b/tools/__pycache__/sign_plugin_loader.cpython-312.pyc new file mode 100644 index 0000000..a44e864 Binary files /dev/null and b/tools/__pycache__/sign_plugin_loader.cpython-312.pyc differ diff --git a/tools/__pycache__/sign_plugins.cpython-312.pyc b/tools/__pycache__/sign_plugins.cpython-312.pyc new file mode 100644 index 0000000..57607e6 Binary files /dev/null and b/tools/__pycache__/sign_plugins.cpython-312.pyc differ diff --git a/tools/__pycache__/sign_single_plugin.cpython-312.pyc b/tools/__pycache__/sign_single_plugin.cpython-312.pyc new file mode 100644 index 0000000..19bb313 Binary files /dev/null and b/tools/__pycache__/sign_single_plugin.cpython-312.pyc differ diff --git a/tools/__pycache__/test_signature.cpython-312.pyc b/tools/__pycache__/test_signature.cpython-312.pyc new file mode 100644 index 0000000..1a84f4b Binary files /dev/null and b/tools/__pycache__/test_signature.cpython-312.pyc differ