#domain #hosting #open-stack #cli-tool #networking #vps

app lunanode

厌倦了使用Web界面来管理您的VPS、电子邮件和域名提供商?看看这个工具!这是Lunanode的CLI工具:一家加拿大VPS托管公司

5个版本

0.1.4 2022年12月4日
0.1.3 2022年12月4日
0.1.2 2022年12月4日
0.1.1 2022年12月4日
0.1.0 2022年10月9日

#142 in 电子邮件

AGPL-3.0-only

84KB
1K SLoC

lunanode

这是一个用于与LunaNode的OpenStack兼容API交互的API。这个crate目前只覆盖了LunaNode API的最基本功能。目前实现43/98(44%)的API调用。如果您想贡献更多功能,请随时提交MR。

  • 虚拟机 [8/21]
    • 列表 [X]
    • 启动 [X]
    • 停止 [X]
    • 重启 [X]
    • 磁盘交换 [ ]
    • 救援 [ ]
    • 上架 [ ]
    • 下架 [ ]
    • 删除 [ ]
    • 信息 [X]
    • 重映像 [ ]
    • 调整大小 [ ]
    • VNC [ ]
    • IP [1/3]
      • 浮动IP添加 [ ]
      • 浮动IP删除 [ ]
      • IP列表 [X]
    • IP添加 [X]
    • IP删除 [X]
    • 安全组添加 [ ]
    • 安全组删除 [ ]
  • 镜像 [4/7]
    • 获取 [ ]
    • 列表 [X]
    • 详细信息 [X]
    • 删除 [X]
    • 复制 [X]
    • 重命名 [ ]
    • 检索 [ ]
  • 卷 [1/12]
    • 创建 [ ]
    • 列表 [X]
    • 信息 [ ]
    • 附加 [ ]
    • 分离 [ ]
    • 扩展 [ ]
    • 重命名 [ ]
    • 删除 [ ]
    • 快照 [0/4]
      • 创建 [ ]
      • 列表 [ ]
      • 复制 [ ]
      • 删除 [ ]
  • 浮动IP [1/3]
    • 列表 [X]
    • 添加 [ ]
    • 删除 [ ]
  • 网络 [1/3]
    • 列表 [X]
    • 添加 [ ]
    • 删除 [ ]
  • 安全组 [0/7]
    • 列表 [ ]
    • 创建 [ ]
    • 删除 [ ]
    • 重命名 [ ]
    • 规则列表 [ ]
    • 规则插入 [ ]
    • 规则删除 [ ]
  • 脚本 [0/5]
    • 列表 [ ]
    • 获取 [ ]
    • 创建 [ ]
    • 更新 [ ]
    • 删除 [ ]
  • SSH密钥 [1/3]
    • 列表 [X]
    • 添加 [ ]
    • 移除 [ ]
  • 计划 [1/1]
    • 列表 [X]
  • 区域 [1/1]
    • 列表 [X]
  • 监控 [3/10]
    • 检查 [2/4]
      • 列表 [X]
      • 类型 [X]
      • 添加 [ ]
      • 移除 [ ]
    • 联系 [1/4]
      • 列表 [X]
      • 添加 [ ]
      • 移除 [ ]
    • 警报 [0/3]
      • 列表 [ ]
      • 添加 [ ]
      • 移除 [ ]
  • 电子邮件 [14/14]
    • 使用情况 [X]
    • 域名 [5/5]
      • 列表 [X]
      • 添加 [X]
      • 删除 [X]
      • DKIM [2/2]
        • 设置 [X]
        • 取消设置 [X]
    • 用户 [4/4]
      • 列表 [X]
      • 添加 [X]
      • 删除 [X]
      • 设置密码 [X]
    • 别名 [3/3]
      • 列表 [X]
      • 添加 [X]
      • 删除 [X]
  • DNS [9/10]
    • 区域 [3/3]
      • 列表 [X]
      • 添加 [X]
      • 删除 [X]
    • 记录 [3/3]
      • 列表 [X]
      • 添加 [X]
      • 删除 [X]
    • 动态 [3/4]
      • 列表 [X]
      • 添加 [X]
      • 更新 [ ]
      • 删除 [X]
  • 账单 [1/1]
    • 信用 [X]

安装

cargo安装 lunanode

API密钥

LUNANODE_API_KEYLUNANODE_KEY_IDLUNANODE_API_PARTIALKEYLUNANODE_API_KEY的前64个字符)添加到您的环境变量中。如果没有设置这些变量,工具将无法运行。您也可以通过命令行参数手动指定密钥。

用法

请参阅lunanode help屏幕。

可用子命令

  • 账单
  • DNS
  • 动态
  • floating(用于LunaNode的浮动IP系统)
  • 镜像
  • 网络
  • record (DNS)
  • ssh密钥
  • 虚拟机
  • 区域

请注意,目前仅支持通过 list/ 端点获取数据。请参阅帮助部分获取更多详细信息,例如: lunanode image help

待办事项(寻找贡献者)

  • 简化代码以减少样板代码。特别是,当需要从它们中获取相同的信息时,编写每个枚举变体都很烦人。
  • 测试!
  • 创建更详细的文档。 #[deny(missing_docs)] 已开启,但代码中的某些决策解释得不是很好。
  • 覆盖每个API端点。
  • 更严格的类型检查。某些属性,即使它们以字符串形式接收,也应该是一些类型的 enum。将每个非字符串类型转换为某种枚举。
  • UUID应该是UUID类型,而不是字符串。我找到的唯一能够做到这一点的库是 Uuid,它似乎在序列化时不包含连字符,这会破坏Lunanode...令人烦恼。
  • 子网应该有更严格的类型检查。它们应该始终是IP/子网组合,作为两个字段(std::net::Ipv4Addr, i32(0..32))。
  • 自动从名称或其他识别信息创建ID,而不是使用RESP API的ID系统。
    • 例如: email user add tait@tait.tech 应自动获取执行此调用所需的域名ID: email user add DOMAIN_ID tait@tait.tech
    • 另一个例子: vm shutdown my_webserver 会自动扩展以查找名为 my_webserver 的虚拟机并将其关闭,将名称扩展为UUID: vm shutdown ffff-ffff-ffff-ffffffffffffffff

支持此项目

依赖项

~8–10MB
~211K SLoC