简体中文 | English
这是 SEATiDE RESTful API 的后端部分,主要用于简化与阿里云 ECS 的相关交互,例如创建、开启、删除实例等,同时也用来拓展 SEATiDE 的相关 API 平台,比如提供用户注册和认证服务,同时存储用户数据(比如等级、MC 用户名)等用于将来可能的项目。
使用阿里云 RAM 账户生成的 AccessKeyId 和 AccessKeySecret 来操控 ECS,所有的操作都会被写入数据库。所有对 action
接口的 POST 请求都需要一个管理员的登录凭证。
- POST
/api/ecs/v1/action
使用type
参数来指定操作类型delete
— 强制删除当前实例,不保存任何数据new
— 创建一个新的实例,然后分配 IP,然后启动它start
— 启动一个实例stop
— 停止一个实例
- GET
/api/ecs/v1/describe/:name
available
— 查看指定类型(在config.yml
中配置)的 ECS 是否有库存instance
— 获取当前配置中的 ECS 的详细信息status
— 获取当前已创建的 ECS 的状态信息price
— 获取当前配置中的 ECS 的每小时估价(首小时)last-invoke
— (仅当deploy
设置为true
时)获取最近一次指令的执行结果
如果在 config.yml
中将 deploy
设定为 true
,那么在实例被创建并启动以后,会自动执行位于 src
目录下的 run.sh
,请确保此时该文件存在。注: 在 run.sh
中不能使用 ~
来代替 home 路径,否则会导致错误。
对用户信息的增删改查,使用 type
参数来指定操作类型。所有对 action
接口的 POST 请求都需要一个管理员的登录凭证。
- POST
/api/user/v1/action
create
— 创建一个新的用户,必填三个参数:username
用户名、password
密码明文、email
电子邮箱get
— 获取某一用户的信息,不包括密码delete
— 删除某一用户alter
— 更改某用户的信息,使用键—值对来表示要更改的信息,不支持密码changepasswd
— 更改某用户的密码
- POST
/api/user/v1/auth
auth
— 使用用户名和密码获取一个 7 天有效期的登录凭证(token)check
— 检查登录凭证是否有效,失效或者过期
注意: 必须在 config.yml
中的 secret
项填入一个随机的字符串才能正常生成 token。
- Python 3.8+
- MySQL
- 下载本项目
git clone https://github.com/seatidemc/backend.git
- 可选,创建虚拟环境
cd backend
python -m venv .
- 安装依赖
pip install ./requirements.txt
cd src
unzip ./localdep.zip # 修改过的阿里云 ECS SDK
- 初始化数据库。直接将
.sql
文件里的内容复制到 MySQL 窗口中执行即可。如果有任何问题发生,请先解决,不要继续。 - 把
config.example.yml
重命名为config.yml
,然后修改内容。请确保填写所有required
项目。
mv config.example.yml config.yml
vim config.yml
- 可选,利用
python
来启动 API。可以在config.yml
里面设置是否为production
(生产模式),如果是则会调用waitress
在3811
端口打开一个生产模式服务器,如果不是则会调用flask
自身在5000
端口打开一个测试服务器。
python ./app.py