26个版本 (6个主要版本)

6.1.0 2024年5月10日
5.0.1 2024年4月4日
4.0.0 2024年3月31日
3.0.0 2024年2月29日
0.1.8 2022年3月19日

#842 in 网络编程

每月24次下载

MIT许可证

365KB
7K SLoC

hrobot-rs 最新版本 文档 codecov

hrobot 是一个用于与 Hetzner Robot API 交互的非官方异步Rust客户端

请参阅 AsyncRobot 结构体以获取支持的所有API端点列表。

免责声明: 作者(除作为客户外)与Hetzner无关,该crate绝不会被Hetzner Online GmbH认可或支持。

使用要求

需要Hetzner WebService/app用户才能使用此库。

如果您已经有了Hetzner账户,您可以通过 Hetzner Robot 网页界面在 设置/首选项 下创建一个。

示例

以下是一个快速示例,展示了如何实例化 AsyncRobot 客户端对象并获取由 username 标识的账户拥有的所有专用服务器列表

use hrobot::*;

#[tokio::main]
async fn main() {
    // Robot is instantiated using the environment
    // variables HROBOT_USERNAME an HROBOT_PASSWORD.
    let robot = AsyncRobot::default();

    for server in robot.list_servers().await.unwrap() {
        println!("{name}: {product} in {location}",
            name = server.name,
            product = server.product,
            location = server.dc
        );
    }
}

运行上述示例应产生以下类似输出

foo: AX51-NVMe in FSN1-DC18
bar: Server Auction in FSN1-DC5

API端点实现进度

目前已覆盖整个Hetzner Robot API!

由于成本和运行服务器的干扰,一些端点尚未经过测试,因此请参考以下部分以获取端点的详细概述。

详细的API概述。

警告!

[^1] 未测试,请自行承担风险。

