You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

175 lines
5.8 KiB

2 years ago
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";
1 year ago
// 配置
2 years ago
message Config {
1 year ago
int64 id = 1; // 配置ID
string label = 2; // 配置标签
string name = 3; // 配置名称
string value = 4; // 配置值
string placeholder = 5; // 配置占位符
1 year ago
string input_type = 6; // 输入类型textarea、number、switch等
1 year ago
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 ]; // 更新时间
2 years ago
}
1 year ago
// 查询配置项请求
message ListConfigRequest { repeated string category = 1; }
2 years ago
1 year ago
// 配置列表
2 years ago
message Configs { repeated Config config = 1; }
// 验证码配置
message ConfigCaptcha {
1 year ago
int32 length = 1; // 验证码长度
int32 width = 2; // 验证码宽度
int32 height = 3; // 验证码高度
string type = 4; // 验证码类型,见 web/utils/enum.js
}
// 系统配置项
message ConfigSystem {
1 year ago
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; // 程序版本号
}
1 year ago
// 底链配置项,为跳转的链接地址
message ConfigFooter {
1 year ago
string about = 1; // 关于我们
string contact = 2; // 联系我们
string agreement = 3; // 用户协议、文库协议
string copyright = 4; // 版权声明
string feedback = 5; // 意见和建议反馈
}
// 安全配置
message ConfigSecurity {
1 year ago
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; // 是否登录才能访问
}
1 year ago
// 系统配置
message Settings {
1 year ago
ConfigSystem system = 1; // 系统配置
ConfigFooter footer = 2; // 底链配置
ConfigSecurity security = 3; // 安全配置
1 year ago
// ConfigCaptcha captcha = 4;
}
1 year ago
// 依赖项
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; // 是否必须
}
1 year ago
// 依赖项列表
message Envs { repeated EnvDependent envs = 1; }
1 year ago
// 系统状态
1 year ago
message Stats {
1 year ago
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; // 举报数量
}
1 year ago
// 配置服务
2 years ago
service ConfigAPI {
1 year ago
// 获取系统配置(针对所有用户,只读)
rpc GetSettings(google.protobuf.Empty) returns (Settings) {
option (google.api.http) = {
get : "/api/v1/settings"
};
}
2 years ago
// 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',
};
}
1 year ago
// 获取系统配置
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"
};
}
2 years ago
}