diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 32e6723..450d6f7 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -29,7 +29,7 @@ on:
default: 'https://github.com/lejianwen/rustdesk-api-web'
push:
tags:
- - 'v*.*.*' # 当推送带有版本号的 tag(例如 v1.0.0)时触发工作流
+ - 'v*.*.*' # pushing a version-numbered tag (e.g. v1.0.0) triggers the workflow
- 'test*'
env:
@@ -66,7 +66,7 @@ jobs:
- name: Set up Go environment
uses: actions/setup-go@v4
with:
- go-version: '1.23' # 选择 Go 版本
+ go-version: '1.23' # select Go version
- name: Set up npm
uses: actions/setup-node@v2
diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml
index 32bbf5f..733e4fa 100644
--- a/.github/workflows/build_test.yml
+++ b/.github/workflows/build_test.yml
@@ -61,7 +61,7 @@ jobs:
- name: Set up Go environment
uses: actions/setup-go@v4
with:
- go-version: '1.23' # 选择 Go 版本
+ go-version: '1.23' # select Go version
- name: Set up npm
uses: actions/setup-node@v2
diff --git a/README.md b/README.md
index e97f8b8..4754a27 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
# RustDesk API
-[English Doc](README_EN.md)
-
-本项目使用 Go 实现了 RustDesk 的 API,并包含了 Web Admin 和 Web 客户端。
+[中文文档](README_EN.md)
+This project implements the RustDesk API using Go, and includes both a web UI and web client. RustDesk is a remote
+desktop software that provides self-hosted solutions.

@@ -14,237 +14,237 @@
-## 搭配[lejianwen/rustdesk-server]使用更佳。
-> [lejianwen/rustdesk-server]fork自RustDesk Server官方仓库
-> 1. 解决了使用API链接超时问题
-> 2. 可以强制登录后才能发起链接
-> 3. 支持客户端websocket
+## Better used with [lejianwen/rustdesk-server].
+> [lejianwen/rustdesk-server] is a fork of the official RustDesk Server repository.
+> 1. Solves the API connection timeout issue.
+> 2. Can enforce login before initiating a connection.
+> 3. Supports client websocket.
+# Features
-# 特性
-
-- PC端API
- - 个人版API
- - 登录
- - 地址簿
- - 群组
- - 授权登录
- - 支持`github`, `google` 和 `OIDC` 登录,
- - 支持`web后台`授权登录
- - 支持`LDAP`(AD和OpenLDAP已测试), 如果API Server配置了LDAP
+- PC API
+ - Personal API
+ - Login
+ - Address Book
+ - Groups
+ - Authorized login,
+ - supports `GitHub`, `Google` and `OIDC` login,
+ - supports `web admin` authorized login,
+ - supports LDAP(test AD and openladp) if API Server config
- i18n
- Web Admin
- - 用户管理
- - 设备管理
- - 地址簿管理
- - 标签管理
- - 群组管理
- - Oauth 管理
- - 配置LDAP, 配置文件或者环境变量
- - 登录日志
- - 链接日志
- - 文件传输日志
- - 快速使用web client
+ - User Management
+ - Device Management
+ - Address Book Management
+ - Tag Management
+ - Group Management
+ - OAuth Management
+ - LDAP Config by config file or ENV
+ - Login Logs
+ - Connection Logs
+ - File Transfer Logs
+ - Quick access to web client
- i18n
- - 通过 web client 分享给游客
- - server控制(一些官方的简单的指令 [WIKI](https://github.com/lejianwen/rustdesk-api/wiki/Rustdesk-Command))
+ - Share to guest by web client
+ - Server control (some simple official commands [WIKI](https://github.com/lejianwen/rustdesk-api/wiki/Rustdesk-Command))
- Web Client
- - 自动获取API server
- - 自动获取ID服务器和KEY
- - 自动获取地址簿
- - 游客通过临时分享链接直接远程到设备
+ - Automatically obtain API server
+ - Automatically obtain ID server and KEY
+ - Automatically obtain address book
+ - Visitors are remotely to the device via a temporary sharing link
- CLI
- - 重置管理员密码
+ - Reset admin password
-## 功能
+## Overview
-
-### API 服务
-基本实现了PC端基础的接口。支持Personal版本接口,可以通过配置文件`rustdesk.personal`或环境变量`RUSTDESK_API_RUSTDESK_PERSONAL`来控制是否启用
+### API Service
+Basic implementation of the PC client's primary interfaces.Supports the Personal version api, which can be enabled by configuring the `rustdesk.personal` file or the `RUSTDESK_API_RUSTDESK_PERSONAL` environment variable.
- | 登录 |
+ Login |
-  |
+  |
- | 地址簿 |
- 群组 |
+ Address Book |
+ Groups |
-  |
-  |
+  |
+  |
-### Web Admin:
+### Web Admin
-* 使用前后端分离,提供用户友好的管理界面,主要用来管理和展示。前端代码在[rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)
+* The frontend and backend are separated to provide a user-friendly management interface, primarily for managing and
+displaying data.Frontend code is available at [rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)
-* 后台访问地址是`http://[:port]/_admin/`
-* 初次安装管理员为用户名为`admin`,密码将在控制台打印,可以通过[命令行](#CLI)更改密码
+* Admin panel URL: `http:///_admin/`
+* For the initial installation, the admin username is `admin`, and the password will be printed in the console. You can change the password via the [command line](#CLI).

-1. 管理员界面
- 
-2. 普通用户界面
- 
-3. 每个用户可以多个地址簿,也可以将地址簿共享给其他用户
-4. 分组可以自定义,方便管理,暂时支持两种类型: `共享组` 和 `普通组`
-5. 可以直接打开webclient,方便使用;也可以分享给游客,游客可以直接通过webclient远程到设备
-6. Oauth,支持了`Github`, `Google` 以及 `OIDC`, 需要创建一个`OAuth App`,然后配置到后台
- - 对于`Google` 和 `Github`, `Issuer` 和 `Scopes`不需要填写.
- - 对于`OIDC`, `Issuer`是必须的。`Scopes`是可选的,默认为 `openid,profile,email`. 确保可以获取 `sub`,`email` 和`preferred_username`
- - `github oauth app`在`Settings`->`Developer settings`->`OAuth Apps`->`New OAuth App`
- 中创建,地址 [https://github.com/settings/developers](https://github.com/settings/developers)
- - `Authorization callback URL`填写`http:///api/oidc/callback`
- ,比如`http://127.0.0.1:21114/api/oidc/callback`
-7. 登录日志
-8. 链接日志
-9. 文件传输日志
-10. server控制
+1. Admin interface:
+ 
+2. Regular user interface:
+ 
- - `简易模式`,已经界面化了一些简单的指令,可以直接在后台执行
- 
+3. Each user can have multiple address books, which can also be shared with other users.
+4. Groups can be customized for easy management. Currently, two types are supported: `shared group` and `regular group`.
+5. You can directly launch the client or open the web client for convenience; you can also share it with guests, who can remotely access the device via the web client.
+6. OAuth support: Currently, `GitHub`, `Google` and `OIDC` are supported. You need to create an `OAuth App` and configure it in
+ the admin panel.
+ - For `Google` and `Github`, you don't need to fill the `Issuer` and `Scpoes`
+ - For `OIDC`, you must set the `Issuer`. And `Scopes` is optional which default is `openid,email,profile`, please make sure this `Oauth App` can access `sub`, `email` and `preferred_username`
+ - Create a `GitHub OAuth App`
+ at `Settings` -> `Developer settings` -> `OAuth Apps` -> `New OAuth App` [here](https://github.com/settings/developers).
+ - Set the `Authorization callback URL` to `http:///api/oidc/callback`,
+ e.g., `http://127.0.0.1:21114/api/oidc/callback`.
+
+7. Login logs
+8. Connection logs
+9. File transfer logs
+10. Server control
+ - `Simple mode`, some simple commands have been GUI-ized and can be executed directly in the backend
+ 
- - `高级模式`,直接在后台执行指令
- * 可以官方指令
- * 可以添加自定义指令
- * 可以执行自定义指令
-
-
-11. **LDAP 支持**, 当在API Server上设置了LDAP(已测试AD和LDAP),可以通过LDAP中的用户信息进行登录 https://github.com/lejianwen/rustdesk-api/issues/114 ,如果LDAP验证失败,返回本地用户
+ - `Advanced mode`, commands can be executed directly in the backend
+ * Official commands can be used
+ * Custom commands can be added
+ * Custom commands can be executed
+11. **LDAP Support**, When you setup the LDAP(test for OpenLDAP and AD), you can login with the LDAP's user. https://github.com/lejianwen/rustdesk-api/issues/114 , if LDAP fail fallback local user
+
### Web Client:
-1. 如果已经登录了后台,web client将自动直接登录
-2. 如果没登录后台,点击右上角登录即可,api server已经自动配置好了
-3. 登录后,会自动同步ID服务器和KEY
-4. 登录后,会将地址簿自动保存到web client中,方便使用
+1. If you're already logged into the admin panel, the web client will log in automatically.
+2. If you're not logged in, simply click the login button in the top right corner, and the API server will be
+ pre-configured.
+3. After logging in, the ID server and key will be automatically synced.
+4. The address book will also be automatically saved to the web client for convenient use.
+### Automated Documentation : API documentation is generated using Swag, making it easier for developers to understand and use the API.
-### 自动化文档: 使用 Swag 生成 API 文档,方便开发者理解和使用 API。
-
-1. 后台文档 `/admin/swagger/index.html`
-2. PC端文档 `/swagger/index.html`
+1. Admin panel docs: `/admin/swagger/index.html`
+2. PC client docs: `/swagger/index.html`

### CLI
-
```bash
-# 查看帮助
+# help
./apimain -h
```
-#### 重置管理员密码
+#### Reset admin password
```bash
./apimain reset-admin-pwd
```
-## 安装与运行
+## Installation and Setup
-### 相关配置
+### Configuration
-* [配置文件](./conf/config.yaml)
-* 参考`conf/config.yaml`配置文件,修改相关配置。
-* 如果`gorm.type`是`sqlite`,则不需要配置mysql相关配置。
-* 语言如果不设置默认为`zh-CN`
-
-### 环境变量
-环境变量和配置文件`conf/config.yaml`中的配置一一对应,变量名前缀是`RUSTDESK_API`
-下面表格并未全部列出,可以参考`conf/config.yaml`中的配置。
-
-| 变量名 | 说明 | 示例 |
-|--------------------------------------------------------|--------------------------------------------------------------------------------|------------------------------|
-| TZ | 时区 | Asia/Shanghai |
-| RUSTDESK_API_LANG | 语言 | `en`,`zh-CN` |
-| RUSTDESK_API_APP_WEB_CLIENT | 是否启用web-client; 1:启用,0:不启用; 默认启用 | 1 |
-| RUSTDESK_API_APP_REGISTER | 是否开启注册; `true`, `false` 默认`false` | `false` |
-| RUSTDESK_API_APP_SHOW_SWAGGER | 是否可见swagger文档;`1`显示,`0`不显示,默认`0`不显示 | `1` |
-| RUSTDESK_API_APP_TOKEN_EXPIRE | token有效时长 | `168h` |
-| RUSTDESK_API_APP_DISABLE_PWD_LOGIN | 是否禁用密码登录; `true`, `false` 默认`false` | `false` |
-| RUSTDESK_API_APP_REGISTER_STATUS | 注册用户默认状态; 1 启用,2 禁用, 默认 1 | `1` |
-| RUSTDESK_API_APP_CAPTCHA_THRESHOLD | 验证码触发次数; -1 不启用, 0 一直启用, >0 登录错误次数后启用 ;默认 `3` | `3` |
-| RUSTDESK_API_APP_BAN_THRESHOLD | 封禁IP触发次数; 0 不启用, >0 登录错误次数后封禁IP; 默认 `0` | `0` |
-| -----ADMIN配置----- | ---------- | ---------- |
-| RUSTDESK_API_ADMIN_TITLE | 后台标题 | `RustDesk Api Admin` |
-| RUSTDESK_API_ADMIN_HELLO | 后台欢迎语,可以使用`html` | |
-| RUSTDESK_API_ADMIN_HELLO_FILE | 后台欢迎语文件,如果内容多,使用文件更方便。
会覆盖`RUSTDESK_API_ADMIN_HELLO` | `./conf/admin/hello.html` |
-| -----GIN配置----- | ---------- | ---------- |
-| RUSTDESK_API_GIN_TRUST_PROXY | 信任的代理IP列表,以`,`分割,默认信任所有 | 192.168.1.2,192.168.1.3 |
-| -----GORM配置----- | ---------- | --------------------------- |
-| RUSTDESK_API_GORM_TYPE | 数据库类型sqlite或者mysql,默认sqlite | sqlite |
-| RUSTDESK_API_GORM_MAX_IDLE_CONNS | 数据库最大空闲连接数 | 10 |
-| RUSTDESK_API_GORM_MAX_OPEN_CONNS | 数据库最大打开连接数 | 100 |
-| RUSTDESK_API_RUSTDESK_PERSONAL | 是否启用个人版API, 1:启用,0:不启用; 默认启用 | 1 |
-| -----MYSQL配置----- | ---------- | ---------- |
-| RUSTDESK_API_MYSQL_USERNAME | mysql用户名 | root |
-| RUSTDESK_API_MYSQL_PASSWORD | mysql密码 | 111111 |
-| RUSTDESK_API_MYSQL_ADDR | mysql地址 | 192.168.1.66:3306 |
-| RUSTDESK_API_MYSQL_DBNAME | mysql数据库名 | rustdesk |
-| RUSTDESK_API_MYSQL_TLS | 是否启用TLS, 可选值: `true`, `false`, `skip-verify`, `custom` | `false` |
-| -----RUSTDESK配置----- | ---------- | ---------- |
-| RUSTDESK_API_RUSTDESK_ID_SERVER | Rustdesk的id服务器地址 | 192.168.1.66:21116 |
-| RUSTDESK_API_RUSTDESK_RELAY_SERVER | Rustdesk的relay服务器地址 | 192.168.1.66:21117 |
-| RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk的api服务器地址 | http://192.168.1.66:21114 |
-| RUSTDESK_API_RUSTDESK_KEY | Rustdesk的key | 123456789 |
-| RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk存放key的文件 | `./conf/data/id_ed25519.pub` |
-| RUSTDESK_API_RUSTDESK_WEBCLIENT
_MAGIC_QUERYONLINE | Web client v2 中是否启用新的在线状态查询方法; `1`:启用,`0`:不启用,默认不启用 | `0` |
-| RUSTDESK_API_RUSTDESK_WS_HOST | 自定义Websocket Host | `wss://192.168.1.123:1234` |
-| ----PROXY配置----- | ---------- | ---------- |
-| RUSTDESK_API_PROXY_ENABLE | 是否启用代理:`false`, `true` | `false` |
-| RUSTDESK_API_PROXY_HOST | 代理地址 | `http://127.0.0.1:1080` |
-| ----JWT配置---- | -------- | -------- |
-| RUSTDESK_API_JWT_KEY | 自定义JWT KEY,为空则不启用JWT
如果没使用`lejianwen/rustdesk-server`中的`MUST_LOGIN`,建议设置为空 | |
-| RUSTDESK_API_JWT_EXPIRE_DURATION | JWT有效时间 | `168h` |
+* [Config File](./conf/config.yaml)
+* Modify the configuration in `conf/config.yaml`.
+* If `gorm.type` is set to `sqlite`, MySQL-related configurations are not required.
+* Language support: `en` and `zh-CN` are supported. The default is `zh-CN`.
-### 运行
+### Environment Variables
+The environment variables correspond one-to-one with the configurations in the `conf/config.yaml` file. The prefix for variable names is `RUSTDESK_API`.
+The table below does not list all configurations. Please refer to the configurations in `conf/config.yaml`.
-#### docker运行
+| Variable Name | Description | Example |
+|--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|
+| TZ | timezone | Asia/Shanghai |
+| RUSTDESK_API_LANG | Language | `en`,`zh-CN` |
+| RUSTDESK_API_APP_WEB_CLIENT | web client on/off; 1: on, 0 off, default: 1 | 1 |
+| RUSTDESK_API_APP_REGISTER | register enable; `true`, `false`; default:`false` | `false` |
+| RUSTDESK_API_APP_SHOW_SWAGGER | swagger visible; 1: yes, 0: no; default: 0 | `0` |
+| RUSTDESK_API_APP_TOKEN_EXPIRE | token expire duration | `168h` |
+| RUSTDESK_API_APP_DISABLE_PWD_LOGIN | disable password login | `false` |
+| RUSTDESK_API_APP_REGISTER_STATUS | register user default status ; 1 enabled , 2 disabled ; default 1 | `1` |
+| RUSTDESK_API_APP_CAPTCHA_THRESHOLD | captcha threshold; -1 disabled, 0 always enable, >0 threshold ;default `3` | `3` |
+| RUSTDESK_API_APP_BAN_THRESHOLD | ban ip threshold; 0 disabled, >0 threshold ; default `0` | `0` |
+| ----- ADMIN Configuration----- | ---------- | ---------- |
+| RUSTDESK_API_ADMIN_TITLE | Admin Title | `RustDesk Api Admin` |
+| RUSTDESK_API_ADMIN_HELLO | Admin welcome message, you can use `html` | |
+| RUSTDESK_API_ADMIN_HELLO_FILE | Admin welcome message file,
will override `RUSTDESK_API_ADMIN_HELLO` | `./conf/admin/hello.html` |
+| ----- GIN Configuration ----- | --------------------------------------- | ----------------------------- |
+| RUSTDESK_API_GIN_TRUST_PROXY | Trusted proxy IPs, separated by commas. | 192.168.1.2,192.168.1.3 |
+| ----- GORM Configuration ----- | --------------------------------------- | ----------------------------- |
+| RUSTDESK_API_GORM_TYPE | Database type (`sqlite` or `mysql`). Default is `sqlite`. | sqlite |
+| RUSTDESK_API_GORM_MAX_IDLE_CONNS | Maximum idle connections | 10 |
+| RUSTDESK_API_GORM_MAX_OPEN_CONNS | Maximum open connections | 100 |
+| RUSTDESK_API_RUSTDESK_PERSONAL | Open Personal Api 1:Enable,0:Disable | 1 |
+| ----- MYSQL Configuration ----- | --------------------------------------- | ----------------------------- |
+| RUSTDESK_API_MYSQL_USERNAME | MySQL username | root |
+| RUSTDESK_API_MYSQL_PASSWORD | MySQL password | 111111 |
+| RUSTDESK_API_MYSQL_ADDR | MySQL address | 192.168.1.66:3306 |
+| RUSTDESK_API_MYSQL_DBNAME | MySQL database name | rustdesk |
+| RUSTDESK_API_MYSQL_TLS | Whether to enable TLS, optional values: `true`, `false`, `skip-verify`, `custom` | `false` |
+| ----- RUSTDESK Configuration ----- | --------------------------------------- | ----------------------------- |
+| RUSTDESK_API_RUSTDESK_ID_SERVER | Rustdesk ID server address | 192.168.1.66:21116 |
+| RUSTDESK_API_RUSTDESK_RELAY_SERVER | Rustdesk relay server address | 192.168.1.66:21117 |
+| RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk API server address | http://192.168.1.66:21114 |
+| RUSTDESK_API_RUSTDESK_KEY | Rustdesk key | 123456789 |
+| RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk key file | `./conf/data/id_ed25519.pub` |
+| RUSTDESK_API_RUSTDESK
_WEBCLIENT_MAGIC_QUERYONLINE | New online query method is enabled in the web client v2; '1': Enabled, '0': Disabled, not enabled by default | `0` |
+| RUSTDESK_API_RUSTDESK_WS_HOST | Custom Websocket Host | `wss://192.168.1.123:1234` |
+| ---- PROXY ----- | --------------- | ---------- |
+| RUSTDESK_API_PROXY_ENABLE | proxy_enable :`false`, `true` | `false` |
+| RUSTDESK_API_PROXY_HOST | proxy_host | `http://127.0.0.1:1080` |
+| ----JWT---- | -------- | -------- |
+| RUSTDESK_API_JWT_KEY | Custom JWT KEY, if empty JWT is not enabled.
If `MUST_LOGIN` from `lejianwen/rustdesk-server` is not used, it is recommended to leave it empty. | |
+| RUSTDESK_API_JWT_EXPIRE_DURATION | JWT expire duration | `168h` |
-1. 直接docker运行,配置可以通过挂载配置文件`/app/conf/config.yaml`来修改,或者通过环境变量覆盖配置文件中的配置
+### Installation Steps
+#### Running via Docker
+
+1. Run directly with Docker. Configuration can be modified by mounting the config file `/app/conf/config.yaml`, or by
+ using environment variables to override settings.
+
```bash
docker run -d --name rustdesk-api -p 21114:21114 \
-v /data/rustdesk/api:/app/data \
- -e TZ=Asia/Shanghai \
- -e RUSTDESK_API_LANG=zh-CN \
+ -e RUSTDESK_API_LANG=en \
-e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
-e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
-e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
- -e RUSTDESK_API_RUSTDESK_KEY= \
+ -e RUSTDESK_API_RUSTDESK_KEY=abc123456 \
lejianwen/rustdesk-api
```
-2. 使用`docker compose`,参考[WIKI](https://github.com/lejianwen/rustdesk-api/wiki)
+2. Using `docker-compose`,look [WIKI](https://github.com/lejianwen/rustdesk-api/wiki)
-#### 下载release直接运行
+#### Running from Release
-[下载地址](https://github.com/lejianwen/rustdesk-api/releases)
+Download the release from [release](https://github.com/lejianwen/rustdesk-api/releases).
-#### 源码安装
+#### Source Installation
-1. 克隆仓库
+1. Clone the repository:
```bash
git clone https://github.com/lejianwen/rustdesk-api.git
cd rustdesk-api
```
-2. 安装依赖
+2. Install dependencies:
```bash
go mod tidy
- #安装swag,如果不需要生成文档,可以不安装
+ # Install Swag if you need to generate documentation; otherwise, you can skip this step
go install github.com/swaggo/swag/cmd/swag@latest
```
-3. 编译后台前端,前端代码在[rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)中
+3. Build the admin front-end (the front-end code is
+ in [rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)):
```bash
cd resources
mkdir -p admin
@@ -254,29 +254,33 @@
npm run build
cp -ar dist/* ../admin/
```
-4. 运行
+
+4. Run:
```bash
- #直接运行
- go run cmd/apimain.go
- #或者使用generate_api.go生成api并运行
- go generate generate_api.go
- ```
- > 注意:使用 `go run` 或编译后的二进制时,当前目录下必须存在 `conf` 和 `resources`
- > 目录。如果在其他目录运行,可通过 `-c` 和环境变量
- > `RUSTDESK_API_GIN_RESOURCES_PATH` 指定绝对路径,例如:
+ # Run directly
+ go run cmd/apimain.go
+ # Or generate and run the API using generate_api.go
+ go generate generate_api.go
+ ```
+ > **Note:** When using `go run` or the compiled binary, the `conf` and `resources`
+ > directories must exist relative to the current working directory. If you run
+ > the program from another location, specify absolute paths with `-c` and the
+ > `RUSTDESK_API_GIN_RESOURCES_PATH` environment variable. Example:
> ```bash
> RUSTDESK_API_GIN_RESOURCES_PATH=/opt/rustdesk-api/resources ./apimain -c /opt/rustdesk-api/conf/config.yaml
> ```
-5. 编译,如果想自己编译,先cd到项目根目录,然后windows下直接运行`build.bat`,linux下运行`build.sh`,编译后会在`release`
- 目录下生成对应的可执行文件。直接运行编译后的可执行文件即可。
-6. 打开浏览器访问`http:///_admin/`,默认用户名密码为`admin`,请及时更改密码。
+5. To compile, change to the project root directory. For Windows, run `build.bat`, and for Linux, run `build.sh`. After
+ compiling, the corresponding executables will be generated in the `release` directory. Run the compiled executables
+ directly.
+6. Open your browser and visit `http:///_admin/`, with default credentials `admin admin`. Please
+ change the password promptly.
-#### 使用`lejianwen/server-s6`镜像运行
+#### Running with my forked server-s6 image
-- 已解决链接超时问题
-- 可以强制登录后才能发起链接
+- Connection timeout issue resolved
+- Can enforce login before initiating a connection
- github https://github.com/lejianwen/rustdesk-server
```yaml
@@ -306,30 +310,28 @@
- RUSTDESK_API_JWT_KEY=xxxxxx # jwt key
volumes:
- /data/rustdesk/server:/data
- - /data/rustdesk/api:/app/data #将数据库挂载
+ - /data/rustdesk/api:/app/data # mount the database
networks:
- rustdesk-net
restart: unless-stopped
```
-
-
-## 其他
+## Others
- [WIKI](https://github.com/lejianwen/rustdesk-api/wiki)
-- [链接超时问题](https://github.com/lejianwen/rustdesk-api/issues/92)
-- [修改客户端ID](https://github.com/abdullah-erturk/RustDesk-ID-Changer)
-- [webclient来源](https://hub.docker.com/r/keyurbhole/flutter_web_desk)
+- [Connection Timeout](https://github.com/lejianwen/rustdesk-api/issues/92)
+- [Change client ID](https://github.com/abdullah-erturk/RustDesk-ID-Changer)
+- [Web client source](https://hub.docker.com/r/keyurbhole/flutter_web_desk)
+## Acknowledgements
-## 鸣谢
-
-感谢所有做过贡献的人!
+Thanks to everyone who contributed!
-## 感谢你的支持!如果这个项目对你有帮助,请点个⭐️鼓励一下,谢谢!
+## Thanks for your support! If you find this project useful, please give it a ⭐️. Thank you!
+
[lejianwen/rustdesk-server]: https://github.com/lejianwen/rustdesk-server
\ No newline at end of file
diff --git a/README_EN.md b/README_EN.md
index 1fc1813..a966b41 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -1,7 +1,9 @@
# RustDesk API
-This project implements the RustDesk API using Go, and includes both a web UI and web client. RustDesk is a remote
-desktop software that provides self-hosted solutions.
+[English Doc](README.md)
+
+本项目使用 Go 实现了 RustDesk 的 API,并包含了 Web Admin 和 Web 客户端。
+

@@ -12,237 +14,237 @@ desktop software that provides self-hosted solutions.
-## Better used with [lejianwen/rustdesk-server].
-> [lejianwen/rustdesk-server] is a fork of the official RustDesk Server repository.
-> 1. Solves the API connection timeout issue.
-> 2. Can enforce login before initiating a connection.
-> 3. Supports client websocket.
+## 搭配[lejianwen/rustdesk-server]使用更佳。
+> [lejianwen/rustdesk-server]fork自RustDesk Server官方仓库
+> 1. 解决了使用API链接超时问题
+> 2. 可以强制登录后才能发起链接
+> 3. 支持客户端websocket
-# Features
-- PC API
- - Personal API
- - Login
- - Address Book
- - Groups
- - Authorized login,
- - supports `GitHub`, `Google` and `OIDC` login,
- - supports `web admin` authorized login,
- - supports LDAP(test AD and openladp) if API Server config
+# 特性
+
+- PC端API
+ - 个人版API
+ - 登录
+ - 地址簿
+ - 群组
+ - 授权登录
+ - 支持`github`, `google` 和 `OIDC` 登录,
+ - 支持`web后台`授权登录
+ - 支持`LDAP`(AD和OpenLDAP已测试), 如果API Server配置了LDAP
- i18n
- Web Admin
- - User Management
- - Device Management
- - Address Book Management
- - Tag Management
- - Group Management
- - OAuth Management
- - LDAP Config by config file or ENV
- - Login Logs
- - Connection Logs
- - File Transfer Logs
- - Quick access to web client
+ - 用户管理
+ - 设备管理
+ - 地址簿管理
+ - 标签管理
+ - 群组管理
+ - Oauth 管理
+ - 配置LDAP, 配置文件或者环境变量
+ - 登录日志
+ - 链接日志
+ - 文件传输日志
+ - 快速使用web client
- i18n
- - Share to guest by web client
- - Server control (some simple official commands [WIKI](https://github.com/lejianwen/rustdesk-api/wiki/Rustdesk-Command))
+ - 通过 web client 分享给游客
+ - server控制(一些官方的简单的指令 [WIKI](https://github.com/lejianwen/rustdesk-api/wiki/Rustdesk-Command))
- Web Client
- - Automatically obtain API server
- - Automatically obtain ID server and KEY
- - Automatically obtain address book
- - Visitors are remotely to the device via a temporary sharing link
+ - 自动获取API server
+ - 自动获取ID服务器和KEY
+ - 自动获取地址簿
+ - 游客通过临时分享链接直接远程到设备
- CLI
- - Reset admin password
+ - 重置管理员密码
-## Overview
+## 功能
-### API Service
-Basic implementation of the PC client's primary interfaces.Supports the Personal version api, which can be enabled by configuring the `rustdesk.personal` file or the `RUSTDESK_API_RUSTDESK_PERSONAL` environment variable.
+
+### API 服务
+基本实现了PC端基础的接口。支持Personal版本接口,可以通过配置文件`rustdesk.personal`或环境变量`RUSTDESK_API_RUSTDESK_PERSONAL`来控制是否启用
- | Login |
+ 登录 |
-  |
+  |
- | Address Book |
- Groups |
+ 地址簿 |
+ 群组 |
-  |
-  |
+  |
+  |
-### Web Admin
+### Web Admin:
-* The frontend and backend are separated to provide a user-friendly management interface, primarily for managing and
-displaying data.Frontend code is available at [rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)
+* 使用前后端分离,提供用户友好的管理界面,主要用来管理和展示。前端代码在[rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)
-* Admin panel URL: `http:///_admin/`
-* For the initial installation, the admin username is `admin`, and the password will be printed in the console. You can change the password via the [command line](#CLI).
+* 后台访问地址是`http://[:port]/_admin/`
+* 初次安装管理员为用户名为`admin`,密码将在控制台打印,可以通过[命令行](#CLI)更改密码

+1. 管理员界面
+ 
+2. 普通用户界面
+ 
-1. Admin interface:
- 
-2. Regular user interface:
- 
+3. 每个用户可以多个地址簿,也可以将地址簿共享给其他用户
+4. 分组可以自定义,方便管理,暂时支持两种类型: `共享组` 和 `普通组`
+5. 可以直接打开webclient,方便使用;也可以分享给游客,游客可以直接通过webclient远程到设备
+6. Oauth,支持了`Github`, `Google` 以及 `OIDC`, 需要创建一个`OAuth App`,然后配置到后台
+ - 对于`Google` 和 `Github`, `Issuer` 和 `Scopes`不需要填写.
+ - 对于`OIDC`, `Issuer`是必须的。`Scopes`是可选的,默认为 `openid,profile,email`. 确保可以获取 `sub`,`email` 和`preferred_username`
+ - `github oauth app`在`Settings`->`Developer settings`->`OAuth Apps`->`New OAuth App`
+ 中创建,地址 [https://github.com/settings/developers](https://github.com/settings/developers)
+ - `Authorization callback URL`填写`http:///api/oidc/callback`
+ ,比如`http://127.0.0.1:21114/api/oidc/callback`
+7. 登录日志
+8. 链接日志
+9. 文件传输日志
+10. server控制
-3. Each user can have multiple address books, which can also be shared with other users.
-4. Groups can be customized for easy management. Currently, two types are supported: `shared group` and `regular group`.
-5. You can directly launch the client or open the web client for convenience; you can also share it with guests, who can remotely access the device via the web client.
-6. OAuth support: Currently, `GitHub`, `Google` and `OIDC` are supported. You need to create an `OAuth App` and configure it in
- the admin panel.
- - For `Google` and `Github`, you don't need to fill the `Issuer` and `Scpoes`
- - For `OIDC`, you must set the `Issuer`. And `Scopes` is optional which default is `openid,email,profile`, please make sure this `Oauth App` can access `sub`, `email` and `preferred_username`
- - Create a `GitHub OAuth App`
- at `Settings` -> `Developer settings` -> `OAuth Apps` -> `New OAuth App` [here](https://github.com/settings/developers).
- - Set the `Authorization callback URL` to `http:///api/oidc/callback`,
- e.g., `http://127.0.0.1:21114/api/oidc/callback`.
-
-7. Login logs
-8. Connection logs
-9. File transfer logs
-10. Server control
- - `Simple mode`, some simple commands have been GUI-ized and can be executed directly in the backend
- 
+ - `简易模式`,已经界面化了一些简单的指令,可以直接在后台执行
+ 
- - `Advanced mode`, commands can be executed directly in the backend
- * Official commands can be used
- * Custom commands can be added
- * Custom commands can be executed
+ - `高级模式`,直接在后台执行指令
+ * 可以官方指令
+ * 可以添加自定义指令
+ * 可以执行自定义指令
+
+
+11. **LDAP 支持**, 当在API Server上设置了LDAP(已测试AD和LDAP),可以通过LDAP中的用户信息进行登录 https://github.com/lejianwen/rustdesk-api/issues/114 ,如果LDAP验证失败,返回本地用户
-11. **LDAP Support**, When you setup the LDAP(test for OpenLDAP and AD), you can login with the LDAP's user. https://github.com/lejianwen/rustdesk-api/issues/114 , if LDAP fail fallback local user
-
### Web Client:
-1. If you're already logged into the admin panel, the web client will log in automatically.
-2. If you're not logged in, simply click the login button in the top right corner, and the API server will be
- pre-configured.
-3. After logging in, the ID server and key will be automatically synced.
-4. The address book will also be automatically saved to the web client for convenient use.
+1. 如果已经登录了后台,web client将自动直接登录
+2. 如果没登录后台,点击右上角登录即可,api server已经自动配置好了
+3. 登录后,会自动同步ID服务器和KEY
+4. 登录后,会将地址簿自动保存到web client中,方便使用
-### Automated Documentation : API documentation is generated using Swag, making it easier for developers to understand and use the API.
-1. Admin panel docs: `/admin/swagger/index.html`
-2. PC client docs: `/swagger/index.html`
+### 自动化文档: 使用 Swag 生成 API 文档,方便开发者理解和使用 API。
+
+1. 后台文档 `/admin/swagger/index.html`
+2. PC端文档 `/swagger/index.html`

### CLI
+
```bash
-# help
+# 查看帮助
./apimain -h
```
-#### Reset admin password
+#### 重置管理员密码
```bash
./apimain reset-admin-pwd
```
-## Installation and Setup
+## 安装与运行
-### Configuration
+### 相关配置
-* [Config File](./conf/config.yaml)
-* Modify the configuration in `conf/config.yaml`.
-* If `gorm.type` is set to `sqlite`, MySQL-related configurations are not required.
-* Language support: `en` and `zh-CN` are supported. The default is `zh-CN`.
+* [配置文件](./conf/config.yaml)
+* 参考`conf/config.yaml`配置文件,修改相关配置。
+* 如果`gorm.type`是`sqlite`,则不需要配置mysql相关配置。
+* 语言如果不设置默认为`zh-CN`
+
+### 环境变量
+环境变量和配置文件`conf/config.yaml`中的配置一一对应,变量名前缀是`RUSTDESK_API`
+下面表格并未全部列出,可以参考`conf/config.yaml`中的配置。
+
+| 变量名 | 说明 | 示例 |
+|--------------------------------------------------------|--------------------------------------------------------------------------------|------------------------------|
+| TZ | 时区 | Asia/Shanghai |
+| RUSTDESK_API_LANG | 语言 | `en`,`zh-CN` |
+| RUSTDESK_API_APP_WEB_CLIENT | 是否启用web-client; 1:启用,0:不启用; 默认启用 | 1 |
+| RUSTDESK_API_APP_REGISTER | 是否开启注册; `true`, `false` 默认`false` | `false` |
+| RUSTDESK_API_APP_SHOW_SWAGGER | 是否可见swagger文档;`1`显示,`0`不显示,默认`0`不显示 | `1` |
+| RUSTDESK_API_APP_TOKEN_EXPIRE | token有效时长 | `168h` |
+| RUSTDESK_API_APP_DISABLE_PWD_LOGIN | 是否禁用密码登录; `true`, `false` 默认`false` | `false` |
+| RUSTDESK_API_APP_REGISTER_STATUS | 注册用户默认状态; 1 启用,2 禁用, 默认 1 | `1` |
+| RUSTDESK_API_APP_CAPTCHA_THRESHOLD | 验证码触发次数; -1 不启用, 0 一直启用, >0 登录错误次数后启用 ;默认 `3` | `3` |
+| RUSTDESK_API_APP_BAN_THRESHOLD | 封禁IP触发次数; 0 不启用, >0 登录错误次数后封禁IP; 默认 `0` | `0` |
+| -----ADMIN配置----- | ---------- | ---------- |
+| RUSTDESK_API_ADMIN_TITLE | 后台标题 | `RustDesk Api Admin` |
+| RUSTDESK_API_ADMIN_HELLO | 后台欢迎语,可以使用`html` | |
+| RUSTDESK_API_ADMIN_HELLO_FILE | 后台欢迎语文件,如果内容多,使用文件更方便。
会覆盖`RUSTDESK_API_ADMIN_HELLO` | `./conf/admin/hello.html` |
+| -----GIN配置----- | ---------- | ---------- |
+| RUSTDESK_API_GIN_TRUST_PROXY | 信任的代理IP列表,以`,`分割,默认信任所有 | 192.168.1.2,192.168.1.3 |
+| -----GORM配置----- | ---------- | --------------------------- |
+| RUSTDESK_API_GORM_TYPE | 数据库类型sqlite或者mysql,默认sqlite | sqlite |
+| RUSTDESK_API_GORM_MAX_IDLE_CONNS | 数据库最大空闲连接数 | 10 |
+| RUSTDESK_API_GORM_MAX_OPEN_CONNS | 数据库最大打开连接数 | 100 |
+| RUSTDESK_API_RUSTDESK_PERSONAL | 是否启用个人版API, 1:启用,0:不启用; 默认启用 | 1 |
+| -----MYSQL配置----- | ---------- | ---------- |
+| RUSTDESK_API_MYSQL_USERNAME | mysql用户名 | root |
+| RUSTDESK_API_MYSQL_PASSWORD | mysql密码 | 111111 |
+| RUSTDESK_API_MYSQL_ADDR | mysql地址 | 192.168.1.66:3306 |
+| RUSTDESK_API_MYSQL_DBNAME | mysql数据库名 | rustdesk |
+| RUSTDESK_API_MYSQL_TLS | 是否启用TLS, 可选值: `true`, `false`, `skip-verify`, `custom` | `false` |
+| -----RUSTDESK配置----- | ---------- | ---------- |
+| RUSTDESK_API_RUSTDESK_ID_SERVER | Rustdesk的id服务器地址 | 192.168.1.66:21116 |
+| RUSTDESK_API_RUSTDESK_RELAY_SERVER | Rustdesk的relay服务器地址 | 192.168.1.66:21117 |
+| RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk的api服务器地址 | http://192.168.1.66:21114 |
+| RUSTDESK_API_RUSTDESK_KEY | Rustdesk的key | 123456789 |
+| RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk存放key的文件 | `./conf/data/id_ed25519.pub` |
+| RUSTDESK_API_RUSTDESK_WEBCLIENT
_MAGIC_QUERYONLINE | Web client v2 中是否启用新的在线状态查询方法; `1`:启用,`0`:不启用,默认不启用 | `0` |
+| RUSTDESK_API_RUSTDESK_WS_HOST | 自定义Websocket Host | `wss://192.168.1.123:1234` |
+| ----PROXY配置----- | ---------- | ---------- |
+| RUSTDESK_API_PROXY_ENABLE | 是否启用代理:`false`, `true` | `false` |
+| RUSTDESK_API_PROXY_HOST | 代理地址 | `http://127.0.0.1:1080` |
+| ----JWT配置---- | -------- | -------- |
+| RUSTDESK_API_JWT_KEY | 自定义JWT KEY,为空则不启用JWT
如果没使用`lejianwen/rustdesk-server`中的`MUST_LOGIN`,建议设置为空 | |
+| RUSTDESK_API_JWT_EXPIRE_DURATION | JWT有效时间 | `168h` |
-### Environment Variables
-The environment variables correspond one-to-one with the configurations in the `conf/config.yaml` file. The prefix for variable names is `RUSTDESK_API`.
-The table below does not list all configurations. Please refer to the configurations in `conf/config.yaml`.
+### 运行
-| Variable Name | Description | Example |
-|--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|
-| TZ | timezone | Asia/Shanghai |
-| RUSTDESK_API_LANG | Language | `en`,`zh-CN` |
-| RUSTDESK_API_APP_WEB_CLIENT | web client on/off; 1: on, 0 off, default: 1 | 1 |
-| RUSTDESK_API_APP_REGISTER | register enable; `true`, `false`; default:`false` | `false` |
-| RUSTDESK_API_APP_SHOW_SWAGGER | swagger visible; 1: yes, 0: no; default: 0 | `0` |
-| RUSTDESK_API_APP_TOKEN_EXPIRE | token expire duration | `168h` |
-| RUSTDESK_API_APP_DISABLE_PWD_LOGIN | disable password login | `false` |
-| RUSTDESK_API_APP_REGISTER_STATUS | register user default status ; 1 enabled , 2 disabled ; default 1 | `1` |
-| RUSTDESK_API_APP_CAPTCHA_THRESHOLD | captcha threshold; -1 disabled, 0 always enable, >0 threshold ;default `3` | `3` |
-| RUSTDESK_API_APP_BAN_THRESHOLD | ban ip threshold; 0 disabled, >0 threshold ; default `0` | `0` |
-| ----- ADMIN Configuration----- | ---------- | ---------- |
-| RUSTDESK_API_ADMIN_TITLE | Admin Title | `RustDesk Api Admin` |
-| RUSTDESK_API_ADMIN_HELLO | Admin welcome message, you can use `html` | |
-| RUSTDESK_API_ADMIN_HELLO_FILE | Admin welcome message file,
will override `RUSTDESK_API_ADMIN_HELLO` | `./conf/admin/hello.html` |
-| ----- GIN Configuration ----- | --------------------------------------- | ----------------------------- |
-| RUSTDESK_API_GIN_TRUST_PROXY | Trusted proxy IPs, separated by commas. | 192.168.1.2,192.168.1.3 |
-| ----- GORM Configuration ----- | --------------------------------------- | ----------------------------- |
-| RUSTDESK_API_GORM_TYPE | Database type (`sqlite` or `mysql`). Default is `sqlite`. | sqlite |
-| RUSTDESK_API_GORM_MAX_IDLE_CONNS | Maximum idle connections | 10 |
-| RUSTDESK_API_GORM_MAX_OPEN_CONNS | Maximum open connections | 100 |
-| RUSTDESK_API_RUSTDESK_PERSONAL | Open Personal Api 1:Enable,0:Disable | 1 |
-| ----- MYSQL Configuration ----- | --------------------------------------- | ----------------------------- |
-| RUSTDESK_API_MYSQL_USERNAME | MySQL username | root |
-| RUSTDESK_API_MYSQL_PASSWORD | MySQL password | 111111 |
-| RUSTDESK_API_MYSQL_ADDR | MySQL address | 192.168.1.66:3306 |
-| RUSTDESK_API_MYSQL_DBNAME | MySQL database name | rustdesk |
-| RUSTDESK_API_MYSQL_TLS | Whether to enable TLS, optional values: `true`, `false`, `skip-verify`, `custom` | `false` |
-| ----- RUSTDESK Configuration ----- | --------------------------------------- | ----------------------------- |
-| RUSTDESK_API_RUSTDESK_ID_SERVER | Rustdesk ID server address | 192.168.1.66:21116 |
-| RUSTDESK_API_RUSTDESK_RELAY_SERVER | Rustdesk relay server address | 192.168.1.66:21117 |
-| RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk API server address | http://192.168.1.66:21114 |
-| RUSTDESK_API_RUSTDESK_KEY | Rustdesk key | 123456789 |
-| RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk key file | `./conf/data/id_ed25519.pub` |
-| RUSTDESK_API_RUSTDESK
_WEBCLIENT_MAGIC_QUERYONLINE | New online query method is enabled in the web client v2; '1': Enabled, '0': Disabled, not enabled by default | `0` |
-| RUSTDESK_API_RUSTDESK_WS_HOST | Custom Websocket Host | `wss://192.168.1.123:1234` |
-| ---- PROXY ----- | --------------- | ---------- |
-| RUSTDESK_API_PROXY_ENABLE | proxy_enable :`false`, `true` | `false` |
-| RUSTDESK_API_PROXY_HOST | proxy_host | `http://127.0.0.1:1080` |
-| ----JWT---- | -------- | -------- |
-| RUSTDESK_API_JWT_KEY | Custom JWT KEY, if empty JWT is not enabled.
If `MUST_LOGIN` from `lejianwen/rustdesk-server` is not used, it is recommended to leave it empty. | |
-| RUSTDESK_API_JWT_EXPIRE_DURATION | JWT expire duration | `168h` |
+#### docker运行
-### Installation Steps
+1. 直接docker运行,配置可以通过挂载配置文件`/app/conf/config.yaml`来修改,或者通过环境变量覆盖配置文件中的配置
-#### Running via Docker
-
-1. Run directly with Docker. Configuration can be modified by mounting the config file `/app/conf/config.yaml`, or by
- using environment variables to override settings.
-
```bash
docker run -d --name rustdesk-api -p 21114:21114 \
-v /data/rustdesk/api:/app/data \
- -e RUSTDESK_API_LANG=en \
+ -e TZ=Asia/Shanghai \
+ -e RUSTDESK_API_LANG=zh-CN \
-e RUSTDESK_API_RUSTDESK_ID_SERVER=192.168.1.66:21116 \
-e RUSTDESK_API_RUSTDESK_RELAY_SERVER=192.168.1.66:21117 \
-e RUSTDESK_API_RUSTDESK_API_SERVER=http://192.168.1.66:21114 \
- -e RUSTDESK_API_RUSTDESK_KEY=abc123456 \
+ -e RUSTDESK_API_RUSTDESK_KEY= \
lejianwen/rustdesk-api
```
-2. Using `docker-compose`,look [WIKI](https://github.com/lejianwen/rustdesk-api/wiki)
+2. 使用`docker compose`,参考[WIKI](https://github.com/lejianwen/rustdesk-api/wiki)
-#### Running from Release
+#### 下载release直接运行
-Download the release from [release](https://github.com/lejianwen/rustdesk-api/releases).
+[下载地址](https://github.com/lejianwen/rustdesk-api/releases)
-#### Source Installation
+#### 源码安装
-1. Clone the repository:
+1. 克隆仓库
```bash
git clone https://github.com/lejianwen/rustdesk-api.git
cd rustdesk-api
```
-2. Install dependencies:
+2. 安装依赖
```bash
go mod tidy
- # Install Swag if you need to generate documentation; otherwise, you can skip this step
+ #安装swag,如果不需要生成文档,可以不安装
go install github.com/swaggo/swag/cmd/swag@latest
```
-3. Build the admin front-end (the front-end code is
- in [rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)):
+3. 编译后台前端,前端代码在[rustdesk-api-web](https://github.com/lejianwen/rustdesk-api-web)中
```bash
cd resources
mkdir -p admin
@@ -252,33 +254,29 @@ Download the release from [release](https://github.com/lejianwen/rustdesk-api/re
npm run build
cp -ar dist/* ../admin/
```
-
-4. Run:
+4. 运行
```bash
- # Run directly
- go run cmd/apimain.go
- # Or generate and run the API using generate_api.go
- go generate generate_api.go
- ```
- > **Note:** When using `go run` or the compiled binary, the `conf` and `resources`
- > directories must exist relative to the current working directory. If you run
- > the program from another location, specify absolute paths with `-c` and the
- > `RUSTDESK_API_GIN_RESOURCES_PATH` environment variable. Example:
+ #直接运行
+ go run cmd/apimain.go
+ #或者使用generate_api.go生成api并运行
+ go generate generate_api.go
+ ```
+ > 注意:使用 `go run` 或编译后的二进制时,当前目录下必须存在 `conf` 和 `resources`
+ > 目录。如果在其他目录运行,可通过 `-c` 和环境变量
+ > `RUSTDESK_API_GIN_RESOURCES_PATH` 指定绝对路径,例如:
> ```bash
> RUSTDESK_API_GIN_RESOURCES_PATH=/opt/rustdesk-api/resources ./apimain -c /opt/rustdesk-api/conf/config.yaml
> ```
+5. 编译,如果想自己编译,先cd到项目根目录,然后windows下直接运行`build.bat`,linux下运行`build.sh`,编译后会在`release`
+ 目录下生成对应的可执行文件。直接运行编译后的可执行文件即可。
-5. To compile, change to the project root directory. For Windows, run `build.bat`, and for Linux, run `build.sh`. After
- compiling, the corresponding executables will be generated in the `release` directory. Run the compiled executables
- directly.
+6. 打开浏览器访问`http:///_admin/`,默认用户名密码为`admin`,请及时更改密码。
-6. Open your browser and visit `http:///_admin/`, with default credentials `admin admin`. Please
- change the password promptly.
-#### Running with my forked server-s6 image
+#### 使用`lejianwen/server-s6`镜像运行
-- Connection timeout issue resolved
-- Can enforce login before initiating a connection
+- 已解决链接超时问题
+- 可以强制登录后才能发起链接
- github https://github.com/lejianwen/rustdesk-server
```yaml
@@ -314,22 +312,24 @@ Download the release from [release](https://github.com/lejianwen/rustdesk-api/re
restart: unless-stopped
```
-## Others
+
+
+## 其他
- [WIKI](https://github.com/lejianwen/rustdesk-api/wiki)
-- [Connection Timeout](https://github.com/lejianwen/rustdesk-api/issues/92)
-- [Change client ID](https://github.com/abdullah-erturk/RustDesk-ID-Changer)
-- [Web client source](https://hub.docker.com/r/keyurbhole/flutter_web_desk)
+- [链接超时问题](https://github.com/lejianwen/rustdesk-api/issues/92)
+- [修改客户端ID](https://github.com/abdullah-erturk/RustDesk-ID-Changer)
+- [webclient来源](https://hub.docker.com/r/keyurbhole/flutter_web_desk)
-## Acknowledgements
-Thanks to everyone who contributed!
+## 鸣谢
+
+感谢所有做过贡献的人!
-## Thanks for your support! If you find this project useful, please give it a ⭐️. Thank you!
-
+## 感谢你的支持!如果这个项目对你有帮助,请点个⭐️鼓励一下,谢谢!
[lejianwen/rustdesk-server]: https://github.com/lejianwen/rustdesk-server
\ No newline at end of file
diff --git a/cmd/apimain.go b/cmd/apimain.go
index eddefb2..533aab9 100644
--- a/cmd/apimain.go
+++ b/cmd/apimain.go
@@ -25,9 +25,9 @@ import (
const DatabaseVersion = 265
-// @title 管理系统API
+// @title Management System API
// @version 1.0
-// @description 接口
+// @description API
// @basePath /api
// @securityDefinitions.apikey token
// @in header
@@ -111,10 +111,10 @@ func main() {
}
func InitGlobal() {
- //配置解析
+ // config parsing
global.Viper = config.Init(&global.Config, global.ConfigPath)
- //日志
+ // logging
global.Logger = logger.New(&logger.Config{
Path: global.Config.Logger.Path,
Level: global.Config.Logger.Level,
@@ -219,11 +219,11 @@ func DatabaseAutoUpdate() {
db := global.DB
if global.Config.Gorm.Type == config.TypeMysql {
- //检查存不存在数据库,不存在则创建
+ // check whether the database exists; create it if not
dbName := db.Migrator().CurrentDatabase()
if dbName == "" {
dbName = global.Config.Mysql.Dbname
- // 移除 DSN 中的数据库名称,以便初始连接时不指定数据库
+ // remove the database name from the DSN so the initial connection does not specify a database
dsnWithoutDB := fmt.Sprintf("%s:%s@(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
global.Config.Mysql.Username,
global.Config.Mysql.Password,
@@ -231,19 +231,19 @@ func DatabaseAutoUpdate() {
"",
)
- //新链接
+ // new connection
dbWithoutDB := orm.NewMysql(&orm.MysqlConfig{
Dsn: dsnWithoutDB,
}, global.Logger)
- // 获取底层的 *sql.DB 对象,并确保在程序退出时关闭连接
+ // get the underlying *sql.DB object and ensure the connection is closed when the program exits
sqlDBWithoutDB, err := dbWithoutDB.DB()
if err != nil {
- global.Logger.Errorf("获取底层 *sql.DB 对象失败: %v", err)
+ global.Logger.Errorf("failed to get underlying *sql.DB object: %v", err)
return
}
defer func() {
if err := sqlDBWithoutDB.Close(); err != nil {
- global.Logger.Errorf("关闭连接失败: %v", err)
+ global.Logger.Errorf("failed to close connection: %v", err)
}
}()
@@ -258,20 +258,20 @@ func DatabaseAutoUpdate() {
if !db.Migrator().HasTable(&model.Version{}) {
Migrate(uint(version))
} else {
- //查找最后一个version
+ // find the last version
var v model.Version
db.Last(&v)
if v.Version < uint(version) {
Migrate(uint(version))
}
- // 245迁移
+ // 245 migration
if v.Version < 245 {
- //oauths 表的 oauth_type 字段设置为 op同样的值
+ // set the oauths table's oauth_type field to the same value as op
db.Exec("update oauths set oauth_type = op")
db.Exec("update oauths set issuer = 'https://accounts.google.com' where op = 'google'")
db.Exec("update user_thirds set oauth_type = third_type, op = third_type")
- //通过email迁移旧的google授权
+ // migrate old google authorizations by email
uts := make([]model.UserThird, 0)
db.Where("oauth_type = ?", "google").Find(&uts)
for _, ut := range uts {
@@ -311,7 +311,7 @@ func Migrate(version uint) {
global.Logger.Error("migrate err :=>", err)
}
global.DB.Create(&model.Version{Version: version})
- //如果是初次则创建一个默认用户
+ // if this is the first run, create a default user
var vc int64
global.DB.Model(&model.Version{}).Count(&vc)
if vc == 1 {
@@ -333,7 +333,7 @@ func Migrate(version uint) {
Type: model.GroupTypeShare,
}
service.AllService.GroupService.Create(groupShare)
- //是true
+ // is true
is_admin := true
admin := &model.User{
Username: "admin",
@@ -343,7 +343,7 @@ func Migrate(version uint) {
GroupId: 1,
}
- // 生成随机密码
+ // generate a random password
pwd := utils.RandomString(8)
global.Logger.Info("Admin Password Is: ", pwd)
var err error
diff --git a/conf/config.yaml b/conf/config.yaml
index 542b802..34d8ef4 100644
--- a/conf/config.yaml
+++ b/conf/config.yaml
@@ -1,18 +1,18 @@
lang: "zh-CN"
app:
- web-client: 1 # 1:启用 0:禁用
- register: false #是否开启注册
- register-status: 1 # 注册用户默认状态 1:启用 2:禁用
+ web-client: 1 # 1:enable 0:disable
+ register: false #whether registration is enabled
+ register-status: 1 # default status for registered users 1:enable 2:disable
captcha-threshold: 3 # <0:disabled, 0 always, >0:enabled
ban-threshold: 0 # 0:disabled, >0:enabled
- show-swagger: 0 # 1:启用 0:禁用
+ show-swagger: 0 # 1:enable 0:disable
token-expire: 168h
web-sso: true #web auth sso
- disable-pwd-login: false #禁用密码登录
+ disable-pwd-login: false #disable password login
admin:
title: "RustDesk API Admin"
- hello-file: "./conf/admin/hello.html" #优先使用file
+ hello-file: "./conf/admin/hello.html" #prefer to use a file for the welcome message
hello: ""
# ID Server and Relay Server ports https://github.com/lejianwen/rustdesk-api/issues/257
id-server-port: 21116 # ID Server port (for server cmd)
@@ -20,7 +20,7 @@ admin:
gin:
api-addr: "0.0.0.0:21114"
mode: "release" #release,debug,test
- resources-path: 'resources' #对外静态文件目录
+ resources-path: 'resources' #public static file directory
trust-proxy: ""
gorm:
type: "sqlite"
diff --git a/config/config.go b/config/config.go
index cd40d10..bdbefed 100644
--- a/config/config.go
+++ b/config/config.go
@@ -58,7 +58,7 @@ func (a *Admin) Init() {
}
}
-// Init 初始化配置
+// Init initializes the configuration
func Init(rowVal *Config, path string) *viper.Viper {
if path == "" {
path = DefaultConfig
@@ -77,9 +77,9 @@ func Init(rowVal *Config, path string) *viper.Viper {
v.WatchConfig()
- //监听配置修改没什么必要
+ // watching for config changes is not really necessary
v.OnConfigChange(func(e fsnotify.Event) {
- //配置文件修改监听
+ // watch for config file changes
fmt.Println("config file changed:", e.Name)
if err2 := v.Unmarshal(rowVal); err2 != nil {
fmt.Println(err2)
@@ -96,7 +96,7 @@ func Init(rowVal *Config, path string) *viper.Viper {
return v
}
-// ReadEnv 读取环境变量
+// ReadEnv reads environment variables
func ReadEnv(rowVal interface{}) *viper.Viper {
v := viper.New()
v.AutomaticEnv()
diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml
index fcd1a7f..6df4c9d 100644
--- a/docker-compose-dev.yaml
+++ b/docker-compose-dev.yaml
@@ -18,7 +18,7 @@ services:
ports:
- 21114:21114
volumes:
- - ./data/rustdesk/api:/app/data #将数据库挂载出来方便备份
+ - ./data/rustdesk/api:/app/data #mount the database out for easy backup
- ./conf:/app/conf # config
- # - ./resources:/app/resources # 静态资源
+ # - ./resources:/app/resources # static resources
restart: unless-stopped
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 75f3a47..ba4f1e0 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -13,5 +13,5 @@ services:
volumes:
- ./data/rustdesk/api:/app/data # database
# - ./conf:/app/conf # config
- # - ./resources:/app/resources # 静态资源
+ # - ./resources:/app/resources # static resources
restart: unless-stopped
\ No newline at end of file
diff --git a/docs/admin/admin_docs.go b/docs/admin/admin_docs.go
index 7fbbe8d..65b2424 100644
--- a/docs/admin/admin_docs.go
+++ b/docs/admin/admin_docs.go
@@ -22,7 +22,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "批量创建地址簿",
+ "description": "batch create address books",
"consumes": [
"application/json"
],
@@ -30,12 +30,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "批量创建地址簿",
+ "summary": "batch create address books",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -79,7 +79,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建地址簿",
+ "description": "create address book",
"consumes": [
"application/json"
],
@@ -87,12 +87,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "创建地址簿",
+ "summary": "create address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -136,7 +136,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿删除",
+ "description": "delete address book",
"consumes": [
"application/json"
],
@@ -144,12 +144,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿删除",
+ "summary": "delete address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -181,7 +181,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿详情",
+ "description": "address book details",
"consumes": [
"application/json"
],
@@ -189,9 +189,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿详情",
+ "summary": "address book details",
"parameters": [
{
"type": "integer",
@@ -236,7 +236,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿列表",
+ "description": "address book list",
"consumes": [
"application/json"
],
@@ -244,31 +244,31 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿列表",
+ "summary": "address book list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
}
@@ -308,7 +308,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿分享",
+ "description": "share address book",
"consumes": [
"application/json"
],
@@ -316,12 +316,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿分享",
+ "summary": "share address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -353,7 +353,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿编辑",
+ "description": "edit address book",
"consumes": [
"application/json"
],
@@ -361,12 +361,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿编辑",
+ "summary": "edit address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -410,7 +410,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建地址簿名称",
+ "description": "create address book name",
"consumes": [
"application/json"
],
@@ -418,12 +418,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "创建地址簿名称",
+ "summary": "create address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -467,7 +467,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿名称删除",
+ "description": "delete address book name",
"consumes": [
"application/json"
],
@@ -475,12 +475,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称删除",
+ "summary": "delete address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -512,7 +512,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿名称详情",
+ "description": "address book name details",
"consumes": [
"application/json"
],
@@ -520,9 +520,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称详情",
+ "summary": "address book name details",
"parameters": [
{
"type": "integer",
@@ -567,7 +567,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿名称列表",
+ "description": "address book name list",
"consumes": [
"application/json"
],
@@ -575,31 +575,31 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称列表",
+ "summary": "address book name list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -639,7 +639,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿名称编辑",
+ "description": "edit address book name",
"consumes": [
"application/json"
],
@@ -647,12 +647,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称编辑",
+ "summary": "edit address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -696,7 +696,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建地址簿规则",
+ "description": "create address book rule",
"consumes": [
"application/json"
],
@@ -704,12 +704,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "创建地址簿规则",
+ "summary": "create address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -753,7 +753,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿规则删除",
+ "description": "delete address book rule",
"consumes": [
"application/json"
],
@@ -761,12 +761,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则删除",
+ "summary": "delete address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -798,7 +798,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿规则详情",
+ "description": "address book rule details",
"consumes": [
"application/json"
],
@@ -806,9 +806,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则详情",
+ "summary": "address book rule details",
"parameters": [
{
"type": "integer",
@@ -853,7 +853,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿规则列表",
+ "description": "address book rule list",
"consumes": [
"application/json"
],
@@ -861,37 +861,37 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则列表",
+ "summary": "address book rule list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "地址簿集合id",
+ "description": "address book collectionid",
"name": "collection_id",
"in": "query"
}
@@ -931,7 +931,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿规则编辑",
+ "description": "edit address book rule",
"consumes": [
"application/json"
],
@@ -939,12 +939,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则编辑",
+ "summary": "edit address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -988,7 +988,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "链接日志批量删除",
+ "description": "batch delete connection logs",
"consumes": [
"application/json"
],
@@ -996,12 +996,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "链接日志"
+ "connection log"
],
- "summary": "链接日志批量删除",
+ "summary": "batch delete connection logs",
"parameters": [
{
- "description": "链接日志",
+ "description": "connection log",
"name": "body",
"in": "body",
"required": true,
@@ -1033,7 +1033,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "链接日志删除",
+ "description": "delete connection log",
"consumes": [
"application/json"
],
@@ -1041,12 +1041,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "链接日志"
+ "connection log"
],
- "summary": "链接日志删除",
+ "summary": "delete connection log",
"parameters": [
{
- "description": "链接日志信息",
+ "description": "connection log info",
"name": "body",
"in": "body",
"required": true,
@@ -1078,7 +1078,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "链接日志列表",
+ "description": "connection log list",
"consumes": [
"application/json"
],
@@ -1086,31 +1086,31 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "链接日志"
+ "connection log"
],
- "summary": "链接日志列表",
+ "summary": "connection log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "目标设备",
+ "description": "target device",
"name": "peer_id",
"in": "query"
},
{
"type": "integer",
- "description": "来源设备",
+ "description": "source device",
"name": "from_peer",
"in": "query"
}
@@ -1150,7 +1150,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "文件日志批量删除",
+ "description": "batch delete file logs",
"consumes": [
"application/json"
],
@@ -1158,12 +1158,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "文件日志"
+ "file log"
],
- "summary": "文件日志批量删除",
+ "summary": "batch delete file logs",
"parameters": [
{
- "description": "文件日志",
+ "description": "file log",
"name": "body",
"in": "body",
"required": true,
@@ -1195,7 +1195,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "文件日志删除",
+ "description": "delete file log",
"consumes": [
"application/json"
],
@@ -1203,12 +1203,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "文件日志"
+ "file log"
],
- "summary": "文件日志删除",
+ "summary": "delete file log",
"parameters": [
{
- "description": "文件日志信息",
+ "description": "file log info",
"name": "body",
"in": "body",
"required": true,
@@ -1240,7 +1240,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "文件日志列表",
+ "description": "file log list",
"consumes": [
"application/json"
],
@@ -1248,31 +1248,31 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "文件日志"
+ "file log"
],
- "summary": "文件日志列表",
+ "summary": "file log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "目标设备",
+ "description": "target device",
"name": "peer_id",
"in": "query"
},
{
"type": "integer",
- "description": "来源设备",
+ "description": "source device",
"name": "from_peer",
"in": "query"
}
@@ -1312,7 +1312,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "ADMIN服务配置",
+ "description": "ADMINservice config",
"consumes": [
"application/json"
],
@@ -1322,7 +1322,7 @@ const docTemplateadmin = `{
"tags": [
"ADMIN"
],
- "summary": "ADMIN服务配置",
+ "summary": "ADMINservice config",
"responses": {
"200": {
"description": "OK",
@@ -1346,7 +1346,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "APP服务配置",
+ "description": "APPservice config",
"consumes": [
"application/json"
],
@@ -1356,7 +1356,7 @@ const docTemplateadmin = `{
"tags": [
"ADMIN"
],
- "summary": "APP服务配置",
+ "summary": "APPservice config",
"responses": {
"200": {
"description": "OK",
@@ -1380,7 +1380,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "服务配置,给webclient提供api-server",
+ "description": "service config, provides an api-server for the webclient",
"consumes": [
"application/json"
],
@@ -1390,7 +1390,7 @@ const docTemplateadmin = `{
"tags": [
"ADMIN"
],
- "summary": "RUSTDESK服务配置",
+ "summary": "RUSTDESKservice config",
"responses": {
"200": {
"description": "OK",
@@ -1414,7 +1414,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建设备群组",
+ "description": "create device group",
"consumes": [
"application/json"
],
@@ -1422,12 +1422,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "创建设备群组",
+ "summary": "create device group",
"parameters": [
{
- "description": "设备群组信息",
+ "description": "device group info",
"name": "body",
"in": "body",
"required": true,
@@ -1471,7 +1471,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备群组删除",
+ "description": "delete device group",
"consumes": [
"application/json"
],
@@ -1479,12 +1479,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "设备群组删除",
+ "summary": "delete device group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1516,7 +1516,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备群组详情",
+ "description": "device group details",
"consumes": [
"application/json"
],
@@ -1524,9 +1524,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "设备群组详情",
+ "summary": "device group details",
"parameters": [
{
"type": "integer",
@@ -1571,7 +1571,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "群组列表",
+ "description": "group list",
"consumes": [
"application/json"
],
@@ -1579,19 +1579,19 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组列表",
+ "summary": "group list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -1631,7 +1631,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备群组编辑",
+ "description": "edit device group",
"consumes": [
"application/json"
],
@@ -1639,12 +1639,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "设备群组编辑",
+ "summary": "edit device group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1688,7 +1688,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "获取ossToken",
+ "description": "getossToken",
"consumes": [
"application/json"
],
@@ -1696,9 +1696,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "文件"
+ "file"
],
- "summary": "获取ossToken",
+ "summary": "getossToken",
"responses": {
"200": {
"description": "OK",
@@ -1722,7 +1722,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "上传文件到本地",
+ "description": "upload file to local",
"consumes": [
"multipart/form-data"
],
@@ -1730,13 +1730,13 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "文件"
+ "file"
],
- "summary": "上传文件到本地",
+ "summary": "upload file to local",
"parameters": [
{
"type": "file",
- "description": "上传文件示例",
+ "description": "file upload example",
"name": "file",
"in": "formData",
"required": true
@@ -1765,7 +1765,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建群组",
+ "description": "create group",
"consumes": [
"application/json"
],
@@ -1773,12 +1773,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "创建群组",
+ "summary": "create group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1822,7 +1822,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "群组删除",
+ "description": "delete group",
"consumes": [
"application/json"
],
@@ -1830,12 +1830,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组删除",
+ "summary": "delete group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1867,7 +1867,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "群组详情",
+ "description": "group details",
"consumes": [
"application/json"
],
@@ -1875,9 +1875,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组详情",
+ "summary": "group details",
"parameters": [
{
"type": "integer",
@@ -1922,7 +1922,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "群组列表",
+ "description": "group list",
"consumes": [
"application/json"
],
@@ -1930,19 +1930,19 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组列表",
+ "summary": "group list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -1982,7 +1982,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "群组编辑",
+ "description": "edit group",
"consumes": [
"application/json"
],
@@ -1990,12 +1990,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组编辑",
+ "summary": "edit group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -2039,7 +2039,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录",
+ "description": "login",
"consumes": [
"application/json"
],
@@ -2047,12 +2047,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录",
+ "summary": "login",
"parameters": [
{
- "description": "登录信息",
+ "description": "login info",
"name": "body",
"in": "body",
"required": true,
@@ -2091,7 +2091,7 @@ const docTemplateadmin = `{
},
"/admin/login-options": {
"post": {
- "description": "登录选项",
+ "description": "login options",
"consumes": [
"application/json"
],
@@ -2099,9 +2099,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录选项",
+ "summary": "login options",
"responses": {
"200": {
"description": "OK",
@@ -2128,7 +2128,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录日志批量删除",
+ "description": "batch delete login logs",
"consumes": [
"application/json"
],
@@ -2136,12 +2136,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志批量删除",
+ "summary": "batch delete login logs",
"parameters": [
{
- "description": "登录日志",
+ "description": "login log",
"name": "body",
"in": "body",
"required": true,
@@ -2173,7 +2173,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录日志删除",
+ "description": "delete login log",
"consumes": [
"application/json"
],
@@ -2181,12 +2181,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志删除",
+ "summary": "delete login log",
"parameters": [
{
- "description": "登录日志信息",
+ "description": "login log info",
"name": "body",
"in": "body",
"required": true,
@@ -2218,7 +2218,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录日志详情",
+ "description": "login log details",
"consumes": [
"application/json"
],
@@ -2226,9 +2226,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志详情",
+ "summary": "login log details",
"parameters": [
{
"type": "integer",
@@ -2273,7 +2273,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录日志列表",
+ "description": "login log list",
"consumes": [
"application/json"
],
@@ -2281,25 +2281,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志列表",
+ "summary": "login log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
}
@@ -2334,7 +2334,7 @@ const docTemplateadmin = `{
},
"/admin/logout": {
"post": {
- "description": "登出",
+ "description": "logout",
"consumes": [
"application/json"
],
@@ -2342,9 +2342,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登出",
+ "summary": "logout",
"responses": {
"200": {
"description": "OK",
@@ -2368,7 +2368,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建地址簿",
+ "description": "create address book",
"consumes": [
"application/json"
],
@@ -2376,12 +2376,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "创建地址簿",
+ "summary": "create address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -2425,7 +2425,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿删除",
+ "description": "delete address book",
"consumes": [
"application/json"
],
@@ -2433,12 +2433,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "地址簿删除",
+ "summary": "delete address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -2470,7 +2470,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿列表",
+ "description": "address book list",
"consumes": [
"application/json"
],
@@ -2478,25 +2478,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "地址簿列表",
+ "summary": "address book list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -2536,7 +2536,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿编辑",
+ "description": "edit address book",
"consumes": [
"application/json"
],
@@ -2544,12 +2544,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "地址簿编辑",
+ "summary": "edit address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -2593,7 +2593,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建地址簿名称",
+ "description": "create address book name",
"consumes": [
"application/json"
],
@@ -2601,12 +2601,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "创建地址簿名称",
+ "summary": "create address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -2650,7 +2650,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿名称删除",
+ "description": "delete address book name",
"consumes": [
"application/json"
],
@@ -2658,12 +2658,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "地址簿名称删除",
+ "summary": "delete address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -2695,7 +2695,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿名称列表",
+ "description": "address book name list",
"consumes": [
"application/json"
],
@@ -2703,19 +2703,19 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "地址簿名称列表",
+ "summary": "address book name list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -2755,7 +2755,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿名称编辑",
+ "description": "edit address book name",
"consumes": [
"application/json"
],
@@ -2763,12 +2763,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "地址簿名称编辑",
+ "summary": "edit address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -2812,7 +2812,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建地址簿规则",
+ "description": "create address book rule",
"consumes": [
"application/json"
],
@@ -2820,12 +2820,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "创建地址簿规则",
+ "summary": "create address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -2869,7 +2869,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿规则删除",
+ "description": "delete address book rule",
"consumes": [
"application/json"
],
@@ -2877,12 +2877,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "地址簿规则删除",
+ "summary": "delete address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -2914,7 +2914,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿规则列表",
+ "description": "address book rule list",
"consumes": [
"application/json"
],
@@ -2922,37 +2922,37 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "地址簿规则列表",
+ "summary": "address book rule list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "地址簿集合id",
+ "description": "address book collectionid",
"name": "collection_id",
"in": "query"
}
@@ -2992,7 +2992,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "地址簿规则编辑",
+ "description": "edit address book rule",
"consumes": [
"application/json"
],
@@ -3000,12 +3000,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "地址簿规则编辑",
+ "summary": "edit address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -3049,7 +3049,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录日志批量删除",
+ "description": "batch delete login logs",
"consumes": [
"application/json"
],
@@ -3057,12 +3057,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的登录日志"
+ "my login logs"
],
- "summary": "登录日志批量删除",
+ "summary": "batch delete login logs",
"parameters": [
{
- "description": "登录日志",
+ "description": "login log",
"name": "body",
"in": "body",
"required": true,
@@ -3094,7 +3094,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录日志删除",
+ "description": "delete login log",
"consumes": [
"application/json"
],
@@ -3102,12 +3102,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的登录日志"
+ "my login logs"
],
- "summary": "登录日志删除",
+ "summary": "delete login log",
"parameters": [
{
- "description": "登录日志信息",
+ "description": "login log info",
"name": "body",
"in": "body",
"required": true,
@@ -3139,7 +3139,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录日志列表",
+ "description": "login log list",
"consumes": [
"application/json"
],
@@ -3147,25 +3147,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的登录日志"
+ "my login logs"
],
- "summary": "登录日志列表",
+ "summary": "login log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
}
@@ -3205,7 +3205,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备列表",
+ "description": "device list",
"consumes": [
"application/json"
],
@@ -3213,25 +3213,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的设备"
+ "my devices"
],
- "summary": "设备列表",
+ "summary": "device list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "时间",
+ "description": "time",
"name": "time_ago",
"in": "query"
},
@@ -3243,13 +3243,13 @@ const docTemplateadmin = `{
},
{
"type": "string",
- "description": "主机名",
+ "description": "hostname",
"name": "hostname",
"in": "query"
},
{
"type": "string",
- "description": "uuids 用逗号分隔",
+ "description": "uuids separated by commas",
"name": "uuids",
"in": "query"
}
@@ -3289,7 +3289,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "批量删除我的分享记录",
+ "description": "batch delete my share records",
"consumes": [
"application/json"
],
@@ -3297,9 +3297,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的"
+ "my "
],
- "summary": "批量删除我的分享记录",
+ "summary": "batch delete my share records",
"parameters": [
{
"description": "id",
@@ -3334,7 +3334,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "分享记录删除",
+ "description": "delete share record",
"consumes": [
"application/json"
],
@@ -3342,12 +3342,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的分享记录"
+ "my share records"
],
- "summary": "分享记录删除",
+ "summary": "delete share record",
"parameters": [
{
- "description": "分享记录信息",
+ "description": "share record info",
"name": "body",
"in": "body",
"required": true,
@@ -3379,7 +3379,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "分享记录列表",
+ "description": "share record list",
"consumes": [
"application/json"
],
@@ -3387,19 +3387,19 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的分享记录"
+ "my share records"
],
- "summary": "分享记录列表",
+ "summary": "share record list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -3427,7 +3427,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建标签",
+ "description": "create tag",
"consumes": [
"application/json"
],
@@ -3435,12 +3435,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的标签"
+ "my tags"
],
- "summary": "创建标签",
+ "summary": "create tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -3484,7 +3484,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "标签删除",
+ "description": "delete tag",
"consumes": [
"application/json"
],
@@ -3492,12 +3492,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签删除",
+ "summary": "delete tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -3529,7 +3529,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "标签列表",
+ "description": "tag list",
"consumes": [
"application/json"
],
@@ -3537,31 +3537,31 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的标签"
+ "my tags"
],
- "summary": "标签列表",
+ "summary": "tag list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -3601,7 +3601,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "标签编辑",
+ "description": "edit tag",
"consumes": [
"application/json"
],
@@ -3609,12 +3609,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "我的标签"
+ "my tags"
],
- "summary": "标签编辑",
+ "summary": "edit tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -3658,7 +3658,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建Oauth",
+ "description": "createOauth",
"consumes": [
"application/json"
],
@@ -3668,10 +3668,10 @@ const docTemplateadmin = `{
"tags": [
"Oauth"
],
- "summary": "创建Oauth",
+ "summary": "createOauth",
"parameters": [
{
- "description": "Oauth信息",
+ "description": "Oauthinfo",
"name": "body",
"in": "body",
"required": true,
@@ -3715,7 +3715,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "Oauth删除",
+ "description": "Oauthdelete",
"consumes": [
"application/json"
],
@@ -3725,10 +3725,10 @@ const docTemplateadmin = `{
"tags": [
"Oauth"
],
- "summary": "Oauth删除",
+ "summary": "Oauthdelete",
"parameters": [
{
- "description": "Oauth信息",
+ "description": "Oauthinfo",
"name": "body",
"in": "body",
"required": true,
@@ -3760,7 +3760,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "Oauth详情",
+ "description": "Oauthdetails",
"consumes": [
"application/json"
],
@@ -3770,7 +3770,7 @@ const docTemplateadmin = `{
"tags": [
"Oauth"
],
- "summary": "Oauth详情",
+ "summary": "Oauthdetails",
"parameters": [
{
"type": "integer",
@@ -3815,7 +3815,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "Oauth列表",
+ "description": "Oauthlist",
"consumes": [
"application/json"
],
@@ -3825,17 +3825,17 @@ const docTemplateadmin = `{
"tags": [
"Oauth"
],
- "summary": "Oauth列表",
+ "summary": "Oauthlist",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -3875,7 +3875,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "Oauth编辑",
+ "description": "Oauthedit",
"consumes": [
"application/json"
],
@@ -3885,10 +3885,10 @@ const docTemplateadmin = `{
"tags": [
"Oauth"
],
- "summary": "Oauth编辑",
+ "summary": "Oauthedit",
"parameters": [
{
- "description": "Oauth信息",
+ "description": "Oauthinfo",
"name": "body",
"in": "body",
"required": true,
@@ -3989,7 +3989,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "批量设备删除",
+ "description": "batch delete devices",
"consumes": [
"application/json"
],
@@ -3997,12 +3997,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "批量设备删除",
+ "summary": "batch delete devices",
"parameters": [
{
- "description": "设备id",
+ "description": "deviceid",
"name": "body",
"in": "body",
"required": true,
@@ -4034,7 +4034,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建设备",
+ "description": "create device",
"consumes": [
"application/json"
],
@@ -4042,12 +4042,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "创建设备",
+ "summary": "create device",
"parameters": [
{
- "description": "设备信息",
+ "description": "device info",
"name": "body",
"in": "body",
"required": true,
@@ -4091,7 +4091,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备删除",
+ "description": "delete device",
"consumes": [
"application/json"
],
@@ -4099,12 +4099,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备删除",
+ "summary": "delete device",
"parameters": [
{
- "description": "设备信息",
+ "description": "device info",
"name": "body",
"in": "body",
"required": true,
@@ -4136,7 +4136,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备详情",
+ "description": "device details",
"consumes": [
"application/json"
],
@@ -4144,9 +4144,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备详情",
+ "summary": "device details",
"parameters": [
{
"type": "integer",
@@ -4191,7 +4191,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备列表",
+ "description": "device list",
"consumes": [
"application/json"
],
@@ -4199,25 +4199,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备列表",
+ "summary": "device list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "时间",
+ "description": "time",
"name": "time_ago",
"in": "query"
},
@@ -4229,13 +4229,13 @@ const docTemplateadmin = `{
},
{
"type": "string",
- "description": "主机名",
+ "description": "hostname",
"name": "hostname",
"in": "query"
},
{
"type": "string",
- "description": "uuids 用逗号分隔",
+ "description": "uuids separated by commas",
"name": "uuids",
"in": "query"
}
@@ -4275,7 +4275,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "设备编辑",
+ "description": "edit device",
"consumes": [
"application/json"
],
@@ -4283,12 +4283,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备编辑",
+ "summary": "edit device",
"parameters": [
{
- "description": "设备信息",
+ "description": "device info",
"name": "body",
"in": "body",
"required": true,
@@ -4332,7 +4332,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "批量分享记录",
+ "description": "batch share records",
"consumes": [
"application/json"
],
@@ -4340,9 +4340,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "分享记录"
+ "share record"
],
- "summary": "批量分享记录",
+ "summary": "batch share records",
"parameters": [
{
"description": "id",
@@ -4377,7 +4377,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "分享记录删除",
+ "description": "delete share record",
"consumes": [
"application/json"
],
@@ -4385,12 +4385,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "分享记录"
+ "share record"
],
- "summary": "分享记录删除",
+ "summary": "delete share record",
"parameters": [
{
- "description": "分享记录信息",
+ "description": "share record info",
"name": "body",
"in": "body",
"required": true,
@@ -4422,7 +4422,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "分享记录列表",
+ "description": "share record list",
"consumes": [
"application/json"
],
@@ -4430,25 +4430,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "分享记录"
+ "share record"
],
- "summary": "分享记录列表",
+ "summary": "share record list",
"parameters": [
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -4476,7 +4476,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建标签",
+ "description": "create tag",
"consumes": [
"application/json"
],
@@ -4484,12 +4484,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "创建标签",
+ "summary": "create tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -4533,7 +4533,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "标签删除",
+ "description": "delete tag",
"consumes": [
"application/json"
],
@@ -4541,12 +4541,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签删除",
+ "summary": "delete tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -4578,7 +4578,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "标签详情",
+ "description": "tag details",
"consumes": [
"application/json"
],
@@ -4586,9 +4586,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签详情",
+ "summary": "tag details",
"parameters": [
{
"type": "integer",
@@ -4633,7 +4633,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "标签列表",
+ "description": "tag list",
"consumes": [
"application/json"
],
@@ -4641,31 +4641,31 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签列表",
+ "summary": "tag list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -4705,7 +4705,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "标签编辑",
+ "description": "edit tag",
"consumes": [
"application/json"
],
@@ -4713,12 +4713,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签编辑",
+ "summary": "edit tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -4762,7 +4762,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "修改当前用户密码",
+ "description": "change the current user's password",
"consumes": [
"application/json"
],
@@ -4770,12 +4770,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "修改当前用户密码",
+ "summary": "change the current user's password",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -4807,7 +4807,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "创建管理员",
+ "description": "create administrator",
"consumes": [
"application/json"
],
@@ -4815,12 +4815,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "创建管理员",
+ "summary": "create administrator",
"parameters": [
{
- "description": "管理员信息",
+ "description": "administrator info",
"name": "body",
"in": "body",
"required": true,
@@ -4864,7 +4864,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "当前用户",
+ "description": "current user",
"consumes": [
"application/json"
],
@@ -4872,9 +4872,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "当前用户",
+ "summary": "current user",
"responses": {
"200": {
"description": "OK",
@@ -4910,7 +4910,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "管理员编删除",
+ "description": "delete administrator",
"consumes": [
"application/json"
],
@@ -4918,12 +4918,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员删除",
+ "summary": "delete administrator",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -4955,7 +4955,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "管理员详情",
+ "description": "administrator details",
"consumes": [
"application/json"
],
@@ -4963,9 +4963,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员详情",
+ "summary": "administrator details",
"parameters": [
{
"type": "integer",
@@ -5010,7 +5010,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "管理员列表",
+ "description": "administrator list",
"consumes": [
"application/json"
],
@@ -5018,25 +5018,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员列表",
+ "summary": "administrator list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "账户",
+ "description": "account",
"name": "username",
"in": "query"
}
@@ -5076,7 +5076,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "我的授权",
+ "description": "my authorizations",
"consumes": [
"application/json"
],
@@ -5084,9 +5084,9 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "我的授权",
+ "summary": "my authorizations",
"responses": {
"200": {
"description": "OK",
@@ -5125,7 +5125,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "管理员编辑",
+ "description": "edit administrator",
"consumes": [
"application/json"
],
@@ -5133,12 +5133,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员编辑",
+ "summary": "edit administrator",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -5182,7 +5182,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "修改密码",
+ "description": "change password",
"consumes": [
"application/json"
],
@@ -5190,12 +5190,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "修改密码",
+ "summary": "change password",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -5227,7 +5227,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录凭证批量删除",
+ "description": "batch delete login credentials",
"consumes": [
"application/json"
],
@@ -5235,12 +5235,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录凭证"
+ "login credential"
],
- "summary": "登录凭证批量删除",
+ "summary": "batch delete login credentials",
"parameters": [
{
- "description": "登录凭证信息",
+ "description": "login credential info",
"name": "body",
"in": "body",
"required": true,
@@ -5272,7 +5272,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录凭证删除",
+ "description": "delete login credential",
"consumes": [
"application/json"
],
@@ -5280,12 +5280,12 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录凭证"
+ "login credential"
],
- "summary": "登录凭证删除",
+ "summary": "delete login credential",
"parameters": [
{
- "description": "登录凭证信息",
+ "description": "login credential info",
"name": "body",
"in": "body",
"required": true,
@@ -5317,7 +5317,7 @@ const docTemplateadmin = `{
"token": []
}
],
- "description": "登录凭证列表",
+ "description": "login credential list",
"consumes": [
"application/json"
],
@@ -5325,25 +5325,25 @@ const docTemplateadmin = `{
"application/json"
],
"tags": [
- "登录凭证"
+ "login credential"
],
- "summary": "登录凭证列表",
+ "summary": "login credential list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
}
@@ -5685,7 +5685,7 @@ const docTemplateadmin = `{
"type": "string"
},
"password_type": {
- "description": "只能是once,fixed",
+ "description": "can only be once,fixed",
"type": "string",
"enum": [
"once",
@@ -5741,7 +5741,7 @@ const docTemplateadmin = `{
"type": "string"
},
"email": {
- "description": "validate:\"required,email\" email不强制",
+ "description": "validate:\"required,email\" emailnot enforced",
"type": "string"
},
"group_id": {
@@ -5968,7 +5968,7 @@ const docTemplateadmin = `{
"type": "integer"
},
"rule": {
- "description": "0: 无 1: 读 2: 读写 3: 完全控制",
+ "description": "0: none 1: read 2: read-write 3: full control",
"type": "integer",
"maximum": 3,
"minimum": 1
@@ -5977,7 +5977,7 @@ const docTemplateadmin = `{
"type": "integer"
},
"type": {
- "description": "1: 个人 2: 群组",
+ "description": "1: personal 2: group",
"type": "integer",
"maximum": 2,
"minimum": 1
@@ -6400,8 +6400,8 @@ const docTemplateadmin = `{
2
],
"x-enum-comments": {
- "COMMON_STATUS_DISABLED": "通用状态 禁用",
- "COMMON_STATUS_ENABLE": "通用状态 启用"
+ "COMMON_STATUS_DISABLED": "common status disable",
+ "COMMON_STATUS_ENABLE": "common status enable"
},
"x-enum-varnames": [
"COMMON_STATUS_ENABLE",
@@ -6418,7 +6418,7 @@ const docTemplateadmin = `{
"type": "integer"
},
"color": {
- "description": "color 是flutter的颜色值,从0x00000000 到 0xFFFFFFFF; 前两位表示透明度,后面6位表示颜色, 可以转成rgba",
+ "description": "color is flutter's color value,from 0x00000000 to 0xFFFFFFFF; the first two digits represent transparency, the following 6 digits represent the color, can be converted to rgba",
"type": "integer"
},
"created_at": {
@@ -6603,8 +6603,8 @@ var SwaggerInfoadmin = &swag.Spec{
Host: "",
BasePath: "/api",
Schemes: []string{},
- Title: "管理系统API",
- Description: "接口",
+ Title: "management systemAPI",
+ Description: "API",
InfoInstanceName: "admin",
SwaggerTemplate: docTemplateadmin,
LeftDelim: "{{",
diff --git a/docs/admin/admin_swagger.json b/docs/admin/admin_swagger.json
index 6e4df7e..b4be041 100644
--- a/docs/admin/admin_swagger.json
+++ b/docs/admin/admin_swagger.json
@@ -1,8 +1,8 @@
{
"swagger": "2.0",
"info": {
- "description": "接口",
- "title": "管理系统API",
+ "description": "API",
+ "title": "management systemAPI",
"contact": {},
"version": "1.0"
},
@@ -15,7 +15,7 @@
"token": []
}
],
- "description": "批量创建地址簿",
+ "description": "batch create address books",
"consumes": [
"application/json"
],
@@ -23,12 +23,12 @@
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "批量创建地址簿",
+ "summary": "batch create address books",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -72,7 +72,7 @@
"token": []
}
],
- "description": "创建地址簿",
+ "description": "create address book",
"consumes": [
"application/json"
],
@@ -80,12 +80,12 @@
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "创建地址簿",
+ "summary": "create address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -129,7 +129,7 @@
"token": []
}
],
- "description": "地址簿删除",
+ "description": "delete address book",
"consumes": [
"application/json"
],
@@ -137,12 +137,12 @@
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿删除",
+ "summary": "delete address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -174,7 +174,7 @@
"token": []
}
],
- "description": "地址簿详情",
+ "description": "address book details",
"consumes": [
"application/json"
],
@@ -182,9 +182,9 @@
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿详情",
+ "summary": "address book details",
"parameters": [
{
"type": "integer",
@@ -229,7 +229,7 @@
"token": []
}
],
- "description": "地址簿列表",
+ "description": "address book list",
"consumes": [
"application/json"
],
@@ -237,31 +237,31 @@
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿列表",
+ "summary": "address book list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
}
@@ -301,7 +301,7 @@
"token": []
}
],
- "description": "地址簿分享",
+ "description": "share address book",
"consumes": [
"application/json"
],
@@ -309,12 +309,12 @@
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿分享",
+ "summary": "share address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -346,7 +346,7 @@
"token": []
}
],
- "description": "地址簿编辑",
+ "description": "edit address book",
"consumes": [
"application/json"
],
@@ -354,12 +354,12 @@
"application/json"
],
"tags": [
- "地址簿"
+ "address book"
],
- "summary": "地址簿编辑",
+ "summary": "edit address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -403,7 +403,7 @@
"token": []
}
],
- "description": "创建地址簿名称",
+ "description": "create address book name",
"consumes": [
"application/json"
],
@@ -411,12 +411,12 @@
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "创建地址簿名称",
+ "summary": "create address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -460,7 +460,7 @@
"token": []
}
],
- "description": "地址簿名称删除",
+ "description": "delete address book name",
"consumes": [
"application/json"
],
@@ -468,12 +468,12 @@
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称删除",
+ "summary": "delete address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -505,7 +505,7 @@
"token": []
}
],
- "description": "地址簿名称详情",
+ "description": "address book name details",
"consumes": [
"application/json"
],
@@ -513,9 +513,9 @@
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称详情",
+ "summary": "address book name details",
"parameters": [
{
"type": "integer",
@@ -560,7 +560,7 @@
"token": []
}
],
- "description": "地址簿名称列表",
+ "description": "address book name list",
"consumes": [
"application/json"
],
@@ -568,31 +568,31 @@
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称列表",
+ "summary": "address book name list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -632,7 +632,7 @@
"token": []
}
],
- "description": "地址簿名称编辑",
+ "description": "edit address book name",
"consumes": [
"application/json"
],
@@ -640,12 +640,12 @@
"application/json"
],
"tags": [
- "地址簿名称"
+ "address book name"
],
- "summary": "地址簿名称编辑",
+ "summary": "edit address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -689,7 +689,7 @@
"token": []
}
],
- "description": "创建地址簿规则",
+ "description": "create address book rule",
"consumes": [
"application/json"
],
@@ -697,12 +697,12 @@
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "创建地址簿规则",
+ "summary": "create address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -746,7 +746,7 @@
"token": []
}
],
- "description": "地址簿规则删除",
+ "description": "delete address book rule",
"consumes": [
"application/json"
],
@@ -754,12 +754,12 @@
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则删除",
+ "summary": "delete address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -791,7 +791,7 @@
"token": []
}
],
- "description": "地址簿规则详情",
+ "description": "address book rule details",
"consumes": [
"application/json"
],
@@ -799,9 +799,9 @@
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则详情",
+ "summary": "address book rule details",
"parameters": [
{
"type": "integer",
@@ -846,7 +846,7 @@
"token": []
}
],
- "description": "地址簿规则列表",
+ "description": "address book rule list",
"consumes": [
"application/json"
],
@@ -854,37 +854,37 @@
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则列表",
+ "summary": "address book rule list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "地址簿集合id",
+ "description": "address book collectionid",
"name": "collection_id",
"in": "query"
}
@@ -924,7 +924,7 @@
"token": []
}
],
- "description": "地址簿规则编辑",
+ "description": "edit address book rule",
"consumes": [
"application/json"
],
@@ -932,12 +932,12 @@
"application/json"
],
"tags": [
- "地址簿规则"
+ "address book rules"
],
- "summary": "地址簿规则编辑",
+ "summary": "edit address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -981,7 +981,7 @@
"token": []
}
],
- "description": "链接日志批量删除",
+ "description": "batch delete connection logs",
"consumes": [
"application/json"
],
@@ -989,12 +989,12 @@
"application/json"
],
"tags": [
- "链接日志"
+ "connection log"
],
- "summary": "链接日志批量删除",
+ "summary": "batch delete connection logs",
"parameters": [
{
- "description": "链接日志",
+ "description": "connection log",
"name": "body",
"in": "body",
"required": true,
@@ -1026,7 +1026,7 @@
"token": []
}
],
- "description": "链接日志删除",
+ "description": "delete connection log",
"consumes": [
"application/json"
],
@@ -1034,12 +1034,12 @@
"application/json"
],
"tags": [
- "链接日志"
+ "connection log"
],
- "summary": "链接日志删除",
+ "summary": "delete connection log",
"parameters": [
{
- "description": "链接日志信息",
+ "description": "connection log info",
"name": "body",
"in": "body",
"required": true,
@@ -1071,7 +1071,7 @@
"token": []
}
],
- "description": "链接日志列表",
+ "description": "connection log list",
"consumes": [
"application/json"
],
@@ -1079,31 +1079,31 @@
"application/json"
],
"tags": [
- "链接日志"
+ "connection log"
],
- "summary": "链接日志列表",
+ "summary": "connection log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "目标设备",
+ "description": "target device",
"name": "peer_id",
"in": "query"
},
{
"type": "integer",
- "description": "来源设备",
+ "description": "source device",
"name": "from_peer",
"in": "query"
}
@@ -1143,7 +1143,7 @@
"token": []
}
],
- "description": "文件日志批量删除",
+ "description": "batch delete file logs",
"consumes": [
"application/json"
],
@@ -1151,12 +1151,12 @@
"application/json"
],
"tags": [
- "文件日志"
+ "file log"
],
- "summary": "文件日志批量删除",
+ "summary": "batch delete file logs",
"parameters": [
{
- "description": "文件日志",
+ "description": "file log",
"name": "body",
"in": "body",
"required": true,
@@ -1188,7 +1188,7 @@
"token": []
}
],
- "description": "文件日志删除",
+ "description": "delete file log",
"consumes": [
"application/json"
],
@@ -1196,12 +1196,12 @@
"application/json"
],
"tags": [
- "文件日志"
+ "file log"
],
- "summary": "文件日志删除",
+ "summary": "delete file log",
"parameters": [
{
- "description": "文件日志信息",
+ "description": "file log info",
"name": "body",
"in": "body",
"required": true,
@@ -1233,7 +1233,7 @@
"token": []
}
],
- "description": "文件日志列表",
+ "description": "file log list",
"consumes": [
"application/json"
],
@@ -1241,31 +1241,31 @@
"application/json"
],
"tags": [
- "文件日志"
+ "file log"
],
- "summary": "文件日志列表",
+ "summary": "file log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "目标设备",
+ "description": "target device",
"name": "peer_id",
"in": "query"
},
{
"type": "integer",
- "description": "来源设备",
+ "description": "source device",
"name": "from_peer",
"in": "query"
}
@@ -1305,7 +1305,7 @@
"token": []
}
],
- "description": "ADMIN服务配置",
+ "description": "ADMINservice config",
"consumes": [
"application/json"
],
@@ -1315,7 +1315,7 @@
"tags": [
"ADMIN"
],
- "summary": "ADMIN服务配置",
+ "summary": "ADMINservice config",
"responses": {
"200": {
"description": "OK",
@@ -1339,7 +1339,7 @@
"token": []
}
],
- "description": "APP服务配置",
+ "description": "APPservice config",
"consumes": [
"application/json"
],
@@ -1349,7 +1349,7 @@
"tags": [
"ADMIN"
],
- "summary": "APP服务配置",
+ "summary": "APPservice config",
"responses": {
"200": {
"description": "OK",
@@ -1373,7 +1373,7 @@
"token": []
}
],
- "description": "服务配置,给webclient提供api-server",
+ "description": "service config, provides an api-server for the webclient",
"consumes": [
"application/json"
],
@@ -1383,7 +1383,7 @@
"tags": [
"ADMIN"
],
- "summary": "RUSTDESK服务配置",
+ "summary": "RUSTDESKservice config",
"responses": {
"200": {
"description": "OK",
@@ -1407,7 +1407,7 @@
"token": []
}
],
- "description": "创建设备群组",
+ "description": "create device group",
"consumes": [
"application/json"
],
@@ -1415,12 +1415,12 @@
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "创建设备群组",
+ "summary": "create device group",
"parameters": [
{
- "description": "设备群组信息",
+ "description": "device group info",
"name": "body",
"in": "body",
"required": true,
@@ -1464,7 +1464,7 @@
"token": []
}
],
- "description": "设备群组删除",
+ "description": "delete device group",
"consumes": [
"application/json"
],
@@ -1472,12 +1472,12 @@
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "设备群组删除",
+ "summary": "delete device group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1509,7 +1509,7 @@
"token": []
}
],
- "description": "设备群组详情",
+ "description": "device group details",
"consumes": [
"application/json"
],
@@ -1517,9 +1517,9 @@
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "设备群组详情",
+ "summary": "device group details",
"parameters": [
{
"type": "integer",
@@ -1564,7 +1564,7 @@
"token": []
}
],
- "description": "群组列表",
+ "description": "group list",
"consumes": [
"application/json"
],
@@ -1572,19 +1572,19 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组列表",
+ "summary": "group list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -1624,7 +1624,7 @@
"token": []
}
],
- "description": "设备群组编辑",
+ "description": "edit device group",
"consumes": [
"application/json"
],
@@ -1632,12 +1632,12 @@
"application/json"
],
"tags": [
- "设备群组"
+ "device group"
],
- "summary": "设备群组编辑",
+ "summary": "edit device group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1681,7 +1681,7 @@
"token": []
}
],
- "description": "获取ossToken",
+ "description": "getossToken",
"consumes": [
"application/json"
],
@@ -1689,9 +1689,9 @@
"application/json"
],
"tags": [
- "文件"
+ "file"
],
- "summary": "获取ossToken",
+ "summary": "getossToken",
"responses": {
"200": {
"description": "OK",
@@ -1715,7 +1715,7 @@
"token": []
}
],
- "description": "上传文件到本地",
+ "description": "upload file to local",
"consumes": [
"multipart/form-data"
],
@@ -1723,13 +1723,13 @@
"application/json"
],
"tags": [
- "文件"
+ "file"
],
- "summary": "上传文件到本地",
+ "summary": "upload file to local",
"parameters": [
{
"type": "file",
- "description": "上传文件示例",
+ "description": "file upload example",
"name": "file",
"in": "formData",
"required": true
@@ -1758,7 +1758,7 @@
"token": []
}
],
- "description": "创建群组",
+ "description": "create group",
"consumes": [
"application/json"
],
@@ -1766,12 +1766,12 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "创建群组",
+ "summary": "create group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1815,7 +1815,7 @@
"token": []
}
],
- "description": "群组删除",
+ "description": "delete group",
"consumes": [
"application/json"
],
@@ -1823,12 +1823,12 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组删除",
+ "summary": "delete group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -1860,7 +1860,7 @@
"token": []
}
],
- "description": "群组详情",
+ "description": "group details",
"consumes": [
"application/json"
],
@@ -1868,9 +1868,9 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组详情",
+ "summary": "group details",
"parameters": [
{
"type": "integer",
@@ -1915,7 +1915,7 @@
"token": []
}
],
- "description": "群组列表",
+ "description": "group list",
"consumes": [
"application/json"
],
@@ -1923,19 +1923,19 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组列表",
+ "summary": "group list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -1975,7 +1975,7 @@
"token": []
}
],
- "description": "群组编辑",
+ "description": "edit group",
"consumes": [
"application/json"
],
@@ -1983,12 +1983,12 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "群组编辑",
+ "summary": "edit group",
"parameters": [
{
- "description": "群组信息",
+ "description": "group info",
"name": "body",
"in": "body",
"required": true,
@@ -2032,7 +2032,7 @@
"token": []
}
],
- "description": "登录",
+ "description": "login",
"consumes": [
"application/json"
],
@@ -2040,12 +2040,12 @@
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录",
+ "summary": "login",
"parameters": [
{
- "description": "登录信息",
+ "description": "login info",
"name": "body",
"in": "body",
"required": true,
@@ -2084,7 +2084,7 @@
},
"/admin/login-options": {
"post": {
- "description": "登录选项",
+ "description": "login options",
"consumes": [
"application/json"
],
@@ -2092,9 +2092,9 @@
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录选项",
+ "summary": "login options",
"responses": {
"200": {
"description": "OK",
@@ -2121,7 +2121,7 @@
"token": []
}
],
- "description": "登录日志批量删除",
+ "description": "batch delete login logs",
"consumes": [
"application/json"
],
@@ -2129,12 +2129,12 @@
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志批量删除",
+ "summary": "batch delete login logs",
"parameters": [
{
- "description": "登录日志",
+ "description": "login log",
"name": "body",
"in": "body",
"required": true,
@@ -2166,7 +2166,7 @@
"token": []
}
],
- "description": "登录日志删除",
+ "description": "delete login log",
"consumes": [
"application/json"
],
@@ -2174,12 +2174,12 @@
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志删除",
+ "summary": "delete login log",
"parameters": [
{
- "description": "登录日志信息",
+ "description": "login log info",
"name": "body",
"in": "body",
"required": true,
@@ -2211,7 +2211,7 @@
"token": []
}
],
- "description": "登录日志详情",
+ "description": "login log details",
"consumes": [
"application/json"
],
@@ -2219,9 +2219,9 @@
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志详情",
+ "summary": "login log details",
"parameters": [
{
"type": "integer",
@@ -2266,7 +2266,7 @@
"token": []
}
],
- "description": "登录日志列表",
+ "description": "login log list",
"consumes": [
"application/json"
],
@@ -2274,25 +2274,25 @@
"application/json"
],
"tags": [
- "登录日志"
+ "login log"
],
- "summary": "登录日志列表",
+ "summary": "login log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
}
@@ -2327,7 +2327,7 @@
},
"/admin/logout": {
"post": {
- "description": "登出",
+ "description": "logout",
"consumes": [
"application/json"
],
@@ -2335,9 +2335,9 @@
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登出",
+ "summary": "logout",
"responses": {
"200": {
"description": "OK",
@@ -2361,7 +2361,7 @@
"token": []
}
],
- "description": "创建地址簿",
+ "description": "create address book",
"consumes": [
"application/json"
],
@@ -2369,12 +2369,12 @@
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "创建地址簿",
+ "summary": "create address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -2418,7 +2418,7 @@
"token": []
}
],
- "description": "地址簿删除",
+ "description": "delete address book",
"consumes": [
"application/json"
],
@@ -2426,12 +2426,12 @@
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "地址簿删除",
+ "summary": "delete address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -2463,7 +2463,7 @@
"token": []
}
],
- "description": "地址簿列表",
+ "description": "address book list",
"consumes": [
"application/json"
],
@@ -2471,25 +2471,25 @@
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "地址簿列表",
+ "summary": "address book list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -2529,7 +2529,7 @@
"token": []
}
],
- "description": "地址簿编辑",
+ "description": "edit address book",
"consumes": [
"application/json"
],
@@ -2537,12 +2537,12 @@
"application/json"
],
"tags": [
- "我的地址簿"
+ "my address book"
],
- "summary": "地址簿编辑",
+ "summary": "edit address book",
"parameters": [
{
- "description": "地址簿信息",
+ "description": "address book info",
"name": "body",
"in": "body",
"required": true,
@@ -2586,7 +2586,7 @@
"token": []
}
],
- "description": "创建地址簿名称",
+ "description": "create address book name",
"consumes": [
"application/json"
],
@@ -2594,12 +2594,12 @@
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "创建地址簿名称",
+ "summary": "create address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -2643,7 +2643,7 @@
"token": []
}
],
- "description": "地址簿名称删除",
+ "description": "delete address book name",
"consumes": [
"application/json"
],
@@ -2651,12 +2651,12 @@
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "地址簿名称删除",
+ "summary": "delete address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -2688,7 +2688,7 @@
"token": []
}
],
- "description": "地址簿名称列表",
+ "description": "address book name list",
"consumes": [
"application/json"
],
@@ -2696,19 +2696,19 @@
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "地址簿名称列表",
+ "summary": "address book name list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -2748,7 +2748,7 @@
"token": []
}
],
- "description": "地址簿名称编辑",
+ "description": "edit address book name",
"consumes": [
"application/json"
],
@@ -2756,12 +2756,12 @@
"application/json"
],
"tags": [
- "我的地址簿名称"
+ "my address book name"
],
- "summary": "地址簿名称编辑",
+ "summary": "edit address book name",
"parameters": [
{
- "description": "地址簿名称信息",
+ "description": "address book name info",
"name": "body",
"in": "body",
"required": true,
@@ -2805,7 +2805,7 @@
"token": []
}
],
- "description": "创建地址簿规则",
+ "description": "create address book rule",
"consumes": [
"application/json"
],
@@ -2813,12 +2813,12 @@
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "创建地址簿规则",
+ "summary": "create address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -2862,7 +2862,7 @@
"token": []
}
],
- "description": "地址簿规则删除",
+ "description": "delete address book rule",
"consumes": [
"application/json"
],
@@ -2870,12 +2870,12 @@
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "地址簿规则删除",
+ "summary": "delete address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -2907,7 +2907,7 @@
"token": []
}
],
- "description": "地址簿规则列表",
+ "description": "address book rule list",
"consumes": [
"application/json"
],
@@ -2915,37 +2915,37 @@
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "地址簿规则列表",
+ "summary": "address book rule list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "地址簿集合id",
+ "description": "address book collectionid",
"name": "collection_id",
"in": "query"
}
@@ -2985,7 +2985,7 @@
"token": []
}
],
- "description": "地址簿规则编辑",
+ "description": "edit address book rule",
"consumes": [
"application/json"
],
@@ -2993,12 +2993,12 @@
"application/json"
],
"tags": [
- "我的地址簿规则"
+ "my address book rules"
],
- "summary": "地址簿规则编辑",
+ "summary": "edit address book rule",
"parameters": [
{
- "description": "地址簿规则信息",
+ "description": "address book rule info",
"name": "body",
"in": "body",
"required": true,
@@ -3042,7 +3042,7 @@
"token": []
}
],
- "description": "登录日志批量删除",
+ "description": "batch delete login logs",
"consumes": [
"application/json"
],
@@ -3050,12 +3050,12 @@
"application/json"
],
"tags": [
- "我的登录日志"
+ "my login logs"
],
- "summary": "登录日志批量删除",
+ "summary": "batch delete login logs",
"parameters": [
{
- "description": "登录日志",
+ "description": "login log",
"name": "body",
"in": "body",
"required": true,
@@ -3087,7 +3087,7 @@
"token": []
}
],
- "description": "登录日志删除",
+ "description": "delete login log",
"consumes": [
"application/json"
],
@@ -3095,12 +3095,12 @@
"application/json"
],
"tags": [
- "我的登录日志"
+ "my login logs"
],
- "summary": "登录日志删除",
+ "summary": "delete login log",
"parameters": [
{
- "description": "登录日志信息",
+ "description": "login log info",
"name": "body",
"in": "body",
"required": true,
@@ -3132,7 +3132,7 @@
"token": []
}
],
- "description": "登录日志列表",
+ "description": "login log list",
"consumes": [
"application/json"
],
@@ -3140,25 +3140,25 @@
"application/json"
],
"tags": [
- "我的登录日志"
+ "my login logs"
],
- "summary": "登录日志列表",
+ "summary": "login log list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
}
@@ -3198,7 +3198,7 @@
"token": []
}
],
- "description": "设备列表",
+ "description": "device list",
"consumes": [
"application/json"
],
@@ -3206,25 +3206,25 @@
"application/json"
],
"tags": [
- "我的设备"
+ "my devices"
],
- "summary": "设备列表",
+ "summary": "device list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "时间",
+ "description": "time",
"name": "time_ago",
"in": "query"
},
@@ -3236,13 +3236,13 @@
},
{
"type": "string",
- "description": "主机名",
+ "description": "hostname",
"name": "hostname",
"in": "query"
},
{
"type": "string",
- "description": "uuids 用逗号分隔",
+ "description": "uuids separated by commas",
"name": "uuids",
"in": "query"
}
@@ -3282,7 +3282,7 @@
"token": []
}
],
- "description": "批量删除我的分享记录",
+ "description": "batch delete my share records",
"consumes": [
"application/json"
],
@@ -3290,9 +3290,9 @@
"application/json"
],
"tags": [
- "我的"
+ "my "
],
- "summary": "批量删除我的分享记录",
+ "summary": "batch delete my share records",
"parameters": [
{
"description": "id",
@@ -3327,7 +3327,7 @@
"token": []
}
],
- "description": "分享记录删除",
+ "description": "delete share record",
"consumes": [
"application/json"
],
@@ -3335,12 +3335,12 @@
"application/json"
],
"tags": [
- "我的分享记录"
+ "my share records"
],
- "summary": "分享记录删除",
+ "summary": "delete share record",
"parameters": [
{
- "description": "分享记录信息",
+ "description": "share record info",
"name": "body",
"in": "body",
"required": true,
@@ -3372,7 +3372,7 @@
"token": []
}
],
- "description": "分享记录列表",
+ "description": "share record list",
"consumes": [
"application/json"
],
@@ -3380,19 +3380,19 @@
"application/json"
],
"tags": [
- "我的分享记录"
+ "my share records"
],
- "summary": "分享记录列表",
+ "summary": "share record list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -3420,7 +3420,7 @@
"token": []
}
],
- "description": "创建标签",
+ "description": "create tag",
"consumes": [
"application/json"
],
@@ -3428,12 +3428,12 @@
"application/json"
],
"tags": [
- "我的标签"
+ "my tags"
],
- "summary": "创建标签",
+ "summary": "create tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -3477,7 +3477,7 @@
"token": []
}
],
- "description": "标签删除",
+ "description": "delete tag",
"consumes": [
"application/json"
],
@@ -3485,12 +3485,12 @@
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签删除",
+ "summary": "delete tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -3522,7 +3522,7 @@
"token": []
}
],
- "description": "标签列表",
+ "description": "tag list",
"consumes": [
"application/json"
],
@@ -3530,31 +3530,31 @@
"application/json"
],
"tags": [
- "我的标签"
+ "my tags"
],
- "summary": "标签列表",
+ "summary": "tag list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -3594,7 +3594,7 @@
"token": []
}
],
- "description": "标签编辑",
+ "description": "edit tag",
"consumes": [
"application/json"
],
@@ -3602,12 +3602,12 @@
"application/json"
],
"tags": [
- "我的标签"
+ "my tags"
],
- "summary": "标签编辑",
+ "summary": "edit tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -3651,7 +3651,7 @@
"token": []
}
],
- "description": "创建Oauth",
+ "description": "createOauth",
"consumes": [
"application/json"
],
@@ -3661,10 +3661,10 @@
"tags": [
"Oauth"
],
- "summary": "创建Oauth",
+ "summary": "createOauth",
"parameters": [
{
- "description": "Oauth信息",
+ "description": "Oauthinfo",
"name": "body",
"in": "body",
"required": true,
@@ -3708,7 +3708,7 @@
"token": []
}
],
- "description": "Oauth删除",
+ "description": "Oauthdelete",
"consumes": [
"application/json"
],
@@ -3718,10 +3718,10 @@
"tags": [
"Oauth"
],
- "summary": "Oauth删除",
+ "summary": "Oauthdelete",
"parameters": [
{
- "description": "Oauth信息",
+ "description": "Oauthinfo",
"name": "body",
"in": "body",
"required": true,
@@ -3753,7 +3753,7 @@
"token": []
}
],
- "description": "Oauth详情",
+ "description": "Oauthdetails",
"consumes": [
"application/json"
],
@@ -3763,7 +3763,7 @@
"tags": [
"Oauth"
],
- "summary": "Oauth详情",
+ "summary": "Oauthdetails",
"parameters": [
{
"type": "integer",
@@ -3808,7 +3808,7 @@
"token": []
}
],
- "description": "Oauth列表",
+ "description": "Oauthlist",
"consumes": [
"application/json"
],
@@ -3818,17 +3818,17 @@
"tags": [
"Oauth"
],
- "summary": "Oauth列表",
+ "summary": "Oauthlist",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -3868,7 +3868,7 @@
"token": []
}
],
- "description": "Oauth编辑",
+ "description": "Oauthedit",
"consumes": [
"application/json"
],
@@ -3878,10 +3878,10 @@
"tags": [
"Oauth"
],
- "summary": "Oauth编辑",
+ "summary": "Oauthedit",
"parameters": [
{
- "description": "Oauth信息",
+ "description": "Oauthinfo",
"name": "body",
"in": "body",
"required": true,
@@ -3982,7 +3982,7 @@
"token": []
}
],
- "description": "批量设备删除",
+ "description": "batch delete devices",
"consumes": [
"application/json"
],
@@ -3990,12 +3990,12 @@
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "批量设备删除",
+ "summary": "batch delete devices",
"parameters": [
{
- "description": "设备id",
+ "description": "deviceid",
"name": "body",
"in": "body",
"required": true,
@@ -4027,7 +4027,7 @@
"token": []
}
],
- "description": "创建设备",
+ "description": "create device",
"consumes": [
"application/json"
],
@@ -4035,12 +4035,12 @@
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "创建设备",
+ "summary": "create device",
"parameters": [
{
- "description": "设备信息",
+ "description": "device info",
"name": "body",
"in": "body",
"required": true,
@@ -4084,7 +4084,7 @@
"token": []
}
],
- "description": "设备删除",
+ "description": "delete device",
"consumes": [
"application/json"
],
@@ -4092,12 +4092,12 @@
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备删除",
+ "summary": "delete device",
"parameters": [
{
- "description": "设备信息",
+ "description": "device info",
"name": "body",
"in": "body",
"required": true,
@@ -4129,7 +4129,7 @@
"token": []
}
],
- "description": "设备详情",
+ "description": "device details",
"consumes": [
"application/json"
],
@@ -4137,9 +4137,9 @@
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备详情",
+ "summary": "device details",
"parameters": [
{
"type": "integer",
@@ -4184,7 +4184,7 @@
"token": []
}
],
- "description": "设备列表",
+ "description": "device list",
"consumes": [
"application/json"
],
@@ -4192,25 +4192,25 @@
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备列表",
+ "summary": "device list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "时间",
+ "description": "time",
"name": "time_ago",
"in": "query"
},
@@ -4222,13 +4222,13 @@
},
{
"type": "string",
- "description": "主机名",
+ "description": "hostname",
"name": "hostname",
"in": "query"
},
{
"type": "string",
- "description": "uuids 用逗号分隔",
+ "description": "uuids separated by commas",
"name": "uuids",
"in": "query"
}
@@ -4268,7 +4268,7 @@
"token": []
}
],
- "description": "设备编辑",
+ "description": "edit device",
"consumes": [
"application/json"
],
@@ -4276,12 +4276,12 @@
"application/json"
],
"tags": [
- "设备"
+ "device"
],
- "summary": "设备编辑",
+ "summary": "edit device",
"parameters": [
{
- "description": "设备信息",
+ "description": "device info",
"name": "body",
"in": "body",
"required": true,
@@ -4325,7 +4325,7 @@
"token": []
}
],
- "description": "批量分享记录",
+ "description": "batch share records",
"consumes": [
"application/json"
],
@@ -4333,9 +4333,9 @@
"application/json"
],
"tags": [
- "分享记录"
+ "share record"
],
- "summary": "批量分享记录",
+ "summary": "batch share records",
"parameters": [
{
"description": "id",
@@ -4370,7 +4370,7 @@
"token": []
}
],
- "description": "分享记录删除",
+ "description": "delete share record",
"consumes": [
"application/json"
],
@@ -4378,12 +4378,12 @@
"application/json"
],
"tags": [
- "分享记录"
+ "share record"
],
- "summary": "分享记录删除",
+ "summary": "delete share record",
"parameters": [
{
- "description": "分享记录信息",
+ "description": "share record info",
"name": "body",
"in": "body",
"required": true,
@@ -4415,7 +4415,7 @@
"token": []
}
],
- "description": "分享记录列表",
+ "description": "share record list",
"consumes": [
"application/json"
],
@@ -4423,25 +4423,25 @@
"application/json"
],
"tags": [
- "分享记录"
+ "share record"
],
- "summary": "分享记录列表",
+ "summary": "share record list",
"parameters": [
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
},
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
}
@@ -4469,7 +4469,7 @@
"token": []
}
],
- "description": "创建标签",
+ "description": "create tag",
"consumes": [
"application/json"
],
@@ -4477,12 +4477,12 @@
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "创建标签",
+ "summary": "create tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -4526,7 +4526,7 @@
"token": []
}
],
- "description": "标签删除",
+ "description": "delete tag",
"consumes": [
"application/json"
],
@@ -4534,12 +4534,12 @@
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签删除",
+ "summary": "delete tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -4571,7 +4571,7 @@
"token": []
}
],
- "description": "标签详情",
+ "description": "tag details",
"consumes": [
"application/json"
],
@@ -4579,9 +4579,9 @@
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签详情",
+ "summary": "tag details",
"parameters": [
{
"type": "integer",
@@ -4626,7 +4626,7 @@
"token": []
}
],
- "description": "标签列表",
+ "description": "tag list",
"consumes": [
"application/json"
],
@@ -4634,31 +4634,31 @@
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签列表",
+ "summary": "tag list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "是否是我的",
+ "description": "whether it is mine",
"name": "is_my",
"in": "query"
},
{
"type": "integer",
- "description": "用户id",
+ "description": "userid",
"name": "user_id",
"in": "query"
}
@@ -4698,7 +4698,7 @@
"token": []
}
],
- "description": "标签编辑",
+ "description": "edit tag",
"consumes": [
"application/json"
],
@@ -4706,12 +4706,12 @@
"application/json"
],
"tags": [
- "标签"
+ "tag"
],
- "summary": "标签编辑",
+ "summary": "edit tag",
"parameters": [
{
- "description": "标签信息",
+ "description": "tag info",
"name": "body",
"in": "body",
"required": true,
@@ -4755,7 +4755,7 @@
"token": []
}
],
- "description": "修改当前用户密码",
+ "description": "change the current user's password",
"consumes": [
"application/json"
],
@@ -4763,12 +4763,12 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "修改当前用户密码",
+ "summary": "change the current user's password",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -4800,7 +4800,7 @@
"token": []
}
],
- "description": "创建管理员",
+ "description": "create administrator",
"consumes": [
"application/json"
],
@@ -4808,12 +4808,12 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "创建管理员",
+ "summary": "create administrator",
"parameters": [
{
- "description": "管理员信息",
+ "description": "administrator info",
"name": "body",
"in": "body",
"required": true,
@@ -4857,7 +4857,7 @@
"token": []
}
],
- "description": "当前用户",
+ "description": "current user",
"consumes": [
"application/json"
],
@@ -4865,9 +4865,9 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "当前用户",
+ "summary": "current user",
"responses": {
"200": {
"description": "OK",
@@ -4903,7 +4903,7 @@
"token": []
}
],
- "description": "管理员编删除",
+ "description": "delete administrator",
"consumes": [
"application/json"
],
@@ -4911,12 +4911,12 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员删除",
+ "summary": "delete administrator",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -4948,7 +4948,7 @@
"token": []
}
],
- "description": "管理员详情",
+ "description": "administrator details",
"consumes": [
"application/json"
],
@@ -4956,9 +4956,9 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员详情",
+ "summary": "administrator details",
"parameters": [
{
"type": "integer",
@@ -5003,7 +5003,7 @@
"token": []
}
],
- "description": "管理员列表",
+ "description": "administrator list",
"consumes": [
"application/json"
],
@@ -5011,25 +5011,25 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员列表",
+ "summary": "administrator list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "账户",
+ "description": "account",
"name": "username",
"in": "query"
}
@@ -5069,7 +5069,7 @@
"token": []
}
],
- "description": "我的授权",
+ "description": "my authorizations",
"consumes": [
"application/json"
],
@@ -5077,9 +5077,9 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "我的授权",
+ "summary": "my authorizations",
"responses": {
"200": {
"description": "OK",
@@ -5118,7 +5118,7 @@
"token": []
}
],
- "description": "管理员编辑",
+ "description": "edit administrator",
"consumes": [
"application/json"
],
@@ -5126,12 +5126,12 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "管理员编辑",
+ "summary": "edit administrator",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -5175,7 +5175,7 @@
"token": []
}
],
- "description": "修改密码",
+ "description": "change password",
"consumes": [
"application/json"
],
@@ -5183,12 +5183,12 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "修改密码",
+ "summary": "change password",
"parameters": [
{
- "description": "用户信息",
+ "description": "user info",
"name": "body",
"in": "body",
"required": true,
@@ -5220,7 +5220,7 @@
"token": []
}
],
- "description": "登录凭证批量删除",
+ "description": "batch delete login credentials",
"consumes": [
"application/json"
],
@@ -5228,12 +5228,12 @@
"application/json"
],
"tags": [
- "登录凭证"
+ "login credential"
],
- "summary": "登录凭证批量删除",
+ "summary": "batch delete login credentials",
"parameters": [
{
- "description": "登录凭证信息",
+ "description": "login credential info",
"name": "body",
"in": "body",
"required": true,
@@ -5265,7 +5265,7 @@
"token": []
}
],
- "description": "登录凭证删除",
+ "description": "delete login credential",
"consumes": [
"application/json"
],
@@ -5273,12 +5273,12 @@
"application/json"
],
"tags": [
- "登录凭证"
+ "login credential"
],
- "summary": "登录凭证删除",
+ "summary": "delete login credential",
"parameters": [
{
- "description": "登录凭证信息",
+ "description": "login credential info",
"name": "body",
"in": "body",
"required": true,
@@ -5310,7 +5310,7 @@
"token": []
}
],
- "description": "登录凭证列表",
+ "description": "login credential list",
"consumes": [
"application/json"
],
@@ -5318,25 +5318,25 @@
"application/json"
],
"tags": [
- "登录凭证"
+ "login credential"
],
- "summary": "登录凭证列表",
+ "summary": "login credential list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "页大小",
+ "description": "page size",
"name": "page_size",
"in": "query"
},
{
"type": "integer",
- "description": "用户ID",
+ "description": "userID",
"name": "user_id",
"in": "query"
}
@@ -5678,7 +5678,7 @@
"type": "string"
},
"password_type": {
- "description": "只能是once,fixed",
+ "description": "can only be once,fixed",
"type": "string",
"enum": [
"once",
@@ -5734,7 +5734,7 @@
"type": "string"
},
"email": {
- "description": "validate:\"required,email\" email不强制",
+ "description": "validate:\"required,email\" emailnot enforced",
"type": "string"
},
"group_id": {
@@ -5961,7 +5961,7 @@
"type": "integer"
},
"rule": {
- "description": "0: 无 1: 读 2: 读写 3: 完全控制",
+ "description": "0: none 1: read 2: read-write 3: full control",
"type": "integer",
"maximum": 3,
"minimum": 1
@@ -5970,7 +5970,7 @@
"type": "integer"
},
"type": {
- "description": "1: 个人 2: 群组",
+ "description": "1: personal 2: group",
"type": "integer",
"maximum": 2,
"minimum": 1
@@ -6393,8 +6393,8 @@
2
],
"x-enum-comments": {
- "COMMON_STATUS_DISABLED": "通用状态 禁用",
- "COMMON_STATUS_ENABLE": "通用状态 启用"
+ "COMMON_STATUS_DISABLED": "common status disable",
+ "COMMON_STATUS_ENABLE": "common status enable"
},
"x-enum-varnames": [
"COMMON_STATUS_ENABLE",
@@ -6411,7 +6411,7 @@
"type": "integer"
},
"color": {
- "description": "color 是flutter的颜色值,从0x00000000 到 0xFFFFFFFF; 前两位表示透明度,后面6位表示颜色, 可以转成rgba",
+ "description": "color is flutter's color value,from 0x00000000 to 0xFFFFFFFF; the first two digits represent transparency, the following 6 digits represent the color, can be converted to rgba",
"type": "integer"
},
"created_at": {
diff --git a/docs/admin/admin_swagger.yaml b/docs/admin/admin_swagger.yaml
index 978b9c8..fcac8fb 100644
--- a/docs/admin/admin_swagger.yaml
+++ b/docs/admin/admin_swagger.yaml
@@ -200,7 +200,7 @@ definitions:
password:
type: string
password_type:
- description: 只能是once,fixed
+ description: can only be once,fixed
enum:
- once
- fixed
@@ -238,7 +238,7 @@ definitions:
avatar:
type: string
email:
- description: validate:"required,email" email不强制
+ description: validate:"required,email" emailnot enforced
type: string
group_id:
type: integer
@@ -388,14 +388,14 @@ definitions:
id:
type: integer
rule:
- description: '0: 无 1: 读 2: 读写 3: 完全控制'
+ description: '0: none 1: read 2: read-write 3: full control'
maximum: 3
minimum: 1
type: integer
to_id:
type: integer
type:
- description: '1: 个人 2: 群组'
+ description: '1: personal 2: group'
maximum: 2
minimum: 1
type: integer
@@ -680,8 +680,8 @@ definitions:
- 2
type: integer
x-enum-comments:
- COMMON_STATUS_DISABLED: 通用状态 禁用
- COMMON_STATUS_ENABLE: 通用状态 启用
+ COMMON_STATUS_DISABLED: common status disable
+ COMMON_STATUS_ENABLE: common status enable
x-enum-varnames:
- COMMON_STATUS_ENABLE
- COMMON_STATUS_DISABLED
@@ -692,8 +692,8 @@ definitions:
collection_id:
type: integer
color:
- description: color 是flutter的颜色值,从0x00000000 到 0xFFFFFFFF; 前两位表示透明度,后面6位表示颜色,
- 可以转成rgba
+ description: color is flutter's color value,from 0x00000000 to 0xFFFFFFFF; the first two digits represent transparency, the following 6 digits represent the color,
+ can be converted to rgba
type: integer
created_at:
type: string
@@ -802,17 +802,17 @@ definitions:
type: object
info:
contact: {}
- description: 接口
- title: 管理系统API
+ description: API
+ title: management systemAPI
version: "1.0"
paths:
/admin/address_book/batchCreate:
post:
consumes:
- application/json
- description: 批量创建地址簿
+ description: batch create address books
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -836,16 +836,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 批量创建地址簿
+ summary: batch create address books
tags:
- - 地址簿
+ - address book
/admin/address_book/create:
post:
consumes:
- application/json
- description: 创建地址簿
+ description: create address book
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -869,16 +869,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建地址簿
+ summary: create address book
tags:
- - 地址簿
+ - address book
/admin/address_book/delete:
post:
consumes:
- application/json
- description: 地址簿删除
+ description: delete address book
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -897,14 +897,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿删除
+ summary: delete address book
tags:
- - 地址簿
+ - address book
/admin/address_book/detail/{id}:
get:
consumes:
- application/json
- description: 地址簿详情
+ description: address book details
parameters:
- description: ID
in: path
@@ -929,28 +929,28 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿详情
+ summary: address book details
tags:
- - 地址簿
+ - address book
/admin/address_book/list:
get:
consumes:
- application/json
- description: 地址簿列表
+ description: address book list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 用户id
+ - description: userid
in: query
name: user_id
type: integer
- - description: 是否是我的
+ - description: whether it is mine
in: query
name: is_my
type: integer
@@ -972,16 +972,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿列表
+ summary: address book list
tags:
- - 地址簿
+ - address book
/admin/address_book/share:
post:
consumes:
- application/json
- description: 地址簿分享
+ description: share address book
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -1000,16 +1000,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿分享
+ summary: share address book
tags:
- - 地址簿
+ - address book
/admin/address_book/update:
post:
consumes:
- application/json
- description: 地址簿编辑
+ description: edit address book
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -1033,16 +1033,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿编辑
+ summary: edit address book
tags:
- - 地址簿
+ - address book
/admin/address_book_collection/create:
post:
consumes:
- application/json
- description: 创建地址簿名称
+ description: create address book name
parameters:
- - description: 地址簿名称信息
+ - description: address book name info
in: body
name: body
required: true
@@ -1066,16 +1066,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建地址簿名称
+ summary: create address book name
tags:
- - 地址簿名称
+ - address book name
/admin/address_book_collection/delete:
post:
consumes:
- application/json
- description: 地址簿名称删除
+ description: delete address book name
parameters:
- - description: 地址簿名称信息
+ - description: address book name info
in: body
name: body
required: true
@@ -1094,14 +1094,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿名称删除
+ summary: delete address book name
tags:
- - 地址簿名称
+ - address book name
/admin/address_book_collection/detail/{id}:
get:
consumes:
- application/json
- description: 地址簿名称详情
+ description: address book name details
parameters:
- description: ID
in: path
@@ -1126,28 +1126,28 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿名称详情
+ summary: address book name details
tags:
- - 地址簿名称
+ - address book name
/admin/address_book_collection/list:
get:
consumes:
- application/json
- description: 地址簿名称列表
+ description: address book name list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 是否是我的
+ - description: whether it is mine
in: query
name: is_my
type: integer
- - description: 用户id
+ - description: userid
in: query
name: user_id
type: integer
@@ -1169,16 +1169,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿名称列表
+ summary: address book name list
tags:
- - 地址簿名称
+ - address book name
/admin/address_book_collection/update:
post:
consumes:
- application/json
- description: 地址簿名称编辑
+ description: edit address book name
parameters:
- - description: 地址簿名称信息
+ - description: address book name info
in: body
name: body
required: true
@@ -1202,16 +1202,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿名称编辑
+ summary: edit address book name
tags:
- - 地址簿名称
+ - address book name
/admin/address_book_collection_rule/create:
post:
consumes:
- application/json
- description: 创建地址簿规则
+ description: create address book rule
parameters:
- - description: 地址簿规则信息
+ - description: address book rule info
in: body
name: body
required: true
@@ -1235,16 +1235,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建地址簿规则
+ summary: create address book rule
tags:
- - 地址簿规则
+ - address book rules
/admin/address_book_collection_rule/delete:
post:
consumes:
- application/json
- description: 地址簿规则删除
+ description: delete address book rule
parameters:
- - description: 地址簿规则信息
+ - description: address book rule info
in: body
name: body
required: true
@@ -1263,14 +1263,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿规则删除
+ summary: delete address book rule
tags:
- - 地址簿规则
+ - address book rules
/admin/address_book_collection_rule/detail/{id}:
get:
consumes:
- application/json
- description: 地址簿规则详情
+ description: address book rule details
parameters:
- description: ID
in: path
@@ -1295,32 +1295,32 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿规则详情
+ summary: address book rule details
tags:
- - 地址簿规则
+ - address book rules
/admin/address_book_collection_rule/list:
get:
consumes:
- application/json
- description: 地址簿规则列表
+ description: address book rule list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 是否是我的
+ - description: whether it is mine
in: query
name: is_my
type: integer
- - description: 用户id
+ - description: userid
in: query
name: user_id
type: integer
- - description: 地址簿集合id
+ - description: address book collectionid
in: query
name: collection_id
type: integer
@@ -1342,16 +1342,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿规则列表
+ summary: address book rule list
tags:
- - 地址簿规则
+ - address book rules
/admin/address_book_collection_rule/update:
post:
consumes:
- application/json
- description: 地址簿规则编辑
+ description: edit address book rule
parameters:
- - description: 地址簿规则信息
+ - description: address book rule info
in: body
name: body
required: true
@@ -1375,16 +1375,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿规则编辑
+ summary: edit address book rule
tags:
- - 地址簿规则
+ - address book rules
/admin/audit_conn/batchDelete:
post:
consumes:
- application/json
- description: 链接日志批量删除
+ description: batch delete connection logs
parameters:
- - description: 链接日志
+ - description: connection log
in: body
name: body
required: true
@@ -1403,16 +1403,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 链接日志批量删除
+ summary: batch delete connection logs
tags:
- - 链接日志
+ - connection log
/admin/audit_conn/delete:
post:
consumes:
- application/json
- description: 链接日志删除
+ description: delete connection log
parameters:
- - description: 链接日志信息
+ - description: connection log info
in: body
name: body
required: true
@@ -1431,28 +1431,28 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 链接日志删除
+ summary: delete connection log
tags:
- - 链接日志
+ - connection log
/admin/audit_conn/list:
get:
consumes:
- application/json
- description: 链接日志列表
+ description: connection log list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 目标设备
+ - description: target device
in: query
name: peer_id
type: integer
- - description: 来源设备
+ - description: source device
in: query
name: from_peer
type: integer
@@ -1474,16 +1474,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 链接日志列表
+ summary: connection log list
tags:
- - 链接日志
+ - connection log
/admin/audit_file/batchDelete:
post:
consumes:
- application/json
- description: 文件日志批量删除
+ description: batch delete file logs
parameters:
- - description: 文件日志
+ - description: file log
in: body
name: body
required: true
@@ -1502,16 +1502,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 文件日志批量删除
+ summary: batch delete file logs
tags:
- - 文件日志
+ - file log
/admin/audit_file/delete:
post:
consumes:
- application/json
- description: 文件日志删除
+ description: delete file log
parameters:
- - description: 文件日志信息
+ - description: file log info
in: body
name: body
required: true
@@ -1530,28 +1530,28 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 文件日志删除
+ summary: delete file log
tags:
- - 文件日志
+ - file log
/admin/audit_file/list:
get:
consumes:
- application/json
- description: 文件日志列表
+ description: file log list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 目标设备
+ - description: target device
in: query
name: peer_id
type: integer
- - description: 来源设备
+ - description: source device
in: query
name: from_peer
type: integer
@@ -1573,14 +1573,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 文件日志列表
+ summary: file log list
tags:
- - 文件日志
+ - file log
/admin/config/admin:
get:
consumes:
- application/json
- description: ADMIN服务配置
+ description: ADMINservice config
produces:
- application/json
responses:
@@ -1594,14 +1594,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: ADMIN服务配置
+ summary: ADMINservice config
tags:
- ADMIN
/admin/config/app:
get:
consumes:
- application/json
- description: APP服务配置
+ description: APPservice config
produces:
- application/json
responses:
@@ -1615,14 +1615,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: APP服务配置
+ summary: APPservice config
tags:
- ADMIN
/admin/config/server:
get:
consumes:
- application/json
- description: 服务配置,给webclient提供api-server
+ description: service config, provides an api-server for the webclient
produces:
- application/json
responses:
@@ -1636,16 +1636,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: RUSTDESK服务配置
+ summary: RUSTDESKservice config
tags:
- ADMIN
/admin/device_group/create:
post:
consumes:
- application/json
- description: 创建设备群组
+ description: create device group
parameters:
- - description: 设备群组信息
+ - description: device group info
in: body
name: body
required: true
@@ -1669,16 +1669,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建设备群组
+ summary: create device group
tags:
- - 设备群组
+ - device group
/admin/device_group/delete:
post:
consumes:
- application/json
- description: 设备群组删除
+ description: delete device group
parameters:
- - description: 群组信息
+ - description: group info
in: body
name: body
required: true
@@ -1697,14 +1697,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备群组删除
+ summary: delete device group
tags:
- - 设备群组
+ - device group
/admin/device_group/detail/{id}:
get:
consumes:
- application/json
- description: 设备群组详情
+ description: device group details
parameters:
- description: ID
in: path
@@ -1729,20 +1729,20 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备群组详情
+ summary: device group details
tags:
- - 设备群组
+ - device group
/admin/device_group/list:
get:
consumes:
- application/json
- description: 群组列表
+ description: group list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
@@ -1764,16 +1764,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 群组列表
+ summary: group list
tags:
- - 群组
+ - group
/admin/device_group/update:
post:
consumes:
- application/json
- description: 设备群组编辑
+ description: edit device group
parameters:
- - description: 群组信息
+ - description: group info
in: body
name: body
required: true
@@ -1797,14 +1797,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备群组编辑
+ summary: edit device group
tags:
- - 设备群组
+ - device group
/admin/file/oss_token:
get:
consumes:
- application/json
- description: 获取ossToken
+ description: getossToken
produces:
- application/json
responses:
@@ -1818,16 +1818,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 获取ossToken
+ summary: getossToken
tags:
- - 文件
+ - file
/admin/file/upload:
post:
consumes:
- multipart/form-data
- description: 上传文件到本地
+ description: upload file to local
parameters:
- - description: 上传文件示例
+ - description: file upload example
in: formData
name: file
required: true
@@ -1845,16 +1845,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 上传文件到本地
+ summary: upload file to local
tags:
- - 文件
+ - file
/admin/group/create:
post:
consumes:
- application/json
- description: 创建群组
+ description: create group
parameters:
- - description: 群组信息
+ - description: group info
in: body
name: body
required: true
@@ -1878,16 +1878,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建群组
+ summary: create group
tags:
- - 群组
+ - group
/admin/group/delete:
post:
consumes:
- application/json
- description: 群组删除
+ description: delete group
parameters:
- - description: 群组信息
+ - description: group info
in: body
name: body
required: true
@@ -1906,14 +1906,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 群组删除
+ summary: delete group
tags:
- - 群组
+ - group
/admin/group/detail/{id}:
get:
consumes:
- application/json
- description: 群组详情
+ description: group details
parameters:
- description: ID
in: path
@@ -1938,20 +1938,20 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 群组详情
+ summary: group details
tags:
- - 群组
+ - group
/admin/group/list:
get:
consumes:
- application/json
- description: 群组列表
+ description: group list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
@@ -1973,16 +1973,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 群组列表
+ summary: group list
tags:
- - 群组
+ - group
/admin/group/update:
post:
consumes:
- application/json
- description: 群组编辑
+ description: edit group
parameters:
- - description: 群组信息
+ - description: group info
in: body
name: body
required: true
@@ -2006,16 +2006,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 群组编辑
+ summary: edit group
tags:
- - 群组
+ - group
/admin/login:
post:
consumes:
- application/json
- description: 登录
+ description: login
parameters:
- - description: 登录信息
+ - description: login info
in: body
name: body
required: true
@@ -2039,14 +2039,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录
+ summary: login
tags:
- - 登录
+ - login
/admin/login-options:
post:
consumes:
- application/json
- description: 登录选项
+ description: login options
produces:
- application/json
responses:
@@ -2060,16 +2060,16 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.ErrorResponse'
- summary: 登录选项
+ summary: login options
tags:
- - 登录
+ - login
/admin/login_log/batchDelete:
post:
consumes:
- application/json
- description: 登录日志批量删除
+ description: batch delete login logs
parameters:
- - description: 登录日志
+ - description: login log
in: body
name: body
required: true
@@ -2088,16 +2088,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录日志批量删除
+ summary: batch delete login logs
tags:
- - 登录日志
+ - login log
/admin/login_log/delete:
post:
consumes:
- application/json
- description: 登录日志删除
+ description: delete login log
parameters:
- - description: 登录日志信息
+ - description: login log info
in: body
name: body
required: true
@@ -2116,14 +2116,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录日志删除
+ summary: delete login log
tags:
- - 登录日志
+ - login log
/admin/login_log/detail/{id}:
get:
consumes:
- application/json
- description: 登录日志详情
+ description: login log details
parameters:
- description: ID
in: path
@@ -2148,24 +2148,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录日志详情
+ summary: login log details
tags:
- - 登录日志
+ - login log
/admin/login_log/list:
get:
consumes:
- application/json
- description: 登录日志列表
+ description: login log list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 用户ID
+ - description: userID
in: query
name: user_id
type: integer
@@ -2187,14 +2187,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录日志列表
+ summary: login log list
tags:
- - 登录日志
+ - login log
/admin/logout:
post:
consumes:
- application/json
- description: 登出
+ description: logout
produces:
- application/json
responses:
@@ -2206,16 +2206,16 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.Response'
- summary: 登出
+ summary: logout
tags:
- - 登录
+ - login
/admin/my/address_book/create:
post:
consumes:
- application/json
- description: 创建地址簿
+ description: create address book
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -2239,16 +2239,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建地址簿
+ summary: create address book
tags:
- - 我的地址簿
+ - my address book
/admin/my/address_book/delete:
post:
consumes:
- application/json
- description: 地址簿删除
+ description: delete address book
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -2267,24 +2267,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿删除
+ summary: delete address book
tags:
- - 我的地址簿
+ - my address book
/admin/my/address_book/list:
get:
consumes:
- application/json
- description: 地址簿列表
+ description: address book list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 用户id
+ - description: userid
in: query
name: user_id
type: integer
@@ -2306,16 +2306,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿列表
+ summary: address book list
tags:
- - 我的地址簿
+ - my address book
/admin/my/address_book/update:
post:
consumes:
- application/json
- description: 地址簿编辑
+ description: edit address book
parameters:
- - description: 地址簿信息
+ - description: address book info
in: body
name: body
required: true
@@ -2339,16 +2339,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿编辑
+ summary: edit address book
tags:
- - 我的地址簿
+ - my address book
/admin/my/address_book_collection/create:
post:
consumes:
- application/json
- description: 创建地址簿名称
+ description: create address book name
parameters:
- - description: 地址簿名称信息
+ - description: address book name info
in: body
name: body
required: true
@@ -2372,16 +2372,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建地址簿名称
+ summary: create address book name
tags:
- - 我的地址簿名称
+ - my address book name
/admin/my/address_book_collection/delete:
post:
consumes:
- application/json
- description: 地址簿名称删除
+ description: delete address book name
parameters:
- - description: 地址簿名称信息
+ - description: address book name info
in: body
name: body
required: true
@@ -2400,20 +2400,20 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿名称删除
+ summary: delete address book name
tags:
- - 我的地址簿名称
+ - my address book name
/admin/my/address_book_collection/list:
get:
consumes:
- application/json
- description: 地址簿名称列表
+ description: address book name list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
@@ -2435,16 +2435,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿名称列表
+ summary: address book name list
tags:
- - 我的地址簿名称
+ - my address book name
/admin/my/address_book_collection/update:
post:
consumes:
- application/json
- description: 地址簿名称编辑
+ description: edit address book name
parameters:
- - description: 地址簿名称信息
+ - description: address book name info
in: body
name: body
required: true
@@ -2468,16 +2468,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿名称编辑
+ summary: edit address book name
tags:
- - 我的地址簿名称
+ - my address book name
/admin/my/address_book_collection_rule/create:
post:
consumes:
- application/json
- description: 创建地址簿规则
+ description: create address book rule
parameters:
- - description: 地址簿规则信息
+ - description: address book rule info
in: body
name: body
required: true
@@ -2501,16 +2501,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建地址簿规则
+ summary: create address book rule
tags:
- - 我的地址簿规则
+ - my address book rules
/admin/my/address_book_collection_rule/delete:
post:
consumes:
- application/json
- description: 地址簿规则删除
+ description: delete address book rule
parameters:
- - description: 地址簿规则信息
+ - description: address book rule info
in: body
name: body
required: true
@@ -2529,32 +2529,32 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿规则删除
+ summary: delete address book rule
tags:
- - 我的地址簿规则
+ - my address book rules
/admin/my/address_book_collection_rule/list:
get:
consumes:
- application/json
- description: 地址簿规则列表
+ description: address book rule list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 是否是我的
+ - description: whether it is mine
in: query
name: is_my
type: integer
- - description: 用户id
+ - description: userid
in: query
name: user_id
type: integer
- - description: 地址簿集合id
+ - description: address book collectionid
in: query
name: collection_id
type: integer
@@ -2576,16 +2576,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿规则列表
+ summary: address book rule list
tags:
- - 我的地址簿规则
+ - my address book rules
/admin/my/address_book_collection_rule/update:
post:
consumes:
- application/json
- description: 地址簿规则编辑
+ description: edit address book rule
parameters:
- - description: 地址簿规则信息
+ - description: address book rule info
in: body
name: body
required: true
@@ -2609,16 +2609,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 地址簿规则编辑
+ summary: edit address book rule
tags:
- - 我的地址簿规则
+ - my address book rules
/admin/my/login_log/batchDelete:
post:
consumes:
- application/json
- description: 登录日志批量删除
+ description: batch delete login logs
parameters:
- - description: 登录日志
+ - description: login log
in: body
name: body
required: true
@@ -2637,16 +2637,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录日志批量删除
+ summary: batch delete login logs
tags:
- - 我的登录日志
+ - my login logs
/admin/my/login_log/delete:
post:
consumes:
- application/json
- description: 登录日志删除
+ description: delete login log
parameters:
- - description: 登录日志信息
+ - description: login log info
in: body
name: body
required: true
@@ -2665,24 +2665,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录日志删除
+ summary: delete login log
tags:
- - 我的登录日志
+ - my login logs
/admin/my/login_log/list:
get:
consumes:
- application/json
- description: 登录日志列表
+ description: login log list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 用户ID
+ - description: userID
in: query
name: user_id
type: integer
@@ -2704,24 +2704,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录日志列表
+ summary: login log list
tags:
- - 我的登录日志
+ - my login logs
/admin/my/peer/list:
get:
consumes:
- application/json
- description: 设备列表
+ description: device list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 时间
+ - description: time
in: query
name: time_ago
type: integer
@@ -2729,11 +2729,11 @@ paths:
in: query
name: id
type: string
- - description: 主机名
+ - description: hostname
in: query
name: hostname
type: string
- - description: uuids 用逗号分隔
+ - description: uuids separated by commas
in: query
name: uuids
type: string
@@ -2755,14 +2755,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备列表
+ summary: device list
tags:
- - 我的设备
+ - my devices
/admin/my/share_record/batchDelete:
post:
consumes:
- application/json
- description: 批量删除我的分享记录
+ description: batch delete my share records
parameters:
- description: id
in: body
@@ -2783,16 +2783,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 批量删除我的分享记录
+ summary: batch delete my share records
tags:
- - 我的
+ - my
/admin/my/share_record/delete:
post:
consumes:
- application/json
- description: 分享记录删除
+ description: delete share record
parameters:
- - description: 分享记录信息
+ - description: share record info
in: body
name: body
required: true
@@ -2811,20 +2811,20 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 分享记录删除
+ summary: delete share record
tags:
- - 我的分享记录
+ - my share records
/admin/my/share_record/list:
get:
consumes:
- application/json
- description: 分享记录列表
+ description: share record list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
@@ -2841,16 +2841,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 分享记录列表
+ summary: share record list
tags:
- - 我的分享记录
+ - my share records
/admin/my/tag/create:
post:
consumes:
- application/json
- description: 创建标签
+ description: create tag
parameters:
- - description: 标签信息
+ - description: tag info
in: body
name: body
required: true
@@ -2874,16 +2874,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建标签
+ summary: create tag
tags:
- - 我的标签
+ - my tags
/admin/my/tag/delete:
post:
consumes:
- application/json
- description: 标签删除
+ description: delete tag
parameters:
- - description: 标签信息
+ - description: tag info
in: body
name: body
required: true
@@ -2902,28 +2902,28 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 标签删除
+ summary: delete tag
tags:
- - 标签
+ - tag
/admin/my/tag/list:
get:
consumes:
- application/json
- description: 标签列表
+ description: tag list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 是否是我的
+ - description: whether it is mine
in: query
name: is_my
type: integer
- - description: 用户id
+ - description: userid
in: query
name: user_id
type: integer
@@ -2945,16 +2945,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 标签列表
+ summary: tag list
tags:
- - 我的标签
+ - my tags
/admin/my/tag/update:
post:
consumes:
- application/json
- description: 标签编辑
+ description: edit tag
parameters:
- - description: 标签信息
+ - description: tag info
in: body
name: body
required: true
@@ -2978,16 +2978,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 标签编辑
+ summary: edit tag
tags:
- - 我的标签
+ - my tags
/admin/oauth/create:
post:
consumes:
- application/json
- description: 创建Oauth
+ description: createOauth
parameters:
- - description: Oauth信息
+ - description: Oauthinfo
in: body
name: body
required: true
@@ -3011,16 +3011,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建Oauth
+ summary: createOauth
tags:
- Oauth
/admin/oauth/delete:
post:
consumes:
- application/json
- description: Oauth删除
+ description: Oauthdelete
parameters:
- - description: Oauth信息
+ - description: Oauthinfo
in: body
name: body
required: true
@@ -3039,14 +3039,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: Oauth删除
+ summary: Oauthdelete
tags:
- Oauth
/admin/oauth/detail/{id}:
get:
consumes:
- application/json
- description: Oauth详情
+ description: Oauthdetails
parameters:
- description: ID
in: path
@@ -3071,20 +3071,20 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: Oauth详情
+ summary: Oauthdetails
tags:
- Oauth
/admin/oauth/list:
get:
consumes:
- application/json
- description: Oauth列表
+ description: Oauthlist
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
@@ -3106,16 +3106,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: Oauth列表
+ summary: Oauthlist
tags:
- Oauth
/admin/oauth/update:
post:
consumes:
- application/json
- description: Oauth编辑
+ description: Oauthedit
parameters:
- - description: Oauth信息
+ - description: Oauthinfo
in: body
name: body
required: true
@@ -3139,7 +3139,7 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: Oauth编辑
+ summary: Oauthedit
tags:
- Oauth
/admin/oidc/auth:
@@ -3181,9 +3181,9 @@ paths:
post:
consumes:
- application/json
- description: 批量设备删除
+ description: batch delete devices
parameters:
- - description: 设备id
+ - description: deviceid
in: body
name: body
required: true
@@ -3202,16 +3202,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 批量设备删除
+ summary: batch delete devices
tags:
- - 设备
+ - device
/admin/peer/create:
post:
consumes:
- application/json
- description: 创建设备
+ description: create device
parameters:
- - description: 设备信息
+ - description: device info
in: body
name: body
required: true
@@ -3235,16 +3235,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建设备
+ summary: create device
tags:
- - 设备
+ - device
/admin/peer/delete:
post:
consumes:
- application/json
- description: 设备删除
+ description: delete device
parameters:
- - description: 设备信息
+ - description: device info
in: body
name: body
required: true
@@ -3263,14 +3263,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备删除
+ summary: delete device
tags:
- - 设备
+ - device
/admin/peer/detail/{id}:
get:
consumes:
- application/json
- description: 设备详情
+ description: device details
parameters:
- description: ID
in: path
@@ -3295,24 +3295,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备详情
+ summary: device details
tags:
- - 设备
+ - device
/admin/peer/list:
get:
consumes:
- application/json
- description: 设备列表
+ description: device list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 时间
+ - description: time
in: query
name: time_ago
type: integer
@@ -3320,11 +3320,11 @@ paths:
in: query
name: id
type: string
- - description: 主机名
+ - description: hostname
in: query
name: hostname
type: string
- - description: uuids 用逗号分隔
+ - description: uuids separated by commas
in: query
name: uuids
type: string
@@ -3346,16 +3346,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备列表
+ summary: device list
tags:
- - 设备
+ - device
/admin/peer/update:
post:
consumes:
- application/json
- description: 设备编辑
+ description: edit device
parameters:
- - description: 设备信息
+ - description: device info
in: body
name: body
required: true
@@ -3379,14 +3379,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 设备编辑
+ summary: edit device
tags:
- - 设备
+ - device
/admin/share_record/batchDelete:
post:
consumes:
- application/json
- description: 批量分享记录
+ description: batch share records
parameters:
- description: id
in: body
@@ -3407,16 +3407,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 批量分享记录
+ summary: batch share records
tags:
- - 分享记录
+ - share record
/admin/share_record/delete:
post:
consumes:
- application/json
- description: 分享记录删除
+ description: delete share record
parameters:
- - description: 分享记录信息
+ - description: share record info
in: body
name: body
required: true
@@ -3435,24 +3435,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 分享记录删除
+ summary: delete share record
tags:
- - 分享记录
+ - share record
/admin/share_record/list:
get:
consumes:
- application/json
- description: 分享记录列表
+ description: share record list
parameters:
- - description: 用户ID
+ - description: userID
in: query
name: user_id
type: integer
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
@@ -3469,16 +3469,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 分享记录列表
+ summary: share record list
tags:
- - 分享记录
+ - share record
/admin/tag/create:
post:
consumes:
- application/json
- description: 创建标签
+ description: create tag
parameters:
- - description: 标签信息
+ - description: tag info
in: body
name: body
required: true
@@ -3502,16 +3502,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建标签
+ summary: create tag
tags:
- - 标签
+ - tag
/admin/tag/delete:
post:
consumes:
- application/json
- description: 标签删除
+ description: delete tag
parameters:
- - description: 标签信息
+ - description: tag info
in: body
name: body
required: true
@@ -3530,14 +3530,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 标签删除
+ summary: delete tag
tags:
- - 标签
+ - tag
/admin/tag/detail/{id}:
get:
consumes:
- application/json
- description: 标签详情
+ description: tag details
parameters:
- description: ID
in: path
@@ -3562,28 +3562,28 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 标签详情
+ summary: tag details
tags:
- - 标签
+ - tag
/admin/tag/list:
get:
consumes:
- application/json
- description: 标签列表
+ description: tag list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 是否是我的
+ - description: whether it is mine
in: query
name: is_my
type: integer
- - description: 用户id
+ - description: userid
in: query
name: user_id
type: integer
@@ -3605,16 +3605,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 标签列表
+ summary: tag list
tags:
- - 标签
+ - tag
/admin/tag/update:
post:
consumes:
- application/json
- description: 标签编辑
+ description: edit tag
parameters:
- - description: 标签信息
+ - description: tag info
in: body
name: body
required: true
@@ -3638,16 +3638,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 标签编辑
+ summary: edit tag
tags:
- - 标签
+ - tag
/admin/user/changeCurPwd:
post:
consumes:
- application/json
- description: 修改当前用户密码
+ description: change the current user's password
parameters:
- - description: 用户信息
+ - description: user info
in: body
name: body
required: true
@@ -3666,16 +3666,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 修改当前用户密码
+ summary: change the current user's password
tags:
- - 用户
+ - user
/admin/user/create:
post:
consumes:
- application/json
- description: 创建管理员
+ description: create administrator
parameters:
- - description: 管理员信息
+ - description: administrator info
in: body
name: body
required: true
@@ -3699,14 +3699,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 创建管理员
+ summary: create administrator
tags:
- - 用户
+ - user
/admin/user/current:
get:
consumes:
- application/json
- description: 当前用户
+ description: current user
produces:
- application/json
responses:
@@ -3725,16 +3725,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 当前用户
+ summary: current user
tags:
- - 用户
+ - user
/admin/user/delete:
post:
consumes:
- application/json
- description: 管理员编删除
+ description: delete administrator
parameters:
- - description: 用户信息
+ - description: user info
in: body
name: body
required: true
@@ -3753,14 +3753,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 管理员删除
+ summary: delete administrator
tags:
- - 用户
+ - user
/admin/user/detail/{id}:
get:
consumes:
- application/json
- description: 管理员详情
+ description: administrator details
parameters:
- description: ID
in: path
@@ -3785,24 +3785,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 管理员详情
+ summary: administrator details
tags:
- - 用户
+ - user
/admin/user/list:
get:
consumes:
- application/json
- description: 管理员列表
+ description: administrator list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 账户
+ - description: account
in: query
name: username
type: integer
@@ -3824,14 +3824,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 管理员列表
+ summary: administrator list
tags:
- - 用户
+ - user
/admin/user/myOauth:
get:
consumes:
- application/json
- description: 我的授权
+ description: my authorizations
produces:
- application/json
responses:
@@ -3852,16 +3852,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 我的授权
+ summary: my authorizations
tags:
- - 用户
+ - user
/admin/user/update:
post:
consumes:
- application/json
- description: 管理员编辑
+ description: edit administrator
parameters:
- - description: 用户信息
+ - description: user info
in: body
name: body
required: true
@@ -3885,16 +3885,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 管理员编辑
+ summary: edit administrator
tags:
- - 用户
+ - user
/admin/user/updatePassword:
post:
consumes:
- application/json
- description: 修改密码
+ description: change password
parameters:
- - description: 用户信息
+ - description: user info
in: body
name: body
required: true
@@ -3913,16 +3913,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 修改密码
+ summary: change password
tags:
- - 用户
+ - user
/admin/user_token/batchDelete:
post:
consumes:
- application/json
- description: 登录凭证批量删除
+ description: batch delete login credentials
parameters:
- - description: 登录凭证信息
+ - description: login credential info
in: body
name: body
required: true
@@ -3941,16 +3941,16 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录凭证批量删除
+ summary: batch delete login credentials
tags:
- - 登录凭证
+ - login credential
/admin/user_token/delete:
post:
consumes:
- application/json
- description: 登录凭证删除
+ description: delete login credential
parameters:
- - description: 登录凭证信息
+ - description: login credential info
in: body
name: body
required: true
@@ -3969,24 +3969,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录凭证删除
+ summary: delete login credential
tags:
- - 登录凭证
+ - login credential
/admin/user_token/list:
get:
consumes:
- application/json
- description: 登录凭证列表
+ description: login credential list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 页大小
+ - description: page size
in: query
name: page_size
type: integer
- - description: 用户ID
+ - description: userID
in: query
name: user_id
type: integer
@@ -4008,9 +4008,9 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 登录凭证列表
+ summary: login credential list
tags:
- - 登录凭证
+ - login credential
securityDefinitions:
BearerAuth:
in: header
diff --git a/docs/api/api_docs.go b/docs/api/api_docs.go
index 94d7706..138bf0c 100644
--- a/docs/api/api_docs.go
+++ b/docs/api/api_docs.go
@@ -17,7 +17,7 @@ const docTemplateapi = `{
"paths": {
"/": {
"get": {
- "description": "首页",
+ "description": "home",
"consumes": [
"application/json"
],
@@ -25,9 +25,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "首页"
+ "home"
],
- "summary": "首页",
+ "summary": "home",
"responses": {
"200": {
"description": "OK",
@@ -51,7 +51,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "地址列表",
+ "description": "address list",
"consumes": [
"application/json"
],
@@ -59,9 +59,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址"
+ "address"
],
- "summary": "地址列表",
+ "summary": "address list",
"responses": {
"200": {
"description": "OK",
@@ -83,7 +83,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "地址更新",
+ "description": "address update",
"consumes": [
"application/json"
],
@@ -91,12 +91,12 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址"
+ "address"
],
- "summary": "地址更新",
+ "summary": "address update",
"parameters": [
{
- "description": "地址表单",
+ "description": "address form",
"name": "body",
"in": "body",
"required": true,
@@ -128,7 +128,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "添加地址",
+ "description": "add address",
"consumes": [
"application/json"
],
@@ -136,9 +136,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "添加地址",
+ "summary": "add address",
"parameters": [
{
"type": "string",
@@ -169,7 +169,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "删除地址",
+ "description": "delete address",
"consumes": [
"application/json"
],
@@ -177,9 +177,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "删除地址",
+ "summary": "delete address",
"parameters": [
{
"type": "string",
@@ -212,7 +212,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "更新地址",
+ "description": "update address",
"consumes": [
"application/json"
],
@@ -220,9 +220,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "更新地址",
+ "summary": "update address",
"parameters": [
{
"type": "string",
@@ -255,7 +255,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "地址",
+ "description": "address",
"consumes": [
"application/json"
],
@@ -263,19 +263,19 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "地址列表",
+ "summary": "address list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "current",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
@@ -309,7 +309,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "个人地址",
+ "description": "personal address",
"consumes": [
"application/json"
],
@@ -317,9 +317,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "个人地址",
+ "summary": "personal address",
"parameters": [
{
"description": "string valid",
@@ -353,7 +353,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "设置",
+ "description": "settings",
"consumes": [
"application/json"
],
@@ -361,9 +361,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "设置",
+ "summary": "settings",
"parameters": [
{
"description": "string valid",
@@ -397,7 +397,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "共享",
+ "description": "shared",
"consumes": [
"application/json"
],
@@ -405,19 +405,19 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "共享地址簿",
+ "summary": "shared address book",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "current",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
}
@@ -445,7 +445,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -453,9 +453,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签添加",
+ "summary": "add tag",
"parameters": [
{
"type": "string",
@@ -488,7 +488,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -496,9 +496,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签重命名",
+ "summary": "rename tag",
"parameters": [
{
"type": "string",
@@ -531,7 +531,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -539,9 +539,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签修改颜色",
+ "summary": "change tag color",
"parameters": [
{
"type": "string",
@@ -574,7 +574,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -582,9 +582,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签删除",
+ "summary": "delete tag",
"parameters": [
{
"type": "string",
@@ -617,7 +617,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -625,9 +625,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签",
+ "summary": "tag",
"parameters": [
{
"type": "string",
@@ -655,7 +655,7 @@ const docTemplateapi = `{
},
"/audit/conn": {
"post": {
- "description": "审计连接",
+ "description": "audit connection",
"consumes": [
"application/json"
],
@@ -663,12 +663,12 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "审计"
+ "audit"
],
- "summary": "审计连接",
+ "summary": "audit connection",
"parameters": [
{
- "description": "审计连接",
+ "description": "audit connection",
"name": "body",
"in": "body",
"required": true,
@@ -695,7 +695,7 @@ const docTemplateapi = `{
},
"/audit/file": {
"post": {
- "description": "审计文件",
+ "description": "audit file",
"consumes": [
"application/json"
],
@@ -703,12 +703,12 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "审计"
+ "audit"
],
- "summary": "审计文件",
+ "summary": "audit file",
"parameters": [
{
- "description": "审计文件",
+ "description": "audit file",
"name": "body",
"in": "body",
"required": true,
@@ -740,7 +740,7 @@ const docTemplateapi = `{
"token": []
}
],
- "description": "用户信息",
+ "description": "user info",
"consumes": [
"application/json"
],
@@ -748,9 +748,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "用户信息",
+ "summary": "user info",
"responses": {
"200": {
"description": "OK",
@@ -774,7 +774,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "机器",
+ "description": "machine",
"consumes": [
"application/json"
],
@@ -782,25 +782,25 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "设备",
+ "summary": "device",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
{
"type": "integer",
- "description": "状态",
+ "description": "status",
"name": "status",
"in": "query"
},
@@ -829,7 +829,7 @@ const docTemplateapi = `{
},
"/heartbeat": {
"post": {
- "description": "心跳",
+ "description": "heartbeat",
"consumes": [
"application/json"
],
@@ -837,9 +837,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "首页"
+ "home"
],
- "summary": "心跳",
+ "summary": "heartbeat",
"responses": {
"200": {
"description": "OK"
@@ -855,7 +855,7 @@ const docTemplateapi = `{
},
"/login": {
"post": {
- "description": "登录",
+ "description": "login",
"consumes": [
"application/json"
],
@@ -863,12 +863,12 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录",
+ "summary": "login",
"parameters": [
{
- "description": "登录表单",
+ "description": "login form",
"name": "body",
"in": "body",
"required": true,
@@ -895,7 +895,7 @@ const docTemplateapi = `{
},
"/login-options": {
"get": {
- "description": "登录选项",
+ "description": "login options",
"consumes": [
"application/json"
],
@@ -903,9 +903,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录选项",
+ "summary": "login options",
"responses": {
"200": {
"description": "OK",
@@ -927,7 +927,7 @@ const docTemplateapi = `{
},
"/logout": {
"post": {
- "description": "登出",
+ "description": "logout",
"consumes": [
"application/json"
],
@@ -935,9 +935,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登出",
+ "summary": "logout",
"responses": {
"200": {
"description": "OK",
@@ -1048,7 +1048,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "机器",
+ "description": "machine",
"consumes": [
"application/json"
],
@@ -1056,25 +1056,25 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "机器",
+ "summary": "machine",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
{
"type": "integer",
- "description": "状态",
+ "description": "status",
"name": "status",
"in": "query"
},
@@ -1108,7 +1108,7 @@ const docTemplateapi = `{
"token": []
}
],
- "description": "服务配置,给webclient提供api-server",
+ "description": "service config, provides an api-server for the webclient",
"consumes": [
"application/json"
],
@@ -1118,7 +1118,7 @@ const docTemplateapi = `{
"tags": [
"WEBCLIENT"
],
- "summary": "服务配置",
+ "summary": "service config",
"responses": {
"200": {
"description": "OK",
@@ -1142,7 +1142,7 @@ const docTemplateapi = `{
"token": []
}
],
- "description": "服务配置,给webclient提供api-server",
+ "description": "service config, provides an api-server for the webclient",
"consumes": [
"application/json"
],
@@ -1152,7 +1152,7 @@ const docTemplateapi = `{
"tags": [
"WEBCLIENT_V2"
],
- "summary": "服务配置",
+ "summary": "service config",
"responses": {
"200": {
"description": "OK",
@@ -1171,7 +1171,7 @@ const docTemplateapi = `{
},
"/shared-peer": {
"post": {
- "description": "分享的peer",
+ "description": "shared peer",
"consumes": [
"application/json"
],
@@ -1181,7 +1181,7 @@ const docTemplateapi = `{
"tags": [
"WEBCLIENT"
],
- "summary": "分享的peer",
+ "summary": "shared peer",
"responses": {
"200": {
"description": "OK",
@@ -1200,7 +1200,7 @@ const docTemplateapi = `{
},
"/sysinfo": {
"post": {
- "description": "提交系统信息",
+ "description": "submit system info",
"consumes": [
"application/json"
],
@@ -1210,10 +1210,10 @@ const docTemplateapi = `{
"tags": [
"System"
],
- "summary": "提交系统信息",
+ "summary": "submit system info",
"parameters": [
{
- "description": "系统信息表单",
+ "description": "system info form",
"name": "body",
"in": "body",
"required": true,
@@ -1240,7 +1240,7 @@ const docTemplateapi = `{
},
"/sysinfo_ver": {
"post": {
- "description": "获取系统版本信息",
+ "description": "get system version info",
"consumes": [
"application/json"
],
@@ -1250,7 +1250,7 @@ const docTemplateapi = `{
"tags": [
"System"
],
- "summary": "获取系统版本信息",
+ "summary": "get system version info",
"responses": {
"200": {
"description": "OK",
@@ -1274,7 +1274,7 @@ const docTemplateapi = `{
"BearerAuth": []
}
],
- "description": "用户列表",
+ "description": "user list",
"consumes": [
"application/json"
],
@@ -1282,25 +1282,25 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "用户列表",
+ "summary": "user list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
{
"type": "integer",
- "description": "状态",
+ "description": "status",
"name": "status",
"in": "query"
},
@@ -1344,7 +1344,7 @@ const docTemplateapi = `{
},
"/version": {
"get": {
- "description": "版本",
+ "description": "version",
"consumes": [
"application/json"
],
@@ -1352,9 +1352,9 @@ const docTemplateapi = `{
"application/json"
],
"tags": [
- "首页"
+ "home"
],
- "summary": "版本",
+ "summary": "version",
"responses": {
"200": {
"description": "OK",
@@ -1593,7 +1593,7 @@ const docTemplateapi = `{
"type": "integer"
},
"color": {
- "description": "color 是flutter的颜色值,从0x00000000 到 0xFFFFFFFF; 前两位表示透明度,后面6位表示颜色, 可以转成rgba",
+ "description": "color is flutter's color value,from 0x00000000 to 0xFFFFFFFF; the first two digits represent transparency, the following 6 digits represent the color, can be converted to rgba",
"type": "integer"
},
"created_at": {
@@ -1683,8 +1683,8 @@ var SwaggerInfoapi = &swag.Spec{
Host: "",
BasePath: "/api",
Schemes: []string{},
- Title: "管理系统API",
- Description: "接口",
+ Title: "management systemAPI",
+ Description: "API",
InfoInstanceName: "api",
SwaggerTemplate: docTemplateapi,
LeftDelim: "{{",
diff --git a/docs/api/api_swagger.json b/docs/api/api_swagger.json
index 9b50955..3f2dacb 100644
--- a/docs/api/api_swagger.json
+++ b/docs/api/api_swagger.json
@@ -1,8 +1,8 @@
{
"swagger": "2.0",
"info": {
- "description": "接口",
- "title": "管理系统API",
+ "description": "API",
+ "title": "management systemAPI",
"contact": {},
"version": "1.0"
},
@@ -10,7 +10,7 @@
"paths": {
"/": {
"get": {
- "description": "首页",
+ "description": "home",
"consumes": [
"application/json"
],
@@ -18,9 +18,9 @@
"application/json"
],
"tags": [
- "首页"
+ "home"
],
- "summary": "首页",
+ "summary": "home",
"responses": {
"200": {
"description": "OK",
@@ -44,7 +44,7 @@
"BearerAuth": []
}
],
- "description": "地址列表",
+ "description": "address list",
"consumes": [
"application/json"
],
@@ -52,9 +52,9 @@
"application/json"
],
"tags": [
- "地址"
+ "address"
],
- "summary": "地址列表",
+ "summary": "address list",
"responses": {
"200": {
"description": "OK",
@@ -76,7 +76,7 @@
"BearerAuth": []
}
],
- "description": "地址更新",
+ "description": "address update",
"consumes": [
"application/json"
],
@@ -84,12 +84,12 @@
"application/json"
],
"tags": [
- "地址"
+ "address"
],
- "summary": "地址更新",
+ "summary": "address update",
"parameters": [
{
- "description": "地址表单",
+ "description": "address form",
"name": "body",
"in": "body",
"required": true,
@@ -121,7 +121,7 @@
"BearerAuth": []
}
],
- "description": "添加地址",
+ "description": "add address",
"consumes": [
"application/json"
],
@@ -129,9 +129,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "添加地址",
+ "summary": "add address",
"parameters": [
{
"type": "string",
@@ -162,7 +162,7 @@
"BearerAuth": []
}
],
- "description": "删除地址",
+ "description": "delete address",
"consumes": [
"application/json"
],
@@ -170,9 +170,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "删除地址",
+ "summary": "delete address",
"parameters": [
{
"type": "string",
@@ -205,7 +205,7 @@
"BearerAuth": []
}
],
- "description": "更新地址",
+ "description": "update address",
"consumes": [
"application/json"
],
@@ -213,9 +213,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "更新地址",
+ "summary": "update address",
"parameters": [
{
"type": "string",
@@ -248,7 +248,7 @@
"BearerAuth": []
}
],
- "description": "地址",
+ "description": "address",
"consumes": [
"application/json"
],
@@ -256,19 +256,19 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "地址列表",
+ "summary": "address list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "current",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
@@ -302,7 +302,7 @@
"BearerAuth": []
}
],
- "description": "个人地址",
+ "description": "personal address",
"consumes": [
"application/json"
],
@@ -310,9 +310,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "个人地址",
+ "summary": "personal address",
"parameters": [
{
"description": "string valid",
@@ -346,7 +346,7 @@
"BearerAuth": []
}
],
- "description": "设置",
+ "description": "settings",
"consumes": [
"application/json"
],
@@ -354,9 +354,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "设置",
+ "summary": "settings",
"parameters": [
{
"description": "string valid",
@@ -390,7 +390,7 @@
"BearerAuth": []
}
],
- "description": "共享",
+ "description": "shared",
"consumes": [
"application/json"
],
@@ -398,19 +398,19 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "共享地址簿",
+ "summary": "shared address book",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "current",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
}
@@ -438,7 +438,7 @@
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -446,9 +446,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签添加",
+ "summary": "add tag",
"parameters": [
{
"type": "string",
@@ -481,7 +481,7 @@
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -489,9 +489,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签重命名",
+ "summary": "rename tag",
"parameters": [
{
"type": "string",
@@ -524,7 +524,7 @@
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -532,9 +532,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签修改颜色",
+ "summary": "change tag color",
"parameters": [
{
"type": "string",
@@ -567,7 +567,7 @@
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -575,9 +575,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签删除",
+ "summary": "delete tag",
"parameters": [
{
"type": "string",
@@ -610,7 +610,7 @@
"BearerAuth": []
}
],
- "description": "标签",
+ "description": "tag",
"consumes": [
"application/json"
],
@@ -618,9 +618,9 @@
"application/json"
],
"tags": [
- "地址[Personal]"
+ "address[Personal]"
],
- "summary": "标签",
+ "summary": "tag",
"parameters": [
{
"type": "string",
@@ -648,7 +648,7 @@
},
"/audit/conn": {
"post": {
- "description": "审计连接",
+ "description": "audit connection",
"consumes": [
"application/json"
],
@@ -656,12 +656,12 @@
"application/json"
],
"tags": [
- "审计"
+ "audit"
],
- "summary": "审计连接",
+ "summary": "audit connection",
"parameters": [
{
- "description": "审计连接",
+ "description": "audit connection",
"name": "body",
"in": "body",
"required": true,
@@ -688,7 +688,7 @@
},
"/audit/file": {
"post": {
- "description": "审计文件",
+ "description": "audit file",
"consumes": [
"application/json"
],
@@ -696,12 +696,12 @@
"application/json"
],
"tags": [
- "审计"
+ "audit"
],
- "summary": "审计文件",
+ "summary": "audit file",
"parameters": [
{
- "description": "审计文件",
+ "description": "audit file",
"name": "body",
"in": "body",
"required": true,
@@ -733,7 +733,7 @@
"token": []
}
],
- "description": "用户信息",
+ "description": "user info",
"consumes": [
"application/json"
],
@@ -741,9 +741,9 @@
"application/json"
],
"tags": [
- "用户"
+ "user"
],
- "summary": "用户信息",
+ "summary": "user info",
"responses": {
"200": {
"description": "OK",
@@ -767,7 +767,7 @@
"BearerAuth": []
}
],
- "description": "机器",
+ "description": "machine",
"consumes": [
"application/json"
],
@@ -775,25 +775,25 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "设备",
+ "summary": "device",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
{
"type": "integer",
- "description": "状态",
+ "description": "status",
"name": "status",
"in": "query"
},
@@ -822,7 +822,7 @@
},
"/heartbeat": {
"post": {
- "description": "心跳",
+ "description": "heartbeat",
"consumes": [
"application/json"
],
@@ -830,9 +830,9 @@
"application/json"
],
"tags": [
- "首页"
+ "home"
],
- "summary": "心跳",
+ "summary": "heartbeat",
"responses": {
"200": {
"description": "OK"
@@ -848,7 +848,7 @@
},
"/login": {
"post": {
- "description": "登录",
+ "description": "login",
"consumes": [
"application/json"
],
@@ -856,12 +856,12 @@
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录",
+ "summary": "login",
"parameters": [
{
- "description": "登录表单",
+ "description": "login form",
"name": "body",
"in": "body",
"required": true,
@@ -888,7 +888,7 @@
},
"/login-options": {
"get": {
- "description": "登录选项",
+ "description": "login options",
"consumes": [
"application/json"
],
@@ -896,9 +896,9 @@
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登录选项",
+ "summary": "login options",
"responses": {
"200": {
"description": "OK",
@@ -920,7 +920,7 @@
},
"/logout": {
"post": {
- "description": "登出",
+ "description": "logout",
"consumes": [
"application/json"
],
@@ -928,9 +928,9 @@
"application/json"
],
"tags": [
- "登录"
+ "login"
],
- "summary": "登出",
+ "summary": "logout",
"responses": {
"200": {
"description": "OK",
@@ -1041,7 +1041,7 @@
"BearerAuth": []
}
],
- "description": "机器",
+ "description": "machine",
"consumes": [
"application/json"
],
@@ -1049,25 +1049,25 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "机器",
+ "summary": "machine",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
{
"type": "integer",
- "description": "状态",
+ "description": "status",
"name": "status",
"in": "query"
},
@@ -1101,7 +1101,7 @@
"token": []
}
],
- "description": "服务配置,给webclient提供api-server",
+ "description": "service config, provides an api-server for the webclient",
"consumes": [
"application/json"
],
@@ -1111,7 +1111,7 @@
"tags": [
"WEBCLIENT"
],
- "summary": "服务配置",
+ "summary": "service config",
"responses": {
"200": {
"description": "OK",
@@ -1135,7 +1135,7 @@
"token": []
}
],
- "description": "服务配置,给webclient提供api-server",
+ "description": "service config, provides an api-server for the webclient",
"consumes": [
"application/json"
],
@@ -1145,7 +1145,7 @@
"tags": [
"WEBCLIENT_V2"
],
- "summary": "服务配置",
+ "summary": "service config",
"responses": {
"200": {
"description": "OK",
@@ -1164,7 +1164,7 @@
},
"/shared-peer": {
"post": {
- "description": "分享的peer",
+ "description": "shared peer",
"consumes": [
"application/json"
],
@@ -1174,7 +1174,7 @@
"tags": [
"WEBCLIENT"
],
- "summary": "分享的peer",
+ "summary": "shared peer",
"responses": {
"200": {
"description": "OK",
@@ -1193,7 +1193,7 @@
},
"/sysinfo": {
"post": {
- "description": "提交系统信息",
+ "description": "submit system info",
"consumes": [
"application/json"
],
@@ -1203,10 +1203,10 @@
"tags": [
"System"
],
- "summary": "提交系统信息",
+ "summary": "submit system info",
"parameters": [
{
- "description": "系统信息表单",
+ "description": "system info form",
"name": "body",
"in": "body",
"required": true,
@@ -1233,7 +1233,7 @@
},
"/sysinfo_ver": {
"post": {
- "description": "获取系统版本信息",
+ "description": "get system version info",
"consumes": [
"application/json"
],
@@ -1243,7 +1243,7 @@
"tags": [
"System"
],
- "summary": "获取系统版本信息",
+ "summary": "get system version info",
"responses": {
"200": {
"description": "OK",
@@ -1267,7 +1267,7 @@
"BearerAuth": []
}
],
- "description": "用户列表",
+ "description": "user list",
"consumes": [
"application/json"
],
@@ -1275,25 +1275,25 @@
"application/json"
],
"tags": [
- "群组"
+ "group"
],
- "summary": "用户列表",
+ "summary": "user list",
"parameters": [
{
"type": "integer",
- "description": "页码",
+ "description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
- "description": "每页数量",
+ "description": "items per page",
"name": "pageSize",
"in": "query"
},
{
"type": "integer",
- "description": "状态",
+ "description": "status",
"name": "status",
"in": "query"
},
@@ -1337,7 +1337,7 @@
},
"/version": {
"get": {
- "description": "版本",
+ "description": "version",
"consumes": [
"application/json"
],
@@ -1345,9 +1345,9 @@
"application/json"
],
"tags": [
- "首页"
+ "home"
],
- "summary": "版本",
+ "summary": "version",
"responses": {
"200": {
"description": "OK",
@@ -1586,7 +1586,7 @@
"type": "integer"
},
"color": {
- "description": "color 是flutter的颜色值,从0x00000000 到 0xFFFFFFFF; 前两位表示透明度,后面6位表示颜色, 可以转成rgba",
+ "description": "color is flutter's color value,from 0x00000000 to 0xFFFFFFFF; the first two digits represent transparency, the following 6 digits represent the color, can be converted to rgba",
"type": "integer"
},
"created_at": {
diff --git a/docs/api/api_swagger.yaml b/docs/api/api_swagger.yaml
index a654e33..d98f7bc 100644
--- a/docs/api/api_swagger.yaml
+++ b/docs/api/api_swagger.yaml
@@ -146,8 +146,8 @@ definitions:
collection_id:
type: integer
color:
- description: color 是flutter的颜色值,从0x00000000 到 0xFFFFFFFF; 前两位表示透明度,后面6位表示颜色,
- 可以转成rgba
+ description: color is flutter's color value,from 0x00000000 to 0xFFFFFFFF; the first two digits represent transparency, the following 6 digits represent the color,
+ can be converted to rgba
type: integer
created_at:
type: string
@@ -194,15 +194,15 @@ definitions:
type: object
info:
contact: {}
- description: 接口
- title: 管理系统API
+ description: API
+ title: management systemAPI
version: "1.0"
paths:
/:
get:
consumes:
- application/json
- description: 首页
+ description: home
produces:
- application/json
responses:
@@ -214,14 +214,14 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.Response'
- summary: 首页
+ summary: home
tags:
- - 首页
+ - home
/ab:
get:
consumes:
- application/json
- description: 地址列表
+ description: address list
produces:
- application/json
responses:
@@ -235,15 +235,15 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 地址列表
+ summary: address list
tags:
- - 地址
+ - address
post:
consumes:
- application/json
- description: 地址更新
+ description: address update
parameters:
- - description: 地址表单
+ - description: address form
in: body
name: body
required: true
@@ -262,14 +262,14 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 地址更新
+ summary: address update
tags:
- - 地址
+ - address
/ab/peer/add/{guid}:
delete:
consumes:
- application/json
- description: 删除地址
+ description: delete address
parameters:
- description: guid
in: path
@@ -289,13 +289,13 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 删除地址
+ summary: delete address
tags:
- - 地址[Personal]
+ - address[Personal]
post:
consumes:
- application/json
- description: 添加地址
+ description: add address
parameters:
- description: guid
in: path
@@ -315,14 +315,14 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 添加地址
+ summary: add address
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/peer/update/{guid}:
put:
consumes:
- application/json
- description: 更新地址
+ description: update address
parameters:
- description: guid
in: path
@@ -342,20 +342,20 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 更新地址
+ summary: update address
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/peers:
post:
consumes:
- application/json
- description: 地址
+ description: address
parameters:
- - description: 页码
+ - description: page number
in: query
name: current
type: integer
- - description: 每页数量
+ - description: items per page
in: query
name: pageSize
type: integer
@@ -376,14 +376,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
- summary: 地址列表
+ summary: address list
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/personal:
post:
consumes:
- application/json
- description: 个人地址
+ description: personal address
parameters:
- description: string valid
in: body
@@ -403,14 +403,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
- summary: 个人地址
+ summary: personal address
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/settings:
post:
consumes:
- application/json
- description: 设置
+ description: settings
parameters:
- description: string valid
in: body
@@ -430,20 +430,20 @@ paths:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
- summary: 设置
+ summary: settings
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/shared/profiles:
post:
consumes:
- application/json
- description: 共享
+ description: shared
parameters:
- - description: 页码
+ - description: page number
in: query
name: current
type: integer
- - description: 每页数量
+ - description: items per page
in: query
name: pageSize
type: integer
@@ -460,14 +460,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
- summary: 共享地址簿
+ summary: shared address book
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/tag/{guid}:
delete:
consumes:
- application/json
- description: 标签
+ description: tag
parameters:
- description: guid
in: path
@@ -487,14 +487,14 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 标签删除
+ summary: delete tag
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/tag/add/{guid}:
post:
consumes:
- application/json
- description: 标签
+ description: tag
parameters:
- description: guid
in: path
@@ -514,14 +514,14 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 标签添加
+ summary: add tag
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/tag/rename/{guid}:
put:
consumes:
- application/json
- description: 标签
+ description: tag
parameters:
- description: guid
in: path
@@ -541,14 +541,14 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 标签重命名
+ summary: rename tag
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/tag/update/{guid}:
put:
consumes:
- application/json
- description: 标签
+ description: tag
parameters:
- description: guid
in: path
@@ -568,14 +568,14 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 标签修改颜色
+ summary: change tag color
tags:
- - 地址[Personal]
+ - address[Personal]
/ab/tags/{guid}:
post:
consumes:
- application/json
- description: 标签
+ description: tag
parameters:
- description: guid
in: path
@@ -595,16 +595,16 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 标签
+ summary: tag
tags:
- - 地址[Personal]
+ - address[Personal]
/audit/conn:
post:
consumes:
- application/json
- description: 审计连接
+ description: audit connection
parameters:
- - description: 审计连接
+ - description: audit connection
in: body
name: body
required: true
@@ -621,16 +621,16 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.Response'
- summary: 审计连接
+ summary: audit connection
tags:
- - 审计
+ - audit
/audit/file:
post:
consumes:
- application/json
- description: 审计文件
+ description: audit file
parameters:
- - description: 审计文件
+ - description: audit file
in: body
name: body
required: true
@@ -647,14 +647,14 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.Response'
- summary: 审计文件
+ summary: audit file
tags:
- - 审计
+ - audit
/currentUser:
get:
consumes:
- application/json
- description: 用户信息
+ description: user info
produces:
- application/json
responses:
@@ -668,24 +668,24 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 用户信息
+ summary: user info
tags:
- - 用户
+ - user
/device-group/accessible:
get:
consumes:
- application/json
- description: 机器
+ description: machine
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 每页数量
+ - description: items per page
in: query
name: pageSize
type: integer
- - description: 状态
+ - description: status
in: query
name: status
type: integer
@@ -706,14 +706,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
- summary: 设备
+ summary: device
tags:
- - 群组
+ - group
/heartbeat:
post:
consumes:
- application/json
- description: 心跳
+ description: heartbeat
produces:
- application/json
responses:
@@ -723,16 +723,16 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.Response'
- summary: 心跳
+ summary: heartbeat
tags:
- - 首页
+ - home
/login:
post:
consumes:
- application/json
- description: 登录
+ description: login
parameters:
- - description: 登录表单
+ - description: login form
in: body
name: body
required: true
@@ -749,14 +749,14 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.ErrorResponse'
- summary: 登录
+ summary: login
tags:
- - 登录
+ - login
/login-options:
get:
consumes:
- application/json
- description: 登录选项
+ description: login options
produces:
- application/json
responses:
@@ -770,14 +770,14 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.ErrorResponse'
- summary: 登录选项
+ summary: login options
tags:
- - 登录
+ - login
/logout:
post:
consumes:
- application/json
- description: 登出
+ description: logout
produces:
- application/json
responses:
@@ -789,9 +789,9 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.ErrorResponse'
- summary: 登出
+ summary: logout
tags:
- - 登录
+ - login
/oidc/auth:
post:
consumes:
@@ -853,17 +853,17 @@ paths:
get:
consumes:
- application/json
- description: 机器
+ description: machine
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 每页数量
+ - description: items per page
in: query
name: pageSize
type: integer
- - description: 状态
+ - description: status
in: query
name: status
type: integer
@@ -884,14 +884,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
- summary: 机器
+ summary: machine
tags:
- - 群组
+ - group
/server-config:
get:
consumes:
- application/json
- description: 服务配置,给webclient提供api-server
+ description: service config, provides an api-server for the webclient
produces:
- application/json
responses:
@@ -905,14 +905,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 服务配置
+ summary: service config
tags:
- WEBCLIENT
/server-config-v2:
get:
consumes:
- application/json
- description: 服务配置,给webclient提供api-server
+ description: service config, provides an api-server for the webclient
produces:
- application/json
responses:
@@ -926,14 +926,14 @@ paths:
$ref: '#/definitions/response.Response'
security:
- token: []
- summary: 服务配置
+ summary: service config
tags:
- WEBCLIENT_V2
/shared-peer:
post:
consumes:
- application/json
- description: 分享的peer
+ description: shared peer
produces:
- application/json
responses:
@@ -945,16 +945,16 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.Response'
- summary: 分享的peer
+ summary: shared peer
tags:
- WEBCLIENT
/sysinfo:
post:
consumes:
- application/json
- description: 提交系统信息
+ description: submit system info
parameters:
- - description: 系统信息表单
+ - description: system info form
in: body
name: body
required: true
@@ -971,14 +971,14 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.ErrorResponse'
- summary: 提交系统信息
+ summary: submit system info
tags:
- System
/sysinfo_ver:
post:
consumes:
- application/json
- description: 获取系统版本信息
+ description: get system version info
produces:
- application/json
responses:
@@ -990,24 +990,24 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.ErrorResponse'
- summary: 获取系统版本信息
+ summary: get system version info
tags:
- System
/users:
get:
consumes:
- application/json
- description: 用户列表
+ description: user list
parameters:
- - description: 页码
+ - description: page number
in: query
name: page
type: integer
- - description: 每页数量
+ - description: items per page
in: query
name: pageSize
type: integer
- - description: 状态
+ - description: status
in: query
name: status
type: integer
@@ -1035,14 +1035,14 @@ paths:
$ref: '#/definitions/response.ErrorResponse'
security:
- BearerAuth: []
- summary: 用户列表
+ summary: user list
tags:
- - 群组
+ - group
/version:
get:
consumes:
- application/json
- description: 版本
+ description: version
produces:
- application/json
responses:
@@ -1054,9 +1054,9 @@ paths:
description: Internal Server Error
schema:
$ref: '#/definitions/response.Response'
- summary: 版本
+ summary: version
tags:
- - 首页
+ - home
securityDefinitions:
BearerAuth:
in: header
diff --git a/global/apiValidator.go b/global/apiValidator.go
index 0cf122e..69aeb55 100644
--- a/global/apiValidator.go
+++ b/global/apiValidator.go
@@ -24,7 +24,7 @@ import (
func ApiInitValidator() {
validate := validator.New()
- // 定义不同的语言翻译
+ // define translations for different languages
enT := en.New()
cn := zh_Hans_CN.New()
koT := ko.New()
@@ -81,7 +81,7 @@ func ApiInitValidator() {
return label
})
Validator.Validate = validate
- Validator.UT = uni // 存储 Universal Translator
+ Validator.UT = uni // store the Universal Translator
Validator.VTrans = zhTrans
Validator.ValidStruct = func(ctx *gin.Context, i interface{}) []string {
diff --git a/global/i18n.go b/global/i18n.go
index 82c395b..82bc9bf 100644
--- a/global/i18n.go
+++ b/global/i18n.go
@@ -10,14 +10,14 @@ import (
func InitI18n() {
bundle := i18n.NewBundle(language.English)
bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
- //读取global.Config.Gin.ResourcesPath下的所有语言文件
+ // read all language files under global.Config.Gin.ResourcesPath
dir := Config.Gin.ResourcesPath + "/i18n"
fileInfos, err := os.ReadDir(dir)
if err != nil {
panic(err)
}
for _, fileInfo := range fileInfos {
- //如果文件名不是.toml结尾
+ // if the file name does not end with .toml
if fileInfo.IsDir() || fileInfo.Name()[len(fileInfo.Name())-5:] != ".toml" {
continue
}
diff --git a/http/controller/admin/addressBook.go b/http/controller/admin/addressBook.go
index bf13a76..5ed7f50 100644
--- a/http/controller/admin/addressBook.go
+++ b/http/controller/admin/addressBook.go
@@ -15,10 +15,10 @@ import (
type AddressBook struct {
}
-// Detail 地址簿
-// @Tags 地址簿
-// @Summary 地址簿详情
-// @Description 地址簿详情
+// Detail address book
+// @Tags address book
+// @Summary address book details
+// @Description address book details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -38,13 +38,13 @@ func (ct *AddressBook) Detail(c *gin.Context) {
return
}
-// Create 创建地址簿
-// @Tags 地址簿
-// @Summary 创建地址簿
-// @Description 创建地址簿
+// Create create address book
+// @Tags address book
+// @Summary create address book
+// @Description create address book
// @Accept json
// @Produce json
-// @Param body body admin.AddressBookForm true "地址簿信息"
+// @Param body body admin.AddressBookForm true "address book info"
// @Success 200 {object} response.Response{data=model.AddressBook}
// @Failure 500 {object} response.Response
// @Router /admin/address_book/create [post]
@@ -84,13 +84,13 @@ func (ct *AddressBook) Create(c *gin.Context) {
response.Success(c, nil)
}
-// BatchCreate 批量创建地址簿
-// @Tags 地址簿
-// @Summary 批量创建地址簿
-// @Description 批量创建地址簿
+// BatchCreate batch create address books
+// @Tags address book
+// @Summary batch create address books
+// @Description batch create address books
// @Accept json
// @Produce json
-// @Param body body admin.AddressBookForm true "地址簿信息"
+// @Param body body admin.AddressBookForm true "address book info"
// @Success 200 {object} response.Response{data=model.AddressBook}
// @Failure 500 {object} response.Response
// @Router /admin/address_book/batchCreate [post]
@@ -113,13 +113,13 @@ func (ct *AddressBook) BatchCreate(c *gin.Context) {
return
}
if ul > 1 {
- //多用户置空标签
+ //clear tags in multi-user mode
f.Tags = []string{}
- //多用户只能创建到默认地址簿
+ //in multi-user mode, can only create in the default address book
f.CollectionId = 0
}
- //创建标签
+ //create tag
/*for _, fu := range f.UserIds {
if fu == 0 {
continue
@@ -148,16 +148,16 @@ func (ct *AddressBook) BatchCreate(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 地址簿
-// @Summary 地址簿列表
-// @Description 地址簿列表
+// List list
+// @Tags address book
+// @Summary address book list
+// @Description address book list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param user_id query int false "用户id"
-// @Param is_my query int false "是否是我的"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param user_id query int false "userid"
+// @Param is_my query int false "whether it is mine"
// @Success 200 {object} response.Response{data=model.AddressBookList}
// @Failure 500 {object} response.Response
// @Router /admin/address_book/list [get]
@@ -196,13 +196,13 @@ func (ct *AddressBook) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 地址簿
-// @Summary 地址簿编辑
-// @Description 地址簿编辑
+// Update edit
+// @Tags address book
+// @Summary edit address book
+// @Description edit address book
// @Accept json
// @Produce json
-// @Param body body admin.AddressBookForm true "地址簿信息"
+// @Param body body admin.AddressBookForm true "address book info"
// @Success 200 {object} response.Response{data=model.AddressBook}
// @Failure 500 {object} response.Response
// @Router /admin/address_book/update [post]
@@ -240,13 +240,13 @@ func (ct *AddressBook) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 地址簿
-// @Summary 地址簿删除
-// @Description 地址簿删除
+// Delete delete
+// @Tags address book
+// @Summary delete address book
+// @Description delete address book
// @Accept json
// @Produce json
-// @Param body body admin.AddressBookForm true "地址簿信息"
+// @Param body body admin.AddressBookForm true "address book info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/address_book/delete [post]
@@ -277,12 +277,12 @@ func (ct *AddressBook) Delete(c *gin.Context) {
}
// ShareByWebClient
-// @Tags 地址簿
-// @Summary 地址簿分享
-// @Description 地址簿分享
+// @Tags address book
+// @Summary share address book
+// @Description share address book
// @Accept json
// @Produce json
-// @Param body body admin.ShareByWebClientForm true "地址簿信息"
+// @Param body body admin.ShareByWebClientForm true "address book info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/address_book/share [post]
diff --git a/http/controller/admin/addressBookCollection.go b/http/controller/admin/addressBookCollection.go
index 16396cd..a0b8a94 100644
--- a/http/controller/admin/addressBookCollection.go
+++ b/http/controller/admin/addressBookCollection.go
@@ -14,10 +14,10 @@ import (
type AddressBookCollection struct {
}
-// Detail 地址簿名称
-// @Tags 地址簿名称
-// @Summary 地址簿名称详情
-// @Description 地址簿名称详情
+// Detail address book name
+// @Tags address book name
+// @Summary address book name details
+// @Description address book name details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -37,13 +37,13 @@ func (abc *AddressBookCollection) Detail(c *gin.Context) {
return
}
-// Create 创建地址簿名称
-// @Tags 地址簿名称
-// @Summary 创建地址簿名称
-// @Description 创建地址簿名称
+// Create create address book name
+// @Tags address book name
+// @Summary create address book name
+// @Description create address book name
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollection true "地址簿名称信息"
+// @Param body body model.AddressBookCollection true "address book name info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection/create [post]
@@ -72,16 +72,16 @@ func (abc *AddressBookCollection) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 地址簿名称
-// @Summary 地址簿名称列表
-// @Description 地址簿名称列表
+// List list
+// @Tags address book name
+// @Summary address book name list
+// @Description address book name list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param is_my query int false "是否是我的"
-// @Param user_id query int false "用户id"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param is_my query int false "whether it is mine"
+// @Param user_id query int false "userid"
// @Success 200 {object} response.Response{data=model.AddressBookCollectionList}
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection/list [get]
@@ -100,13 +100,13 @@ func (abc *AddressBookCollection) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 地址簿名称
-// @Summary 地址簿名称编辑
-// @Description 地址簿名称编辑
+// Update edit
+// @Tags address book name
+// @Summary edit address book name
+// @Description edit address book name
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollection true "地址簿名称信息"
+// @Param body body model.AddressBookCollection true "address book name info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection/update [post]
@@ -135,13 +135,13 @@ func (abc *AddressBookCollection) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 地址簿名称
-// @Summary 地址簿名称删除
-// @Description 地址簿名称删除
+// Delete delete
+// @Tags address book name
+// @Summary delete address book name
+// @Description delete address book name
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollection true "地址簿名称信息"
+// @Param body body model.AddressBookCollection true "address book name info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection/delete [post]
diff --git a/http/controller/admin/addressBookCollectionRule.go b/http/controller/admin/addressBookCollectionRule.go
index 5a86869..2a1447a 100644
--- a/http/controller/admin/addressBookCollectionRule.go
+++ b/http/controller/admin/addressBookCollectionRule.go
@@ -14,17 +14,17 @@ import (
type AddressBookCollectionRule struct {
}
-// List 列表
-// @Tags 地址簿规则
-// @Summary 地址簿规则列表
-// @Description 地址簿规则列表
+// List list
+// @Tags address book rules
+// @Summary address book rule list
+// @Description address book rule list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param is_my query int false "是否是我的"
-// @Param user_id query int false "用户id"
-// @Param collection_id query int false "地址簿集合id"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param is_my query int false "whether it is mine"
+// @Param user_id query int false "userid"
+// @Param collection_id query int false "address book collectionid"
// @Success 200 {object} response.Response{data=model.AddressBookCollectionList}
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection_rule/list [get]
@@ -47,10 +47,10 @@ func (abcr *AddressBookCollectionRule) List(c *gin.Context) {
response.Success(c, res)
}
-// Detail 地址簿规则
-// @Tags 地址簿规则
-// @Summary 地址簿规则详情
-// @Description 地址簿规则详情
+// Detail address book rules
+// @Tags address book rules
+// @Summary address book rule details
+// @Description address book rule details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -69,13 +69,13 @@ func (abcr *AddressBookCollectionRule) Detail(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
}
-// Create 创建地址簿规则
-// @Tags 地址簿规则
-// @Summary 创建地址簿规则
-// @Description 创建地址簿规则
+// Create create address book rule
+// @Tags address book rules
+// @Summary create address book rule
+// @Description create address book rule
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollectionRule true "地址簿规则信息"
+// @Param body body model.AddressBookCollectionRule true "address book rule info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection_rule/create [post]
@@ -134,7 +134,7 @@ func (abcr *AddressBookCollectionRule) CheckForm(t *model.AddressBookCollectionR
} else {
return "ParamsError", false
}
- // 重复检查
+ // duplicate check
ex := service.AllService.AddressBookService.RuleInfoByToIdAndCid(t.Type, t.ToId, t.CollectionId)
if t.Id == 0 && ex.Id > 0 {
return "ItemExists", false
@@ -145,13 +145,13 @@ func (abcr *AddressBookCollectionRule) CheckForm(t *model.AddressBookCollectionR
return "", true
}
-// Update 编辑
-// @Tags 地址簿规则
-// @Summary 地址簿规则编辑
-// @Description 地址簿规则编辑
+// Update edit
+// @Tags address book rules
+// @Summary edit address book rule
+// @Description edit address book rule
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollectionRule true "地址簿规则信息"
+// @Param body body model.AddressBookCollectionRule true "address book rule info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection_rule/update [post]
@@ -185,13 +185,13 @@ func (abcr *AddressBookCollectionRule) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 地址簿规则
-// @Summary 地址簿规则删除
-// @Description 地址簿规则删除
+// Delete delete
+// @Tags address book rules
+// @Summary delete address book rule
+// @Description delete address book rule
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollectionRule true "地址簿规则信息"
+// @Param body body model.AddressBookCollectionRule true "address book rule info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/address_book_collection_rule/delete [post]
diff --git a/http/controller/admin/audit.go b/http/controller/admin/audit.go
index 6fe64a6..60d29f1 100644
--- a/http/controller/admin/audit.go
+++ b/http/controller/admin/audit.go
@@ -13,16 +13,16 @@ import (
type Audit struct {
}
-// ConnList 列表
-// @Tags 链接日志
-// @Summary 链接日志列表
-// @Description 链接日志列表
+// ConnList list
+// @Tags connection log
+// @Summary connection log list
+// @Description connection log list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param peer_id query int false "目标设备"
-// @Param from_peer query int false "来源设备"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param peer_id query int false "target device"
+// @Param from_peer query int false "source device"
// @Success 200 {object} response.Response{data=model.AuditConnList}
// @Failure 500 {object} response.Response
// @Router /admin/audit_conn/list [get]
@@ -45,13 +45,13 @@ func (a *Audit) ConnList(c *gin.Context) {
response.Success(c, res)
}
-// ConnDelete 删除
-// @Tags 链接日志
-// @Summary 链接日志删除
-// @Description 链接日志删除
+// ConnDelete delete
+// @Tags connection log
+// @Summary delete connection log
+// @Description delete connection log
// @Accept json
// @Produce json
-// @Param body body model.AuditConn true "链接日志信息"
+// @Param body body model.AuditConn true "connection log info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/audit_conn/delete [post]
@@ -81,13 +81,13 @@ func (a *Audit) ConnDelete(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
}
-// BatchConnDelete 删除
-// @Tags 链接日志
-// @Summary 链接日志批量删除
-// @Description 链接日志批量删除
+// BatchConnDelete delete
+// @Tags connection log
+// @Summary batch delete connection logs
+// @Description batch delete connection logs
// @Accept json
// @Produce json
-// @Param body body admin.AuditConnLogIds true "链接日志"
+// @Param body body admin.AuditConnLogIds true "connection log"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/audit_conn/batchDelete [post]
@@ -112,16 +112,16 @@ func (a *Audit) BatchConnDelete(c *gin.Context) {
return
}
-// FileList 列表
-// @Tags 文件日志
-// @Summary 文件日志列表
-// @Description 文件日志列表
+// FileList list
+// @Tags file log
+// @Summary file log list
+// @Description file log list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param peer_id query int false "目标设备"
-// @Param from_peer query int false "来源设备"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param peer_id query int false "target device"
+// @Param from_peer query int false "source device"
// @Success 200 {object} response.Response{data=model.AuditFileList}
// @Failure 500 {object} response.Response
// @Router /admin/audit_file/list [get]
@@ -144,13 +144,13 @@ func (a *Audit) FileList(c *gin.Context) {
response.Success(c, res)
}
-// FileDelete 删除
-// @Tags 文件日志
-// @Summary 文件日志删除
-// @Description 文件日志删除
+// FileDelete delete
+// @Tags file log
+// @Summary delete file log
+// @Description delete file log
// @Accept json
// @Produce json
-// @Param body body model.AuditFile true "文件日志信息"
+// @Param body body model.AuditFile true "file log info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/audit_file/delete [post]
@@ -180,13 +180,13 @@ func (a *Audit) FileDelete(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
}
-// BatchFileDelete 删除
-// @Tags 文件日志
-// @Summary 文件日志批量删除
-// @Description 文件日志批量删除
+// BatchFileDelete delete
+// @Tags file log
+// @Summary batch delete file logs
+// @Description batch delete file logs
// @Accept json
// @Produce json
-// @Param body body admin.AuditFileLogIds true "文件日志"
+// @Param body body admin.AuditFileLogIds true "file log"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/audit_file/batchDelete [post]
diff --git a/http/controller/admin/config.go b/http/controller/admin/config.go
index f4e7e30..124302a 100644
--- a/http/controller/admin/config.go
+++ b/http/controller/admin/config.go
@@ -13,10 +13,10 @@ import (
type Config struct {
}
-// ServerConfig RUSTDESK服务配置
+// ServerConfig RUSTDESKservice config
// @Tags ADMIN
-// @Summary RUSTDESK服务配置
-// @Description 服务配置,给webclient提供api-server
+// @Summary RUSTDESKservice config
+// @Description service config, provides an api-server for the webclient
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -33,10 +33,10 @@ func (co *Config) ServerConfig(c *gin.Context) {
response.Success(c, cf)
}
-// AppConfig APP服务配置
+// AppConfig APPservice config
// @Tags ADMIN
-// @Summary APP服务配置
-// @Description APP服务配置
+// @Summary APPservice config
+// @Description APPservice config
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -49,10 +49,10 @@ func (co *Config) AppConfig(c *gin.Context) {
})
}
-// AdminConfig ADMIN服务配置
+// AdminConfig ADMINservice config
// @Tags ADMIN
-// @Summary ADMIN服务配置
-// @Description ADMIN服务配置
+// @Summary ADMINservice config
+// @Description ADMINservice config
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
diff --git a/http/controller/admin/deviceGroup.go b/http/controller/admin/deviceGroup.go
index 3d3a884..55a4b50 100644
--- a/http/controller/admin/deviceGroup.go
+++ b/http/controller/admin/deviceGroup.go
@@ -12,10 +12,10 @@ import (
type DeviceGroup struct {
}
-// Detail 设备群组
-// @Tags 设备群组
-// @Summary 设备群组详情
-// @Description 设备群组详情
+// Detail device group
+// @Tags device group
+// @Summary device group details
+// @Description device group details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -35,13 +35,13 @@ func (ct *DeviceGroup) Detail(c *gin.Context) {
return
}
-// Create 创建设备群组
-// @Tags 设备群组
-// @Summary 创建设备群组
-// @Description 创建设备群组
+// Create create device group
+// @Tags device group
+// @Summary create device group
+// @Description create device group
// @Accept json
// @Produce json
-// @Param body body admin.DeviceGroupForm true "设备群组信息"
+// @Param body body admin.DeviceGroupForm true "device group info"
// @Success 200 {object} response.Response{data=model.DeviceGroup}
// @Failure 500 {object} response.Response
// @Router /admin/device_group/create [post]
@@ -66,14 +66,14 @@ func (ct *DeviceGroup) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 群组
-// @Summary 群组列表
-// @Description 群组列表
+// List list
+// @Tags group
+// @Summary group list
+// @Description group list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
// @Success 200 {object} response.Response{data=model.GroupList}
// @Failure 500 {object} response.Response
// @Router /admin/device_group/list [get]
@@ -88,13 +88,13 @@ func (ct *DeviceGroup) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 设备群组
-// @Summary 设备群组编辑
-// @Description 设备群组编辑
+// Update edit
+// @Tags device group
+// @Summary edit device group
+// @Description edit device group
// @Accept json
// @Produce json
-// @Param body body admin.DeviceGroupForm true "群组信息"
+// @Param body body admin.DeviceGroupForm true "group info"
// @Success 200 {object} response.Response{data=model.Group}
// @Failure 500 {object} response.Response
// @Router /admin/device_group/update [post]
@@ -123,13 +123,13 @@ func (ct *DeviceGroup) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 设备群组
-// @Summary 设备群组删除
-// @Description 设备群组删除
+// Delete delete
+// @Tags device group
+// @Summary delete device group
+// @Description delete device group
// @Accept json
// @Produce json
-// @Param body body admin.DeviceGroupForm true "群组信息"
+// @Param body body admin.DeviceGroupForm true "group info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/device_group/delete [post]
diff --git a/http/controller/admin/file.go b/http/controller/admin/file.go
index aa83b33..6eace13 100644
--- a/http/controller/admin/file.go
+++ b/http/controller/admin/file.go
@@ -13,10 +13,10 @@ import (
type File struct {
}
-// OssToken 文件
-// @Tags 文件
-// @Summary 获取ossToken
-// @Description 获取ossToken
+// OssToken file
+// @Tags file
+// @Summary getossToken
+// @Description getossToken
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -33,7 +33,7 @@ type FileBack struct {
Url string `json:"url"`
}
-// Notify 上传成功后回调
+// Notify callback after successful upload
func (f *File) Notify(c *gin.Context) {
res := global.Oss.Verify(c.Request)
@@ -50,13 +50,13 @@ func (f *File) Notify(c *gin.Context) {
}
-// Upload 上传文件到本地
-// @Tags 文件
-// @Summary 上传文件到本地
-// @Description 上传文件到本地
+// Upload upload file to local
+// @Tags file
+// @Summary upload file to local
+// @Description upload file to local
// @Accept multipart/form-data
// @Produce json
-// @Param file formData file true "上传文件示例"
+// @Param file formData file true "file upload example"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/file/upload [post]
@@ -71,12 +71,12 @@ func (f *File) Upload(c *gin.Context) {
if err != nil {
return
}
- // 上传文件至指定目录
+ // upload the file to the specified directory
err = c.SaveUploadedFile(file, dst)
if err != nil {
return
}
- // 返回文件web地址
+ // return filewebaddress
response.Success(c, gin.H{
"url": webPath + file.Filename,
})
diff --git a/http/controller/admin/group.go b/http/controller/admin/group.go
index bf70ca9..1cbea80 100644
--- a/http/controller/admin/group.go
+++ b/http/controller/admin/group.go
@@ -12,10 +12,10 @@ import (
type Group struct {
}
-// Detail 群组
-// @Tags 群组
-// @Summary 群组详情
-// @Description 群组详情
+// Detail group
+// @Tags group
+// @Summary group details
+// @Description group details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -35,13 +35,13 @@ func (ct *Group) Detail(c *gin.Context) {
return
}
-// Create 创建群组
-// @Tags 群组
-// @Summary 创建群组
-// @Description 创建群组
+// Create create group
+// @Tags group
+// @Summary create group
+// @Description create group
// @Accept json
// @Produce json
-// @Param body body admin.GroupForm true "群组信息"
+// @Param body body admin.GroupForm true "group info"
// @Success 200 {object} response.Response{data=model.Group}
// @Failure 500 {object} response.Response
// @Router /admin/group/create [post]
@@ -66,14 +66,14 @@ func (ct *Group) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 群组
-// @Summary 群组列表
-// @Description 群组列表
+// List list
+// @Tags group
+// @Summary group list
+// @Description group list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
// @Success 200 {object} response.Response{data=model.GroupList}
// @Failure 500 {object} response.Response
// @Router /admin/group/list [get]
@@ -88,13 +88,13 @@ func (ct *Group) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 群组
-// @Summary 群组编辑
-// @Description 群组编辑
+// Update edit
+// @Tags group
+// @Summary edit group
+// @Description edit group
// @Accept json
// @Produce json
-// @Param body body admin.GroupForm true "群组信息"
+// @Param body body admin.GroupForm true "group info"
// @Success 200 {object} response.Response{data=model.Group}
// @Failure 500 {object} response.Response
// @Router /admin/group/update [post]
@@ -123,13 +123,13 @@ func (ct *Group) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 群组
-// @Summary 群组删除
-// @Description 群组删除
+// Delete delete
+// @Tags group
+// @Summary delete group
+// @Description delete group
// @Accept json
// @Produce json
-// @Param body body admin.GroupForm true "群组信息"
+// @Param body body admin.GroupForm true "group info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/group/delete [post]
diff --git a/http/controller/admin/login.go b/http/controller/admin/login.go
index 0ff8deb..9082c53 100644
--- a/http/controller/admin/login.go
+++ b/http/controller/admin/login.go
@@ -17,13 +17,13 @@ import (
type Login struct {
}
-// Login 登录
-// @Tags 登录
-// @Summary 登录
-// @Description 登录
+// Login login
+// @Tags login
+// @Summary login
+// @Description login
// @Accept json
// @Produce json
-// @Param body body admin.Login true "登录信息"
+// @Param body body admin.Login true "login info"
// @Success 200 {object} response.Response{data=adResp.LoginPayload}
// @Failure 500 {object} response.Response
// @Router /admin/login [post]
@@ -34,7 +34,7 @@ func (ct *Login) Login(c *gin.Context) {
return
}
- // 检查登录限制
+ // check login limit
loginLimiter := global.LoginLimiter
clientIp := c.ClientIP()
_, needCaptcha := loginLimiter.CheckSecurityStatus(clientIp)
@@ -56,7 +56,7 @@ func (ct *Login) Login(c *gin.Context) {
return
}
- // 检查是否需要验证码
+ // check whether a captcha is required
if needCaptcha {
if f.CaptchaId == "" || f.Captcha == "" || !loginLimiter.VerifyCaptcha(f.CaptchaId, f.Captcha) {
response.Fail(c, 101, response.TranslateMsg(c, "CaptchaError"))
@@ -95,7 +95,7 @@ func (ct *Login) Login(c *gin.Context) {
Platform: f.Platform,
})
- // 登录成功,清除登录限制
+ // login successful, clear the login limit
loginLimiter.RemoveAttempts(clientIp)
responseLoginSuccess(c, u, ut.Token)
}
@@ -129,10 +129,10 @@ func (ct *Login) Captcha(c *gin.Context) {
})
}
-// Logout 登出
-// @Tags 登录
-// @Summary 登出
-// @Description 登出
+// Logout logout
+// @Tags login
+// @Summary logout
+// @Description logout
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -148,9 +148,9 @@ func (ct *Login) Logout(c *gin.Context) {
}
// LoginOptions
-// @Tags 登录
-// @Summary 登录选项
-// @Description 登录选项
+// @Tags login
+// @Summary login options
+// @Description login options
// @Accept json
// @Produce json
// @Success 200 {object} []string
diff --git a/http/controller/admin/loginLog.go b/http/controller/admin/loginLog.go
index 8d71f6b..02b509d 100644
--- a/http/controller/admin/loginLog.go
+++ b/http/controller/admin/loginLog.go
@@ -14,10 +14,10 @@ import (
type LoginLog struct {
}
-// Detail 登录日志
-// @Tags 登录日志
-// @Summary 登录日志详情
-// @Description 登录日志详情
+// Detail login log
+// @Tags login log
+// @Summary login log details
+// @Description login log details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -37,15 +37,15 @@ func (ct *LoginLog) Detail(c *gin.Context) {
return
}
-// List 列表
-// @Tags 登录日志
-// @Summary 登录日志列表
-// @Description 登录日志列表
+// List list
+// @Tags login log
+// @Summary login log list
+// @Description login log list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param user_id query int false "用户ID"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param user_id query int false "userID"
// @Success 200 {object} response.Response{data=model.LoginLogList}
// @Failure 500 {object} response.Response
// @Router /admin/login_log/list [get]
@@ -65,13 +65,13 @@ func (ct *LoginLog) List(c *gin.Context) {
response.Success(c, res)
}
-// Delete 删除
-// @Tags 登录日志
-// @Summary 登录日志删除
-// @Description 登录日志删除
+// Delete delete
+// @Tags login log
+// @Summary delete login log
+// @Description delete login log
// @Accept json
// @Produce json
-// @Param body body model.LoginLog true "登录日志信息"
+// @Param body body model.LoginLog true "login log info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/login_log/delete [post]
@@ -101,13 +101,13 @@ func (ct *LoginLog) Delete(c *gin.Context) {
response.Fail(c, 101, err.Error())
}
-// BatchDelete 删除
-// @Tags 登录日志
-// @Summary 登录日志批量删除
-// @Description 登录日志批量删除
+// BatchDelete delete
+// @Tags login log
+// @Summary batch delete login logs
+// @Description batch delete login logs
// @Accept json
// @Produce json
-// @Param body body admin.LoginLogIds true "登录日志"
+// @Param body body admin.LoginLogIds true "login log"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/login_log/batchDelete [post]
diff --git a/http/controller/admin/my/addressBook.go b/http/controller/admin/my/addressBook.go
index 1174d52..7f721d7 100644
--- a/http/controller/admin/my/addressBook.go
+++ b/http/controller/admin/my/addressBook.go
@@ -12,15 +12,15 @@ import (
type AddressBook struct{}
-// List 列表
-// @Tags 我的地址簿
-// @Summary 地址簿列表
-// @Description 地址簿列表
+// List list
+// @Tags my address book
+// @Summary address book list
+// @Description address book list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param user_id query int false "用户id"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param user_id query int false "userid"
// @Success 200 {object} response.Response{data=model.AddressBookList}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book/list [get]
@@ -34,7 +34,7 @@ func (ct *AddressBook) List(c *gin.Context) {
u := service.AllService.UserService.CurUser(c)
query.UserId = int(u.Id)
res := service.AllService.AddressBookService.List(query.Page, query.PageSize, func(tx *gorm.DB) {
- //预加载地址簿名称
+ //preload address book name
tx.Preload("Collection", func(txc *gorm.DB) *gorm.DB {
return txc.Select("id,name")
})
@@ -60,13 +60,13 @@ func (ct *AddressBook) List(c *gin.Context) {
response.Success(c, res)
}
-// Create 创建地址簿
-// @Tags 我的地址簿
-// @Summary 创建地址簿
-// @Description 创建地址簿
+// Create create address book
+// @Tags my address book
+// @Summary create address book
+// @Description create address book
// @Accept json
// @Produce json
-// @Param body body admin.AddressBookForm true "地址簿信息"
+// @Param body body admin.AddressBookForm true "address book info"
// @Success 200 {object} response.Response{data=model.AddressBook}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book/create [post]
@@ -104,13 +104,13 @@ func (ct *AddressBook) Create(c *gin.Context) {
response.Success(c, nil)
}
-// Update 编辑
-// @Tags 我的地址簿
-// @Summary 地址簿编辑
-// @Description 地址簿编辑
+// Update edit
+// @Tags my address book
+// @Summary edit address book
+// @Description edit address book
// @Accept json
// @Produce json
-// @Param body body admin.AddressBookForm true "地址簿信息"
+// @Param body body admin.AddressBookForm true "address book info"
// @Success 200 {object} response.Response{data=model.AddressBook}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book/update [post]
@@ -158,13 +158,13 @@ func (ct *AddressBook) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 我的地址簿
-// @Summary 地址簿删除
-// @Description 地址簿删除
+// Delete delete
+// @Tags my address book
+// @Summary delete address book
+// @Description delete address book
// @Accept json
// @Produce json
-// @Param body body admin.AddressBookForm true "地址簿信息"
+// @Param body body admin.AddressBookForm true "address book info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book/delete [post]
diff --git a/http/controller/admin/my/addressBookCollection.go b/http/controller/admin/my/addressBookCollection.go
index af7b003..cd8da06 100644
--- a/http/controller/admin/my/addressBookCollection.go
+++ b/http/controller/admin/my/addressBookCollection.go
@@ -13,13 +13,13 @@ import (
type AddressBookCollection struct {
}
-// Create 创建地址簿名称
-// @Tags 我的地址簿名称
-// @Summary 创建地址簿名称
-// @Description 创建地址簿名称
+// Create create address book name
+// @Tags my address book name
+// @Summary create address book name
+// @Description create address book name
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollection true "地址簿名称信息"
+// @Param body body model.AddressBookCollection true "address book name info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection/create [post]
@@ -45,14 +45,14 @@ func (abc *AddressBookCollection) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 我的地址簿名称
-// @Summary 地址簿名称列表
-// @Description 地址簿名称列表
+// List list
+// @Tags my address book name
+// @Summary address book name list
+// @Description address book name list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
// @Success 200 {object} response.Response{data=model.AddressBookCollectionList}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection/list [get]
@@ -71,13 +71,13 @@ func (abc *AddressBookCollection) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 我的地址簿名称
-// @Summary 地址簿名称编辑
-// @Description 地址簿名称编辑
+// Update edit
+// @Tags my address book name
+// @Summary edit address book name
+// @Description edit address book name
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollection true "地址簿名称信息"
+// @Param body body model.AddressBookCollection true "address book name info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection/update [post]
@@ -120,13 +120,13 @@ func (abc *AddressBookCollection) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 我的地址簿名称
-// @Summary 地址簿名称删除
-// @Description 地址簿名称删除
+// Delete delete
+// @Tags my address book name
+// @Summary delete address book name
+// @Description delete address book name
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollection true "地址簿名称信息"
+// @Param body body model.AddressBookCollection true "address book name info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection/delete [post]
diff --git a/http/controller/admin/my/addressBookCollectionRule.go b/http/controller/admin/my/addressBookCollectionRule.go
index 035ec4d..03db24d 100644
--- a/http/controller/admin/my/addressBookCollectionRule.go
+++ b/http/controller/admin/my/addressBookCollectionRule.go
@@ -13,17 +13,17 @@ import (
type AddressBookCollectionRule struct {
}
-// List 列表
-// @Tags 我的地址簿规则
-// @Summary 地址簿规则列表
-// @Description 地址簿规则列表
+// List list
+// @Tags my address book rules
+// @Summary address book rule list
+// @Description address book rule list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param is_my query int false "是否是我的"
-// @Param user_id query int false "用户id"
-// @Param collection_id query int false "地址簿集合id"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param is_my query int false "whether it is mine"
+// @Param user_id query int false "userid"
+// @Param collection_id query int false "address book collectionid"
// @Success 200 {object} response.Response{data=model.AddressBookCollectionList}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection_rule/list [get]
@@ -46,13 +46,13 @@ func (abcr *AddressBookCollectionRule) List(c *gin.Context) {
response.Success(c, res)
}
-// Create 创建地址簿规则
-// @Tags 我的地址簿规则
-// @Summary 创建地址簿规则
-// @Description 创建地址簿规则
+// Create create address book rule
+// @Tags my address book rules
+// @Summary create address book rule
+// @Description create address book rule
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollectionRule true "地址簿规则信息"
+// @Param body body model.AddressBookCollectionRule true "address book rule info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection_rule/create [post]
@@ -106,12 +106,12 @@ func (abcr *AddressBookCollectionRule) CheckForm(u *model.User, t *model.Address
if tou.Id == 0 {
return "ItemNotFound", false
}
- //非管理员不能分享给非本组织用户
+ //non-admins cannot share with users outside their own organization
//if tou.GroupId != u.GroupId {
// return "NoAccess", false
//}
} else if t.Type == model.ShareAddressBookRuleTypeGroup {
- //非管理员不能分享给其他组
+ //non-admins cannot share with other groups
//if t.ToId != u.GroupId {
// return "NoAccess", false
//}
@@ -123,7 +123,7 @@ func (abcr *AddressBookCollectionRule) CheckForm(u *model.User, t *model.Address
} else {
return "ParamsError", false
}
- // 重复检查
+ // duplicate check
ex := service.AllService.AddressBookService.RuleInfoByToIdAndCid(t.Type, t.ToId, t.CollectionId)
if t.Id == 0 && ex.Id > 0 {
return "ItemExists", false
@@ -134,13 +134,13 @@ func (abcr *AddressBookCollectionRule) CheckForm(u *model.User, t *model.Address
return "", true
}
-// Update 编辑
-// @Tags 我的地址簿规则
-// @Summary 地址簿规则编辑
-// @Description 地址簿规则编辑
+// Update edit
+// @Tags my address book rules
+// @Summary edit address book rule
+// @Description edit address book rule
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollectionRule true "地址簿规则信息"
+// @Param body body model.AddressBookCollectionRule true "address book rule info"
// @Success 200 {object} response.Response{data=model.AddressBookCollection}
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection_rule/update [post]
@@ -185,13 +185,13 @@ func (abcr *AddressBookCollectionRule) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 我的地址簿规则
-// @Summary 地址簿规则删除
-// @Description 地址簿规则删除
+// Delete delete
+// @Tags my address book rules
+// @Summary delete address book rule
+// @Description delete address book rule
// @Accept json
// @Produce json
-// @Param body body model.AddressBookCollectionRule true "地址簿规则信息"
+// @Param body body model.AddressBookCollectionRule true "address book rule info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/address_book_collection_rule/delete [post]
diff --git a/http/controller/admin/my/loginLog.go b/http/controller/admin/my/loginLog.go
index ff7ea52..efba506 100644
--- a/http/controller/admin/my/loginLog.go
+++ b/http/controller/admin/my/loginLog.go
@@ -13,15 +13,15 @@ import (
type LoginLog struct {
}
-// List 列表
-// @Tags 我的登录日志
-// @Summary 登录日志列表
-// @Description 登录日志列表
+// List list
+// @Tags my login logs
+// @Summary login log list
+// @Description login log list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param user_id query int false "用户ID"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param user_id query int false "userID"
// @Success 200 {object} response.Response{data=model.LoginLogList}
// @Failure 500 {object} response.Response
// @Router /admin/my/login_log/list [get]
@@ -40,13 +40,13 @@ func (ct *LoginLog) List(c *gin.Context) {
response.Success(c, res)
}
-// Delete 删除
-// @Tags 我的登录日志
-// @Summary 登录日志删除
-// @Description 登录日志删除
+// Delete delete
+// @Tags my login logs
+// @Summary delete login log
+// @Description delete login log
// @Accept json
// @Produce json
-// @Param body body model.LoginLog true "登录日志信息"
+// @Param body body model.LoginLog true "login log info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/login_log/delete [post]
@@ -81,13 +81,13 @@ func (ct *LoginLog) Delete(c *gin.Context) {
response.Fail(c, 101, err.Error())
}
-// BatchDelete 删除
-// @Tags 我的登录日志
-// @Summary 登录日志批量删除
-// @Description 登录日志批量删除
+// BatchDelete delete
+// @Tags my login logs
+// @Summary batch delete login logs
+// @Description batch delete login logs
// @Accept json
// @Produce json
-// @Param body body admin.LoginLogIds true "登录日志"
+// @Param body body admin.LoginLogIds true "login log"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/login_log/batchDelete [post]
diff --git a/http/controller/admin/my/peer.go b/http/controller/admin/my/peer.go
index e3b838e..caa026f 100644
--- a/http/controller/admin/my/peer.go
+++ b/http/controller/admin/my/peer.go
@@ -12,18 +12,18 @@ import (
type Peer struct {
}
-// List 列表
-// @Tags 我的设备
-// @Summary 设备列表
-// @Description 设备列表
+// List list
+// @Tags my devices
+// @Summary device list
+// @Description device list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param time_ago query int false "时间"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param time_ago query int false "time"
// @Param id query string false "ID"
-// @Param hostname query string false "主机名"
-// @Param uuids query string false "uuids 用逗号分隔"
+// @Param hostname query string false "hostname"
+// @Param uuids query string false "uuids separated by commas"
// @Success 200 {object} response.Response{data=model.PeerList}
// @Failure 500 {object} response.Response
// @Router /admin/my/peer/list [get]
diff --git a/http/controller/admin/my/shareRecord.go b/http/controller/admin/my/shareRecord.go
index 54f7f23..b1aea07 100644
--- a/http/controller/admin/my/shareRecord.go
+++ b/http/controller/admin/my/shareRecord.go
@@ -12,14 +12,14 @@ import (
type ShareRecord struct {
}
-// List 分享记录列表
-// @Tags 我的分享记录
-// @Summary 分享记录列表
-// @Description 分享记录列表
+// List share record list
+// @Tags my share records
+// @Summary share record list
+// @Description share record list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/share_record/list [get]
@@ -37,13 +37,13 @@ func (sr *ShareRecord) List(c *gin.Context) {
response.Success(c, res)
}
-// Delete 分享记录删除
-// @Tags 我的分享记录
-// @Summary 分享记录删除
-// @Description 分享记录删除
+// Delete delete share record
+// @Tags my share records
+// @Summary delete share record
+// @Description delete share record
// @Accept json
// @Produce json
-// @Param body body admin.ShareRecordForm true "分享记录信息"
+// @Param body body admin.ShareRecordForm true "share record info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/share_record/delete [post]
@@ -78,10 +78,10 @@ func (sr *ShareRecord) Delete(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "OperationFailed")+err.Error())
}
-// BatchDelete 批量删除我的分享记录
-// @Tags 我的
-// @Summary 批量删除我的分享记录
-// @Description 批量删除我的分享记录
+// BatchDelete batch delete my share records
+// @Tags my
+// @Summary batch delete my share records
+// @Description batch delete my share records
// @Accept json
// @Produce json
// @Param body body admin.PeerShareRecordBatchDeleteForm true "id"
diff --git a/http/controller/admin/my/tag.go b/http/controller/admin/my/tag.go
index 8d867d5..225de28 100644
--- a/http/controller/admin/my/tag.go
+++ b/http/controller/admin/my/tag.go
@@ -11,16 +11,16 @@ import (
type Tag struct{}
-// List 列表
-// @Tags 我的标签
-// @Summary 标签列表
-// @Description 标签列表
+// List list
+// @Tags my tags
+// @Summary tag list
+// @Description tag list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param is_my query int false "是否是我的"
-// @Param user_id query int false "用户id"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param is_my query int false "whether it is mine"
+// @Param user_id query int false "userid"
// @Success 200 {object} response.Response{data=model.TagList}
// @Failure 500 {object} response.Response
// @Router /admin/my/tag/list [get]
@@ -45,13 +45,13 @@ func (ct *Tag) List(c *gin.Context) {
response.Success(c, res)
}
-// Create 创建标签
-// @Tags 我的标签
-// @Summary 创建标签
-// @Description 创建标签
+// Create create tag
+// @Tags my tags
+// @Summary create tag
+// @Description create tag
// @Accept json
// @Produce json
-// @Param body body admin.TagForm true "标签信息"
+// @Param body body admin.TagForm true "tag info"
// @Success 200 {object} response.Response{data=model.Tag}
// @Failure 500 {object} response.Response
// @Router /admin/my/tag/create [post]
@@ -78,13 +78,13 @@ func (ct *Tag) Create(c *gin.Context) {
response.Success(c, nil)
}
-// Update 编辑
-// @Tags 我的标签
-// @Summary 标签编辑
-// @Description 标签编辑
+// Update edit
+// @Tags my tags
+// @Summary edit tag
+// @Description edit tag
// @Accept json
// @Produce json
-// @Param body body admin.TagForm true "标签信息"
+// @Param body body admin.TagForm true "tag info"
// @Success 200 {object} response.Response{data=model.Tag}
// @Failure 500 {object} response.Response
// @Router /admin/my/tag/update [post]
@@ -133,13 +133,13 @@ func (ct *Tag) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 标签
-// @Summary 标签删除
-// @Description 标签删除
+// Delete delete
+// @Tags tag
+// @Summary delete tag
+// @Description delete tag
// @Accept json
// @Produce json
-// @Param body body admin.TagForm true "标签信息"
+// @Param body body admin.TagForm true "tag info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/my/tag/delete [post]
diff --git a/http/controller/admin/oauth.go b/http/controller/admin/oauth.go
index 811fabb..6a75368 100644
--- a/http/controller/admin/oauth.go
+++ b/http/controller/admin/oauth.go
@@ -64,7 +64,7 @@ func (o *Oauth) ToBind(c *gin.Context) {
})
}
-// Confirm 确认授权登录
+// Confirm confirm authorized login
func (o *Oauth) Confirm(c *gin.Context) {
j := &adminReq.OauthConfirmForm{}
err := c.ShouldBindJSON(j)
@@ -140,8 +140,8 @@ func (o *Oauth) Unbind(c *gin.Context) {
// Detail Oauth
// @Tags Oauth
-// @Summary Oauth详情
-// @Description Oauth详情
+// @Summary Oauthdetails
+// @Description Oauthdetails
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -161,13 +161,13 @@ func (o *Oauth) Detail(c *gin.Context) {
return
}
-// Create 创建Oauth
+// Create createOauth
// @Tags Oauth
-// @Summary 创建Oauth
-// @Description 创建Oauth
+// @Summary createOauth
+// @Description createOauth
// @Accept json
// @Produce json
-// @Param body body admin.OauthForm true "Oauth信息"
+// @Param body body admin.OauthForm true "Oauthinfo"
// @Success 200 {object} response.Response{data=model.Oauth}
// @Failure 500 {object} response.Response
// @Router /admin/oauth/create [post]
@@ -202,14 +202,14 @@ func (o *Oauth) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
+// List list
// @Tags Oauth
-// @Summary Oauth列表
-// @Description Oauth列表
+// @Summary Oauthlist
+// @Description Oauthlist
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
// @Success 200 {object} response.Response{data=model.OauthList}
// @Failure 500 {object} response.Response
// @Router /admin/oauth/list [get]
@@ -224,13 +224,13 @@ func (o *Oauth) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
+// Update edit
// @Tags Oauth
-// @Summary Oauth编辑
-// @Description Oauth编辑
+// @Summary Oauthedit
+// @Description Oauthedit
// @Accept json
// @Produce json
-// @Param body body admin.OauthForm true "Oauth信息"
+// @Param body body admin.OauthForm true "Oauthinfo"
// @Success 200 {object} response.Response{data=model.OauthList}
// @Failure 500 {object} response.Response
// @Router /admin/oauth/update [post]
@@ -259,13 +259,13 @@ func (o *Oauth) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
+// Delete delete
// @Tags Oauth
-// @Summary Oauth删除
-// @Description Oauth删除
+// @Summary Oauthdelete
+// @Description Oauthdelete
// @Accept json
// @Produce json
-// @Param body body admin.OauthForm true "Oauth信息"
+// @Param body body admin.OauthForm true "Oauthinfo"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/oauth/delete [post]
diff --git a/http/controller/admin/peer.go b/http/controller/admin/peer.go
index d8914a4..cd7c0ab 100644
--- a/http/controller/admin/peer.go
+++ b/http/controller/admin/peer.go
@@ -14,10 +14,10 @@ import (
type Peer struct {
}
-// Detail 设备
-// @Tags 设备
-// @Summary 设备详情
-// @Description 设备详情
+// Detail device
+// @Tags device
+// @Summary device details
+// @Description device details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -37,13 +37,13 @@ func (ct *Peer) Detail(c *gin.Context) {
return
}
-// Create 创建设备
-// @Tags 设备
-// @Summary 创建设备
-// @Description 创建设备
+// Create create device
+// @Tags device
+// @Summary create device
+// @Description create device
// @Accept json
// @Produce json
-// @Param body body admin.PeerForm true "设备信息"
+// @Param body body admin.PeerForm true "device info"
// @Success 200 {object} response.Response{data=model.Peer}
// @Failure 500 {object} response.Response
// @Router /admin/peer/create [post]
@@ -68,18 +68,18 @@ func (ct *Peer) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 设备
-// @Summary 设备列表
-// @Description 设备列表
+// List list
+// @Tags device
+// @Summary device list
+// @Description device list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param time_ago query int false "时间"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param time_ago query int false "time"
// @Param id query string false "ID"
-// @Param hostname query string false "主机名"
-// @Param uuids query string false "uuids 用逗号分隔"
+// @Param hostname query string false "hostname"
+// @Param uuids query string false "uuids separated by commas"
// @Success 200 {object} response.Response{data=model.PeerList}
// @Failure 500 {object} response.Response
// @Router /admin/peer/list [get]
@@ -121,13 +121,13 @@ func (ct *Peer) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 设备
-// @Summary 设备编辑
-// @Description 设备编辑
+// Update edit
+// @Tags device
+// @Summary edit device
+// @Description edit device
// @Accept json
// @Produce json
-// @Param body body admin.PeerForm true "设备信息"
+// @Param body body admin.PeerForm true "device info"
// @Success 200 {object} response.Response{data=model.Peer}
// @Failure 500 {object} response.Response
// @Router /admin/peer/update [post]
@@ -156,13 +156,13 @@ func (ct *Peer) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 设备
-// @Summary 设备删除
-// @Description 设备删除
+// Delete delete
+// @Tags device
+// @Summary delete device
+// @Description delete device
// @Accept json
// @Produce json
-// @Param body body admin.PeerForm true "设备信息"
+// @Param body body admin.PeerForm true "device info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/peer/delete [post]
@@ -192,13 +192,13 @@ func (ct *Peer) Delete(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
}
-// BatchDelete 批量删除
-// @Tags 设备
-// @Summary 批量设备删除
-// @Description 批量设备删除
+// BatchDelete batch delete
+// @Tags device
+// @Summary batch delete devices
+// @Description batch delete devices
// @Accept json
// @Produce json
-// @Param body body admin.PeerBatchDeleteForm true "设备id"
+// @Param body body admin.PeerBatchDeleteForm true "deviceid"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/peer/batchDelete [post]
@@ -232,7 +232,7 @@ func (ct *Peer) SimpleData(c *gin.Context) {
return
}
res := service.AllService.PeerService.List(1, 99999, func(tx *gorm.DB) {
- //可以公开的情报
+ //information that can be made public
tx.Select("id,version")
tx.Where("id in (?)", f.Ids)
})
diff --git a/http/controller/admin/rustdesk.go b/http/controller/admin/rustdesk.go
index 6a354d1..0b7942f 100644
--- a/http/controller/admin/rustdesk.go
+++ b/http/controller/admin/rustdesk.go
@@ -25,7 +25,7 @@ func (r *Rustdesk) CmdList(c *gin.Context) {
return
}
res := service.AllService.ServerCmdService.List(q.Page, 9999)
- //在列表前添加系统命令
+ //add system commands before the list
list := make([]*model.ServerCmd, 0)
list = append(list, model.SysIdServerCmds...)
list = append(list, model.SysRelayServerCmds...)
diff --git a/http/controller/admin/shareRecord.go b/http/controller/admin/shareRecord.go
index 3d7038c..e41ae8f 100644
--- a/http/controller/admin/shareRecord.go
+++ b/http/controller/admin/shareRecord.go
@@ -12,15 +12,15 @@ import (
type ShareRecord struct {
}
-// List 列表
-// @Tags 分享记录
-// @Summary 分享记录列表
-// @Description 分享记录列表
+// List list
+// @Tags share record
+// @Summary share record list
+// @Description share record list
// @Accept json
// @Produce json
-// @Param user_id query int false "用户ID"
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
+// @Param user_id query int false "userID"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/share_record/list [get]
@@ -39,13 +39,13 @@ func (sr *ShareRecord) List(c *gin.Context) {
response.Success(c, res)
}
-// Delete 删除
-// @Tags 分享记录
-// @Summary 分享记录删除
-// @Description 分享记录删除
+// Delete delete
+// @Tags share record
+// @Summary delete share record
+// @Description delete share record
// @Accept json
// @Produce json
-// @Param body body admin.ShareRecordForm true "分享记录信息"
+// @Param body body admin.ShareRecordForm true "share record info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/share_record/delete [post]
@@ -75,10 +75,10 @@ func (sr *ShareRecord) Delete(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
}
-// BatchDelete 批量删除
-// @Tags 分享记录
-// @Summary 批量分享记录
-// @Description 批量分享记录
+// BatchDelete batch delete
+// @Tags share record
+// @Summary batch share records
+// @Description batch share records
// @Accept json
// @Produce json
// @Param body body admin.PeerShareRecordBatchDeleteForm true "id"
diff --git a/http/controller/admin/tag.go b/http/controller/admin/tag.go
index decd80a..96a2d34 100644
--- a/http/controller/admin/tag.go
+++ b/http/controller/admin/tag.go
@@ -13,10 +13,10 @@ import (
type Tag struct {
}
-// Detail 标签
-// @Tags 标签
-// @Summary 标签详情
-// @Description 标签详情
+// Detail tag
+// @Tags tag
+// @Summary tag details
+// @Description tag details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -41,13 +41,13 @@ func (ct *Tag) Detail(c *gin.Context) {
return
}
-// Create 创建标签
-// @Tags 标签
-// @Summary 创建标签
-// @Description 创建标签
+// Create create tag
+// @Tags tag
+// @Summary create tag
+// @Description create tag
// @Accept json
// @Produce json
-// @Param body body admin.TagForm true "标签信息"
+// @Param body body admin.TagForm true "tag info"
// @Success 200 {object} response.Response{data=model.Tag}
// @Failure 500 {object} response.Response
// @Router /admin/tag/create [post]
@@ -76,16 +76,16 @@ func (ct *Tag) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 标签
-// @Summary 标签列表
-// @Description 标签列表
+// List list
+// @Tags tag
+// @Summary tag list
+// @Description tag list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param is_my query int false "是否是我的"
-// @Param user_id query int false "用户id"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param is_my query int false "whether it is mine"
+// @Param user_id query int false "userid"
// @Success 200 {object} response.Response{data=model.TagList}
// @Failure 500 {object} response.Response
// @Router /admin/tag/list [get]
@@ -110,13 +110,13 @@ func (ct *Tag) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 标签
-// @Summary 标签编辑
-// @Description 标签编辑
+// Update edit
+// @Tags tag
+// @Summary edit tag
+// @Description edit tag
// @Accept json
// @Produce json
-// @Param body body admin.TagForm true "标签信息"
+// @Param body body admin.TagForm true "tag info"
// @Success 200 {object} response.Response{data=model.Tag}
// @Failure 500 {object} response.Response
// @Router /admin/tag/update [post]
@@ -150,13 +150,13 @@ func (ct *Tag) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 标签
-// @Summary 标签删除
-// @Description 标签删除
+// Delete delete
+// @Tags tag
+// @Summary delete tag
+// @Description delete tag
// @Accept json
// @Produce json
-// @Param body body admin.TagForm true "标签信息"
+// @Param body body admin.TagForm true "tag info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/tag/delete [post]
diff --git a/http/controller/admin/user.go b/http/controller/admin/user.go
index 963b1cd..8920eb3 100644
--- a/http/controller/admin/user.go
+++ b/http/controller/admin/user.go
@@ -16,10 +16,10 @@ import (
type User struct {
}
-// Detail 管理员
-// @Tags 用户
-// @Summary 管理员详情
-// @Description 管理员详情
+// Detail administrator
+// @Tags user
+// @Summary administrator details
+// @Description administrator details
// @Accept json
// @Produce json
// @Param id path int true "ID"
@@ -39,13 +39,13 @@ func (ct *User) Detail(c *gin.Context) {
return
}
-// Create 管理员
-// @Tags 用户
-// @Summary 创建管理员
-// @Description 创建管理员
+// Create administrator
+// @Tags user
+// @Summary create administrator
+// @Description create administrator
// @Accept json
// @Produce json
-// @Param body body admin.UserForm true "管理员信息"
+// @Param body body admin.UserForm true "administrator info"
// @Success 200 {object} response.Response{data=model.User}
// @Failure 500 {object} response.Response
// @Router /admin/user/create [post]
@@ -70,15 +70,15 @@ func (ct *User) Create(c *gin.Context) {
response.Success(c, nil)
}
-// List 列表
-// @Tags 用户
-// @Summary 管理员列表
-// @Description 管理员列表
+// List list
+// @Tags user
+// @Summary administrator list
+// @Description administrator list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param username query int false "账户"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param username query int false "account"
// @Success 200 {object} response.Response{data=model.UserList}
// @Failure 500 {object} response.Response
// @Router /admin/user/list [get]
@@ -97,13 +97,13 @@ func (ct *User) List(c *gin.Context) {
response.Success(c, res)
}
-// Update 编辑
-// @Tags 用户
-// @Summary 管理员编辑
-// @Description 管理员编辑
+// Update edit
+// @Tags user
+// @Summary edit administrator
+// @Description edit administrator
// @Accept json
// @Produce json
-// @Param body body admin.UserForm true "用户信息"
+// @Param body body admin.UserForm true "user info"
// @Success 200 {object} response.Response{data=model.User}
// @Failure 500 {object} response.Response
// @Router /admin/user/update [post]
@@ -132,13 +132,13 @@ func (ct *User) Update(c *gin.Context) {
response.Success(c, nil)
}
-// Delete 删除
-// @Tags 用户
-// @Summary 管理员删除
-// @Description 管理员编删除
+// Delete delete
+// @Tags user
+// @Summary delete administrator
+// @Description delete administrator
// @Accept json
// @Produce json
-// @Param body body admin.UserForm true "用户信息"
+// @Param body body admin.UserForm true "user info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/user/delete [post]
@@ -168,13 +168,13 @@ func (ct *User) Delete(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
}
-// UpdatePassword 修改密码
-// @Tags 用户
-// @Summary 修改密码
-// @Description 修改密码
+// UpdatePassword change password
+// @Tags user
+// @Summary change password
+// @Description change password
// @Accept json
// @Produce json
-// @Param body body admin.UserPasswordForm true "用户信息"
+// @Param body body admin.UserPasswordForm true "user info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/user/updatePassword [post]
@@ -203,10 +203,10 @@ func (ct *User) UpdatePassword(c *gin.Context) {
response.Success(c, nil)
}
-// Current 当前用户
-// @Tags 用户
-// @Summary 当前用户
-// @Description 当前用户
+// Current current user
+// @Tags user
+// @Summary current user
+// @Description current user
// @Accept json
// @Produce json
// @Success 200 {object} response.Response{data=adResp.LoginPayload}
@@ -220,13 +220,13 @@ func (ct *User) Current(c *gin.Context) {
responseLoginSuccess(c, u, t)
}
-// ChangeCurPwd 修改当前用户密码
-// @Tags 用户
-// @Summary 修改当前用户密码
-// @Description 修改当前用户密码
+// ChangeCurPwd change the current user's password
+// @Tags user
+// @Summary change the current user's password
+// @Description change the current user's password
// @Accept json
// @Produce json
-// @Param body body admin.ChangeCurPasswordForm true "用户信息"
+// @Param body body admin.ChangeCurPasswordForm true "user info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/user/changeCurPwd [post]
@@ -261,9 +261,9 @@ func (ct *User) ChangeCurPwd(c *gin.Context) {
}
// MyOauth
-// @Tags 用户
-// @Summary 我的授权
-// @Description 我的授权
+// @Tags user
+// @Summary my authorizations
+// @Description my authorizations
// @Accept json
// @Produce json
// @Success 200 {object} response.Response{data=[]adResp.UserOauthItem}
@@ -321,7 +321,7 @@ func (ct *User) Register(c *gin.Context) {
return
}
regStatus := model.StatusCode(global.Config.App.RegisterStatus)
- // 注册状态可能未配置,默认启用
+ // the registration status may not be configured; enabled by default
if regStatus != model.COMMON_STATUS_DISABLED && regStatus != model.COMMON_STATUS_ENABLE {
regStatus = model.COMMON_STATUS_ENABLE
}
@@ -332,11 +332,11 @@ func (ct *User) Register(c *gin.Context) {
return
}
if regStatus == model.COMMON_STATUS_DISABLED {
- // 需要管理员审核
+ // requires administrator approval
response.Fail(c, 101, response.TranslateMsg(c, "RegisterSuccessWaitAdminConfirm"))
return
}
- // 注册成功后自动登录
+ // automatically log in after successful registration
ut := service.AllService.UserService.Login(u, &model.LoginLog{
UserId: u.Id,
Client: model.LoginLogClientWebAdmin,
diff --git a/http/controller/admin/userToken.go b/http/controller/admin/userToken.go
index ca230cc..f3c26dc 100644
--- a/http/controller/admin/userToken.go
+++ b/http/controller/admin/userToken.go
@@ -13,15 +13,15 @@ import (
type UserToken struct {
}
-// List 列表
-// @Tags 登录凭证
-// @Summary 登录凭证列表
-// @Description 登录凭证列表
+// List list
+// @Tags login credential
+// @Summary login credential list
+// @Description login credential list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param page_size query int false "页大小"
-// @Param user_id query int false "用户ID"
+// @Param page query int false "page number"
+// @Param page_size query int false "page size"
+// @Param user_id query int false "userID"
// @Success 200 {object} response.Response{data=model.UserTokenList}
// @Failure 500 {object} response.Response
// @Router /admin/user_token/list [get]
@@ -41,13 +41,13 @@ func (ct *UserToken) List(c *gin.Context) {
response.Success(c, res)
}
-// Delete 删除
-// @Tags 登录凭证
-// @Summary 登录凭证删除
-// @Description 登录凭证删除
+// Delete delete
+// @Tags login credential
+// @Summary delete login credential
+// @Description delete login credential
// @Accept json
// @Produce json
-// @Param body body model.UserToken true "登录凭证信息"
+// @Param body body model.UserToken true "login credential info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/user_token/delete [post]
@@ -82,13 +82,13 @@ func (ct *UserToken) Delete(c *gin.Context) {
response.Fail(c, 101, response.TranslateMsg(c, "ItemNotFound"))
}
-// BatchDelete 批量删除
-// @Tags 登录凭证
-// @Summary 登录凭证批量删除
-// @Description 登录凭证批量删除
+// BatchDelete batch delete
+// @Tags login credential
+// @Summary batch delete login credentials
+// @Description batch delete login credentials
// @Accept json
// @Produce json
-// @Param body body admin.UserTokenBatchDeleteForm true "登录凭证信息"
+// @Param body body admin.UserTokenBatchDeleteForm true "login credential info"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /admin/user_token/batchDelete [post]
diff --git a/http/controller/api/ab.go b/http/controller/api/ab.go
index e586385..7203265 100644
--- a/http/controller/api/ab.go
+++ b/http/controller/api/ab.go
@@ -20,9 +20,9 @@ type Ab struct {
}
// Ab
-// @Tags 地址
-// @Summary 地址列表
-// @Description 地址列表
+// @Tags address
+// @Summary address list
+// @Description address list
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -36,7 +36,7 @@ func (a *Ab) Ab(c *gin.Context) {
tags := service.AllService.TagService.ListByUserIdAndCollectionId(user.Id, 0)
tagColors := map[string]uint{}
- //将tags中的name转成一个以逗号分割的字符串
+ // convert the name in tags into a comma-separated string
var tagNames []string
for _, tag := range tags.Tags {
tagNames = append(tagNames, tag.Name)
@@ -56,12 +56,12 @@ func (a *Ab) Ab(c *gin.Context) {
}
// UpAb
-// @Tags 地址
-// @Summary 地址更新
-// @Description 地址更新
+// @Tags address
+// @Summary address update
+// @Description address update
// @Accept json
// @Produce json
-// @Param body body requstform.AddressBookForm true "地址表单"
+// @Param body body requstform.AddressBookForm true "address form"
// @Success 200 {string} string "null"
// @Failure 500 {object} response.ErrorResponse
// @Router /ab [post]
@@ -99,9 +99,9 @@ func (a *Ab) UpAb(c *gin.Context) {
}
// PTags
-// @Tags 地址[Personal]
-// @Summary 标签
-// @Description 标签
+// @Tags address[Personal]
+// @Summary tag
+// @Description tag
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -128,9 +128,9 @@ func (a *Ab) PTags(c *gin.Context) {
}
// TagAdd
-// @Tags 地址[Personal]
-// @Summary 标签添加
-// @Description 标签
+// @Tags address[Personal]
+// @Summary add tag
+// @Description tag
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -177,9 +177,9 @@ func (a *Ab) TagAdd(c *gin.Context) {
}
// TagRename
-// @Tags 地址[Personal]
-// @Summary 标签重命名
-// @Description 标签
+// @Tags address[Personal]
+// @Summary rename tag
+// @Description tag
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -229,9 +229,9 @@ func (a *Ab) TagRename(c *gin.Context) {
}
// TagUpdate
-// @Tags 地址[Personal]
-// @Summary 标签修改颜色
-// @Description 标签
+// @Tags address[Personal]
+// @Summary change tag color
+// @Description tag
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -275,9 +275,9 @@ func (a *Ab) TagUpdate(c *gin.Context) {
}
// TagDel
-// @Tags 地址[Personal]
-// @Summary 标签删除
-// @Description 标签
+// @Tags address[Personal]
+// @Summary delete tag
+// @Description tag
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -324,9 +324,9 @@ func (a *Ab) TagDel(c *gin.Context) {
}
// Personal
-// @Tags 地址[Personal]
-// @Summary 个人地址
-// @Description 个人地址
+// @Tags address[Personal]
+// @Summary personal address
+// @Description personal address
// @Accept json
// @Produce json
// @Param string body string false "string valid"
@@ -345,7 +345,7 @@ func (a *Ab) Personal(c *gin.Context) {
*/
if global.Config.Rustdesk.Personal == 1 {
guid := a.ComposeGuid(user.GroupId, user.Id, 0)
- //如果返回了guid,后面的请求会有变化
+ //if it returns guid, subsequent requests will change
c.JSON(http.StatusOK, gin.H{
"guid": guid,
"name": user.Username,
@@ -358,9 +358,9 @@ func (a *Ab) Personal(c *gin.Context) {
}
// Settings
-// @Tags 地址[Personal]
-// @Summary 设置
-// @Description 设置
+// @Tags address[Personal]
+// @Summary settings
+// @Description settings
// @Accept json
// @Produce json
// @Param string body string false "string valid"
@@ -370,18 +370,18 @@ func (a *Ab) Personal(c *gin.Context) {
// @Security BearerAuth
func (a *Ab) Settings(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
- "max_peer_one_ab": 0, //最大peer数,0表示不限制
+ "max_peer_one_ab": 0, //max peer count, 0 means no limit
})
}
// SharedProfiles
-// @Tags 地址[Personal]
-// @Summary 共享地址簿
-// @Description 共享
+// @Tags address[Personal]
+// @Summary shared address book
+// @Description shared
// @Accept json
// @Produce json
-// @Param current query int false "页码"
-// @Param pageSize query int false "每页数量"
+// @Param current query int false "page number"
+// @Param pageSize query int false "items per page"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /ab/shared/profiles [post]
@@ -401,14 +401,14 @@ func (a *Ab) SharedProfiles(c *gin.Context) {
})
}
- allAbIds := make(map[uint]int) //用map去重,并保留最大Rule
+ allAbIds := make(map[uint]int) //use map to deduplicate and keep the maximum Rule
allUserIds := make(map[uint]*model.User)
rules := service.AllService.AddressBookService.CollectionReadRules(user)
for _, rule := range rules {
- //先判断是否存在
+ //first check whether it exists
r, ok := allAbIds[rule.CollectionId]
if ok {
- //再判断权限大小
+ //then check the permission level
if r < rule.Rule {
allAbIds[rule.CollectionId] = rule.Rule
}
@@ -448,7 +448,7 @@ func (a *Ab) SharedProfiles(c *gin.Context) {
// ParseGuid
func (a *Ab) ParseGuid(guid string) (gid, uid, cid uint) {
- //用-切割 guid
+ // split guid by -
guids := strings.Split(guid, "-")
if len(guids) < 2 {
return 0, 0, 0
@@ -521,13 +521,13 @@ func (a *Ab) CheckGuid(cu *model.User, guid string) (gid, uid, cid uint, err err
}
// Peers
-// @Tags 地址[Personal]
-// @Summary 地址列表
-// @Description 地址
+// @Tags address[Personal]
+// @Summary address list
+// @Description address
// @Accept json
// @Produce json
-// @Param current query int false "页码"
-// @Param pageSize query int false "每页数量"
+// @Param current query int false "page number"
+// @Param pageSize query int false "items per page"
// @Param ab query string false "guid"
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
@@ -557,9 +557,9 @@ func (a *Ab) Peers(c *gin.Context) {
}
// PeerAdd
-// @Tags 地址[Personal]
-// @Summary 添加地址
-// @Description 添加地址
+// @Tags address[Personal]
+// @Summary add address
+// @Description add address
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -568,7 +568,7 @@ func (a *Ab) Peers(c *gin.Context) {
// @Router /ab/peer/add/{guid} [post]
// @Security BearerAuth
func (a *Ab) PeerAdd(c *gin.Context) {
- // forceAlwaysRelay永远是字符串"false"
+ // forceAlwaysRelay is always the string "false"
//f := &gin.H{}
f := &requstform.PersonalAddressBookForm{}
err := c.ShouldBindJSON(f)
@@ -613,9 +613,9 @@ func (a *Ab) PeerAdd(c *gin.Context) {
}
// PeerDel
-// @Tags 地址[Personal]
-// @Summary 删除地址
-// @Description 删除地址
+// @Tags address[Personal]
+// @Summary delete address
+// @Description delete address
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -661,9 +661,9 @@ func (a *Ab) PeerDel(c *gin.Context) {
}
// PeerUpdate
-// @Tags 地址[Personal]
-// @Summary 更新地址
-// @Description 更新地址
+// @Tags address[Personal]
+// @Summary update address
+// @Description update address
// @Accept json
// @Produce json
// @Param guid path string true "guid"
@@ -693,7 +693,7 @@ func (a *Ab) PeerUpdate(c *gin.Context) {
return
}
//fmt.Println(f)
- //判断f["Id"]是否存在
+ // determine whether f["Id"] exists
fid, ok := f["id"]
if !ok {
response.Error(c, response.TranslateMsg(c, "ParamsError"))
@@ -706,9 +706,9 @@ func (a *Ab) PeerUpdate(c *gin.Context) {
response.Error(c, response.TranslateMsg(c, "ItemNotFound"))
return
}
- //允许的字段
+ //allowed fields
allowUp := []string{"password", "hash", "tags", "alias"}
- //f中的字段如果不在allowUp中,就删除
+ // if a field in f is not in allowUp, delete it
for k := range f {
if !utils.InArray(k, allowUp) {
delete(f, k)
diff --git a/http/controller/api/audit.go b/http/controller/api/audit.go
index a8c01dd..e1ea027 100644
--- a/http/controller/api/audit.go
+++ b/http/controller/api/audit.go
@@ -14,12 +14,12 @@ type Audit struct {
}
// AuditConn
-// @Tags 审计
-// @Summary 审计连接
-// @Description 审计连接
+// @Tags audit
+// @Summary audit connection
+// @Description audit connection
// @Accept json
// @Produce json
-// @Param body body request.AuditConnForm true "审计连接"
+// @Param body body request.AuditConnForm true "audit connection"
// @Success 200 {string} string ""
// @Failure 500 {object} response.Response
// @Router /audit/conn [post]
@@ -59,12 +59,12 @@ func (a *Audit) AuditConn(c *gin.Context) {
}
// AuditFile
-// @Tags 审计
-// @Summary 审计文件
-// @Description 审计文件
+// @Tags audit
+// @Summary audit file
+// @Description audit file
// @Accept json
// @Produce json
-// @Param body body request.AuditFileForm true "审计文件"
+// @Param body body request.AuditFileForm true "audit file"
// @Success 200 {string} string ""
// @Failure 500 {object} response.Response
// @Router /audit/file [post]
diff --git a/http/controller/api/group.go b/http/controller/api/group.go
index a037f43..f928b60 100644
--- a/http/controller/api/group.go
+++ b/http/controller/api/group.go
@@ -13,15 +13,15 @@ import (
type Group struct {
}
-// Users 用户列表
-// @Tags 群组
-// @Summary 用户列表
-// @Description 用户列表
+// Users user list
+// @Tags group
+// @Summary user list
+// @Description user list
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param pageSize query int false "每页数量"
-// @Param status query int false "状态"
+// @Param page query int false "page number"
+// @Param pageSize query int false "items per page"
+// @Param status query int false "status"
// @Param accessible query string false "accessible"
// @Success 200 {object} response.DataResponse{data=[]apiResp.UserPayload}
// @Failure 500 {object} response.ErrorResponse
@@ -38,7 +38,7 @@ func (g *Group) Users(c *gin.Context) {
gr := service.AllService.GroupService.InfoById(u.GroupId)
userList := &model.UserList{}
if !*u.IsAdmin && gr.Type != model.GroupTypeShare {
- //仅能获取到自己
+ //can only retrieve one's own
userList.Users = append(userList.Users, u)
userList.Total = 1
} else {
@@ -58,14 +58,14 @@ func (g *Group) Users(c *gin.Context) {
}
// Peers
-// @Tags 群组
-// @Summary 机器
-// @Description 机器
+// @Tags group
+// @Summary machine
+// @Description machine
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param pageSize query int false "每页数量"
-// @Param status query int false "状态"
+// @Param page query int false "page number"
+// @Param pageSize query int false "items per page"
+// @Param status query int false "status"
// @Param accessible query string false "accessible"
// @Success 200 {object} response.DataResponse
// @Failure 500 {object} response.Response
@@ -82,7 +82,7 @@ func (g *Group) Peers(c *gin.Context) {
gr := service.AllService.GroupService.InfoById(u.GroupId)
users := make([]*model.User, 0, 1)
if !*u.IsAdmin && gr.Type != model.GroupTypeShare {
- //仅能获取到自己
+ //can only retrieve one's own
users = append(users, u)
} else {
users = service.AllService.UserService.ListIdAndNameByGroupId(u.GroupId)
@@ -122,14 +122,14 @@ func (g *Group) Peers(c *gin.Context) {
}
// Device
-// @Tags 群组
-// @Summary 设备
-// @Description 机器
+// @Tags group
+// @Summary device
+// @Description machine
// @Accept json
// @Produce json
-// @Param page query int false "页码"
-// @Param pageSize query int false "每页数量"
-// @Param status query int false "状态"
+// @Param page query int false "page number"
+// @Param pageSize query int false "items per page"
+// @Param status query int false "status"
// @Param accessible query string false "accessible"
// @Success 200 {object} response.DataResponse
// @Failure 500 {object} response.Response
diff --git a/http/controller/api/index.go b/http/controller/api/index.go
index 270b6b7..13d66bc 100644
--- a/http/controller/api/index.go
+++ b/http/controller/api/index.go
@@ -13,10 +13,10 @@ import (
type Index struct {
}
-// Index 首页
-// @Tags 首页
-// @Summary 首页
-// @Description 首页
+// Index home
+// @Tags home
+// @Summary home
+// @Description home
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -29,10 +29,10 @@ func (i *Index) Index(c *gin.Context) {
)
}
-// Heartbeat 心跳
-// @Tags 首页
-// @Summary 心跳
-// @Description 心跳
+// Heartbeat heartbeat
+// @Tags home
+// @Summary heartbeat
+// @Description heartbeat
// @Accept json
// @Produce json
// @Success 200 {object} nil
@@ -54,7 +54,7 @@ func (i *Index) Heartbeat(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{})
return
}
- //如果在40s以内则不更新
+ // do not update if within 40s
if time.Now().Unix()-peer.LastOnlineTime >= 30 {
upp := &model.Peer{RowId: peer.RowId, LastOnlineTime: time.Now().Unix(), LastOnlineIp: c.ClientIP()}
service.AllService.PeerService.Update(upp)
@@ -62,17 +62,17 @@ func (i *Index) Heartbeat(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{})
}
-// Version 版本
-// @Tags 首页
-// @Summary 版本
-// @Description 版本
+// Version version
+// @Tags home
+// @Summary version
+// @Description version
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
// @Failure 500 {object} response.Response
// @Router /version [get]
func (i *Index) Version(c *gin.Context) {
- //读取resources/version文件
+ // read the resources/version file
v := service.AllService.AppService.GetAppVersion()
response.Success(
c,
diff --git a/http/controller/api/login.go b/http/controller/api/login.go
index e2e3cb8..03f1e15 100644
--- a/http/controller/api/login.go
+++ b/http/controller/api/login.go
@@ -16,13 +16,13 @@ import (
type Login struct {
}
-// Login 登录
-// @Tags 登录
-// @Summary 登录
-// @Description 登录
+// Login login
+// @Tags login
+// @Summary login
+// @Description login
// @Accept json
// @Produce json
-// @Param body body api.LoginForm true "登录表单"
+// @Param body body api.LoginForm true "login form"
// @Success 200 {object} apiResp.LoginRes
// @Failure 500 {object} response.ErrorResponse
// @Router /login [post]
@@ -32,7 +32,7 @@ func (l *Login) Login(c *gin.Context) {
return
}
- // 检查登录限制
+ // check login limit
loginLimiter := global.LoginLimiter
clientIp := c.ClientIP()
@@ -68,7 +68,7 @@ func (l *Login) Login(c *gin.Context) {
return
}
- //根据refer判断是webclient还是app
+ // determine whether it is webclient or app based on refer
ref := c.GetHeader("referer")
if ref != "" {
f.DeviceInfo.Type = model.LoginLogClientWeb
@@ -92,9 +92,9 @@ func (l *Login) Login(c *gin.Context) {
}
// LoginOptions
-// @Tags 登录
-// @Summary 登录选项
-// @Description 登录选项
+// @Tags login
+// @Summary login options
+// @Description login options
// @Accept json
// @Produce json
// @Success 200 {object} []string
@@ -123,9 +123,9 @@ func (l *Login) LoginOptions(c *gin.Context) {
}
// Logout
-// @Tags 登录
-// @Summary 登出
-// @Description 登出
+// @Tags login
+// @Summary logout
+// @Description logout
// @Accept json
// @Produce json
// @Success 200 {string} string
diff --git a/http/controller/api/ouath.go b/http/controller/api/ouath.go
index 0e1ee08..1539196 100644
--- a/http/controller/api/ouath.go
+++ b/http/controller/api/ouath.go
@@ -65,37 +65,37 @@ func (o *Oauth) OidcAuthQueryPre(c *gin.Context) (*model.User, *model.UserToken)
var ut *model.UserToken
q := &api.OidcAuthQuery{}
- // 解析查询参数并处理错误
+ // parse query parameters and handle errors
if err := c.ShouldBindQuery(q); err != nil {
response.Error(c, response.TranslateMsg(c, "ParamsError")+": "+err.Error())
return nil, nil
}
- // 获取 OAuth 缓存
+ // get OAuth cache
v := service.AllService.OauthService.GetOauthCache(q.Code)
if v == nil {
response.Error(c, response.TranslateMsg(c, "OauthExpired"))
return nil, nil
}
- // 如果 UserId 为 0,说明还在授权中
+ // if UserId is 0, authorization is still in progress
if v.UserId == 0 {
//fix: 1.4.2 webclient oidc
c.JSON(http.StatusOK, gin.H{"message": "Authorization in progress, please login and bind", "error": "No authed oidc is found"})
return nil, nil
}
- // 获取用户信息
+ // get user info
u = service.AllService.UserService.InfoById(v.UserId)
if u == nil {
response.Error(c, response.TranslateMsg(c, "UserNotFound"))
return nil, nil
}
- // 删除 OAuth 缓存
+ // delete OAuth cache
service.AllService.OauthService.DeleteOauthCache(q.Code)
- // 创建登录日志并生成用户令牌
+ // create a login log and generate a user token
ut = service.AllService.UserService.Login(u, &model.LoginLog{
UserId: u.Id,
Client: v.DeviceType,
@@ -111,7 +111,7 @@ func (o *Oauth) OidcAuthQueryPre(c *gin.Context) (*model.User, *model.UserToken)
return nil, nil
}
- // 返回用户令牌
+ // return user token
return u, ut
}
@@ -136,7 +136,7 @@ func (o *Oauth) OidcAuthQuery(c *gin.Context) {
})
}
-// OauthCallback 回调
+// OauthCallback callback
// @Tags Oauth
// @Summary OauthCallback
// @Description OauthCallback
@@ -156,7 +156,7 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
}
cacheKey := state
oauthService := service.AllService.OauthService
- //从缓存中获取
+ //get from cache
oauthCache := oauthService.GetOauthCache(cacheKey)
if oauthCache == nil {
c.HTML(http.StatusOK, "oauth_fail.html", gin.H{
@@ -169,7 +169,7 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
action := oauthCache.Action
verifier := oauthCache.Verifier
var user *model.User
- // 获取用户信息
+ // get user info
code := c.Query("code")
err, oauthUser := oauthService.Callback(code, verifier, op, nonce)
if err != nil {
@@ -184,7 +184,7 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
if action == service.OauthActionTypeBind {
//fmt.Println("bind", ty, userData)
- // 检查此openid是否已经绑定过
+ // check whether this openid has already been bound
utr := oauthService.UserThirdInfo(op, openid)
if utr.UserId > 0 {
c.HTML(http.StatusOK, "oauth_fail.html", gin.H{
@@ -192,7 +192,7 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
})
return
}
- //绑定
+ //bind
user = service.AllService.UserService.InfoById(userId)
if user == nil {
c.HTML(http.StatusOK, "oauth_fail.html", gin.H{
@@ -200,7 +200,7 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
})
return
}
- //绑定
+ //bind
err := oauthService.BindOauthUser(userId, oauthUser, op)
if err != nil {
c.HTML(http.StatusOK, "oauth_fail.html", gin.H{
@@ -214,7 +214,7 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
return
} else if action == service.OauthActionTypeLogin {
- //登录
+ //login
if userId != 0 {
c.HTML(http.StatusOK, "oauth_fail.html", gin.H{
"message": "OauthHasBeenSuccess",
@@ -225,13 +225,13 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
if user == nil {
oauthConfig := oauthService.InfoByOp(op)
if !*oauthConfig.AutoRegister {
- //c.String(http.StatusInternalServerError, "还未绑定用户,请先绑定")
+ //c.String(http.StatusInternalServerError, "not yet bound to a user, please bind first")
oauthCache.UpdateFromOauthUser(oauthUser)
c.Redirect(http.StatusFound, "/_admin/#/oauth/bind/"+cacheKey)
return
}
- //自动注册
+ //auto register
err, user = service.AllService.UserService.RegisterByOauth(oauthUser, op)
if err != nil {
c.HTML(http.StatusOK, "oauth_fail.html", gin.H{
@@ -242,7 +242,7 @@ func (o *Oauth) OauthCallback(c *gin.Context) {
}
oauthCache.UserId = user.Id
oauthService.SetOauthCache(cacheKey, oauthCache, 0)
- // 如果是webadmin,登录成功后跳转到webadmin
+ // if it is webadmin, after successful login redirect to webadmin
if oauthCache.DeviceType == model.LoginLogClientWebAdmin {
/*service.AllService.UserService.Login(u, &model.LoginLog{
UserId: u.Id,
@@ -299,7 +299,7 @@ func (o *Oauth) Message(c *gin.Context) {
}
}
- //返回js内容
+ //returnjscontent
c.Header("Content-Type", "application/javascript")
c.String(http.StatusOK, res)
}
diff --git a/http/controller/api/peer.go b/http/controller/api/peer.go
index 3ed7aa1..6db62a6 100644
--- a/http/controller/api/peer.go
+++ b/http/controller/api/peer.go
@@ -15,11 +15,11 @@ type Peer struct {
// SysInfo
// @Tags System
-// @Summary 提交系统信息
-// @Description 提交系统信息
+// @Summary submit system info
+// @Description submit system info
// @Accept json
// @Produce json
-// @Param body body requstform.PeerForm true "系统信息表单"
+// @Param body body requstform.PeerForm true "system info form"
// @Success 200 {string} string "SYSINFO_UPDATED,ID_NOT_FOUND"
// @Failure 500 {object} response.ErrorResponse
// @Router /sysinfo [post]
@@ -52,25 +52,25 @@ func (p *Peer) SysInfo(c *gin.Context) {
return
}
}
- //SYSINFO_UPDATED 上传成功
- //ID_NOT_FOUND 下次心跳会上传
- //直接响应文本
+ //SYSINFO_UPDATED upload successful
+ //ID_NOT_FOUND will be uploaded on the next heartbeat
+ //respond with text directly
c.String(http.StatusOK, "SYSINFO_UPDATED")
}
// SysInfoVer
// @Tags System
-// @Summary 获取系统版本信息
-// @Description 获取系统版本信息
+// @Summary get system version info
+// @Description get system version info
// @Accept json
// @Produce json
// @Success 200 {string} string ""
// @Failure 500 {object} response.ErrorResponse
// @Router /sysinfo_ver [post]
func (p *Peer) SysInfoVer(c *gin.Context) {
- //读取resources/version文件
+ // read the resources/version file
v := service.AllService.AppService.GetAppVersion()
- // 加上启动时间,方便client上传信息
+ // add the start time so the client can conveniently upload info
v = fmt.Sprintf("%s\n%s", v, service.AllService.AppService.GetStartTime())
c.String(http.StatusOK, v)
}
diff --git a/http/controller/api/user.go b/http/controller/api/user.go
index 9663c94..45ba225 100644
--- a/http/controller/api/user.go
+++ b/http/controller/api/user.go
@@ -10,10 +10,10 @@ import (
type User struct {
}
-// currentUser 当前用户
-// @Tags 用户
-// @Summary 用户信息
-// @Description 用户信息
+// currentUser current user
+// @Tags user
+// @Summary user info
+// @Description user info
// @Accept json
// @Produce json
// @Success 200 {object} apiResp.UserPayload
@@ -26,10 +26,10 @@ type User struct {
// c.JSON(http.StatusOK, up)
//}
-// Info 用户信息
-// @Tags 用户
-// @Summary 用户信息
-// @Description 用户信息
+// Info user info
+// @Tags user
+// @Summary user info
+// @Description user info
// @Accept json
// @Produce json
// @Success 200 {object} apiResp.UserPayload
diff --git a/http/controller/api/webClient.go b/http/controller/api/webClient.go
index 69aae45..a3f3421 100644
--- a/http/controller/api/webClient.go
+++ b/http/controller/api/webClient.go
@@ -12,10 +12,10 @@ import (
type WebClient struct {
}
-// ServerConfig 服务配置
+// ServerConfig service config
// @Tags WEBCLIENT
-// @Summary 服务配置
-// @Description 服务配置,给webclient提供api-server
+// @Summary service config
+// @Description service config, provides an api-server for the webclient
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -42,10 +42,10 @@ func (i *WebClient) ServerConfig(c *gin.Context) {
)
}
-// SharedPeer 分享的peer
+// SharedPeer shared peer
// @Tags WEBCLIENT
-// @Summary 分享的peer
-// @Description 分享的peer
+// @Summary shared peer
+// @Description shared peer
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
@@ -65,7 +65,7 @@ func (i *WebClient) SharedPeer(c *gin.Context) {
return
}
if sr.Expire != 0 {
- //判断是否过期,created_at + expire > now
+ //check whether expired,created_at + expire > now
ca := time.Time(sr.CreatedAt)
if ca.Add(time.Second * time.Duration(sr.Expire)).Before(time.Now()) {
response.Fail(c, 101, "share expired")
@@ -89,10 +89,10 @@ func (i *WebClient) SharedPeer(c *gin.Context) {
})
}
-// ServerConfigV2 服务配置
+// ServerConfigV2 service config
// @Tags WEBCLIENT_V2
-// @Summary 服务配置
-// @Description 服务配置,给webclient提供api-server
+// @Summary service config
+// @Description service config, provides an api-server for the webclient
// @Accept json
// @Produce json
// @Success 200 {object} response.Response
diff --git a/http/http.go b/http/http.go
index 9d1273a..f806746 100644
--- a/http/http.go
+++ b/http/http.go
@@ -25,7 +25,7 @@ func ApiInit() {
}
if global.Config.Gin.Mode == gin.ReleaseMode {
- //修改gin Recovery日志 输出为logger的输出点
+ // redirect gin's Recovery log output to the logger's output
if global.Logger != nil {
gin.DefaultErrorWriter = global.Logger.WriterLevel(logrus.ErrorLevel)
}
diff --git a/http/middleware/admin.go b/http/middleware/admin.go
index a52e722..05a3db7 100644
--- a/http/middleware/admin.go
+++ b/http/middleware/admin.go
@@ -6,11 +6,11 @@ import (
"github.com/lejianwen/rustdesk-api/v2/service"
)
-// BackendUserAuth 后台权限验证中间件
+// BackendUserAuth backend permission verification middleware
func BackendUserAuth() gin.HandlerFunc {
return func(c *gin.Context) {
- //测试先关闭
+ //disabled for testing
token := c.GetHeader("api-token")
if token == "" {
response.Fail(c, 403, response.TranslateMsg(c, "NeedLogin"))
@@ -34,7 +34,7 @@ func BackendUserAuth() gin.HandlerFunc {
c.Set("curUser", user)
c.Set("token", token)
- //如果时间小于1天,token自动续期
+ // if the remaining time is less than 1 day, the token is auto-renewed
service.AllService.UserService.AutoRefreshAccessToken(ut)
c.Next()
diff --git a/http/middleware/cors.go b/http/middleware/cors.go
index f60a462..70821cc 100644
--- a/http/middleware/cors.go
+++ b/http/middleware/cors.go
@@ -5,7 +5,7 @@ import (
"net/http"
)
-// Cors 跨域
+// Cors CORS
func Cors() gin.HandlerFunc {
return func(c *gin.Context) {
origin := c.GetHeader("Origin")
diff --git a/http/middleware/jwt.go b/http/middleware/jwt.go
index 9583354..694111c 100644
--- a/http/middleware/jwt.go
+++ b/http/middleware/jwt.go
@@ -9,7 +9,7 @@ import (
func JwtAuth() gin.HandlerFunc {
return func(c *gin.Context) {
- //测试先关闭
+ //disabled for testing
token := c.GetHeader("api-token")
if token == "" {
response.Fail(c, 403, response.TranslateMsg(c, "NeedLogin"))
@@ -31,7 +31,7 @@ func JwtAuth() gin.HandlerFunc {
user := service.AllService.UserService.InfoById(uid)
//user := &model.User{
// Id: uid,
- // Username: "测试用户",
+ // Username: "test user",
//}
if user.Id == 0 {
response.Fail(c, 403, response.TranslateMsg(c, "NeedLogin"))
diff --git a/http/middleware/logger.go b/http/middleware/logger.go
index d22da85..90a09fc 100644
--- a/http/middleware/logger.go
+++ b/http/middleware/logger.go
@@ -6,7 +6,7 @@ import (
"github.com/sirupsen/logrus"
)
-// Logger 日志中间件
+// Logger logging middleware
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
global.Logger.WithFields(
diff --git a/http/middleware/rustauth.go b/http/middleware/rustauth.go
index 2d529aa..2825267 100644
--- a/http/middleware/rustauth.go
+++ b/http/middleware/rustauth.go
@@ -9,7 +9,7 @@ import (
func RustAuth() gin.HandlerFunc {
return func(c *gin.Context) {
//fmt.Println(c.Request.URL, c.Request.Header)
- //获取HTTP_AUTHORIZATION
+ //getHTTP_AUTHORIZATION
token := c.GetHeader("Authorization")
if token == "" {
c.JSON(401, gin.H{
@@ -25,13 +25,13 @@ func RustAuth() gin.HandlerFunc {
c.Abort()
return
}
- //提取token,格式是Bearer {token}
- //这里只是简单的提取
+ //extracttoken, format is Bearer {token}
+ //this is just a simple extraction
token = token[7:]
- //验证token
+ // verify the token
- //检查是否设置了jwt key
+ //check whether it is set jwt key
if len(global.Jwt.Key) > 0 {
uid, _ := service.AllService.UserService.VerifyJWT(token)
if uid == 0 {
diff --git a/http/request/admin/addressBook.go b/http/request/admin/addressBook.go
index 8337881..a8b3b11 100644
--- a/http/request/admin/addressBook.go
+++ b/http/request/admin/addressBook.go
@@ -27,7 +27,7 @@ type AddressBookForm struct {
}
func (a AddressBookForm) ToAddressBook() *model.AddressBook {
- //tags转换
+ //tagsconvert
tags, _ := json.Marshal(a.Tags)
return &model.AddressBook{
@@ -52,7 +52,7 @@ func (a AddressBookForm) ToAddressBook() *model.AddressBook {
}
func (a AddressBookForm) ToAddressBooks() []*model.AddressBook {
- //tags转换
+ //tagsconvert
tags, _ := json.Marshal(a.Tags)
abs := make([]*model.AddressBook, 0, len(a.UserIds))
@@ -92,7 +92,7 @@ type AddressBookQuery struct {
type ShareByWebClientForm struct {
Id string `json:"id" validate:"required"`
- PasswordType string `json:"password_type" validate:"required,oneof=once fixed"` //只能是once,fixed
+ PasswordType string `json:"password_type" validate:"required,oneof=once fixed"` //can only be once,fixed
Password string `json:"password" validate:"required"`
Expire int64 `json:"expire"`
}
diff --git a/http/request/admin/login.go b/http/request/admin/login.go
index e7d84d2..4f1d2a7 100644
--- a/http/request/admin/login.go
+++ b/http/request/admin/login.go
@@ -1,10 +1,10 @@
package admin
type Login struct {
- Username string `json:"username" validate:"required" label:"用户名"`
- Password string `json:"password,omitempty" validate:"required" label:"密码"`
- Platform string `json:"platform" label:"平台"`
- Captcha string `json:"captcha,omitempty" label:"验证码"`
+ Username string `json:"username" validate:"required" label:"username"`
+ Password string `json:"password,omitempty" validate:"required" label:"password"`
+ Platform string `json:"platform" label:"platform"`
+ Captcha string `json:"captcha,omitempty" label:"captcha"`
CaptchaId string `json:"captcha_id,omitempty"`
}
diff --git a/http/request/admin/user.go b/http/request/admin/user.go
index 2922f08..5e8df44 100644
--- a/http/request/admin/user.go
+++ b/http/request/admin/user.go
@@ -7,7 +7,7 @@ import (
type UserForm struct {
Id uint `json:"id"`
Username string `json:"username" validate:"required,gte=2,lte=32"`
- Email string `json:"email"` //validate:"required,email" email不强制
+ Email string `json:"email"` //validate:"required,email" emailnot enforced
//Password string `json:"password" validate:"required,gte=4,lte=20"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
diff --git a/http/request/api/oauth.go b/http/request/api/oauth.go
index 823deb7..70bbc33 100644
--- a/http/request/api/oauth.go
+++ b/http/request/api/oauth.go
@@ -1,7 +1,7 @@
package api
type OidcAuthRequest struct {
- DeviceInfo DeviceInfoInLogin `json:"deviceInfo" label:"设备信息"`
+ DeviceInfo DeviceInfoInLogin `json:"deviceInfo" label:"device info"`
Id string `json:"id" label:"id"`
Op string `json:"op" label:"op"`
Uuid string `json:"uuid" label:"uuid"`
diff --git a/http/request/api/peer.go b/http/request/api/peer.go
index 0b51181..1ceefbc 100644
--- a/http/request/api/peer.go
+++ b/http/request/api/peer.go
@@ -36,7 +36,7 @@ func (pf *PeerForm) ToPeer() *model.Peer {
}
}
-// PersonalAddressBookForm 个人地址簿表单
+// PersonalAddressBookForm personal address book form
type PersonalAddressBookForm struct {
model.AddressBook
ForceAlwaysRelay string `json:"forceAlwaysRelay"`
diff --git a/http/request/api/user.go b/http/request/api/user.go
index b1a0d97..8b25cfb 100644
--- a/http/request/api/user.go
+++ b/http/request/api/user.go
@@ -29,25 +29,25 @@ type DeviceInfoInLogin struct {
}
type LoginForm struct {
- AutoLogin bool `json:"autoLogin" label:"自动登录"`
- DeviceInfo DeviceInfoInLogin `json:"deviceInfo" label:"设备信息"`
+ AutoLogin bool `json:"autoLogin" label:"auto login"`
+ DeviceInfo DeviceInfoInLogin `json:"deviceInfo" label:"device info"`
Id string `json:"id" label:"id"`
Type string `json:"type" label:"type"`
Uuid string `json:"uuid" label:"uuid"`
- Username string `json:"username" validate:"required,gte=2,lte=32" label:"用户名"`
- Password string `json:"password,omitempty" validate:"gte=4,lte=32" label:"密码"`
+ Username string `json:"username" validate:"required,gte=2,lte=32" label:"username"`
+ Password string `json:"password,omitempty" validate:"gte=4,lte=32" label:"password"`
}
type UserListQuery struct {
- Page uint `json:"page" form:"page" validate:"required" label:"页码"`
- PageSize uint `json:"pageSize" form:"pageSize" validate:"required" label:"每页数量"`
- Status int `json:"status" form:"status" label:"状态"`
+ Page uint `json:"page" form:"page" validate:"required" label:"page number"`
+ PageSize uint `json:"pageSize" form:"pageSize" validate:"required" label:"items per page"`
+ Status int `json:"status" form:"status" label:"status"`
Accessible string `json:"accessible" form:"accessible"`
}
type PeerListQuery struct {
- Page uint `json:"page" form:"page" validate:"required" label:"页码"`
- PageSize uint `json:"pageSize" form:"pageSize" validate:"required" label:"每页数量"`
- Status int `json:"status" form:"status" label:"状态"`
+ Page uint `json:"page" form:"page" validate:"required" label:"page number"`
+ PageSize uint `json:"pageSize" form:"pageSize" validate:"required" label:"items per page"`
+ Status int `json:"status" form:"status" label:"status"`
Accessible string `json:"accessible" form:"accessible"`
}
diff --git a/http/response/api/webClient.go b/http/response/api/webClient.go
index bb85a53..6a0dd75 100644
--- a/http/response/api/webClient.go
+++ b/http/response/api/webClient.go
@@ -22,7 +22,7 @@ type WebClientPeerInfoPayload struct {
func (wcpp *WebClientPeerPayload) FromAddressBook(a *model.AddressBook) {
wcpp.ViewStyle = "shrink"
- //24小时前
+ //24 hours ago
wcpp.Tm = time.Now().Add(-time.Hour * 24).UnixNano()
wcpp.Info = WebClientPeerInfoPayload{
Username: a.Username,
@@ -34,7 +34,7 @@ func (wcpp *WebClientPeerPayload) FromAddressBook(a *model.AddressBook) {
func (wcpp *WebClientPeerPayload) FromShareRecord(sr *model.ShareRecord) {
wcpp.ViewStyle = "shrink"
- //24小时前
+ //24 hours ago
wcpp.Tm = time.Now().UnixNano()
wcpp.Tmppwd = sr.Password
wcpp.Info = WebClientPeerInfoPayload{
diff --git a/http/router/admin.go b/http/router/admin.go
index 2cd01de..88c35ca 100644
--- a/http/router/admin.go
+++ b/http/router/admin.go
@@ -50,7 +50,7 @@ func Init(g *gin.Engine) {
RustdeskCmdBind(adg)
DeviceGroupBind(adg)
- //访问静态文件
+ //access static files
//g.StaticFS("/upload", http.Dir(global.Config.Gin.ResourcesPath+"/upload"))
}
diff --git a/http/router/api.go b/http/router/api.go
index 52c7773..0382f8e 100644
--- a/http/router/api.go
+++ b/http/router/api.go
@@ -18,7 +18,7 @@ func ApiInit(g *gin.Engine) {
if global.Config.App.ShowSwagger == 1 {
g.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, ginSwagger.InstanceName("api")))
}
- // 加载 HTML 模板
+ // load HTML template
g.LoadHTMLGlob("resources/templates/*")
frg := g.Group("/api")
@@ -33,7 +33,7 @@ func ApiInit(g *gin.Engine) {
{
l := &api.Login{}
- // 如果返回oidc则可以通过oidc登录
+ // if oidc is returned, login via oidc is possible
frg.GET("/login-options", l.LoginOptions)
frg.POST("/login", l.Login)
@@ -56,7 +56,7 @@ func ApiInit(g *gin.Engine) {
}
{
pe := &api.Peer{}
- //提交系统信息
+ //submit system info
frg.POST("/sysinfo", pe.SysInfo)
frg.POST("/sysinfo_ver", pe.SysInfoVer)
}
@@ -93,14 +93,14 @@ func ApiInit(g *gin.Engine) {
{
ab := &api.Ab{}
- //获取地址
+ //get address
frg.GET("/ab", ab.Ab)
- //更新地址
+ //update address
frg.POST("/ab", ab.UpAb)
}
PersonalRoutes(frg)
- //访问静态文件
+ //access static files
g.StaticFS("/upload", http.Dir(global.Config.Gin.ResourcesPath+"/public/upload"))
}
diff --git a/lib/cache/cache.go b/lib/cache/cache.go
index dbe2c56..96cb979 100644
--- a/lib/cache/cache.go
+++ b/lib/cache/cache.go
@@ -10,7 +10,7 @@ type Handler interface {
Gc() error
}
-// MaxTimeOut 最大超时时间
+// MaxTimeOut maximum timeout
const (
TypeMem = "memory"
@@ -49,7 +49,7 @@ func EncodeValue(value interface{}) (string, error) {
}
func DecodeValue(value string, rtv interface{}) error {
- //判断rtv的类型是否是string,如果是string,直接赋值并返回
+ // check whether rtv's type is string; if so, assign directly and return
/*switch rtv.(type) {
case *string:
*(rtv.(*string)) = value
diff --git a/lib/cache/cache_test.go b/lib/cache/cache_test.go
index 34ca2ab..4d3f652 100644
--- a/lib/cache/cache_test.go
+++ b/lib/cache/cache_test.go
@@ -42,7 +42,7 @@ func TestFileCacheSet(t *testing.T) {
err := fc.Set("123", "ddd", 0)
if err != nil {
fmt.Println(err.Error())
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
}
@@ -50,12 +50,12 @@ func TestFileCacheGet(t *testing.T) {
fc := New("file")
err := fc.Set("123", "45156", 300)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
res := ""
err = fc.Get("123", &res)
if err != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
fmt.Println("res", res)
}
@@ -69,7 +69,7 @@ func TestRedisCacheSet(t *testing.T) {
err := rc.Set("123", "ddd", 0)
if err != nil {
fmt.Println(err.Error())
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
}
@@ -81,12 +81,12 @@ func TestRedisCacheGet(t *testing.T) {
})
err := rc.Set("123", "451156", 300)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
res := ""
err = rc.Get("123", &res)
if err != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
fmt.Println("res", res)
}
diff --git a/lib/cache/file.go b/lib/cache/file.go
index 5fb57fd..56ac251 100644
--- a/lib/cache/file.go
+++ b/lib/cache/file.go
@@ -32,12 +32,12 @@ func (c *FileCache) Get(key string, value interface{}) error {
return err
}
-// 获取值,如果文件不存在或者过期,返回空,过滤掉错误
+// get value; if the file does not exist or has expired, return empty and ignore errors
func (c *FileCache) getValue(key string) (string, error) {
f := c.fileName(key)
fileInfo, err := os.Stat(f)
if err != nil {
- //文件不存在
+ // file does not exist
return "", nil
}
difT := time.Now().Sub(fileInfo.ModTime())
@@ -52,7 +52,7 @@ func (c *FileCache) getValue(key string) (string, error) {
return string(data), nil
}
-// 保存值
+// save value
func (c *FileCache) saveValue(key string, value string, exp int) error {
f := c.fileName(key)
lock := c.getLock(f)
@@ -91,7 +91,7 @@ func (c *FileCache) fileName(key string) string {
}
func (c *FileCache) Gc() error {
- //检查文件过期时间,并删除
+ // check file expiration time and delete
return nil
}
diff --git a/lib/cache/file_test.go b/lib/cache/file_test.go
index b8446f5..f8d6c27 100644
--- a/lib/cache/file_test.go
+++ b/lib/cache/file_test.go
@@ -11,7 +11,7 @@ func TestFileSet(t *testing.T) {
err := fc.Set("123", "ddd", 0)
if err != nil {
fmt.Println(err.Error())
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
}
@@ -21,7 +21,7 @@ func TestFileGet(t *testing.T) {
err := fc.Get("123", &res)
if err != nil {
fmt.Println(err.Error())
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
fmt.Println("res", res)
}
@@ -32,7 +32,7 @@ func TestFileSetGet(t *testing.T) {
err = fc.Get("key1", &res)
if err != nil {
fmt.Println(err.Error())
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
fmt.Println("res", res)
}
@@ -46,7 +46,7 @@ func TestFileGetJson(t *testing.T) {
err2 := fc.Get("123", res)
fmt.Println("res", res)
if err2 != nil {
- t.Fatalf("读取失败" + err2.Error())
+ t.Fatalf("read failed" + err2.Error())
}
}
func TestFileSetGetJson(t *testing.T) {
@@ -59,7 +59,7 @@ func TestFileSetGetJson(t *testing.T) {
}
err := fc.Set("123", old, 300)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
//old_rr.AA = "aaa"
fmt.Println("old_rr", old)
@@ -68,10 +68,10 @@ func TestFileSetGetJson(t *testing.T) {
err2 := fc.Get("123", res)
fmt.Println("res", res)
if err2 != nil {
- t.Fatalf("读取失败" + err2.Error())
+ t.Fatalf("read failed" + err2.Error())
}
if !reflect.DeepEqual(res, old) {
- t.Fatalf("读取错误")
+ t.Fatalf("read error")
}
}
diff --git a/lib/cache/memory.go b/lib/cache/memory.go
index 49d8f9d..4a2b098 100644
--- a/lib/cache/memory.go
+++ b/lib/cache/memory.go
@@ -11,8 +11,8 @@ import (
type MemoryCache struct {
data map[string]*CacheItem
- ll *list.List // 用于实现LRU
- pq PriorityQueue // 用于实现TTL
+ ll *list.List // used to implement LRU
+ pq PriorityQueue // used to implement TTL
quit chan struct{}
mu sync.Mutex
maxBytes int64
@@ -58,12 +58,12 @@ func (pq *PriorityQueue) Pop() interface{} {
}
func (m *MemoryCache) Get(key string, value interface{}) error {
- // 使用反射将存储的值设置到传入的指针变量中
+ // use reflection to set the stored value into the passed-in pointer variable
val := reflect.ValueOf(value)
if val.Kind() != reflect.Ptr {
return errors.New("value must be a pointer")
}
- //设为空值
+ // set to zero value
val.Elem().Set(reflect.Zero(val.Elem().Type()))
m.mu.Lock()
@@ -78,7 +78,7 @@ func (m *MemoryCache) Get(key string, value interface{}) error {
m.deleteItem(item)
return nil
}
- //移动到队列尾部
+ // move to the tail of the queue
m.ll.MoveToBack(item.ListEle)
err := DecodeValue(item.Value, value)
@@ -97,11 +97,11 @@ func (m *MemoryCache) Set(key string, value interface{}, exp int) error {
if err != nil {
return err
}
- //key 所占用的内存
+ // memory occupied by the key
keyBytes := int64(len(key))
- //value所占用的内存空间大小
+ // size of memory occupied by the value
valueBytes := int64(len(v))
- //判断是否超过最大内存限制
+ // check whether the maximum memory limit is exceeded
if m.maxBytes != 0 && m.maxBytes < keyBytes+valueBytes {
return errors.New("exceed maxBytes")
}
@@ -176,7 +176,7 @@ func (m *MemoryCache) startEviction() {
}()
}
-// stopEviction 停止定时清理
+// stopEviction stops the scheduled cleanup
func (m *MemoryCache) stopEviction() {
close(m.quit)
}
diff --git a/lib/cache/memory_test.go b/lib/cache/memory_test.go
index 89243e7..2e65019 100644
--- a/lib/cache/memory_test.go
+++ b/lib/cache/memory_test.go
@@ -11,7 +11,7 @@ func TestMemorySet(t *testing.T) {
err := mc.Set("123", "44567", 0)
if err != nil {
fmt.Println(err.Error())
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
}
@@ -22,10 +22,10 @@ func TestMemoryGet(t *testing.T) {
err := mc.Get("123", &res)
fmt.Println("res", res)
if err != nil {
- t.Fatalf("读取失败 " + err.Error())
+ t.Fatalf("read failed " + err.Error())
}
if res != "44567" {
- t.Fatalf("读取错误")
+ t.Fatalf("read error")
}
}
@@ -37,30 +37,30 @@ func TestMemorySetExpGet(t *testing.T) {
mc.Set("2", "5", 5)
err := mc.Set("3", "3", 3)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
res := ""
err = mc.Get("3", &res)
if err != nil {
- t.Fatalf("读取失败" + err.Error())
+ t.Fatalf("read failed" + err.Error())
}
fmt.Println("res 3", res)
time.Sleep(4 * time.Second)
//res = ""
err = mc.Get("3", &res)
if err != nil {
- t.Fatalf("读取失败" + err.Error())
+ t.Fatalf("read failed" + err.Error())
}
fmt.Println("res 3", res)
err = mc.Get("2", &res)
if err != nil {
- t.Fatalf("读取失败" + err.Error())
+ t.Fatalf("read failed" + err.Error())
}
fmt.Println("res 2", res)
err = mc.Get("1", &res)
if err != nil {
- t.Fatalf("读取失败" + err.Error())
+ t.Fatalf("read failed" + err.Error())
}
fmt.Println("res 1", res)
@@ -69,29 +69,29 @@ func TestMemoryLru(t *testing.T) {
mc := NewMemoryCache(18)
mc.Set("1", "1111", 10)
mc.Set("2", "2222", 5)
- //读取一次,2就会被放到最后
+ // read once, so 2 will be moved to the end
mc.Get("1", nil)
- err := mc.Set("3", "三", 3)
+ err := mc.Set("3", "three", 3)
if err != nil {
- //t.Fatalf("写入失败")
+ //t.Fatalf("write failed")
}
res := ""
err = mc.Get("3", &res)
if err != nil {
- t.Fatalf("读取失败" + err.Error())
+ t.Fatalf("read failed" + err.Error())
}
fmt.Println("res3", res)
res = ""
err = mc.Get("2", &res)
if err != nil {
- t.Fatalf("读取失败" + err.Error())
+ t.Fatalf("read failed" + err.Error())
}
fmt.Println("res2", res)
res = ""
err = mc.Get("1", &res)
if err != nil {
- t.Fatalf("读取失败" + err.Error())
+ t.Fatalf("read failed" + err.Error())
}
fmt.Println("res1", res)
diff --git a/lib/cache/redis_test.go b/lib/cache/redis_test.go
index c8052cd..978c8b6 100644
--- a/lib/cache/redis_test.go
+++ b/lib/cache/redis_test.go
@@ -17,7 +17,7 @@ func TestRedisSet(t *testing.T) {
err := rc.Set("123", "ddd", 0)
if err != nil {
fmt.Println(err.Error())
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
}
@@ -29,12 +29,12 @@ func TestRedisGet(t *testing.T) {
})
err := rc.Set("123", "451156", 300)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
res := ""
err = rc.Get("123", &res)
if err != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
fmt.Println("res", res)
}
@@ -54,16 +54,16 @@ func TestRedisGetJson(t *testing.T) {
}
err := rc.Set("1233", old, 300)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
res := &r{}
err2 := rc.Get("1233", res)
if err2 != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
if !reflect.DeepEqual(res, old) {
- t.Fatalf("读取错误")
+ t.Fatalf("read error")
}
fmt.Println(res, res.Aa)
}
diff --git a/lib/cache/simple_cache.go b/lib/cache/simple_cache.go
index f599bd7..a9869c7 100644
--- a/lib/cache/simple_cache.go
+++ b/lib/cache/simple_cache.go
@@ -6,7 +6,7 @@ import (
"sync"
)
-// 此处实现了一个简单的缓存,用于测试
+// implements a simple cache used for testing
// SimpleCache is a simple cache implementation
type SimpleCache struct {
data map[string]interface{}
@@ -19,21 +19,21 @@ func (s *SimpleCache) Get(key string, value interface{}) error {
s.mu.Lock()
defer s.mu.Unlock()
- // 使用反射将存储的值设置到传入的指针变量中
+ // use reflection to set the stored value into the passed-in pointer variable
val := reflect.ValueOf(value)
if val.Kind() != reflect.Ptr {
return errors.New("value must be a pointer")
}
v, ok := s.data[key]
if !ok {
- //设为空值
+ // set to zero value
val.Elem().Set(reflect.Zero(val.Elem().Type()))
return nil
}
vval := reflect.ValueOf(v)
if val.Elem().Type() != vval.Type() {
- //设为空值
+ // set to zero value
val.Elem().Set(reflect.Zero(val.Elem().Type()))
return nil
}
@@ -45,7 +45,7 @@ func (s *SimpleCache) Get(key string, value interface{}) error {
func (s *SimpleCache) Set(key string, value interface{}, exp int) error {
s.mu.Lock()
defer s.mu.Unlock()
- // 检查传入的值是否是指针,如果是则取其值
+ // check whether the passed-in value is a pointer; if so, dereference it
val := reflect.ValueOf(value)
if val.Kind() == reflect.Ptr {
val = val.Elem()
diff --git a/lib/cache/simple_cache_test.go b/lib/cache/simple_cache_test.go
index 01c3b4d..3f5a738 100644
--- a/lib/cache/simple_cache_test.go
+++ b/lib/cache/simple_cache_test.go
@@ -9,11 +9,11 @@ func TestSimpleCache_Set(t *testing.T) {
s := NewSimpleCache()
err := s.Set("key", "value", 0)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
err = s.Set("key", 111, 0)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
}
@@ -24,7 +24,7 @@ func TestSimpleCache_Get(t *testing.T) {
err = s.Get("key", &value)
fmt.Println("value", value)
if err != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
err = s.Set("key1", 11, 0)
@@ -32,7 +32,7 @@ func TestSimpleCache_Get(t *testing.T) {
err = s.Get("key1", &value1)
fmt.Println("value1", value1)
if err != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
err = s.Set("key2", []byte{'a', 'b'}, 0)
@@ -40,7 +40,7 @@ func TestSimpleCache_Get(t *testing.T) {
err = s.Get("key2", &value2)
fmt.Println("value2", string(value2))
if err != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
err = s.Set("key3", 33.33, 0)
@@ -48,7 +48,7 @@ func TestSimpleCache_Get(t *testing.T) {
err = s.Get("key3", &value3)
fmt.Println("value3", value3)
if err != nil {
- t.Fatalf("读取失败")
+ t.Fatalf("read failed")
}
}
@@ -80,18 +80,18 @@ func TestSimpleCache_GetStruct(t *testing.T) {
}
err := s.Set("key", old, 300)
if err != nil {
- t.Fatalf("写入失败")
+ t.Fatalf("write failed")
}
res := &r{}
err2 := s.Get("key", res)
fmt.Println("res", res)
if err2 != nil {
- t.Fatalf("读取失败" + err2.Error())
+ t.Fatalf("read failed" + err2.Error())
}
- //修改原始值,看后面是否会变化
+ // modify the original value to see whether it changes afterward
old.A = "aa"
old_rr.AA = "aaa"
fmt.Println("old", old)
@@ -99,10 +99,10 @@ func TestSimpleCache_GetStruct(t *testing.T) {
err3 := s.Get("key", res2)
fmt.Println("res2", res2, res2.R.AA, res2.R.BB)
if err3 != nil {
- t.Fatalf("读取失败" + err3.Error())
+ t.Fatalf("read failed" + err3.Error())
}
//if reflect.DeepEqual(res, old) {
- // t.Fatalf("读取错误")
+ // t.Fatalf("read error")
//}
}
diff --git a/lib/jwt/jwt_test.go b/lib/jwt/jwt_test.go
index b40d80c..86a165d 100644
--- a/lib/jwt/jwt_test.go
+++ b/lib/jwt/jwt_test.go
@@ -34,30 +34,30 @@ Hj4yO4j5LOWDMTgDcLsZTxbGiTzkNc/HghrNIevDAQdgjJQNl84zDjyyCA4r/MA7
bYJTtYj8q6J0EDbRdT9b6hMclyzjNXdx2loJxR0R8WUeL1lDEPq8
-----END RSA PRIVATE KEY-----`
-// 测试token生成
+// test token generation
func TestGenerateToken(t *testing.T) {
jwtService := NewJwt(pk, time.Second*1000)
token := jwtService.GenerateToken(1)
if token == "" {
- t.Fatal("token生成失败")
+ t.Fatal("token generation failed")
}
fmt.Println(pk, token)
}
-// 测试token解析
+// test token parsing
func TestParseToken(t *testing.T) {
jwtService := NewJwt(pk, time.Second*1000)
token := jwtService.GenerateToken(999)
if token == "" {
- t.Fatal("token生成失败")
+ t.Fatal("token generation failed")
}
uid, err := jwtService.ParseToken(token)
if err != nil {
- t.Fatal("token解析失败", err)
+ t.Fatal("token parsing failed", err)
}
if uid != 999 {
- t.Fatal("token解析失败")
+ t.Fatal("token parsing failed")
}
}
diff --git a/lib/logger/logger.go b/lib/logger/logger.go
index ea43be9..535d2a6 100644
--- a/lib/logger/logger.go
+++ b/lib/logger/logger.go
@@ -27,7 +27,7 @@ func New(c *Config) *log.Logger {
//FieldsOrder: []string{"name", "age"},
})
- // 日志文件
+ // log file
f := c.Path
var write io.Writer
if f != "" {
diff --git a/lib/orm/mysql.go b/lib/orm/mysql.go
index 586cbf3..53c21a4 100644
--- a/lib/orm/mysql.go
+++ b/lib/orm/mysql.go
@@ -17,11 +17,11 @@ type MysqlConfig struct {
func NewMysql(mysqlConf *MysqlConfig, logwriter logger.Writer) *gorm.DB {
db, err := gorm.Open(mysql.New(mysql.Config{
DSN: mysqlConf.Dsn, // DSN data source name
- DefaultStringSize: 256, // string 类型字段的默认长度
- //DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持
- //DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
- //DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列
- //SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置
+ DefaultStringSize: 256, // default length for string type fields
+ //DisableDatetimePrecision: true, // disable datetime precision; not supported by databases before MySQL 5.6
+ //DontSupportRenameIndex: true, // rename indexes by dropping and recreating them; databases before MySQL 5.7 and MariaDB do not support renaming indexes
+ //DontSupportRenameColumn: true, // rename columns using `change`; databases before MySQL 8 and MariaDB do not support renaming columns
+ //SkipInitializeWithVersion: false, // auto-configure based on the current MySQL version
}), &gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true,
Logger: logger.New(
@@ -42,10 +42,10 @@ func NewMysql(mysqlConf *MysqlConfig, logwriter logger.Writer) *gorm.DB {
if err2 != nil {
fmt.Println(err2)
}
- // SetMaxIdleConns 设置空闲连接池中连接的最大数量
+ // SetMaxIdleConns sets the maximum number of connections in the idle connection pool
sqlDB.SetMaxIdleConns(mysqlConf.MaxIdleConns)
- // SetMaxOpenConns 设置打开数据库连接的最大数量。
+ // SetMaxOpenConns sets the maximum number of open database connections.
sqlDB.SetMaxOpenConns(mysqlConf.MaxOpenConns)
return db
diff --git a/lib/orm/postgresql.go b/lib/orm/postgresql.go
index d20c520..50f7786 100644
--- a/lib/orm/postgresql.go
+++ b/lib/orm/postgresql.go
@@ -35,10 +35,10 @@ func NewPostgresql(conf *PostgresqlConfig, logwriter logger.Writer) *gorm.DB {
if err2 != nil {
fmt.Println(err2)
}
- // SetMaxIdleConns 设置空闲连接池中连接的最大数量
+ // SetMaxIdleConns sets the maximum number of connections in the idle connection pool
sqlDB.SetMaxIdleConns(conf.MaxIdleConns)
- // SetMaxOpenConns 设置打开数据库连接的最大数量。
+ // SetMaxOpenConns sets the maximum number of open database connections.
sqlDB.SetMaxOpenConns(conf.MaxOpenConns)
return db
diff --git a/lib/orm/sqlite.go b/lib/orm/sqlite.go
index 2dd4252..ae26ee1 100644
--- a/lib/orm/sqlite.go
+++ b/lib/orm/sqlite.go
@@ -34,10 +34,10 @@ func NewSqlite(sqliteConf *SqliteConfig, logwriter logger.Writer) *gorm.DB {
if err2 != nil {
fmt.Println(err2)
}
- // SetMaxIdleConns 设置空闲连接池中连接的最大数量
+ // SetMaxIdleConns sets the maximum number of connections in the idle connection pool
sqlDB.SetMaxIdleConns(sqliteConf.MaxIdleConns)
- // SetMaxOpenConns 设置打开数据库连接的最大数量。
+ // SetMaxOpenConns sets the maximum number of open database connections.
sqlDB.SetMaxOpenConns(sqliteConf.MaxOpenConns)
return db
diff --git a/lib/upload/oss.go b/lib/upload/oss.go
index 7bada1d..1ce57ec 100644
--- a/lib/upload/oss.go
+++ b/lib/upload/oss.go
@@ -240,11 +240,11 @@ func getMD5FromNewAuthString(r *http.Request) ([]byte, error) {
}
/* VerifySignature
-* VerifySignature需要三个重要的数据信息来进行签名验证: 1>获取公钥PublicKey; 2>生成新的MD5鉴权串; 3>解码Request携带的鉴权串;
-* 1>获取公钥PublicKey : 从RequestHeader的"x-oss-pub-key-url"字段中获取 URL, 读取URL链接的包含的公钥内容, 进行解码解析, 将其作为rsa.VerifyPKCS1v15的入参。
-* 2>生成新的MD5鉴权串 : 把Request中的url中的path部分进行urldecode, 加上url的query部分, 再加上body, 组合之后进行MD5编码, 得到MD5鉴权字节串。
-* 3>解码Request携带的鉴权串 : 获取RequestHeader的"authorization"字段, 对其进行Base64解码,作为签名验证的鉴权对比串。
-* rsa.VerifyPKCS1v15进行签名验证,返回验证结果。
+* VerifySignature needs three pieces of data to perform signature verification: 1> obtain the public key PublicKey; 2> generate a new MD5 authentication string; 3> decode the authentication string carried by the Request;
+* 1> obtain the public key PublicKey: get the URL from the "x-oss-pub-key-url" field of the RequestHeader, read the public key content the URL points to, decode and parse it, and use it as the input parameter of rsa.VerifyPKCS1v15.
+* 2> generate a new MD5 authentication string: urldecode the path part of the url in the Request, append the query part of the url, then append the body, combine them and apply MD5 encoding to obtain the MD5 authentication byte string.
+* 3> decode the authentication string carried by the Request: get the "authorization" field of the RequestHeader and Base64-decode it to use as the comparison authentication string for signature verification.
+* rsa.VerifyPKCS1v15 performs the signature verification and returns the result.
* */
func verifySignature(bytePublicKey []byte, byteMd5 []byte, authorization []byte) bool {
pubBlock, _ := pem.Decode(bytePublicKey)
diff --git a/model/addressBook.go b/model/addressBook.go
index a0701b6..a0c745f 100644
--- a/model/addressBook.go
+++ b/model/addressBook.go
@@ -17,7 +17,7 @@ import "github.com/lejianwen/rustdesk-api/v2/model/custom_types"
// String loginName; //login username
// bool? sameServer;
-// AddressBook 有些字段是Personal才会上传的
+// AddressBook some fields are only uploaded for Personal
type AddressBook struct {
RowId uint `gorm:"primaryKey" json:"row_id"`
Id string `json:"id" gorm:"default:0;not null;index"`
@@ -59,8 +59,8 @@ type AddressBookCollectionRule struct {
IdModel
UserId uint `json:"user_id" gorm:"default:0;not null;"`
CollectionId uint `json:"collection_id" gorm:"default:0;not null;index" validate:"required"`
- Rule int `json:"rule" gorm:"default:0;not null;" validate:"required,gte=1,lte=3"` // 0: 无 1: 读 2: 读写 3: 完全控制
- Type int `json:"type" gorm:"default:1;not null;" validate:"required,gte=1,lte=2"` // 1: 个人 2: 群组
+ Rule int `json:"rule" gorm:"default:0;not null;" validate:"required,gte=1,lte=3"` // 0: none 1: read 2: read-write 3: full control
+ Type int `json:"type" gorm:"default:1;not null;" validate:"required,gte=1,lte=2"` // 1: personal 2: group
ToId uint `json:"to_id" gorm:"default:0;not null;" validate:"required,gt=0"`
TimeModel
}
diff --git a/model/custom_types/auto_json.go b/model/custom_types/auto_json.go
index 2538f06..997895b 100644
--- a/model/custom_types/auto_json.go
+++ b/model/custom_types/auto_json.go
@@ -7,7 +7,7 @@ import (
"fmt"
)
-// AutoJson 数据类型
+// AutoJson data type
type AutoJson json.RawMessage
func (j *AutoJson) Scan(value interface{}) error {
@@ -33,7 +33,7 @@ func (j *AutoJson) Scan(value interface{}) error {
}
result := &json.RawMessage{}
err := json.Unmarshal(bytes, result)
- //解析json错误 返回空
+ // json parse error, return empty
if err != nil {
*j = AutoJson(json.RawMessage{'[', ']'})
return nil
diff --git a/model/custom_types/auto_time.go b/model/custom_types/auto_time.go
index 9e9e13b..30528e5 100644
--- a/model/custom_types/auto_time.go
+++ b/model/custom_types/auto_time.go
@@ -5,7 +5,7 @@ import (
"time"
)
-// AutoTime 自定义时间格式
+// AutoTime custom time format
type AutoTime time.Time
func (mt AutoTime) Value() (driver.Value, error) {
diff --git a/model/group.go b/model/group.go
index e49e794..f9fb21d 100644
--- a/model/group.go
+++ b/model/group.go
@@ -1,8 +1,8 @@
package model
const (
- GroupTypeDefault = 1 // 默认
- GroupTypeShare = 2 // 共享
+ GroupTypeDefault = 1 // default
+ GroupTypeShare = 2 // shared
)
type Group struct {
diff --git a/model/model.go b/model/model.go
index fe3cb9d..0b7917b 100644
--- a/model/model.go
+++ b/model/model.go
@@ -7,8 +7,8 @@ import (
type StatusCode int
const (
- COMMON_STATUS_ENABLE StatusCode = 1 //通用状态 启用
- COMMON_STATUS_DISABLED StatusCode = 2 //通用状态 禁用
+ COMMON_STATUS_ENABLE StatusCode = 1 // common status: enabled
+ COMMON_STATUS_DISABLED StatusCode = 2 // common status: disabled
)
type IdModel struct {
diff --git a/model/oauth.go b/model/oauth.go
index 6294384..afff38a 100644
--- a/model/oauth.go
+++ b/model/oauth.go
@@ -119,7 +119,7 @@ type OidcUser struct {
func (ou *OidcUser) ToOauthUser() *OauthUser {
var username string
- // 使用 PreferredUsername,如果不存在,降级到 Email 前缀
+ // Use PreferredUsername; if not present, fall back to the Email prefix
if ou.PreferredUsername != "" {
username = ou.PreferredUsername
} else {
@@ -169,7 +169,7 @@ func (lu *LinuxdoUser) ToOauthUser() *OauthUser {
Name: lu.Name,
Username: strings.ToLower(lu.Username),
Email: lu.Email,
- VerifiedEmail: true, // linux.do 用户邮箱默认已验证
+ VerifiedEmail: true, // linux.do user emails are verified by default
Picture: lu.Avatar,
}
}
diff --git a/model/shareRecord.go b/model/shareRecord.go
index 845659f..32cad77 100644
--- a/model/shareRecord.go
+++ b/model/shareRecord.go
@@ -11,7 +11,7 @@ type ShareRecord struct {
TimeModel
}
-// ShareRecordList 分享记录列表
+// ShareRecordList share record list
type ShareRecordList struct {
ShareRecords []*ShareRecord `json:"list,omitempty"`
Pagination
diff --git a/model/tag.go b/model/tag.go
index db1f8a7..020292b 100644
--- a/model/tag.go
+++ b/model/tag.go
@@ -4,7 +4,7 @@ type Tag struct {
IdModel
Name string `json:"name" gorm:"default:'';not null;"`
UserId uint `json:"user_id" gorm:"default:0;not null;index"`
- Color uint `json:"color" gorm:"default:0;not null;"` //color 是flutter的颜色值,从0x00000000 到 0xFFFFFFFF; 前两位表示透明度,后面6位表示颜色, 可以转成rgba
+ Color uint `json:"color" gorm:"default:0;not null;"` //color is a flutter color value, from 0x00000000 to 0xFFFFFFFF; the first two digits represent the alpha (transparency), the remaining 6 digits represent the color, can be converted to rgba
CollectionId uint `json:"collection_id" gorm:"default:0;not null;index"`
Collection *AddressBookCollection `json:"collection,omitempty"`
TimeModel
diff --git a/model/user.go b/model/user.go
index e542ca5..28b42f2 100644
--- a/model/user.go
+++ b/model/user.go
@@ -15,9 +15,9 @@ type User struct {
TimeModel
}
-// BeforeSave 钩子用于确保 email 字段有合理的默认值
+// BeforeSave hook ensures the email field has a sensible default value
//func (u *User) BeforeSave(tx *gorm.DB) (err error) {
-// // 如果 email 为空,设置为默认值
+// // If email is empty, set it to a default value
// if u.Email == "" {
// u.Email = fmt.Sprintf("%s@example.com", u.Username)
// }
diff --git a/service/addressBook.go b/service/addressBook.go
index 978c792..4d343b3 100644
--- a/service/addressBook.go
+++ b/service/addressBook.go
@@ -53,29 +53,29 @@ func (s *AddressBookService) AddAddressBook(ab *model.AddressBook) error {
// UpdateAddressBook
func (s *AddressBookService) UpdateAddressBook(abs []*model.AddressBook, userId uint) error {
- //比较peers和数据库中的数据,如果peers中的数据在数据库中不存在,则添加,如果存在则更新,如果数据库中的数据在peers中不存在,则删除
- // 开始事务
+ // compare peers with the data in the database: if a peer does not exist in the database, add it; if it exists, update it; if data in the database does not exist in peers, delete it
+ // begin transaction
tx := DB.Begin()
- //1. 获取数据库中的数据
+ // 1. get the data in the database
var dbABs []*model.AddressBook
tx.Where("user_id = ?", userId).Find(&dbABs)
- //2. 比较peers和数据库中的数据
- //2.1 获取peers中的id
+ // 2. compare peers with the data in the database
+ // 2.1 get the ids in peers
aBIds := make(map[string]*model.AddressBook)
for _, ab := range abs {
aBIds[ab.Id] = ab
}
- //2.2 获取数据库中的id
+ // 2.2 get the ids from the database
dbABIds := make(map[string]*model.AddressBook)
for _, dbAb := range dbABs {
dbABIds[dbAb.Id] = dbAb
}
- //2.3 比较peers和数据库中的数据
+ // 2.3 compare peers with the data in the database
for id, ab := range aBIds {
dbAB, ok := dbABIds[id]
ab.UserId = userId
if !ok {
- //添加
+ //add
if ab.Platform == "" || ab.Username == "" || ab.Hostname == "" {
peer := AllService.PeerService.FindById(ab.Id)
if peer.RowId != 0 {
@@ -86,11 +86,11 @@ func (s *AddressBookService) UpdateAddressBook(abs []*model.AddressBook, userId
}
tx.Create(ab)
} else {
- //更新
+ //update
tx.Model(&model.AddressBook{}).Where("row_id = ?", dbAB.RowId).Updates(ab)
}
}
- //2.4 删除
+ // 2.4 delete
for id, dbAB := range dbABIds {
_, ok := aBIds[id]
if !ok {
@@ -126,7 +126,7 @@ func (s *AddressBookService) FromPeer(peer *model.Peer) (a *model.AddressBook) {
return a
}
-// Create 创建
+// Create create
func (s *AddressBookService) Create(u *model.AddressBook) error {
res := DB.Create(u).Error
return res
@@ -135,22 +135,22 @@ func (s *AddressBookService) Delete(u *model.AddressBook) error {
return DB.Delete(u).Error
}
-// Update 更新
+// Update update
func (s *AddressBookService) Update(u *model.AddressBook) error {
return DB.Model(u).Updates(u).Error
}
-// UpdateByMap 更新
+// UpdateByMap update
func (s *AddressBookService) UpdateByMap(u *model.AddressBook, data map[string]interface{}) error {
return DB.Model(u).Updates(data).Error
}
-// UpdateAll 更新
+// UpdateAll update
func (s *AddressBookService) UpdateAll(u *model.AddressBook) error {
return DB.Model(u).Select("*").Omit("created_at").Updates(u).Error
}
-// ShareByWebClient 分享
+// ShareByWebClient share
func (s *AddressBookService) ShareByWebClient(m *model.ShareRecord) error {
m.ShareToken = uuid.New().String()
return DB.Create(m).Error
@@ -279,7 +279,7 @@ func (s *AddressBookService) UpdateCollection(t *model.AddressBookCollection) er
}
func (s *AddressBookService) DeleteCollection(t *model.AddressBookCollection) error {
- //删除集合下的所有规则、地址簿,再删除集合
+ //delete all rules and address books under the collection, then delete the collection
tx := DB.Begin()
tx.Where("collection_id = ?", t.Id).Delete(&model.AddressBookCollectionRule{})
tx.Where("collection_id = ?", t.Id).Delete(&model.AddressBook{})
@@ -326,7 +326,7 @@ func (s *AddressBookService) DeleteRule(t *model.AddressBookCollectionRule) erro
return DB.Delete(t).Error
}
-// CheckCollectionOwner 检查Collection的所有者
+// CheckCollectionOwner checkCollection's owner
func (s *AddressBookService) CheckCollectionOwner(uid uint, cid uint) bool {
p := s.CollectionInfoById(cid)
return p.UserId == uid
diff --git a/service/app_test.go b/service/app_test.go
index d014cd4..49ae0fe 100644
--- a/service/app_test.go
+++ b/service/app_test.go
@@ -9,25 +9,25 @@ import (
func TestGetAppVersion(t *testing.T) {
s := &AppService{}
v := s.GetAppVersion()
- // 打印结果
+ // print result
t.Logf("App Version: %s", v)
}
func TestMultipleGetAppVersion(t *testing.T) {
s := &AppService{}
- //并发测试
- // 使用 WaitGroup 等待所有 goroutine 完成
+ //concurrency test
+ // use a WaitGroup to wait for all goroutines to finish
wg := sync.WaitGroup{}
- wg.Add(10) // 启动 10 个 goroutine
- // 启动 10 个 goroutine
+ wg.Add(10) // start 10 goroutine
+ // start 10 goroutine
for i := 0; i < 10; i++ {
go func() {
- defer wg.Done() // 完成后减少计数
+ defer wg.Done() // decrement the count when done
v := s.GetAppVersion()
- // 打印结果
+ // print result
t.Logf("App Version: %s", v)
}()
}
- // 等待所有 goroutine 完成
+ // wait for all goroutine done
wg.Wait()
}
diff --git a/service/audit.go b/service/audit.go
index 70b110a..4736775 100644
--- a/service/audit.go
+++ b/service/audit.go
@@ -22,7 +22,7 @@ func (as *AuditService) AuditConnList(page, pageSize uint, where func(tx *gorm.D
return
}
-// Create 创建
+// Create create
func (as *AuditService) CreateAuditConn(u *model.AuditConn) error {
res := DB.Create(u).Error
return res
@@ -31,7 +31,7 @@ func (as *AuditService) DeleteAuditConn(u *model.AuditConn) error {
return DB.Delete(u).Error
}
-// Update 更新
+// Update update
func (as *AuditService) UpdateAuditConn(u *model.AuditConn) error {
return DB.Model(u).Updates(u).Error
}
@@ -80,7 +80,7 @@ func (as *AuditService) DeleteAuditFile(u *model.AuditFile) error {
return DB.Delete(u).Error
}
-// Update 更新
+// Update update
func (as *AuditService) UpdateAuditFile(u *model.AuditFile) error {
return DB.Model(u).Updates(u).Error
}
diff --git a/service/group.go b/service/group.go
index 001ea97..531fde6 100644
--- a/service/group.go
+++ b/service/group.go
@@ -8,7 +8,7 @@ import (
type GroupService struct {
}
-// InfoById 根据用户id取用户信息
+// InfoById gets the group info by id
func (us *GroupService) InfoById(id uint) *model.Group {
u := &model.Group{}
DB.Where("id = ?", id).First(u)
@@ -29,7 +29,7 @@ func (us *GroupService) List(page, pageSize uint, where func(tx *gorm.DB)) (res
return
}
-// Create 创建
+// Create create
func (us *GroupService) Create(u *model.Group) error {
res := DB.Create(u).Error
return res
@@ -38,12 +38,12 @@ func (us *GroupService) Delete(u *model.Group) error {
return DB.Delete(u).Error
}
-// Update 更新
+// Update update
func (us *GroupService) Update(u *model.Group) error {
return DB.Model(u).Updates(u).Error
}
-// DeviceGroupInfoById 根据用户id取用户信息
+// DeviceGroupInfoById gets the device group info by id
func (us *GroupService) DeviceGroupInfoById(id uint) *model.DeviceGroup {
u := &model.DeviceGroup{}
DB.Where("id = ?", id).First(u)
diff --git a/service/loginLog.go b/service/loginLog.go
index 0b6711b..1178516 100644
--- a/service/loginLog.go
+++ b/service/loginLog.go
@@ -8,7 +8,7 @@ import (
type LoginLogService struct {
}
-// InfoById 根据用户id取用户信息
+// InfoById gets the login log info by id
func (us *LoginLogService) InfoById(id uint) *model.LoginLog {
u := &model.LoginLog{}
DB.Where("id = ?", id).First(u)
@@ -29,7 +29,7 @@ func (us *LoginLogService) List(page, pageSize uint, where func(tx *gorm.DB)) (r
return
}
-// Create 创建
+// Create create
func (us *LoginLogService) Create(u *model.LoginLog) error {
res := DB.Create(u).Error
return res
@@ -38,7 +38,7 @@ func (us *LoginLogService) Delete(u *model.LoginLog) error {
return DB.Delete(u).Error
}
-// Update 更新
+// Update update
func (us *LoginLogService) Update(u *model.LoginLog) error {
return DB.Model(u).Updates(u).Error
}
diff --git a/service/oauth.go b/service/oauth.go
index 48c7ddd..ea49737 100644
--- a/service/oauth.go
+++ b/service/oauth.go
@@ -36,7 +36,7 @@ type OidcEndpoint struct {
type OauthCacheItem struct {
UserId uint `json:"user_id"`
- Id string `json:"id"` //rustdesk的设备ID
+ Id string `json:"id"` //rustdesk's devicesID
Op string `json:"op"`
Action string `json:"action"`
Uuid string `json:"uuid"`
@@ -196,7 +196,7 @@ func (os *OauthService) GetOauthConfig(op string) (err error, oauthInfo *model.O
provider = os.LinuxdoProvider()
oauthConfig.Endpoint = provider.Endpoint()
oauthConfig.Scopes = []string{"profile"}
- //case model.OauthTypeGoogle: //google单独出来,可以少一次FetchOidcEndpoint请求
+ //case model.OauthTypeGoogle: //google separately to save one FetchOidcEndpointrequest
// oauthConfig.Endpoint = google.Endpoint
// oauthConfig.Scopes = os.constructScopes(oauthInfo.Scopes)
case model.OauthTypeOidc, model.OauthTypeGoogle:
@@ -234,7 +234,7 @@ func getHTTPClientWithProxy() *http.Client {
}
func (os *OauthService) callbackBase(oauthConfig *oauth2.Config, provider *oidc.Provider, code string, verifier string, nonce string, userData interface{}) (err error, client *http.Client) {
- // 设置代理客户端
+ // set proxy client
httpClient := getHTTPClientWithProxy()
ctx := context.WithValue(context.Background(), oauth2.HTTPClient, httpClient)
@@ -250,10 +250,10 @@ func (os *OauthService) callbackBase(oauthConfig *oauth2.Config, provider *oidc.
return errors.New("GetOauthTokenError"), nil
}
- // 获取 ID Token, github没有id_token
+ // get the ID Token; github has no id_token
rawIDToken, ok := token.Extra("id_token").(string)
if ok && rawIDToken != "" {
- // 验证 ID Token
+ // verify ID Token
v := provider.Verifier(&oidc.Config{ClientID: oauthConfig.ClientID})
idToken, err2 := v.Verify(ctx, rawIDToken)
if err2 != nil {
@@ -261,7 +261,7 @@ func (os *OauthService) callbackBase(oauthConfig *oauth2.Config, provider *oidc.
return errors.New("IdTokenVerifyError"), nil
}
if nonce != "" {
- // 验证 nonce
+ // verify nonce
var claims struct {
Nonce string `json:"nonce"`
}
@@ -277,7 +277,7 @@ func (os *OauthService) callbackBase(oauthConfig *oauth2.Config, provider *oidc.
}
}
- // 获取用户信息
+ // get user info
client = oauthConfig.Client(ctx, token)
resp, err := client.Get(provider.UserInfoEndpoint())
if err != nil {
@@ -290,7 +290,7 @@ func (os *OauthService) callbackBase(oauthConfig *oauth2.Config, provider *oidc.
}
}()
- // 解析用户信息
+ // parse user info
if err = json.NewDecoder(resp.Body).Decode(userData); err != nil {
Logger.Warn("failed decoding user info: ", err)
return errors.New("DecodeOauthUserInfoError"), nil
@@ -299,7 +299,7 @@ func (os *OauthService) callbackBase(oauthConfig *oauth2.Config, provider *oidc.
return nil, client
}
-// githubCallback github回调
+// githubCallback handles the github callback
func (os *OauthService) githubCallback(oauthConfig *oauth2.Config, provider *oidc.Provider, code, verifier, nonce string) (error, *model.OauthUser) {
var user = &model.GithubUser{}
err, client := os.callbackBase(oauthConfig, provider, code, verifier, nonce, user)
@@ -313,7 +313,7 @@ func (os *OauthService) githubCallback(oauthConfig *oauth2.Config, provider *oid
return nil, user.ToOauthUser()
}
-// linuxdoCallback linux.do回调
+// linuxdoCallback handles the linux.do callback
func (os *OauthService) linuxdoCallback(oauthConfig *oauth2.Config, provider *oidc.Provider, code, verifier, nonce string) (error, *model.OauthUser) {
var user = &model.LinuxdoUser{}
err, _ := os.callbackBase(oauthConfig, provider, code, verifier, nonce, user)
@@ -323,7 +323,7 @@ func (os *OauthService) linuxdoCallback(oauthConfig *oauth2.Config, provider *oi
return nil, user.ToOauthUser()
}
-// oidcCallback oidc回调, 通过code获取用户信息
+// oidcCallback handles the oidc callback, getting user info via the code
func (os *OauthService) oidcCallback(oauthConfig *oauth2.Config, provider *oidc.Provider, code, verifier, nonce string) (error, *model.OauthUser) {
var user = &model.OidcUser{}
if err, _ := os.callbackBase(oauthConfig, provider, code, verifier, nonce, user); err != nil {
@@ -385,14 +385,14 @@ func (os *OauthService) DeleteUserByUserId(userId uint) error {
return DB.Where("user_id = ?", userId).Delete(&model.UserThird{}).Error
}
-// InfoById 根据id获取Oauth信息
+// InfoById gets the oauth info by id
func (os *OauthService) InfoById(id uint) *model.Oauth {
oauthInfo := &model.Oauth{}
DB.Where("id = ?", id).First(oauthInfo)
return oauthInfo
}
-// InfoByOp 根据op获取Oauth信息
+// InfoByOp gets the oauth info by op
func (os *OauthService) InfoByOp(op string) *model.Oauth {
oauthInfo := &model.Oauth{}
DB.Where("op = ?", op).First(oauthInfo)
@@ -428,7 +428,7 @@ func (os *OauthService) List(page, pageSize uint, where func(tx *gorm.DB)) (res
return
}
-// GetTypeByOp 根据op获取OauthType
+// GetTypeByOp gets the oauth type by op
func (os *OauthService) GetTypeByOp(op string) (error, string) {
oauthInfo := &model.Oauth{}
if DB.Where("op = ?", op).First(oauthInfo).Error != nil {
@@ -437,7 +437,7 @@ func (os *OauthService) GetTypeByOp(op string) (error, string) {
return nil, oauthInfo.OauthType
}
-// ValidateOauthProvider 验证Oauth提供者是否正确
+// ValidateOauthProvider verifies whether the Oauth provider is correct
func (os *OauthService) ValidateOauthProvider(op string) error {
if !os.IsOauthProviderExist(op) {
return fmt.Errorf("OAuth provider with op '%s' not found", op)
@@ -445,17 +445,17 @@ func (os *OauthService) ValidateOauthProvider(op string) error {
return nil
}
-// IsOauthProviderExist 验证Oauth提供者是否存在
+// IsOauthProviderExist verifies whether the Oauth provider exists
func (os *OauthService) IsOauthProviderExist(op string) bool {
oauthInfo := &model.Oauth{}
- // 使用 Gorm 的 Take 方法查找符合条件的记录
+ // use Gorm's Take method to find records matching the conditions
if err := DB.Where("op = ?", op).Take(oauthInfo).Error; err != nil {
return false
}
return true
}
-// Create 创建
+// Create create
func (os *OauthService) Create(oauthInfo *model.Oauth) error {
err := oauthInfo.FormatOauthInfo()
if err != nil {
@@ -468,7 +468,7 @@ func (os *OauthService) Delete(oauthInfo *model.Oauth) error {
return DB.Delete(oauthInfo).Error
}
-// Update 更新
+// Update update
func (os *OauthService) Update(oauthInfo *model.Oauth) error {
err := oauthInfo.FormatOauthInfo()
if err != nil {
@@ -477,7 +477,7 @@ func (os *OauthService) Update(oauthInfo *model.Oauth) error {
return DB.Model(oauthInfo).Updates(oauthInfo).Error
}
-// GetOauthProviders 获取所有的provider
+// GetOauthProviders get all of the provider
func (os *OauthService) GetOauthProviders() []string {
var res []string
DB.Model(&model.Oauth{}).Pluck("op", &res)
diff --git a/service/peer.go b/service/peer.go
index cf96271..f9f939f 100644
--- a/service/peer.go
+++ b/service/peer.go
@@ -8,7 +8,7 @@ import (
type PeerService struct {
}
-// FindById 根据id查找
+// FindById finds a peer by id
func (ps *PeerService) FindById(id string) *model.Peer {
p := &model.Peer{}
DB.Where("id = ?", id).First(p)
@@ -25,22 +25,22 @@ func (ps *PeerService) InfoByRowId(id uint) *model.Peer {
return p
}
-// FindByUserIdAndUuid 根据用户id和uuid查找peer
+// FindByUserIdAndUuid finds a peer by user id and uuid
func (ps *PeerService) FindByUserIdAndUuid(uuid string, userId uint) *model.Peer {
p := &model.Peer{}
DB.Where("uuid = ? and user_id = ?", uuid, userId).First(p)
return p
}
-// UuidBindUserId 绑定用户id
+// UuidBindUserId binds a user id
func (ps *PeerService) UuidBindUserId(deviceId string, uuid string, userId uint) {
peer := ps.FindByUuid(uuid)
- // 如果存在则更新
+ // if it exists, update it
if peer.RowId > 0 {
peer.UserId = userId
ps.Update(peer)
} else {
- // 不存在则创建
+ // create if it does not exist
/*if deviceId != "" {
DB.Create(&model.Peer{
Id: deviceId,
@@ -51,7 +51,7 @@ func (ps *PeerService) UuidBindUserId(deviceId string, uuid string, userId uint)
}
}
-// UuidUnbindUserId 解绑用户id, 用于用户注销
+// UuidUnbindUserId unbinds the user id, used for user logout
func (ps *PeerService) UuidUnbindUserId(uuid string, userId uint) {
peer := ps.FindByUserIdAndUuid(uuid, userId)
if peer.RowId > 0 {
@@ -59,12 +59,12 @@ func (ps *PeerService) UuidUnbindUserId(uuid string, userId uint) {
}
}
-// EraseUserId 清除用户id, 用于用户删除
+// EraseUserId clears the user id, used for user deletion
func (ps *PeerService) EraseUserId(userId uint) error {
return DB.Model(&model.Peer{}).Where("user_id = ?", userId).Update("user_id", 0).Error
}
-// ListByUserIds 根据用户id取列表
+// ListByUserIds gets the list by user ids
func (ps *PeerService) ListByUserIds(userIds []uint, page, pageSize uint) (res *model.PeerList) {
res = &model.PeerList{}
res.Page = int64(page)
@@ -91,11 +91,11 @@ func (ps *PeerService) List(page, pageSize uint, where func(tx *gorm.DB)) (res *
return
}
-// ListFilterByUserId 根据用户id过滤Peer列表
+// ListFilterByUserId filters the peer list by user id
func (ps *PeerService) ListFilterByUserId(page, pageSize uint, where func(tx *gorm.DB), userId uint) (res *model.PeerList) {
userWhere := func(tx *gorm.DB) {
tx.Where("user_id = ?", userId)
- // 如果还有额外的筛选条件,执行它
+ // if there are additional filter conditions, apply them
if where != nil {
where(tx)
}
@@ -103,30 +103,30 @@ func (ps *PeerService) ListFilterByUserId(page, pageSize uint, where func(tx *go
return ps.List(page, pageSize, userWhere)
}
-// Create 创建
+// Create create
func (ps *PeerService) Create(u *model.Peer) error {
res := DB.Create(u).Error
return res
}
-// Delete 删除, 同时也应该删除token
+// Delete deletes a peer; the associated token should also be deleted
func (ps *PeerService) Delete(u *model.Peer) error {
uuid := u.Uuid
err := DB.Delete(u).Error
if err != nil {
return err
}
- // 删除token
+ // delete the token
return AllService.UserService.FlushTokenByUuid(uuid)
}
-// GetUuidListByIDs 根据ids获取uuid列表
+// GetUuidListByIDs gets the uuid list by ids
func (ps *PeerService) GetUuidListByIDs(ids []uint) ([]string, error) {
var uuids []string
err := DB.Model(&model.Peer{}).
Where("row_id in (?)", ids).
Pluck("uuid", &uuids).Error
- //过滤uuids中的空字符串
+ // filter out empty strings in uuids
var newUuids []string
for _, uuid := range uuids {
if uuid != "" {
@@ -136,18 +136,18 @@ func (ps *PeerService) GetUuidListByIDs(ids []uint) ([]string, error) {
return newUuids, err
}
-// BatchDelete 批量删除, 同时也应该删除token
+// BatchDelete batch deletes peers; the associated tokens should also be deleted
func (ps *PeerService) BatchDelete(ids []uint) error {
uuids, err := ps.GetUuidListByIDs(ids)
err = DB.Where("row_id in (?)", ids).Delete(&model.Peer{}).Error
if err != nil {
return err
}
- // 删除token
+ // delete the token
return AllService.UserService.FlushTokenByUuids(uuids)
}
-// Update 更新
+// Update update
func (ps *PeerService) Update(u *model.Peer) error {
return DB.Model(u).Updates(u).Error
}
diff --git a/service/serverCmd.go b/service/serverCmd.go
index 4fbeb26..382e69e 100644
--- a/service/serverCmd.go
+++ b/service/serverCmd.go
@@ -39,15 +39,15 @@ func (is *ServerCmdService) Create(u *model.ServerCmd) error {
return res
}
-// SendCmd 发送命令
+// SendCmd send command
func (is *ServerCmdService) SendCmd(port int, cmd string, arg string) (string, error) {
- //组装命令
+ //assemble command
cmd = cmd + " " + arg
res, err := is.SendSocketCmd("v6", port, cmd)
if err == nil {
return res, nil
}
- //v6连接失败,尝试v4
+ //v6connection failed, trying v4
res, err = is.SendSocketCmd("v4", port, cmd)
if err == nil {
return res, nil
@@ -69,14 +69,14 @@ func (is *ServerCmdService) SendSocketCmd(ty string, port int, cmd string) (stri
return "", err
}
defer conn.Close()
- //发送命令
+ //send command
_, err = conn.Write([]byte(cmd))
if err != nil {
Logger.Debugf("%s send cmd failed: %v", ty, err)
return "", err
}
time.Sleep(100 * time.Millisecond)
- //读取返回
+ //read response
buf := make([]byte, 1024)
n, err := conn.Read(buf)
if err != nil && err.Error() != "EOF" {
diff --git a/service/shareRecord.go b/service/shareRecord.go
index cfd188c..d73ad49 100644
--- a/service/shareRecord.go
+++ b/service/shareRecord.go
@@ -8,7 +8,7 @@ import (
type ShareRecordService struct {
}
-// InfoById 根据用户id取用户信息
+// InfoById gets the share record info by id
func (srs *ShareRecordService) InfoById(id uint) *model.ShareRecord {
u := &model.ShareRecord{}
DB.Where("id = ?", id).First(u)
@@ -29,7 +29,7 @@ func (srs *ShareRecordService) List(page, pageSize uint, where func(tx *gorm.DB)
return
}
-// Create 创建
+// Create create
func (srs *ShareRecordService) Create(u *model.ShareRecord) error {
res := DB.Create(u).Error
return res
@@ -38,7 +38,7 @@ func (srs *ShareRecordService) Delete(u *model.ShareRecord) error {
return DB.Delete(u).Error
}
-// Update 更新
+// Update update
func (srs *ShareRecordService) Update(u *model.ShareRecord) error {
return DB.Model(u).Updates(u).Error
}
diff --git a/service/tag.go b/service/tag.go
index eb82532..442b3e2 100644
--- a/service/tag.go
+++ b/service/tag.go
@@ -34,24 +34,24 @@ func (s *TagService) ListByUserIdAndCollectionId(userId, cid uint) (res *model.T
}
func (s *TagService) UpdateTags(userId uint, tags map[string]uint) {
tx := DB.Begin()
- //先查询所有tag
+ //first query alltag
var allTags []*model.Tag
tx.Where("user_id = ?", userId).Find(&allTags)
for _, t := range allTags {
if _, ok := tags[t.Name]; !ok {
- //删除
+ //delete
tx.Delete(t)
} else {
if tags[t.Name] != t.Color {
- //更新
+ //update
t.Color = tags[t.Name]
tx.Save(t)
}
- //移除
+ //remove
delete(tags, t.Name)
}
}
- //新增
+ //add
for tag, color := range tags {
t := &model.Tag{}
t.Name = tag
@@ -62,7 +62,7 @@ func (s *TagService) UpdateTags(userId uint, tags map[string]uint) {
tx.Commit()
}
-// InfoById 根据用户id取用户信息
+// InfoById gets the tag info by id
func (s *TagService) InfoById(id uint) *model.Tag {
u := &model.Tag{}
DB.Where("id = ?", id).First(u)
@@ -83,7 +83,7 @@ func (s *TagService) List(page, pageSize uint, where func(tx *gorm.DB)) (res *mo
return
}
-// Create 创建
+// Create create
func (s *TagService) Create(u *model.Tag) error {
res := DB.Create(u).Error
return res
@@ -92,7 +92,7 @@ func (s *TagService) Delete(u *model.Tag) error {
return DB.Delete(u).Error
}
-// Update 更新
+// Update update
func (s *TagService) Update(u *model.Tag) error {
return DB.Model(u).Select("*").Omit("created_at").Updates(u).Error
}
diff --git a/service/user.go b/service/user.go
index 9eb7c51..f41af3f 100644
--- a/service/user.go
+++ b/service/user.go
@@ -16,35 +16,35 @@ import (
type UserService struct {
}
-// InfoById 根据用户id取用户信息
+// InfoById gets user info by user id
func (us *UserService) InfoById(id uint) *model.User {
u := &model.User{}
DB.Where("id = ?", id).First(u)
return u
}
-// InfoByUsername 根据用户名取用户信息
+// InfoByUsername get user info by username
func (us *UserService) InfoByUsername(un string) *model.User {
u := &model.User{}
DB.Where("username = ?", un).First(u)
return u
}
-// InfoByEmail 根据邮箱取用户信息
+// InfoByEmail get user info by email
func (us *UserService) InfoByEmail(email string) *model.User {
u := &model.User{}
DB.Where("email = ?", email).First(u)
return u
}
-// InfoByOpenid 根据openid取用户信息
+// InfoByOpenid gets user info by openid
func (us *UserService) InfoByOpenid(openid string) *model.User {
u := &model.User{}
DB.Where("openid = ?", openid).First(u)
return u
}
-// InfoByUsernamePassword 根据用户名密码取用户信息
+// InfoByUsernamePassword get user info by username and password
func (us *UserService) InfoByUsernamePassword(username, password string) *model.User {
if Config.Ldap.Enable {
u, err := AllService.LdapService.Authenticate(username, password)
@@ -70,7 +70,7 @@ func (us *UserService) InfoByUsernamePassword(username, password string) *model.
return u
}
-// InfoByAccesstoken 根据accesstoken取用户信息
+// InfoByAccesstoken gets user info by access token
func (us *UserService) InfoByAccessToken(token string) (*model.User, *model.UserToken) {
u := &model.User{}
ut := &model.UserToken{}
@@ -85,7 +85,7 @@ func (us *UserService) InfoByAccessToken(token string) (*model.User, *model.User
return u, ut
}
-// GenerateToken 生成token
+// GenerateToken generates a token
func (us *UserService) GenerateToken(u *model.User) string {
if len(Jwt.Key) > 0 {
return Jwt.GenerateToken(u.Id)
@@ -93,7 +93,7 @@ func (us *UserService) GenerateToken(u *model.User) string {
return utils.Md5(u.Username + time.Now().String())
}
-// Login 登录
+// Login login
func (us *UserService) Login(u *model.User, llog *model.LoginLog) *model.UserToken {
token := us.GenerateToken(u)
ut := &model.UserToken{
@@ -112,7 +112,7 @@ func (us *UserService) Login(u *model.User, llog *model.LoginLog) *model.UserTok
return ut
}
-// CurUser 获取当前用户
+// CurUser get current user
func (us *UserService) CurUser(c *gin.Context) *model.User {
user, _ := c.Get("curUser")
u, ok := user.(*model.User)
@@ -141,7 +141,7 @@ func (us *UserService) ListByIds(ids []uint) (res []*model.User) {
return res
}
-// ListByGroupId 根据组id取用户列表
+// ListByGroupId gets the user list by group id
func (us *UserService) ListByGroupId(groupId, page, pageSize uint) (res *model.UserList) {
res = us.List(page, pageSize, func(tx *gorm.DB) {
tx.Where("group_id = ?", groupId)
@@ -149,25 +149,25 @@ func (us *UserService) ListByGroupId(groupId, page, pageSize uint) (res *model.U
return
}
-// ListIdsByGroupId 根据组id取用户id列表
+// ListIdsByGroupId gets the user id list by group id
func (us *UserService) ListIdsByGroupId(groupId uint) (ids []uint) {
DB.Model(&model.User{}).Where("group_id = ?", groupId).Pluck("id", &ids)
return ids
}
-// ListIdAndNameByGroupId 根据组id取用户id和用户名列表
+// ListIdAndNameByGroupId gets the user id and username list by group id
func (us *UserService) ListIdAndNameByGroupId(groupId uint) (res []*model.User) {
DB.Model(&model.User{}).Where("group_id = ?", groupId).Select("id, username").Find(&res)
return res
}
-// CheckUserEnable 判断用户是否禁用
+// CheckUserEnable check whether the user is disabled
func (us *UserService) CheckUserEnable(u *model.User) bool {
return u.Status == model.COMMON_STATUS_ENABLE
}
-// Create 创建
+// Create create
func (us *UserService) Create(u *model.User) error {
// The initial username should be formatted, and the username should be unique
if us.IsUsernameExists(u.Username) {
@@ -183,7 +183,7 @@ func (us *UserService) Create(u *model.User) error {
return res
}
-// GetUuidByToken 根据token和user取uuid
+// GetUuidByToken gets the uuid by token and user
func (us *UserService) GetUuidByToken(u *model.User, token string) string {
ut := &model.UserToken{}
err := DB.Where("user_id = ? and token = ?", u.Id, token).First(ut).Error
@@ -193,7 +193,7 @@ func (us *UserService) GetUuidByToken(u *model.User, token string) string {
return ut.DeviceUuid
}
-// Logout 退出登录 -> 删除token, 解绑uuid
+// Logout logs out -> delete token, unbind uuid
func (us *UserService) Logout(u *model.User, token string) error {
uuid := us.GetUuidByToken(u, token)
err := DB.Where("user_id = ? and token = ?", u.Id, token).Delete(&model.UserToken{}).Error
@@ -206,40 +206,40 @@ func (us *UserService) Logout(u *model.User, token string) error {
return nil
}
-// Delete 删除用户和oauth信息
+// Delete deletes the user and oauth info
func (us *UserService) Delete(u *model.User) error {
userCount := us.getAdminUserCount()
if userCount <= 1 && us.IsAdmin(u) {
return errors.New("The last admin user cannot be deleted")
}
tx := DB.Begin()
- // 删除用户
+ // delete user
if err := tx.Delete(u).Error; err != nil {
tx.Rollback()
return err
}
- // 删除关联的 OAuth 信息
+ // delete the associated OAuth info
if err := tx.Where("user_id = ?", u.Id).Delete(&model.UserThird{}).Error; err != nil {
tx.Rollback()
return err
}
- // 删除关联的ab
+ // delete the associated ab
if err := tx.Where("user_id = ?", u.Id).Delete(&model.AddressBook{}).Error; err != nil {
tx.Rollback()
return err
}
- // 删除关联的abc
+ // delete the associated abc
if err := tx.Where("user_id = ?", u.Id).Delete(&model.AddressBookCollection{}).Error; err != nil {
tx.Rollback()
return err
}
- // 删除关联的abcr
+ // delete the associated abcr
if err := tx.Where("user_id = ?", u.Id).Delete(&model.AddressBookCollectionRule{}).Error; err != nil {
tx.Rollback()
return err
}
tx.Commit()
- // 删除关联的peer
+ // delete the associated peer
if err := AllService.PeerService.EraseUserId(u.Id); err != nil {
Logger.Warn("User deleted successfully, but failed to unlink peer.")
return nil
@@ -247,13 +247,13 @@ func (us *UserService) Delete(u *model.User) error {
return nil
}
-// Update 更新
+// Update update
func (us *UserService) Update(u *model.User) error {
currentUser := us.InfoById(u.Id)
- // 如果当前用户是管理员并且 IsAdmin 不为空,进行检查
+ // if the current user is an administrator and IsAdmin is not empty, perform the check
if us.IsAdmin(currentUser) {
adminCount := us.getAdminUserCount()
- // 如果这是唯一的管理员,确保不能禁用或取消管理员权限
+ // if this is the only administrator, make sure admin privileges cannot be disabled or revoked
if adminCount <= 1 && (!us.IsAdmin(u) || u.Status == model.COMMON_STATUS_DISABLED) {
return errors.New("The last admin user cannot be disabled or demoted")
}
@@ -261,22 +261,22 @@ func (us *UserService) Update(u *model.User) error {
return DB.Model(u).Updates(u).Error
}
-// FlushToken 清空token
+// FlushToken clears the token
func (us *UserService) FlushToken(u *model.User) error {
return DB.Where("user_id = ?", u.Id).Delete(&model.UserToken{}).Error
}
-// FlushTokenByUuid 清空token
+// FlushTokenByUuid clears the token
func (us *UserService) FlushTokenByUuid(uuid string) error {
return DB.Where("device_uuid = ?", uuid).Delete(&model.UserToken{}).Error
}
-// FlushTokenByUuids 清空token
+// FlushTokenByUuids clears the token
func (us *UserService) FlushTokenByUuids(uuids []string) error {
return DB.Where("device_uuid in (?)", uuids).Delete(&model.UserToken{}).Error
}
-// UpdatePassword 更新密码
+// UpdatePassword update password
func (us *UserService) UpdatePassword(u *model.User, password string) error {
var err error
u.Password, err = utils.EncryptPassword(password)
@@ -291,7 +291,7 @@ func (us *UserService) UpdatePassword(u *model.User, password string) error {
return err
}
-// IsAdmin 是否管理员
+// IsAdmin whether administrator
func (us *UserService) IsAdmin(u *model.User) bool {
return u != nil && *u.IsAdmin
}
@@ -304,7 +304,7 @@ func (us *UserService) RouteNames(u *model.User) []string {
return model.UserRouteNames
}
-// InfoByOauthId 根据oauth的name和openId取用户信息
+// InfoByOauthId gets user info by the oauth name and openId
func (us *UserService) InfoByOauthId(op string, openId string) *model.User {
ut := AllService.OauthService.UserThirdInfo(op, openId)
if ut.Id == 0 {
@@ -317,7 +317,7 @@ func (us *UserService) InfoByOauthId(op string, openId string) *model.User {
return u
}
-// RegisterByOauth 注册
+// RegisterByOauth register
func (us *UserService) RegisterByOauth(oauthUser *model.OauthUser, op string) (error, *model.User) {
Lock.Lock("registerByOauth")
defer Lock.UnLock("registerByOauth")
@@ -375,7 +375,7 @@ func (us *UserService) RegisterByOauth(oauthUser *model.OauthUser, op string) (e
return nil, user
}
-// GenerateUsernameByOauth 生成用户名
+// GenerateUsernameByOauth generates a username
func (us *UserService) GenerateUsernameByOauth(name string) string {
for us.IsUsernameExists(name) {
name += strconv.Itoa(rand.Intn(10)) // Append a random digit (0-9)
@@ -395,14 +395,14 @@ func (us *UserService) UserThirdInfo(userId uint, op string) *model.UserThird {
return ut
}
-// FindLatestUserIdFromLoginLogByUuid 根据uuid和设备id查找最后登录的用户id
+// FindLatestUserIdFromLoginLogByUuid finds the last logged-in user id by uuid and device id
func (us *UserService) FindLatestUserIdFromLoginLogByUuid(uuid string, deviceId string) uint {
llog := &model.LoginLog{}
DB.Where("uuid = ? and device_id = ?", uuid, deviceId).Order("id desc").First(llog)
return llog.UserId
}
-// IsPasswordEmptyById 根据用户id判断密码是否为空,主要用于第三方登录的自动注册
+// IsPasswordEmptyById checks whether the password is empty by user id, mainly used for auto-registration via third-party login
func (us *UserService) IsPasswordEmptyById(id uint) bool {
u := &model.User{}
if DB.Where("id = ?", id).First(u).Error != nil {
@@ -411,7 +411,7 @@ func (us *UserService) IsPasswordEmptyById(id uint) bool {
return u.Password == ""
}
-// IsPasswordEmptyByUsername 根据用户id判断密码是否为空,主要用于第三方登录的自动注册
+// IsPasswordEmptyByUsername checks whether the password is empty by username, mainly used for auto-registration via third-party login
func (us *UserService) IsPasswordEmptyByUsername(username string) bool {
u := &model.User{}
if DB.Where("username = ?", username).First(u).Error != nil {
@@ -420,12 +420,12 @@ func (us *UserService) IsPasswordEmptyByUsername(username string) bool {
return u.Password == ""
}
-// IsPasswordEmptyByUser 判断密码是否为空,主要用于第三方登录的自动注册
+// IsPasswordEmptyByUser check whether the password is empty, mainly used for auto-registration via third-party login
func (us *UserService) IsPasswordEmptyByUser(u *model.User) bool {
return us.IsPasswordEmptyById(u.Id)
}
-// Register 注册, 如果用户名已存在则返回nil
+// Register registers a user; if the username already exists, return nil
func (us *UserService) Register(username string, email string, password string, status model.StatusCode) *model.User {
u := &model.User{
Username: username,
@@ -486,11 +486,11 @@ func (us *UserService) getAdminUserCount() int64 {
return count
}
-// UserTokenExpireTimestamp 生成用户token过期时间
+// UserTokenExpireTimestamp generates the user token expiration time
func (us *UserService) UserTokenExpireTimestamp() int64 {
exp := Config.App.TokenExpire
if exp == 0 {
- //默认七天
+ //default seven days
exp = 604800
}
return time.Now().Add(exp).Unix()
@@ -515,7 +515,7 @@ func (us *UserService) VerifyJWT(token string) (uint, error) {
return Jwt.ParseToken(token)
}
-// IsUsernameExists 判断用户名是否存在, it will check the internal database and LDAP(if enabled)
+// IsUsernameExists check whether the username exists, it will check the internal database and LDAP(if enabled)
func (us *UserService) IsUsernameExists(username string) bool {
return us.IsUsernameExistsLocal(username) || AllService.LdapService.IsUsernameExists(username)
}
diff --git a/utils/login_limiter.go b/utils/login_limiter.go
index 9bc5bb9..97e8e45 100644
--- a/utils/login_limiter.go
+++ b/utils/login_limiter.go
@@ -6,23 +6,23 @@ import (
"time"
)
-// 安全策略配置
+// security policy configuration
type SecurityPolicy struct {
- CaptchaThreshold int // 尝试失败次数达到验证码阈值,小于0表示不启用, 0表示强制启用
- BanThreshold int // 尝试失败次数达到封禁阈值,为0表示不启用
+ CaptchaThreshold int // number of failed attempts at which the captcha is required; less than 0 means disabled, 0 means always enabled
+ BanThreshold int // number of failed attempts at which a ban is triggered; 0 means disabled
AttemptsWindow time.Duration
BanDuration time.Duration
}
-// 验证码提供者接口
+// captcha provider interface
type CaptchaProvider interface {
Generate() (id string, content string, answer string, err error)
//Validate(ip, code string) bool
- Expiration() time.Duration // 验证码过期时间, 应该小于 AttemptsWindow
- Draw(content string) (string, error) // 绘制验证码
+ Expiration() time.Duration // captcha expiration time, should be less than AttemptsWindow
+ Draw(content string) (string, error) // draw the captcha
}
-// 验证码元数据
+// captcha metadata
type CaptchaMeta struct {
Id string
Content string
@@ -30,13 +30,13 @@ type CaptchaMeta struct {
ExpiresAt time.Time
}
-// IP封禁记录
+// IP ban record
type BanRecord struct {
ExpiresAt time.Time
Reason string
}
-// 登录限制器
+// login limiter
type LoginLimiter struct {
mu sync.Mutex
policy SecurityPolicy
@@ -55,7 +55,7 @@ var defaultSecurityPolicy = SecurityPolicy{
}
func NewLoginLimiter(policy SecurityPolicy) *LoginLimiter {
- // 设置默认值
+ // set default values
if policy.AttemptsWindow == 0 {
policy.AttemptsWindow = 5 * time.Minute
}
@@ -74,19 +74,19 @@ func NewLoginLimiter(policy SecurityPolicy) *LoginLimiter {
return ll
}
-// 注册验证码提供者
+// register a captcha provider
func (ll *LoginLimiter) RegisterProvider(p CaptchaProvider) {
ll.mu.Lock()
defer ll.mu.Unlock()
ll.provider = p
}
-// isDisabled 检查是否禁用登录限制
+// isDisabled checks whether the login limiter is disabled
func (ll *LoginLimiter) isDisabled() bool {
return ll.policy.CaptchaThreshold < 0 && ll.policy.BanThreshold == 0
}
-// 记录登录失败尝试
+// record a failed login attempt
func (ll *LoginLimiter) RecordFailedAttempt(ip string) {
if ll.isDisabled() {
return
@@ -101,14 +101,14 @@ func (ll *LoginLimiter) RecordFailedAttempt(ip string) {
now := time.Now()
windowStart := now.Add(-ll.policy.AttemptsWindow)
- // 清理过期尝试
+ // clean up expired attempts
validAttempts := ll.pruneAttempts(ip, windowStart)
- // 记录新尝试
+ // record a new attempt
validAttempts = append(validAttempts, now)
ll.attempts[ip] = validAttempts
- // 检查封禁条件
+ // check ban conditions
if ll.policy.BanThreshold > 0 && len(validAttempts) >= ll.policy.BanThreshold {
ll.banIP(ip, "excessive failed attempts")
return
@@ -117,7 +117,7 @@ func (ll *LoginLimiter) RecordFailedAttempt(ip string) {
return
}
-// 生成验证码
+// generate a captcha
func (ll *LoginLimiter) RequireCaptcha() (error, CaptchaMeta) {
ll.mu.Lock()
defer ll.mu.Unlock()
@@ -131,7 +131,7 @@ func (ll *LoginLimiter) RequireCaptcha() (error, CaptchaMeta) {
return err, CaptchaMeta{}
}
- // 存储验证码
+ // store the captcha
ll.captchas[id] = CaptchaMeta{
Id: id,
Content: content,
@@ -142,29 +142,29 @@ func (ll *LoginLimiter) RequireCaptcha() (error, CaptchaMeta) {
return nil, ll.captchas[id]
}
-// 验证验证码
+// verify the captcha
func (ll *LoginLimiter) VerifyCaptcha(id, answer string) bool {
ll.mu.Lock()
defer ll.mu.Unlock()
- // 查找匹配验证码
+ // find a matching captcha
if ll.provider == nil {
return false
}
- // 获取并验证验证码
+ // get and verify the captcha
captcha, exists := ll.captchas[id]
if !exists {
return false
}
- // 清理过期验证码
+ // clean up expired captchas
if time.Now().After(captcha.ExpiresAt) {
delete(ll.captchas, id)
return false
}
- // 验证并清理状态
+ // verify and clean up state
if answer == captcha.Answer {
delete(ll.captchas, id)
return true
@@ -178,7 +178,7 @@ func (ll *LoginLimiter) DrawCaptcha(content string) (err error, str string) {
return
}
-// 清除记录窗口
+// clear the record window
func (ll *LoginLimiter) RemoveAttempts(ip string) {
ll.mu.Lock()
defer ll.mu.Unlock()
@@ -189,7 +189,7 @@ func (ll *LoginLimiter) RemoveAttempts(ip string) {
}
}
-// CheckSecurityStatus 检查安全状态
+// CheckSecurityStatus checks the security status
func (ll *LoginLimiter) CheckSecurityStatus(ip string) (banned bool, captchaRequired bool) {
if ll.isDisabled() {
return
@@ -197,21 +197,21 @@ func (ll *LoginLimiter) CheckSecurityStatus(ip string) (banned bool, captchaRequ
ll.mu.Lock()
defer ll.mu.Unlock()
- // 检查封禁状态
+ // check ban status
if banned, _ = ll.isBanned(ip); banned {
return
}
- // 清理过期数据
+ // clean up expired data
ll.pruneAttempts(ip, time.Now().Add(-ll.policy.AttemptsWindow))
- // 检查验证码要求
+ // check captcha requirement
captchaRequired = len(ll.attempts[ip]) >= ll.policy.CaptchaThreshold
return
}
-// 后台清理任务
+// background cleanup task
func (ll *LoginLimiter) cleanupRoutine() {
ticker := time.NewTicker(1 * time.Minute)
defer ticker.Stop()
@@ -226,7 +226,7 @@ func (ll *LoginLimiter) cleanupRoutine() {
}
}
-// 内部工具方法
+// internal utility methods
func (ll *LoginLimiter) isBanned(ip string) (bool, BanRecord) {
record, exists := ll.bannedIPs[ip]
if !exists {
@@ -277,19 +277,19 @@ func (ll *LoginLimiter) cleanupExpired() {
now := time.Now()
- // 清理封禁记录
+ // clean up ban records
for ip, record := range ll.bannedIPs {
if now.After(record.ExpiresAt) {
delete(ll.bannedIPs, ip)
}
}
- // 清理尝试记录
+ // clean up attempt records
for ip := range ll.attempts {
ll.pruneAttempts(ip, now.Add(-ll.policy.AttemptsWindow))
}
- // 清理验证码
+ // clean up captchas
for id := range ll.captchas {
ll.pruneCaptchas(id)
}
diff --git a/utils/login_limiter_test.go b/utils/login_limiter_test.go
index fffcb23..b36837d 100644
--- a/utils/login_limiter_test.go
+++ b/utils/login_limiter_test.go
@@ -33,7 +33,7 @@ func TestSecurityWorkflow(t *testing.T) {
limiter := NewLoginLimiter(policy)
ip := "192.168.1.100"
- // 测试正常失败记录
+ // test normal failure recording
for i := 0; i < 3; i++ {
limiter.RecordFailedAttempt(ip)
}
@@ -45,14 +45,14 @@ func TestSecurityWorkflow(t *testing.T) {
if !capRequired {
t.Error("Captcha should be required")
}
- // 测试触发封禁
+ // test triggering a ban
for i := 0; i < 3; i++ {
limiter.RecordFailedAttempt(ip)
isBanned, capRequired = limiter.CheckSecurityStatus(ip)
fmt.Printf("IP: %s, Banned: %v, Captcha Required: %v\n", ip, isBanned, capRequired)
}
- // 测试封禁状态
+ // test ban status
if isBanned, _ = limiter.CheckSecurityStatus(ip); !isBanned {
t.Error("IP should be banned")
}
@@ -64,36 +64,36 @@ func TestCaptchaFlow(t *testing.T) {
limiter.RegisterProvider(&MockCaptchaProvider{})
ip := "10.0.0.1"
- // 触发验证码要求
+ // trigger captcha requirement
limiter.RecordFailedAttempt(ip)
limiter.RecordFailedAttempt(ip)
- // 检查状态
+ // check status
if _, need := limiter.CheckSecurityStatus(ip); !need {
- t.Error("应该需要验证码")
+ t.Error("captcha should be required")
}
- // 生成验证码
+ // generate captcha
err, capc := limiter.RequireCaptcha()
if err != nil {
- t.Fatalf("生成验证码失败: %v", err)
+ t.Fatalf("failed to generate captcha: %v", err)
}
- fmt.Printf("验证码内容: %#v\n", capc)
+ fmt.Printf("captcha content: %#v\n", capc)
- // 验证成功
+ // verify successfully
if !limiter.VerifyCaptcha(capc.Id, capc.Answer) {
- t.Error("验证码应该验证成功")
+ t.Error("captcha should verify successfully")
}
- // 验证已删除
+ // verify it has been deleted
if limiter.VerifyCaptcha(capc.Id, capc.Answer) {
- t.Error("验证码应该已删除")
+ t.Error("captcha should have been deleted")
}
limiter.RemoveAttempts(ip)
- // 验证后状态
+ // state after verification
if banned, need := limiter.CheckSecurityStatus(ip); banned || need {
- t.Error("验证成功后应该重置状态")
+ t.Error("state should be reset after successful verification")
}
}
@@ -103,26 +103,26 @@ func TestCaptchaMustFlow(t *testing.T) {
limiter.RegisterProvider(&MockCaptchaProvider{})
ip := "10.0.0.1"
- // 检查状态
+ // check status
if _, need := limiter.CheckSecurityStatus(ip); !need {
- t.Error("应该需要验证码")
+ t.Error("captcha should be required")
}
- // 生成验证码
+ // generate captcha
err, capc := limiter.RequireCaptcha()
if err != nil {
- t.Fatalf("生成验证码失败: %v", err)
+ t.Fatalf("failed to generate captcha: %v", err)
}
- fmt.Printf("验证码内容: %#v\n", capc)
+ fmt.Printf("captcha content: %#v\n", capc)
- // 验证成功
+ // verify successfully
if !limiter.VerifyCaptcha(capc.Id, capc.Answer) {
- t.Error("验证码应该验证成功")
+ t.Error("captcha should verify successfully")
}
- // 验证后状态
+ // state after verification
if _, need := limiter.CheckSecurityStatus(ip); !need {
- t.Error("应该需要验证码")
+ t.Error("captcha should be required")
}
}
func TestAttemptTimeout(t *testing.T) {
@@ -131,28 +131,28 @@ func TestAttemptTimeout(t *testing.T) {
limiter.RegisterProvider(&MockCaptchaProvider{})
ip := "10.0.0.1"
- // 触发验证码要求
+ // trigger captcha requirement
limiter.RecordFailedAttempt(ip)
limiter.RecordFailedAttempt(ip)
- // 检查状态
+ // check status
if _, need := limiter.CheckSecurityStatus(ip); !need {
- t.Error("应该需要验证码")
+ t.Error("captcha should be required")
}
- // 生成验证码
+ // generate captcha
err, _ := limiter.RequireCaptcha()
if err != nil {
- t.Fatalf("生成验证码失败: %v", err)
+ t.Fatalf("failed to generate captcha: %v", err)
}
- // 等待超过 AttemptsWindow
+ // wait beyond AttemptsWindow
time.Sleep(2 * time.Second)
- // 触发验证码要求
+ // trigger captcha requirement
limiter.RecordFailedAttempt(ip)
- // 检查状态
+ // check status
if _, need := limiter.CheckSecurityStatus(ip); need {
- t.Error("不应该需要验证码")
+ t.Error("captcha should not be required")
}
}
@@ -162,27 +162,27 @@ func TestCaptchaTimeout(t *testing.T) {
limiter.RegisterProvider(&MockCaptchaProvider{})
ip := "10.0.0.1"
- // 触发验证码要求
+ // trigger captcha requirement
limiter.RecordFailedAttempt(ip)
limiter.RecordFailedAttempt(ip)
- // 检查状态
+ // check status
if _, need := limiter.CheckSecurityStatus(ip); !need {
- t.Error("应该需要验证码")
+ t.Error("captcha should be required")
}
- // 生成验证码
+ // generate captcha
err, capc := limiter.RequireCaptcha()
if err != nil {
- t.Fatalf("生成验证码失败: %v", err)
+ t.Fatalf("failed to generate captcha: %v", err)
}
- // 等待超过 CaptchaValidPeriod
+ // wait beyond CaptchaValidPeriod
time.Sleep(3 * time.Second)
- // 验证成功
+ // verify successfully
if limiter.VerifyCaptcha(capc.Id, capc.Answer) {
- t.Error("验证码应该已过期")
+ t.Error("captcha should have expired")
}
}
@@ -191,12 +191,12 @@ func TestBanFlow(t *testing.T) {
policy := SecurityPolicy{BanThreshold: 5}
limiter := NewLoginLimiter(policy)
ip := "10.0.0.1"
- // 触发ban
+ // trigger ban
for i := 0; i < 5; i++ {
limiter.RecordFailedAttempt(ip)
}
- // 检查状态
+ // check status
if banned, _ := limiter.CheckSecurityStatus(ip); !banned {
t.Error("should be banned")
}
@@ -205,12 +205,12 @@ func TestBanDisableFlow(t *testing.T) {
policy := SecurityPolicy{BanThreshold: 0}
limiter := NewLoginLimiter(policy)
ip := "10.0.0.1"
- // 触发ban
+ // trigger ban
for i := 0; i < 5; i++ {
limiter.RecordFailedAttempt(ip)
}
- // 检查状态
+ // check status
if banned, _ := limiter.CheckSecurityStatus(ip); banned {
t.Error("should not be banned")
}
@@ -219,15 +219,15 @@ func TestBanTimeout(t *testing.T) {
policy := SecurityPolicy{BanThreshold: 5, BanDuration: 1 * time.Second}
limiter := NewLoginLimiter(policy)
ip := "10.0.0.1"
- // 触发ban
- // 触发ban
+ // trigger ban
+ // trigger ban
for i := 0; i < 5; i++ {
limiter.RecordFailedAttempt(ip)
}
time.Sleep(2 * time.Second)
- // 检查状态
+ // check status
if banned, _ := limiter.CheckSecurityStatus(ip); banned {
t.Error("should not be banned")
}
@@ -237,12 +237,12 @@ func TestLimiterDisabled(t *testing.T) {
policy := SecurityPolicy{BanThreshold: 0, CaptchaThreshold: -1}
limiter := NewLoginLimiter(policy)
ip := "10.0.0.1"
- // 触发ban
+ // trigger ban
for i := 0; i < 5; i++ {
limiter.RecordFailedAttempt(ip)
}
- // 检查状态
+ // check status
if banned, capNeed := limiter.CheckSecurityStatus(ip); banned || capNeed {
fmt.Printf("IP: %s, Banned: %v, Captcha Required: %v\n", ip, banned, capNeed)
t.Error("should not be banned or need captcha")
@@ -254,37 +254,37 @@ func TestB64CaptchaFlow(t *testing.T) {
limiter.RegisterProvider(B64StringCaptchaProvider{})
ip := "10.0.0.1"
- // 触发验证码要求
+ // trigger captcha requirement
limiter.RecordFailedAttempt(ip)
limiter.RecordFailedAttempt(ip)
limiter.RecordFailedAttempt(ip)
- // 检查状态
+ // check status
if _, need := limiter.CheckSecurityStatus(ip); !need {
- t.Error("应该需要验证码")
+ t.Error("captcha should be required")
}
- // 生成验证码
+ // generate captcha
err, capc := limiter.RequireCaptcha()
if err != nil {
- t.Fatalf("生成验证码失败: %v", err)
+ t.Fatalf("failed to generate captcha: %v", err)
}
- fmt.Printf("验证码内容: %#v\n", capc)
+ fmt.Printf("captcha content: %#v\n", capc)
//draw
err, b64 := limiter.DrawCaptcha(capc.Content)
if err != nil {
- t.Fatalf("绘制验证码失败: %v", err)
+ t.Fatalf("failed to draw captcha: %v", err)
}
- fmt.Printf("验证码内容: %#v\n", b64)
+ fmt.Printf("captcha content: %#v\n", b64)
- // 验证成功
+ // verify successfully
if !limiter.VerifyCaptcha(capc.Id, capc.Answer) {
- t.Error("验证码应该验证成功")
+ t.Error("captcha should verify successfully")
}
limiter.RemoveAttempts(ip)
- // 验证后状态
+ // state after verification
if banned, need := limiter.CheckSecurityStatus(ip); banned || need {
- t.Error("验证成功后应该重置状态")
+ t.Error("state should be reset after successful verification")
}
}
diff --git a/utils/tools.go b/utils/tools.go
index a34f541..9e5e1f6 100644
--- a/utils/tools.go
+++ b/utils/tools.go
@@ -23,7 +23,7 @@ func CopyStructByJson(src, dst interface{}) {
}
}
-// CopyStructToMap 结构体转map
+// CopyStructToMap converts a struct to a map
func CopyStructToMap(src interface{}) map[string]interface{} {
var res = map[string]interface{}{}
str, _ := json.Marshal(src)
@@ -64,7 +64,7 @@ func SafeGo(f interface{}, params ...interface{}) {
}()
}
-// RandomString 生成随机字符串
+// RandomString generates a random string
func RandomString(n int) string {
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
length := len(letterBytes)
@@ -79,7 +79,7 @@ func RandomString(n int) string {
return string(b)
}
-// Keys 泛型函数,K 是键类型,V 是值类型
+// Keys generic function; K is the key type, V is the value type
func Keys[K comparable, V any](m map[K]V) []K {
keys := make([]K, 0, len(m))
for k := range m {
@@ -88,7 +88,7 @@ func Keys[K comparable, V any](m map[K]V) []K {
return keys
}
-// Values 泛型函数,K 是键类型,V 是值类型
+// Values generic function; K is the key type, V is the value type
func Values[K comparable, V any](m map[K]V) []V {
values := make([]V, 0, len(m))
for _, v := range m {