[^2] 未由Hetzner官方文档,请自行承担风险。

  • 服务器。
    • 列出服务器。
    • 获取服务器。
    • 重命名服务器。
    • 取消。
      • 获取取消状态。
      • 取消服务器。[^1]
      • 撤回取消。[^1]
    • 撤回服务器订单。[^1] - 已由Hetzner弃用。
  • IP。
    • 列出IP。
    • 获取IP。
    • 更新流量警告。
    • 分离MAC。
      • 获取分离MAC。
      • 生成分离MAC。[^1]
      • 禁用分离MAC。[^1]
    • 取消。
      • 获取取消状态。
      • 取消IP地址[^1]
      • 撤销取消[^1]
  • 子网.
    • 列出子网。
    • 获取子网。
    • 分离MAC。
      • 获取分离MAC。
      • 生成分离MAC。[^1]
      • 禁用分离MAC。[^1]
    • 取消。[^1]
      • 获取取消状态。[^1]
      • 取消子网。[^1]
      • 撤回取消。[^1]
  • 重置
    • 列出所有服务器的重置选项。
    • 获取单个服务器的重置选项
    • 触发重置。[^1]
  • 故障转移
    • 获取故障转移IP。[^1]
    • 切换故障转移流量的路由。[^1]
    • 禁用故障转移路由。[^1]
  • 网络唤醒
    • 检查Wake-on-LAN的可用性。
    • 向服务器发送Wake-on-LAN数据包。
  • 引导配置
    • 获取所有引导配置的状态。
    • 救援。
      • 获取救援配置。
      • 获取最后的救援配置。
      • 启用救援配置。
      • 禁用救援配置。
    • Linux。
      • 获取Linux配置。
      • 获取最后的Linux配置。
      • 启用Linux配置。
      • 禁用Linux配置。
    • VNC。
      • 获取VNC配置。
      • 获取最后的VNC配置。[^2]
      • 启用VNC配置。
      • 禁用VNC配置。
    • Windows。[^1]
      • 获取Windows配置。[^1]
      • 获取最后的Windows配置。[^1] [^2]
      • 启用Windows配置。[^1]
      • 禁用Windows配置。[^1]
    • Plesk。[^1]
      • 获取Plesk配置。[^1]
      • 获取最后的Plesk配置。[^1] [^2]
      • 启用Plesk配置。[^1]
      • 禁用Plesk配置。[^1]
    • CPanel。[^1]
      • 获取CPanel配置。[^1]
      • 获取最后的CPanel配置。[^1] [^2]
      • 启用CPanel配置。[^1]
      • 禁用CPanel配置。[^1]
  • 反向DNS。
    • 列出反向DNS条目。
    • 获取反向DNS条目
    • 创建反向DNS条目。
    • 更新/创建反向DNS条目。
  • 流量。
    • 查询流量数据。
  • SSH密钥。
    • 列出SSH密钥
    • 上传新的SSH密钥
    • 获取SSH密钥
    • 重命名SSH密钥
    • 删除SSH密钥
  • 服务器订购。
    • 产品。
      • 列出产品。
      • 获取产品信息。
      • 列出最近的产品交易。[^1]
      • 获取特定的交易信息。[^1]
      • 订购新产品。
    • 市场(拍卖)。
      • 列出市场产品。
      • 获取市场产品信息。
      • 列出最近的市场交易。[^1]
      • 获取特定的市场交易信息。[^1]
      • 从市场订购新服务器。
    • 附加组件。
      • 列出服务器的可用附加组件。
      • 列出最近的附加组件交易。[^1]
      • 获取特定的附加组件交易信息。[^1]
      • 为服务器订购附加组件。
  • 存储箱。
    • 列出存储箱。
    • 获取特定的存储箱。
    • 更改存储箱密码。
    • 切换存储箱服务。
      • 启用/禁用Samba
      • 启用/禁用WebDAV
      • 启用/禁用SSH
      • 启用/禁用外部可达性
      • 启用/禁用快照目录可见性。
    • 快照。
      • 列出存储箱快照。
      • 创建存储箱快照。
      • 删除存储箱快照。
      • 将存储箱还原到快照。
      • 更改快照的注释。
      • 获取存储箱快照计划。
      • 编辑存储箱快照计划。
    • 子账户。
      • 列出子账户。
      • 创建子账户。
      • 更新子账户配置。
      • 删除子账户。
      • 更改子账户密码。
  • 防火墙。
    • 获取服务器的防火墙配置。
    • 将防火墙配置应用于服务器。
      • 覆盖规则。
      • 应用模板。
    • 清除服务器的防火墙配置。
    • 模板。
      • 列出防火墙模板。
      • 创建防火墙模板。
      • 获取防火墙模板。
      • 更新防火墙模板。
      • 删除防火墙模板。
  • vSwitch。
    • 列出vSwitch。
    • 创建新的vSwitch。
    • 获取vSwitch。
    • 更新vSwitch。
    • 取消vSwitch。
    • 将服务器添加到vSwitch。
    • 从vSwitch中删除服务器。

[^1]: 未经过测试,但应该可以工作。自行承担风险。

[^2]: 由Hetzner未官方文档化,自行承担风险。

测试

测试分为两类

  • 单元测试。 这些测试完全不接触 Hetzner API,通常测试库中某些结构(如从已知 API 输出进行序列化/反序列化)所做出的假设。这些测试始终是安全的,并且不需要 Hetzner 凭据。

  • 集成测试。 ⚠️

    这些测试 确实 会与 Hetzner API 交互,因此需要设置以下两个环境变量

    • HROBOT_USERNAME
    • HROBOT_PASSWORD

    这些测试将 ⚠️ 购买一个拍卖服务器 ⚠️ 并且(理想情况下)在测试运行后取消 服务器。

    它们以 ⚠️ 破坏性 ⚠️ 的方式与以下环境变量提供的资源交互

    • HETZNER_INTEGRATION_TEST_STORAGEBOX_ID 指定了一个预先分配的存储箱资源,存储箱相关的测试将针对该资源运行。

依赖关系

~17–28MB
~495K SLoC