|
|
|
|
syntax = "proto3";
|
|
|
|
|
|
|
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
|
import "gogoproto/gogo.proto";
|
|
|
|
|
// import "validate/validate.proto";
|
|
|
|
|
import "google/api/annotations.proto";
|
|
|
|
|
import "google/protobuf/empty.proto";
|
|
|
|
|
|
|
|
|
|
package api.v1;
|
|
|
|
|
|
|
|
|
|
option go_package = "moredoc/api/v1;v1";
|
|
|
|
|
option java_multiple_files = true;
|
|
|
|
|
option java_package = "api.v1";
|
|
|
|
|
|
|
|
|
|
// 配置
|
|
|
|
|
message Config {
|
|
|
|
|
int64 id = 1; // 配置ID
|
|
|
|
|
string label = 2; // 配置标签
|
|
|
|
|
string name = 3; // 配置名称
|
|
|
|
|
string value = 4; // 配置值
|
|
|
|
|
string placeholder = 5; // 配置占位符
|
|
|
|
|
string input_type = 6; // 输入类型,如:textarea、number、switch等
|
|
|
|
|
string category =
|
|
|
|
|
7; // 配置分类,如:system、footer、security等,见 web/utils/enum.js
|
|
|
|
|
int32 sort = 8; // 排序,越小越靠前
|
|
|
|
|
string options =
|
|
|
|
|
9; // 配置项枚举,一个一行,如select的option选项,用 key=value 的形式
|
|
|
|
|
google.protobuf.Timestamp created_at = 10
|
|
|
|
|
[ (gogoproto.stdtime) = true ]; // 创建时间
|
|
|
|
|
google.protobuf.Timestamp updated_at = 11
|
|
|
|
|
[ (gogoproto.stdtime) = true ]; // 更新时间
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 查询配置项请求
|
|
|
|
|
message ListConfigRequest { repeated string category = 1; }
|
|
|
|
|
|
|
|
|
|
// 配置列表
|
|
|
|
|
message Configs { repeated Config config = 1; }
|
|
|
|
|
|
|
|
|
|
// 验证码配置
|
|
|
|
|
message ConfigCaptcha {
|
|
|
|
|
int32 length = 1; // 验证码长度
|
|
|
|
|
int32 width = 2; // 验证码宽度
|
|
|
|
|
int32 height = 3; // 验证码高度
|
|
|
|
|
string type = 4; // 验证码类型,见 web/utils/enum.js
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 系统配置项
|
|
|
|
|
message ConfigSystem {
|
|
|
|
|
string domain = 1; // 站点域名,如: https://moredoc.mnt.ltd
|
|
|
|
|
string title = 2; // 站点标题,首页显示
|
|
|
|
|
string keywords = 3; // 站点关键词,SEO用
|
|
|
|
|
string description = 4; // 站点描述,SEO用
|
|
|
|
|
string logo = 5; // 站点logo
|
|
|
|
|
string favicon = 6; // 站点favicon
|
|
|
|
|
string icp = 7; // 站点备案号
|
|
|
|
|
string analytics = 8; // 站点统计代码,目前只支持百度统计
|
|
|
|
|
string sitename = 9; // 站点名称
|
|
|
|
|
string copyright_start_year =
|
|
|
|
|
10; // 站点版权起始年份,如:2018,则底部显示 2018 - 2023
|
|
|
|
|
string register_background = 11; // 注册页背景图
|
|
|
|
|
string login_background = 12; // 登录页背景图
|
|
|
|
|
repeated string recommend_words = 13; // 推荐搜索词,首页展示
|
|
|
|
|
string version = 14; // 程序版本号
|
|
|
|
|
string credit_name = 15; // 积分名称
|
|
|
|
|
string sec_icp = 16; // 京公网安备
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 底链配置项,为跳转的链接地址
|
|
|
|
|
message ConfigFooter {
|
|
|
|
|
string about = 1; // 关于我们
|
|
|
|
|
string contact = 2; // 联系我们
|
|
|
|
|
string agreement = 3; // 用户协议、文库协议
|
|
|
|
|
string copyright = 4; // 版权声明
|
|
|
|
|
string feedback = 5; // 意见和建议反馈
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
message ConfigDisplay {
|
|
|
|
|
bool show_register_user_count = 1; // 是否显示注册用户数量
|
|
|
|
|
bool show_index_categories = 2; // 是否显示首页分类
|
|
|
|
|
int32 pages_per_read = 3; // 每次阅读的页数
|
|
|
|
|
string copyright_statement = 4; // 在页面最底部的版权声明
|
|
|
|
|
bool show_document_descriptions = 5; // 是否显示文档描述
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 安全配置
|
|
|
|
|
message ConfigSecurity {
|
|
|
|
|
bool is_close = 1; // 是否关闭站点
|
|
|
|
|
string close_statement = 2; // 关闭站点的说明,支持HTML
|
|
|
|
|
bool enable_register = 3; // 是否开放注册
|
|
|
|
|
bool enable_captcha_login = 4; // 是否开启登录验证码
|
|
|
|
|
bool enable_captcha_register = 5; // 是否开启注册验证码
|
|
|
|
|
bool enable_captcha_comment = 6; // 是否开启评论验证码
|
|
|
|
|
bool enable_captcha_find_password = 7; // 是否开启找回密码验证码
|
|
|
|
|
bool enable_captcha_upload = 8; // 是否开启上传验证码
|
|
|
|
|
int32 max_document_size = 9; // 文档最大大小
|
|
|
|
|
repeated string document_allowed_ext = 10; // 文档允许的扩展名
|
|
|
|
|
bool login_required = 11; // 是否登录才能访问
|
|
|
|
|
bool enable_verify_register_email = 12; // 是否开启注册邮箱验证
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 系统配置
|
|
|
|
|
message Settings {
|
|
|
|
|
ConfigSystem system = 1; // 系统配置
|
|
|
|
|
ConfigFooter footer = 2; // 底链配置
|
|
|
|
|
ConfigSecurity security = 3; // 安全配置
|
|
|
|
|
ConfigDisplay display = 4; // 显示配置
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 依赖项
|
|
|
|
|
message EnvDependent {
|
|
|
|
|
string name = 1; // 依赖名称
|
|
|
|
|
string description = 2; // 依赖描述
|
|
|
|
|
bool is_installed = 3; // 是否已安装
|
|
|
|
|
string error = 4; // 错误信息
|
|
|
|
|
google.protobuf.Timestamp checked_at = 5
|
|
|
|
|
[ (gogoproto.stdtime) = true ]; // 检测时间
|
|
|
|
|
string cmd = 6; // 检测命令
|
|
|
|
|
bool is_required = 7; // 是否必须
|
|
|
|
|
string version = 8; // 版本号
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 依赖项列表
|
|
|
|
|
message Envs { repeated EnvDependent envs = 1; }
|
|
|
|
|
|
|
|
|
|
// 系统状态
|
|
|
|
|
message Stats {
|
|
|
|
|
int64 user_count = 1; // 用户数量
|
|
|
|
|
int64 document_count = 2; // 文档数量
|
|
|
|
|
int64 category_count = 3; // 分类数量
|
|
|
|
|
int64 article_count = 4; // 文章数量
|
|
|
|
|
int64 comment_count = 5; // 评论数量
|
|
|
|
|
int64 banner_count = 6; // banner数量
|
|
|
|
|
int64 friendlink_count = 7; // 友情链接数量
|
|
|
|
|
string os = 8; // 操作系统
|
|
|
|
|
string version = 9; // 程序版本号
|
|
|
|
|
string hash = 10; // 程序构建时的 git hash
|
|
|
|
|
string build_at = 11; // 程序构建时间
|
|
|
|
|
int64 report_count = 12; // 举报数量
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
message CPUInfo {
|
|
|
|
|
int32 cores = 1; // CPU核心数
|
|
|
|
|
string model_name = 2; // CPU型号
|
|
|
|
|
float mhz = 3; // CPU主频
|
|
|
|
|
float percent = 4; // CPU使用率
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
message MemoryInfo {
|
|
|
|
|
int64 total = 1; // 总内存
|
|
|
|
|
int64 available = 2; // 可用内存
|
|
|
|
|
int64 used = 3; // 已用内存
|
|
|
|
|
int64 free = 4; // 空闲内存
|
|
|
|
|
float percent = 5; // 内存使用率
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
message DiskInfo {
|
|
|
|
|
string disk_name = 1; // 磁盘名称
|
|
|
|
|
int64 total = 2; // 总空间
|
|
|
|
|
int64 used = 3; // 已用空间
|
|
|
|
|
int64 free = 4; // 空闲空间
|
|
|
|
|
float percent = 5; // 磁盘使用率
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
message DeviceInfo {
|
|
|
|
|
CPUInfo cpu = 1; // CPU信息
|
|
|
|
|
MemoryInfo memory = 2; // 内存信息
|
|
|
|
|
repeated DiskInfo disk = 3; // 磁盘信息
|
|
|
|
|
// string os = 4; // 操作系统
|
|
|
|
|
// string os_version = 5; // 操作系统版本
|
|
|
|
|
// string kernel = 6; // 内核版本
|
|
|
|
|
// string hostname = 7; // 主机名
|
|
|
|
|
// string architecture = 8; // 架构
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 配置服务
|
|
|
|
|
service ConfigAPI {
|
|
|
|
|
|
|
|
|
|
// 获取系统配置(针对所有用户,只读)
|
|
|
|
|
rpc GetSettings(google.protobuf.Empty) returns (Settings) {
|
|
|
|
|
option (google.api.http) = {
|
|
|
|
|
get : "/api/v1/settings"
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// UpdateConfig 更新配置
|
|
|
|
|
rpc UpdateConfig(Configs) returns (google.protobuf.Empty) {
|
|
|
|
|
option (google.api.http) = {
|
|
|
|
|
put : '/api/v1/config',
|
|
|
|
|
body : '*',
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ListConfig 查询配置项
|
|
|
|
|
rpc ListConfig(ListConfigRequest) returns (Configs) {
|
|
|
|
|
option (google.api.http) = {
|
|
|
|
|
get : '/api/v1/config/list',
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取系统配置
|
|
|
|
|
rpc GetStats(google.protobuf.Empty) returns (Stats) {
|
|
|
|
|
option (google.api.http) = {
|
|
|
|
|
get : "/api/v1/stats"
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取系统环境依赖检测
|
|
|
|
|
rpc GetEnvs(google.protobuf.Empty) returns (Envs) {
|
|
|
|
|
option (google.api.http) = {
|
|
|
|
|
get : "/api/v1/envs"
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 更新站点地图
|
|
|
|
|
rpc UpdateSitemap(google.protobuf.Empty) returns (google.protobuf.Empty) {
|
|
|
|
|
option (google.api.http) = {
|
|
|
|
|
put : "/api/v1/sitemap"
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取设备信息
|
|
|
|
|
rpc GetDeviceInfo(google.protobuf.Empty) returns (DeviceInfo) {
|
|
|
|
|
option (google.api.http) = {
|
|
|
|
|
get : "/api/v1/device"
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|