简体中文 | 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/:nameavailable— 查看指定类型(在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/actioncreate— 创建一个新的用户,必填三个参数:username用户名、password密码明文、email电子邮箱get— 获取某一用户的信息,不包括密码delete— 删除某一用户alter— 更改某用户的信息,使用键—值对来表示要更改的信息,不支持密码changepasswd— 更改某用户的密码
- POST
/api/user/v1/authauth— 使用用户名和密码获取一个 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