19个版本 (12个破坏性版本)
0.13.0 | 2022年9月17日 |
---|---|
0.11.0 | 2022年8月24日 |
#1321 在 数据库接口
每月58 次下载
665KB
3K SLoC
基于rustdb数据库的Axum Web服务器,具有数据库浏览、密码散列、数据库复制、邮件传输和定时任务。
安装和启动服务器
如果尚未安装,首先安装Rust。然后使用命令提示符安装rustweb:
cargo install rustweb
从命令提示符更改到要存储数据库的目录(文件将命名为rustweb.rustdb)。使用以下命令启动rustweb:
rustweb 3000
这将启动rustweb服务器,监听端口3000(您可以使用任何可用的端口)。然后您可以通过http://localhost:3000/Menu进行浏览。从这里可以链接到手册、执行SQL、模式列表和其他链接。
安全性
最初登录安全被禁用。要启用它:
(1) 编辑函数login.hash并更改盐字符串。
(2) 在login.user中创建一条记录。
(3) 使用登录菜单链接设置密码。
(4) 编辑函数login.get(请参阅其中包含的说明)。
数据库复制
在您想要存储复制的数据库的目录(文件夹)中启动Rustweb,指定-rep选项
例如
rustweb 2000 --rep https://mydomain.com
如果已启用登录安全,您需要指定登录详细信息(从login.user表中获得),例如:
--login "uid=1; hpw=0xaaa023850abbdff839894888dd8e8abbceaaa023855abbdff839894888dd8e8c"
如果数据库非常大,可能更实用的是使用FTP获取数据库的初始副本,否则将自动获取副本。
通过在日志.Transaction表中插入记录来启用复制。
如果所有复制服务器都是最新的,则可以定期删除这些记录。
电子邮件
可以使用电子邮件模式发送电子邮件。
(1) 在email.SmtpServer中创建一条记录。
(2) 在email.msg中创建一条电子邮件。
(3) 将其插入到 email.Queue
(4) 调用内置函数 EMAILTX()
如果无法发送邮件,且错误是暂时的,它将被插入到 email.Delayed 表中,稍后重试。
永久性错误记录在 email.SendError
定时任务
可以通过在 timed.Job 中创建记录,在指定时间调用一个无参数的命名 SQL 函数。
这被用于邮件系统重试暂时的邮件发送错误。
只读请求
GET 请求使用数据库的只读副本处理,所做的任何更改都不会保存。这对于处理时间较长的请求很有用,因为其他请求可以并行处理。可以通过添加查询参数 "save" 来覆盖。
POST 请求假定是读写操作,可以通过添加查询参数 "readonly" 来覆盖。
参数和选项
用法
rustweb [OPTIONS]
参数
监听端口
选项
-h, --help 打印帮助信息
-i, --ip 监听的 IP 地址 [默认: 0.0.0.0]
-l, --login 复制使用的登录 cookie [默认: ]
-m, --mem 页缓存内存限制(以 MB 为单位)[默认: 10]
-r, --rep 要复制的服务器 [默认: ]
--tracemem 跟踪内存修剪
--tracetime 跟踪查询时间
-V, --version 打印版本信息
链接
crates.io : https://crates.io/crates/rustweb
依赖项
~17–32MB
~572K SLoC