2个版本

0.2.1 2019年3月28日
0.2.0 2019年1月8日

#2#bellhop


bellhop-demo 中使用

Apache-2.0

105KB
2.5K SLoC

Rust 2K SLoC // 0.0% comments SQL 346 SLoC // 0.1% comments Handlebars 282 SLoC // 0.0% comments JavaScript 72 SLoC

Bellhop

Bellhop是一个用于预订不同资产(如机器或IP地址)的Web应用程序


简介

目的

你是一个有十个成员的团队,共享三个测试环境吗?你是否保持一个谁在使用什么IP地址的电子表格?需要一种方式来跟踪谁借用了哪个虚拟机吗?

如果你对上述任何问题回答是,Bellhop可能能帮助你。Bellhop是一个超级简单的资产预订工具,可以跟踪谁在使用什么,直到何时。

有关更多信息,包括实时演示,请访问 bellhop.rs

项目结构

  • bellhop/ - 实现Bellhop大多数功能的核心库。
  • bellhop-demo/ - 一个可运行的示例,演示如何添加钩子和启动服务器。
  • bellhop-hook-email/ - 当你的租约即将到期时发送电子邮件的钩子。
  • bellhop-hook-jenkins/ - 为每个事件启动Jenkins作业的钩子。
  • bellhop-auth-dummy/ - 只需要电子邮件地址的认证插件。
  • bellhop-auth-header/ - 基于头创建用户的认证插件。

设计

Bellhop旨在进行大量定制并内部安装。可以通过编写钩子(如 bellhop-hook-jenkins)添加更多功能。认证也是可定制的,具有可插拔的模块,如 bellhop-auth-header

用法

到目前为止,Bellhop更像是一组你自己组装成Web应用程序的crate,而不是一个Web应用程序本身。

一个好的起点是运行 bellhop-demo,然后使用它作为示例来构建自己的部署。

首次设置

以下说明大致针对Ubuntu,但应该与其他平台相对相似。Bellhop定期为Ubuntu和OS X编译,并且应该可以在Windows上编译。

安装Rust

该项目需要最新的Rust夜间版。您可以使用 rustup 安装。

$ curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly

安装PostgreSQL

Bellhop使用 PostgreSQL 作为其数据库。任何大于或等于9.5的版本都应正常工作。

Ubuntu/Debian

# Install the server and client libraries.
$ sudo apt install postgresql-9.5 postgresql-client libpq-dev

# Create a user, identified with a password.
$ sudo -u postgres createuser -P bellhop

# Create a new database owned by the same user.
$ sudo -u postgres createdb -O bellhop bellhop

OS X (Homebrew)

https://brew.sh.cn/ 安装 Homebrew

# Install the server and client libraries.
brew install postgres
brew services start postgresql

# Create a user, identified with a password.
createuser -P bellhop

# Create a new database owned by the same user.
createdb -O bellhop bellhop

安装 Diesel

要执行数据库迁移,您需要安装 diesel_cli

$ cargo install diesel_cli --no-default-features --features postgres

获取 Bellhop

获取所有组件的最简单方法是克隆 Bellhop 仓库

$ git clone https://github.com/bellhop-rs/bellhop

执行迁移

核心应用程序以及一些钩子都需要应用数据库迁移才能使应用程序正常运行。

# Make sure to update this line with the password supplied earlier.
$ export DATABASE_URL=postgres://bellhop:<password>@localhost/bellhop

# Apply the core application's migrations. Note: `bellhop` refers to this repo's `bellhop` subdirectory.
$ cd bellhop
$ diesel migration run

# Apply any hook's migrations.
$ cd ../bellhop-hook-jenkins
$ diesel migration run

最后运行 Bellhop

以“演示”模式运行 Bellhop

$ cargo run --bin bellhop-demo

请注意,bellhop-demo 登录不需要任何密码。它实际上并不适合不进行一些定制的生产使用。

开发

生成 bellhop-client

bellhop-client 是使用 openapi-generator 生成的。

要重新生成 API 客户端库

$ openapi-generator generate \
   -i bellhop/openapi/bellhop.yaml \
   -g rust \
   -o bellhop-client \
   --skip-validate-spec \
   --library reqwest \
   --additional-properties packageName=bellhop-client

许可协议

Bellhop 采用以下许可协议

贡献

除非您明确说明,否则您根据 Apache-2.0 许可证提交给 Bellhop 的任何有意贡献都应按上述方式许可,不附加任何额外条款或条件。


lib.rs:

一个根据标题进行用户身份验证的 bellhop::auth::Auth 实现。

路由

不提供任何路由。

捕获器

不提供任何捕获器。

配置

Rocket.toml 中可以指定两个可选的配置选项

  • auth_header:从其中提取电子邮件地址的标题名称(默认:X-Bellhop-Email)。
  • auth_header_email_pattern': 一个用于电子邮件地址的命名捕获组的正则表达式 for (默认: (?P.*)`)

示例

use bellhop::Bellhop;
use bellhop_auth_header::Header;

fn main() {
    Bellhop::default()
        .auth(Header)
        .start()
}

依赖项

~19–31MB
~500K SLoC