核心功能
caldav-cli 是一款基于 Node.js 的命令行 CalDAV 客户端,专为需要在终端环境中高效管理多平台日历的用户设计。支持 Apple iCloud、Google Calendar(OAuth2)、Yandex 及任意自定义 CalDAV 服务器,实现跨平台日历数据的统一操作。
显著优点
1. 安全凭据管理:采用操作系统级钥匙串存储(macOS Keychain、Linux libsecret、Windows Credential Vault),密码、OAuth2 刷新令牌及客户端凭证均不落地明文,配置文件仅保留非敏感元数据并设 0600 权限。
2. 灵活的交互模式:events create 与 account add 支持全交互式向导、全命令行参数及混合模式,兼顾新手友好与自动化脚本需求。
3. 多账户与多格式输出:可配置多个账户并指定默认账户,支持按账户、日历名称、日期范围筛选事件,输出格式可选人类可读表格或 JSON,便于管道化处理。
4. 自动迁移机制:旧版本存储于配置文件的 OAuth2 凭证会在首次运行时自动迁移至钥匙串,降低升级摩擦。
潜在局限
- Node.js 依赖:要求 Node.js ≥ 18,对无 Node 环境的系统增加部署成本。
- OAuth2 配置门槛:Google Calendar 需用户自行在 Google Cloud Console 创建项目、启用 API 并配置桌面应用 OAuth 客户端,流程对非技术用户较复杂。
- 功能边界:仅覆盖事件查看与创建,不支持日历管理(如新建/删除日历)、重复规则(RRULE)编辑、附件上传等高级 CalDAV 特性。
- 生态依赖:依赖
@napi-rs/keyring实现跨平台钥匙串访问,若该库在特定 Linux 发行版或容器环境存在兼容性问题,可能影响凭据存储。
适合人群
- 偏好终端工作流的开发者与运维人员
- 需批量处理日历数据或集成至 CI/CD 管道的自动化场景
- 重视凭据安全、不愿在配置文件保存明文密码的隐私敏感用户
常规风险
| 风险类别 | 说明 |
|---------|------|
| 供应链安全 | 通过 npm 全局安装,需信任 `caldav-cli` 及其依赖(含原生模块 `@napi-rs/keyring`)的维护者 |
| OAuth2 令牌泄露 | 虽存储于系统钥匙串,但若主机遭恶意软件控制,仍可能通过内存读取或钥匙串提权获取 |
| 时间解析风险 | 日期时间参数依赖用户输入格式正确性,时区处理未在文档中明确说明,跨时区场景需谨慎验证 |
| 数据丢失 | 删除账户或操作事件前无二次确认机制(命令行标志模式),脚本执行时易误操作 |
使用建议
首次配置建议通过交互向导完成,确认连接测试通过后再启用自动化脚本。Google OAuth2 凭证建议专用项目隔离权限,定期轮换客户端密钥。敏感环境可考虑配合 sudo -K 或容器隔离降低钥匙串暴露面。