2个版本
0.2.1 | 2019年3月28日 |
---|---|
0.2.0 | 2019年1月8日 |
#3 in #bellhop
用于 bellhop-demo
105KB
2.5K 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
铃铛工使用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 License, Version 2.0, (LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
贡献
除非您明确说明,否则根据Apache-2.0许可证定义的您提交给Bellhop的任何贡献,都应按照上述方式许可,不附加任何额外条款或条件。
lib.rs
:
bellhop::auth::Auth
的实现,根据用户的电子邮件地址(仅电子邮件地址)进行用户验证。
使用HTTP Cookie来存储已登录用户。
路由
提供了一些路由
/auth/dummy/login
:处理登录。/auth/dummy/logout
:删除存储的Cookie。
捕获器
提供了一个错误捕获器
401 未授权
:重定向到/auth/dummy/login
。
示例
use bellhop::Bellhop;
use bellhop_auth_dummy::Dummy;
fn main() {
Bellhop::default()
.auth(Dummy)
.start()
}
依赖项
~20–31MB
~505K SLoC