# configd **Repository Path**: sps1998/configd ## Basic Information - **Project Name**: configd - **Description**: 通用命令行配置管理工具,通过Unix域套接字与远程守护进程通信 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-07 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # configd 一个通用的命令行配置管理工具,通过Unix域套接字与远程守护进程通信。 ## 项目目标 - 提供统一的命令行交互接口 - 支持动态加载命令插件(.so动态库) - 通过Unix域套接字与远程守护进程通信 - 实现智能命令补全和帮助系统 - 支持权限控制和命令参数校验 ## 技术栈 - **语言**: C语言 - **通信**: Unix域套接字 (UDS) - **插件**: 动态库加载 (dlopen/dlsym) - **CLI**: Readline库 - **配置**: 自定义YAML格式 ## 架构设计 ``` ┌─────────────────────────────────────────────────────────────┐ │ configd CLI │ │ ┌─────────────┐ ┌──────────────┐ ┌───────────────────┐ │ │ │ CLI Engine │ │ Config Parser│ │ DL Loader │ │ │ │ (命令交互) │ │ (配置解析) │ │ (动态库加载) │ │ │ └──────┬──────┘ └──────┬───────┘ └────────┬──────────┘ │ │ │ │ │ │ │ └────────────────┼───────────────────┘ │ │ ▼ │ │ ┌─────────────┐ │ │ │ RPC Client │ │ │ │ (Unix Socket)│ │ │ └──────┬──────┘ │ └────────────────────────┼──────────────────────────────────┘ │ /tmp/remote_daemon.sock ▼ ┌─────────────────────────────────────────────────────────────┐ │ Remote Daemon │ │ ┌─────────────┐ ┌──────────────┐ │ │ │ RPC Server │ │ Handlers │ │ │ │ (请求处理) │ │ (业务逻辑) │ │ │ └─────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 目录结构 ``` configd/ ├── include/ # 头文件 │ └── configd.h # 核心数据结构和API声明 ├── src/ # 源代码 │ ├── main.c # 主入口 │ ├── cli_engine.c # 命令行引擎(补全、历史) │ ├── config_parser.c # 配置文件解析 │ ├── dl_loader.c # 动态库加载 │ ├── rpc_client.c # RPC客户端 │ ├── rpc_server.c # RPC服务端 │ └── remote_daemon.c # 远程守护进程 ├── test/ # 测试模块 │ ├── libconfigd_cli.c # CLI插件示例 │ └── test_module.c # 测试模块示例 ├── configd.cfg # 命令配置文件 ├── Makefile # 构建脚本 └── README.md # 项目说明 ``` ## 编译安装 ```bash # 编译 make # 安装 make install # 清理 make clean ``` ## 使用方法 ```bash # 启动远程守护进程(后台) ./bin/remote_daemon & # 启动CLI ./bin/configd # 命令示例 configd> system ping configd> system echo "hello world" configd> system status configd> system exec "ls -l" ``` ## 配置文件格式 配置文件 `configd.cfg` 定义命令树结构: ```yaml socket_path: "/tmp/remote_daemon.sock" cmd_begin _conf = network _obj_type_keyword = system _cmd_keyword = echo _cmd_name = system.echo _cmd_function = lib/libconfigd_cli.so:configd_echo _popedom = write _para = [ keyword=message ] [required] [ type=string ] [ meaning_c=消息内容 ] _obj_meaning_c = 系统管理 _act_meaning_c = 回显消息 cmd_end ``` ## 命令补全 支持多级命令补全: ```bash configd> [Tab] # 显示所有根命令 configd> s[Tab] # 补全为 system configd> system [Tab] # 显示子命令列表 configd> system e[Tab] # 显示 echo, exec configd> system ex[Tab] # 补全为 exec ``` ## 协议格式 RPC请求/响应采用长度前缀格式: ``` +----------+------------------------+ | 4字节长度 | JSON载荷 | +----------+------------------------+ ``` 请求示例: ```json {"method":"system.ping","params":{}} ``` 响应示例: ```json {"code":0,"result":"pong"} ``` ## 许可证 MIT License