mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 05:56:38 +08:00
refactor(openflare): mount console APIs under /api/v1/openflare
Move OpenFlare route registration from RegisterCustomRoutes to v1.RegisterV1Routes so business APIs are mounted directly at /api/v1/openflare instead of under the /custom example prefix. Update handler Swagger annotations, frontend service base paths, and regenerated swagger docs accordingly.
This commit is contained in:
+7022
-7022
File diff suppressed because it is too large
Load Diff
+7022
-7022
File diff suppressed because it is too large
Load Diff
+4254
-4254
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,7 @@ function buildSearchParams(filters: object): Record<string, unknown> {
|
||||
}
|
||||
|
||||
export class AccessLogService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/access-logs';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/access-logs';
|
||||
|
||||
static list(filters: AccessLogFilters = {}): Promise<AccessLogList> {
|
||||
return this.get<AccessLogList>('/', buildSearchParams(filters));
|
||||
|
||||
@@ -7,7 +7,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
export class ApplyLogService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/apply-logs';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/apply-logs';
|
||||
|
||||
static list(query: ApplyLogListQuery = {}): Promise<ApplyLogList> {
|
||||
const params: Record<string, unknown> = {};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {BaseService} from '@/lib/services/core';
|
||||
|
||||
export class OpenFlareBaseService extends BaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare';
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
export class ConfigVersionService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/config-versions';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/config-versions';
|
||||
|
||||
static list(): Promise<ConfigVersionSummary[]> {
|
||||
return this.get<ConfigVersionSummary[]>('/');
|
||||
|
||||
@@ -231,7 +231,7 @@ function normalizeDashboardOverview(
|
||||
}
|
||||
|
||||
export class DashboardService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/dashboard';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/dashboard';
|
||||
|
||||
static async getOverview(): Promise<DashboardOverview | null> {
|
||||
const overview = await this.get<
|
||||
|
||||
@@ -2,7 +2,7 @@ import {OpenFlareBaseService} from './base.service';
|
||||
import type {DnsAccountItem, DnsAccountMutationPayload} from './types';
|
||||
|
||||
export class DnsAccountService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/dns-accounts';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/dns-accounts';
|
||||
|
||||
static async list(): Promise<DnsAccountItem[]> {
|
||||
return this.get<DnsAccountItem[]>('/');
|
||||
|
||||
@@ -10,7 +10,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
export class NodeService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/nodes';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/nodes';
|
||||
|
||||
static async listNodes(): Promise<NodeItem[]> {
|
||||
return this.get<NodeItem[]>('/');
|
||||
|
||||
@@ -8,7 +8,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
export class OptionService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/option';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/option';
|
||||
|
||||
static list(): Promise<OptionItem[]> {
|
||||
return this.get<OptionItem[]>('/');
|
||||
|
||||
@@ -2,7 +2,7 @@ import {OpenFlareBaseService} from './base.service';
|
||||
import type {OriginDetail, OriginItem, OriginMutationPayload} from './types';
|
||||
|
||||
export class OriginService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/origins';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/origins';
|
||||
|
||||
static list(): Promise<OriginItem[]> {
|
||||
return this.get<OriginItem[]>('/');
|
||||
|
||||
@@ -13,7 +13,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
export class PagesService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/pages';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/pages';
|
||||
|
||||
static listProjects(): Promise<PagesProject[]> {
|
||||
return this.get<PagesProject[]>('/');
|
||||
|
||||
@@ -2,7 +2,7 @@ import {OpenFlareBaseService} from './base.service';
|
||||
import type {ProxyRouteItem, ProxyRouteMutationPayload} from './types';
|
||||
|
||||
export class ProxyRouteService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/proxy-routes';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/proxy-routes';
|
||||
|
||||
static async list(): Promise<ProxyRouteItem[]> {
|
||||
return this.get<ProxyRouteItem[]>('/');
|
||||
|
||||
@@ -10,7 +10,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
class AcmeAccountApi extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/acme-accounts';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/acme-accounts';
|
||||
|
||||
static getDefault(): Promise<AcmeAccountItem> {
|
||||
return this.get<AcmeAccountItem>('/default');
|
||||
@@ -18,7 +18,7 @@ class AcmeAccountApi extends OpenFlareBaseService {
|
||||
}
|
||||
|
||||
export class TlsCertificateService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/tls-certificates';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/tls-certificates';
|
||||
|
||||
static async list(): Promise<TlsCertificateItem[]> {
|
||||
return this.get<TlsCertificateItem[]>('/');
|
||||
|
||||
@@ -8,10 +8,10 @@ import {OpenFlareBaseService} from './base.service';
|
||||
import type {LatestReleaseInfo, ReleaseChannel, UpgradeStreamSnapshot, UploadedServerBinaryInfo} from './types';
|
||||
|
||||
/**
|
||||
* OpenFlare 服务端升级 API(`/api/v1/custom/openflare/update/*`)。
|
||||
* OpenFlare 服务端升级 API(`/api/v1/openflare/update/*`)。
|
||||
*/
|
||||
export class UpdateService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/update';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/update';
|
||||
|
||||
private static getApiUrl(path: string): string {
|
||||
const baseURL = getApiBaseUrl();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import {OpenFlareBaseService} from './base.service';
|
||||
|
||||
export class UptimeKumaService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/uptimekuma';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/uptimekuma';
|
||||
|
||||
static sync(): Promise<void> {
|
||||
return this.post<void>('/sync');
|
||||
|
||||
@@ -11,7 +11,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
export class WafService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/waf';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/waf';
|
||||
|
||||
static async listRuleGroups(): Promise<WAFRuleGroup[]> {
|
||||
return this.get<WAFRuleGroup[]>('/rule-groups');
|
||||
|
||||
@@ -6,7 +6,7 @@ import type {
|
||||
} from './types';
|
||||
|
||||
export class WebsiteService extends OpenFlareBaseService {
|
||||
protected static override readonly basePath: string = '/api/v1/custom/openflare/managed-domains';
|
||||
protected static override readonly basePath: string = '/api/v1/openflare/managed-domains';
|
||||
|
||||
static async list(): Promise<ManagedDomainItem[]> {
|
||||
return this.get<ManagedDomainItem[]>('/');
|
||||
|
||||
@@ -28,7 +28,7 @@ import (
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/apply-logs [get]
|
||||
// @Router /api/v1/openflare/apply-logs [get]
|
||||
func GetApplyLogs(c *gin.Context) {
|
||||
result, err := ListPage(c.Request.Context(), ListQuery{
|
||||
NodeID: c.Query("node_id"),
|
||||
@@ -53,7 +53,7 @@ func GetApplyLogs(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/apply-logs/cleanup [post]
|
||||
// @Router /api/v1/openflare/apply-logs/cleanup [post]
|
||||
func CleanupApplyLogs(c *gin.Context) {
|
||||
var input CleanupInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
|
||||
@@ -29,7 +29,7 @@ func handleLogicError(c *gin.Context, err error) bool {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/config-versions [get]
|
||||
// @Router /api/v1/openflare/config-versions [get]
|
||||
func ListConfigVersionsHandler(c *gin.Context) {
|
||||
versions, err := ListConfigVersions(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -49,7 +49,7 @@ func ListConfigVersionsHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或版本不存在"
|
||||
// @Router /api/v1/custom/openflare/config-versions/{id} [get]
|
||||
// @Router /api/v1/openflare/config-versions/{id} [get]
|
||||
func GetConfigVersionHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -71,7 +71,7 @@ func GetConfigVersionHandler(c *gin.Context) {
|
||||
// @Success 200 {object} response.Any{data=model.ConfigVersion} "活跃配置版本"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限、不存在或无活跃版本"
|
||||
// @Router /api/v1/custom/openflare/config-versions/active [get]
|
||||
// @Router /api/v1/openflare/config-versions/active [get]
|
||||
func GetActiveConfigVersionHandler(c *gin.Context) {
|
||||
version, err := GetActiveConfigVersion(c.Request.Context())
|
||||
if apiutil.AbortNotFoundIfMissing(c, err, errNoActiveVersion) {
|
||||
@@ -90,7 +90,7 @@ func GetActiveConfigVersionHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/config-versions/preview [get]
|
||||
// @Router /api/v1/openflare/config-versions/preview [get]
|
||||
func PreviewConfigVersionHandler(c *gin.Context) {
|
||||
preview, err := PreviewConfigVersion(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -109,7 +109,7 @@ func PreviewConfigVersionHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/config-versions/diff [get]
|
||||
// @Router /api/v1/openflare/config-versions/diff [get]
|
||||
func DiffConfigVersionHandler(c *gin.Context) {
|
||||
diff, err := DiffConfigVersion(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -129,7 +129,7 @@ func DiffConfigVersionHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/config-versions/publish [post]
|
||||
// @Router /api/v1/openflare/config-versions/publish [post]
|
||||
func PublishConfigVersionHandler(c *gin.Context) {
|
||||
username := c.GetString("username")
|
||||
force := c.Query("force") == "true"
|
||||
@@ -151,7 +151,7 @@ func PublishConfigVersionHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或版本不存在"
|
||||
// @Router /api/v1/custom/openflare/config-versions/{id}/activate [post]
|
||||
// @Router /api/v1/openflare/config-versions/{id}/activate [post]
|
||||
func ActivateConfigVersionHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -176,7 +176,7 @@ func ActivateConfigVersionHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/config-versions/cleanup [post]
|
||||
// @Router /api/v1/openflare/config-versions/cleanup [post]
|
||||
func CleanupConfigVersionsHandler(c *gin.Context) {
|
||||
var input CleanupInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
|
||||
@@ -22,7 +22,7 @@ import (
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/dashboard/overview [get]
|
||||
// @Router /api/v1/openflare/dashboard/overview [get]
|
||||
func GetOverviewHandler(c *gin.Context) {
|
||||
overview, err := GetOverview(c.Request.Context())
|
||||
if apiutil.AbortBadRequestOnError(c, err) {
|
||||
|
||||
@@ -32,7 +32,7 @@ func handleLogicError(c *gin.Context, err error) bool {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes [get]
|
||||
// @Router /api/v1/openflare/nodes [get]
|
||||
func ListNodesHandler(c *gin.Context) {
|
||||
nodes, err := ListNodes(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -53,7 +53,7 @@ func ListNodesHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes [post]
|
||||
// @Router /api/v1/openflare/nodes [post]
|
||||
func CreateNodeHandler(c *gin.Context) {
|
||||
var input Input
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -79,7 +79,7 @@ func CreateNodeHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/update [post]
|
||||
// @Router /api/v1/openflare/nodes/{id}/update [post]
|
||||
func UpdateNodeHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -107,7 +107,7 @@ func UpdateNodeHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/nodes/{id}/delete [post]
|
||||
func DeleteNodeHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -128,7 +128,7 @@ func DeleteNodeHandler(c *gin.Context) {
|
||||
// @Success 200 {object} response.Any{data=node.BootstrapView} "引导令牌"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/bootstrap-token [get]
|
||||
// @Router /api/v1/openflare/nodes/bootstrap-token [get]
|
||||
func GetBootstrapTokenHandler(c *gin.Context) {
|
||||
view, err := GetBootstrapToken(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -146,7 +146,7 @@ func GetBootstrapTokenHandler(c *gin.Context) {
|
||||
// @Success 200 {object} response.Any{data=node.BootstrapView} "新引导令牌"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/bootstrap-token/rotate [post]
|
||||
// @Router /api/v1/openflare/nodes/bootstrap-token/rotate [post]
|
||||
func RotateBootstrapTokenHandler(c *gin.Context) {
|
||||
view, err := RotateBootstrapToken(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -167,7 +167,7 @@ func RotateBootstrapTokenHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/agent-release [get]
|
||||
// @Router /api/v1/openflare/nodes/{id}/agent-release [get]
|
||||
func GetAgentReleaseHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -193,7 +193,7 @@ func GetAgentReleaseHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/agent-update [post]
|
||||
// @Router /api/v1/openflare/nodes/{id}/agent-update [post]
|
||||
func RequestAgentUpdateHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -224,7 +224,7 @@ func RequestAgentUpdateHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/openresty-restart [post]
|
||||
// @Router /api/v1/openflare/nodes/{id}/openresty-restart [post]
|
||||
func RequestOpenrestyRestartHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -248,7 +248,7 @@ func RequestOpenrestyRestartHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/force-sync [post]
|
||||
// @Router /api/v1/openflare/nodes/{id}/force-sync [post]
|
||||
func RequestForceSyncHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -274,7 +274,7 @@ func RequestForceSyncHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/observability [get]
|
||||
// @Router /api/v1/openflare/nodes/{id}/observability [get]
|
||||
func GetObservabilityHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -303,7 +303,7 @@ func GetObservabilityHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或节点不存在"
|
||||
// @Router /api/v1/custom/openflare/nodes/{id}/observability/cleanup [post]
|
||||
// @Router /api/v1/openflare/nodes/{id}/observability/cleanup [post]
|
||||
func CleanupHealthEventsHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
|
||||
@@ -31,7 +31,7 @@ import (
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/access-logs [get]
|
||||
// @Router /api/v1/openflare/access-logs [get]
|
||||
func GetAccessLogsHandler(c *gin.Context) {
|
||||
logs, err := ListAccessLogs(c.Request.Context(), readAccessLogQuery(c))
|
||||
if apiutil.AbortBadRequestOnError(c, err) {
|
||||
@@ -60,7 +60,7 @@ func GetAccessLogsHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/access-logs/folds [get]
|
||||
// @Router /api/v1/openflare/access-logs/folds [get]
|
||||
func GetFoldedAccessLogsHandler(c *gin.Context) {
|
||||
query := readAccessLogQuery(c)
|
||||
query.FoldMinutes = readQueryInt(c, "fold_minutes")
|
||||
@@ -92,7 +92,7 @@ func GetFoldedAccessLogsHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/access-logs/folds/ip-summary [get]
|
||||
// @Router /api/v1/openflare/access-logs/folds/ip-summary [get]
|
||||
func GetFoldedAccessLogIPsHandler(c *gin.Context) {
|
||||
result, err := ListFoldedAccessLogIPs(c.Request.Context(), FoldedAccessLogIPQuery{
|
||||
NodeID: c.Query("node_id"),
|
||||
@@ -130,7 +130,7 @@ func GetFoldedAccessLogIPsHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/access-logs/ip-summary [get]
|
||||
// @Router /api/v1/openflare/access-logs/ip-summary [get]
|
||||
func GetAccessLogIPSummariesHandler(c *gin.Context) {
|
||||
result, err := ListAccessLogIPSummaries(c.Request.Context(), AccessLogIPSummaryQuery{
|
||||
NodeID: c.Query("node_id"),
|
||||
@@ -163,7 +163,7 @@ func GetAccessLogIPSummariesHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/access-logs/ip-summary/trend [get]
|
||||
// @Router /api/v1/openflare/access-logs/ip-summary/trend [get]
|
||||
func GetAccessLogIPTrendHandler(c *gin.Context) {
|
||||
result, err := GetAccessLogIPTrend(c.Request.Context(), AccessLogIPTrendQuery{
|
||||
NodeID: c.Query("node_id"),
|
||||
@@ -191,7 +191,7 @@ func GetAccessLogIPTrendHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/access-logs/cleanup [post]
|
||||
// @Router /api/v1/openflare/access-logs/cleanup [post]
|
||||
func CleanupAccessLogsHandler(c *gin.Context) {
|
||||
var input AccessLogCleanupInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
|
||||
@@ -23,9 +23,9 @@ import (
|
||||
// @Success 200 {object} response.Any{data=option.statusView} "公开状态"
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/status [get]
|
||||
// @Router /api/v1/openflare/status [get]
|
||||
func GetStatusHandler(c *gin.Context) {
|
||||
view, err := getStatus(c.Request.Context(), "/api/v1/custom/openflare")
|
||||
view, err := getStatus(c.Request.Context(), "/api/v1/openflare")
|
||||
if apiutil.AbortBadRequestOnError(c, err) {
|
||||
return
|
||||
}
|
||||
@@ -40,7 +40,7 @@ func GetStatusHandler(c *gin.Context) {
|
||||
// @Success 200 {object} response.Any{data=string} "系统公告"
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/notice [get]
|
||||
// @Router /api/v1/openflare/notice [get]
|
||||
// GetNoticeHandler returns the notice content.
|
||||
func GetNoticeHandler(c *gin.Context) {
|
||||
notice, err := getNotice(c.Request.Context())
|
||||
@@ -58,7 +58,7 @@ func GetNoticeHandler(c *gin.Context) {
|
||||
// @Success 200 {object} response.Any{data=string} "关于信息"
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/about [get]
|
||||
// @Router /api/v1/openflare/about [get]
|
||||
// GetAboutHandler returns the about content.
|
||||
func GetAboutHandler(c *gin.Context) {
|
||||
about, err := getAbout(c.Request.Context())
|
||||
@@ -79,7 +79,7 @@ func GetAboutHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/option [get]
|
||||
// @Router /api/v1/openflare/option [get]
|
||||
// ListOptionsHandler lists OpenFlare options.
|
||||
func ListOptionsHandler(c *gin.Context) {
|
||||
options, err := listOptions(c.Request.Context())
|
||||
@@ -102,7 +102,7 @@ func ListOptionsHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/option/update [post]
|
||||
// @Router /api/v1/openflare/option/update [post]
|
||||
// UpdateOptionHandler updates a single option.
|
||||
func UpdateOptionHandler(c *gin.Context) {
|
||||
var option model.OpenFlareOption
|
||||
@@ -128,7 +128,7 @@ func UpdateOptionHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/option/update-batch [post]
|
||||
// @Router /api/v1/openflare/option/update-batch [post]
|
||||
// UpdateOptionsBatchHandler updates options in batch.
|
||||
func UpdateOptionsBatchHandler(c *gin.Context) {
|
||||
var payload optionBatchPayload
|
||||
@@ -154,7 +154,7 @@ func UpdateOptionsBatchHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/option/geoip/lookup [post]
|
||||
// @Router /api/v1/openflare/option/geoip/lookup [post]
|
||||
// LookupGeoIPHandler performs a GeoIP lookup.
|
||||
func LookupGeoIPHandler(c *gin.Context) {
|
||||
var request geoIPLookupRequest
|
||||
@@ -181,7 +181,7 @@ func LookupGeoIPHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/option/database/cleanup [post]
|
||||
// @Router /api/v1/openflare/option/database/cleanup [post]
|
||||
// CleanupDatabaseHandler cleans up observability data.
|
||||
func CleanupDatabaseHandler(c *gin.Context) {
|
||||
var input databaseCleanupInput
|
||||
@@ -208,7 +208,7 @@ func CleanupDatabaseHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/uptimekuma/sync [post]
|
||||
// @Router /api/v1/openflare/uptimekuma/sync [post]
|
||||
// SyncUptimeKumaHandler triggers UptimeKuma sync.
|
||||
func SyncUptimeKumaHandler(c *gin.Context) {
|
||||
if apiutil.AbortBadRequestOnError(c, syncUptimeKuma(c.Request.Context())) {
|
||||
|
||||
@@ -29,7 +29,7 @@ func handleLogicError(c *gin.Context, err error) bool {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/origins [get]
|
||||
// @Router /api/v1/openflare/origins [get]
|
||||
func GetOrigins(c *gin.Context) {
|
||||
origins, err := ListOrigins(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -49,7 +49,7 @@ func GetOrigins(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或源站不存在"
|
||||
// @Router /api/v1/custom/openflare/origins/{id} [get]
|
||||
// @Router /api/v1/openflare/origins/{id} [get]
|
||||
func GetOrigin(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -74,7 +74,7 @@ func GetOrigin(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/origins [post]
|
||||
// @Router /api/v1/openflare/origins [post]
|
||||
func CreateOriginHandler(c *gin.Context) {
|
||||
var input Input
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -100,7 +100,7 @@ func CreateOriginHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或源站不存在"
|
||||
// @Router /api/v1/custom/openflare/origins/{id}/update [post]
|
||||
// @Router /api/v1/openflare/origins/{id}/update [post]
|
||||
func UpdateOriginHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -128,7 +128,7 @@ func UpdateOriginHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或源站不存在"
|
||||
// @Router /api/v1/custom/openflare/origins/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/origins/{id}/delete [post]
|
||||
func DeleteOriginHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
|
||||
@@ -45,7 +45,7 @@ func deploymentIDParam(c *gin.Context) (uint, bool) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages [get]
|
||||
// @Router /api/v1/openflare/pages [get]
|
||||
func ListProjectsHandler(c *gin.Context) {
|
||||
projects, err := ListProjects(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -67,7 +67,7 @@ func ListProjectsHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "项目不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/{id} [get]
|
||||
// @Router /api/v1/openflare/pages/{id} [get]
|
||||
func GetProjectHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -93,7 +93,7 @@ func GetProjectHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages [post]
|
||||
// @Router /api/v1/openflare/pages [post]
|
||||
func CreateProjectHandler(c *gin.Context) {
|
||||
var input Input
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -121,7 +121,7 @@ func CreateProjectHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "项目不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/{id}/update [post]
|
||||
// @Router /api/v1/openflare/pages/{id}/update [post]
|
||||
func UpdateProjectHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -151,7 +151,7 @@ func UpdateProjectHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "项目不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/pages/{id}/delete [post]
|
||||
func DeleteProjectHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -176,7 +176,7 @@ func DeleteProjectHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "项目不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/{id}/deployments [get]
|
||||
// @Router /api/v1/openflare/pages/{id}/deployments [get]
|
||||
func ListDeploymentsHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -204,7 +204,7 @@ func ListDeploymentsHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "项目不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/{id}/deployments/upload [post]
|
||||
// @Router /api/v1/openflare/pages/{id}/deployments/upload [post]
|
||||
func UploadDeploymentHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -236,7 +236,7 @@ func UploadDeploymentHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "项目或部署不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/{id}/deployments/{deployment_id}/activate [post]
|
||||
// @Router /api/v1/openflare/pages/{id}/deployments/{deployment_id}/activate [post]
|
||||
func ActivateDeploymentHandler(c *gin.Context) {
|
||||
projectID, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -267,7 +267,7 @@ func ActivateDeploymentHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "项目或部署不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/{id}/deployments/{deployment_id}/delete [post]
|
||||
// @Router /api/v1/openflare/pages/{id}/deployments/{deployment_id}/delete [post]
|
||||
func DeleteDeploymentHandler(c *gin.Context) {
|
||||
projectID, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -296,7 +296,7 @@ func DeleteDeploymentHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "部署不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/pages/deployments/{deployment_id}/files [get]
|
||||
// @Router /api/v1/openflare/pages/deployments/{deployment_id}/files [get]
|
||||
func ListDeploymentFilesHandler(c *gin.Context) {
|
||||
deploymentID, ok := deploymentIDParam(c)
|
||||
if !ok {
|
||||
|
||||
@@ -29,7 +29,7 @@ func handleLogicError(c *gin.Context, err error) bool {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/proxy-routes [get]
|
||||
// @Router /api/v1/openflare/proxy-routes [get]
|
||||
func GetProxyRoutes(c *gin.Context) {
|
||||
routes, err := ListProxyRoutes(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -49,7 +49,7 @@ func GetProxyRoutes(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或规则不存在"
|
||||
// @Router /api/v1/custom/openflare/proxy-routes/{id} [get]
|
||||
// @Router /api/v1/openflare/proxy-routes/{id} [get]
|
||||
func GetProxyRouteHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -74,7 +74,7 @@ func GetProxyRouteHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或不存在"
|
||||
// @Router /api/v1/custom/openflare/proxy-routes [post]
|
||||
// @Router /api/v1/openflare/proxy-routes [post]
|
||||
func CreateProxyRouteHandler(c *gin.Context) {
|
||||
var input Input
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -100,7 +100,7 @@ func CreateProxyRouteHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或规则不存在"
|
||||
// @Router /api/v1/custom/openflare/proxy-routes/{id}/update [post]
|
||||
// @Router /api/v1/openflare/proxy-routes/{id}/update [post]
|
||||
func UpdateProxyRouteHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -128,7 +128,7 @@ func UpdateProxyRouteHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 404 {object} response.Any "无权限或规则不存在"
|
||||
// @Router /api/v1/custom/openflare/proxy-routes/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/proxy-routes/{id}/delete [post]
|
||||
func DeleteProxyRouteHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
|
||||
@@ -31,7 +31,7 @@ func handleLogicError(c *gin.Context, err error) bool {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates [get]
|
||||
// @Router /api/v1/openflare/tls-certificates [get]
|
||||
func GetCertificates(c *gin.Context) {
|
||||
certificates, err := ListCertificates(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -53,7 +53,7 @@ func GetCertificates(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/{id} [get]
|
||||
// @Router /api/v1/openflare/tls-certificates/{id} [get]
|
||||
func GetCertificateDetail(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -79,7 +79,7 @@ func GetCertificateDetail(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/{id}/content [get]
|
||||
// @Router /api/v1/openflare/tls-certificates/{id}/content [get]
|
||||
func GetCertificateContentHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -105,7 +105,7 @@ func GetCertificateContentHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates [post]
|
||||
// @Router /api/v1/openflare/tls-certificates [post]
|
||||
func CreateCertificateHandler(c *gin.Context) {
|
||||
var input CertificateInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -133,7 +133,7 @@ func CreateCertificateHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/{id}/update [post]
|
||||
// @Router /api/v1/openflare/tls-certificates/{id}/update [post]
|
||||
func UpdateCertificateHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -166,7 +166,7 @@ func UpdateCertificateHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/import-file [post]
|
||||
// @Router /api/v1/openflare/tls-certificates/import-file [post]
|
||||
func ImportCertificateFile(c *gin.Context) {
|
||||
name := c.PostForm("name")
|
||||
remark := c.PostForm("remark")
|
||||
@@ -200,7 +200,7 @@ func ImportCertificateFile(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/tls-certificates/{id}/delete [post]
|
||||
func DeleteCertificateHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -225,7 +225,7 @@ func DeleteCertificateHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/apply [post]
|
||||
// @Router /api/v1/openflare/tls-certificates/apply [post]
|
||||
func ApplyCertificateHandler(c *gin.Context) {
|
||||
var input ApplyInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -253,7 +253,7 @@ func ApplyCertificateHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/{id}/update-acme [post]
|
||||
// @Router /api/v1/openflare/tls-certificates/{id}/update-acme [post]
|
||||
func UpdateACMECertificateHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -285,7 +285,7 @@ func UpdateACMECertificateHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/{id}/convert-acme [post]
|
||||
// @Router /api/v1/openflare/tls-certificates/{id}/convert-acme [post]
|
||||
func ConvertCertificateToACMEHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -315,7 +315,7 @@ func ConvertCertificateToACMEHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/tls-certificates/{id}/renew [post]
|
||||
// @Router /api/v1/openflare/tls-certificates/{id}/renew [post]
|
||||
func RenewCertificateHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -339,7 +339,7 @@ func RenewCertificateHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/managed-domains [get]
|
||||
// @Router /api/v1/openflare/managed-domains [get]
|
||||
func GetManagedDomains(c *gin.Context) {
|
||||
domains, err := ListManagedDomains(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -361,7 +361,7 @@ func GetManagedDomains(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/managed-domains [post]
|
||||
// @Router /api/v1/openflare/managed-domains [post]
|
||||
func CreateManagedDomainHandler(c *gin.Context) {
|
||||
var input ManagedDomainInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -389,7 +389,7 @@ func CreateManagedDomainHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/managed-domains/{id}/update [post]
|
||||
// @Router /api/v1/openflare/managed-domains/{id}/update [post]
|
||||
func UpdateManagedDomainHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -419,7 +419,7 @@ func UpdateManagedDomainHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/managed-domains/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/managed-domains/{id}/delete [post]
|
||||
func DeleteManagedDomainHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -443,7 +443,7 @@ func DeleteManagedDomainHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/managed-domains/match [get]
|
||||
// @Router /api/v1/openflare/managed-domains/match [get]
|
||||
func MatchManagedDomainCertificateHandler(c *gin.Context) {
|
||||
domain := strings.TrimSpace(c.Query("domain"))
|
||||
result, err := MatchManagedDomainCertificate(c.Request.Context(), domain)
|
||||
@@ -464,7 +464,7 @@ func MatchManagedDomainCertificateHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/dns-accounts [get]
|
||||
// @Router /api/v1/openflare/dns-accounts [get]
|
||||
func GetDNSAccounts(c *gin.Context) {
|
||||
accounts, err := ListDNSAccounts(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -486,7 +486,7 @@ func GetDNSAccounts(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/dns-accounts [post]
|
||||
// @Router /api/v1/openflare/dns-accounts [post]
|
||||
func CreateDNSAccountHandler(c *gin.Context) {
|
||||
var input DNSAccountInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -514,7 +514,7 @@ func CreateDNSAccountHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/dns-accounts/{id}/update [post]
|
||||
// @Router /api/v1/openflare/dns-accounts/{id}/update [post]
|
||||
func UpdateDNSAccountHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -544,7 +544,7 @@ func UpdateDNSAccountHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/dns-accounts/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/dns-accounts/{id}/delete [post]
|
||||
func DeleteDNSAccountHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -568,7 +568,7 @@ func DeleteDNSAccountHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/acme-accounts/default [get]
|
||||
// @Router /api/v1/openflare/acme-accounts/default [get]
|
||||
func GetDefaultAcmeAccountHandler(c *gin.Context) {
|
||||
account, err := GetDefaultAcmeAccount(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
|
||||
@@ -33,7 +33,7 @@ var upgradeLogsUpgrader = websocket.Upgrader{
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/update/latest-release [get]
|
||||
// @Router /api/v1/openflare/update/latest-release [get]
|
||||
func GetLatestReleaseHandler(c *gin.Context) {
|
||||
release, err := GetLatestRelease(c.Request.Context(), c.Query("channel"))
|
||||
if apiutil.AbortBadRequestOnError(c, err) {
|
||||
@@ -55,7 +55,7 @@ func GetLatestReleaseHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/update/upgrade [post]
|
||||
// @Router /api/v1/openflare/update/upgrade [post]
|
||||
func UpgradeServerHandler(c *gin.Context) {
|
||||
var request upgradeRequest
|
||||
if err := bindOptionalJSON(c.Request.Body, &request); err != nil {
|
||||
@@ -82,7 +82,7 @@ func UpgradeServerHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "功能已禁用或参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Router /api/v1/custom/openflare/update/manual-upload [post]
|
||||
// @Router /api/v1/openflare/update/manual-upload [post]
|
||||
func UploadManualServerBinaryHandler(c *gin.Context) {
|
||||
if apiutil.AbortBadRequestOnError(c, UploadManualBinary()) {
|
||||
return
|
||||
@@ -99,7 +99,7 @@ func UploadManualServerBinaryHandler(c *gin.Context) {
|
||||
// @Failure 400 {object} response.Any "功能已禁用或参数错误"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Router /api/v1/custom/openflare/update/manual-upgrade [post]
|
||||
// @Router /api/v1/openflare/update/manual-upgrade [post]
|
||||
func ConfirmManualServerUpgradeHandler(c *gin.Context) {
|
||||
if apiutil.AbortBadRequestOnError(c, ConfirmManualUpgrade()) {
|
||||
return
|
||||
@@ -114,7 +114,7 @@ func ConfirmManualServerUpgradeHandler(c *gin.Context) {
|
||||
// @Success 101 {object} update.StreamSnapshot "WebSocket 升级日志流"
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Router /api/v1/custom/openflare/update/logs/ws [get]
|
||||
// @Router /api/v1/openflare/update/logs/ws [get]
|
||||
func StreamServerUpgradeLogsHandler(c *gin.Context) {
|
||||
conn, err := upgradeLogsUpgrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
|
||||
@@ -45,7 +45,7 @@ func routeIDParam(c *gin.Context) (uint, bool) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/rule-groups [get]
|
||||
// @Router /api/v1/openflare/waf/rule-groups [get]
|
||||
func ListRuleGroupsHandler(c *gin.Context) {
|
||||
groups, err := ListRuleGroups(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -67,7 +67,7 @@ func ListRuleGroupsHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/rule-groups/{id} [get]
|
||||
// @Router /api/v1/openflare/waf/rule-groups/{id} [get]
|
||||
func GetRuleGroupHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -93,7 +93,7 @@ func GetRuleGroupHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/rule-groups [post]
|
||||
// @Router /api/v1/openflare/waf/rule-groups [post]
|
||||
func CreateRuleGroupHandler(c *gin.Context) {
|
||||
var input RuleGroupInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -121,7 +121,7 @@ func CreateRuleGroupHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/rule-groups/{id}/update [post]
|
||||
// @Router /api/v1/openflare/waf/rule-groups/{id}/update [post]
|
||||
func UpdateRuleGroupHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -151,7 +151,7 @@ func UpdateRuleGroupHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/rule-groups/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/waf/rule-groups/{id}/delete [post]
|
||||
func DeleteRuleGroupHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -178,7 +178,7 @@ func DeleteRuleGroupHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/rule-groups/{id}/sites [post]
|
||||
// @Router /api/v1/openflare/waf/rule-groups/{id}/sites [post]
|
||||
func ReplaceRuleGroupSitesHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -208,7 +208,7 @@ func ReplaceRuleGroupSitesHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/sites/{route_id}/rule-groups [get]
|
||||
// @Router /api/v1/openflare/waf/sites/{route_id}/rule-groups [get]
|
||||
func GetSiteRuleGroupsHandler(c *gin.Context) {
|
||||
routeID, ok := routeIDParam(c)
|
||||
if !ok {
|
||||
@@ -236,7 +236,7 @@ func GetSiteRuleGroupsHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/sites/{route_id}/rule-groups [post]
|
||||
// @Router /api/v1/openflare/waf/sites/{route_id}/rule-groups [post]
|
||||
func ReplaceSiteRuleGroupsHandler(c *gin.Context) {
|
||||
routeID, ok := routeIDParam(c)
|
||||
if !ok {
|
||||
@@ -264,7 +264,7 @@ func ReplaceSiteRuleGroupsHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/ip-groups [get]
|
||||
// @Router /api/v1/openflare/waf/ip-groups [get]
|
||||
func ListIPGroupsHandler(c *gin.Context) {
|
||||
groups, err := ListIPGroups(c.Request.Context())
|
||||
if handleLogicError(c, err) {
|
||||
@@ -286,7 +286,7 @@ func ListIPGroupsHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/ip-groups/{id} [get]
|
||||
// @Router /api/v1/openflare/waf/ip-groups/{id} [get]
|
||||
func GetIPGroupHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -312,7 +312,7 @@ func GetIPGroupHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/ip-groups [post]
|
||||
// @Router /api/v1/openflare/waf/ip-groups [post]
|
||||
func CreateIPGroupHandler(c *gin.Context) {
|
||||
var input IPGroupInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
@@ -340,7 +340,7 @@ func CreateIPGroupHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/ip-groups/{id}/update [post]
|
||||
// @Router /api/v1/openflare/waf/ip-groups/{id}/update [post]
|
||||
func UpdateIPGroupHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -370,7 +370,7 @@ func UpdateIPGroupHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/ip-groups/{id}/delete [post]
|
||||
// @Router /api/v1/openflare/waf/ip-groups/{id}/delete [post]
|
||||
func DeleteIPGroupHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -395,7 +395,7 @@ func DeleteIPGroupHandler(c *gin.Context) {
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 404 {object} response.Any "记录不存在"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/ip-groups/{id}/sync [post]
|
||||
// @Router /api/v1/openflare/waf/ip-groups/{id}/sync [post]
|
||||
func SyncIPGroupHandler(c *gin.Context) {
|
||||
id, ok := apiutil.IDParam(c)
|
||||
if !ok {
|
||||
@@ -421,7 +421,7 @@ func SyncIPGroupHandler(c *gin.Context) {
|
||||
// @Failure 401 {object} response.Any "未登录"
|
||||
// @Failure 403 {object} response.Any "无管理员权限"
|
||||
// @Failure 500 {object} response.Any "内部错误"
|
||||
// @Router /api/v1/custom/openflare/waf/ip-groups/test [post]
|
||||
// @Router /api/v1/openflare/waf/ip-groups/test [post]
|
||||
func TestIPGroupAutoConfigHandler(c *gin.Context) {
|
||||
var input IPGroupAutoTestInput
|
||||
if !apiutil.BindJSON(c, &input) {
|
||||
|
||||
@@ -6,7 +6,6 @@ package v1
|
||||
|
||||
import (
|
||||
"github.com/Rain-kl/Wavelet/internal/apps/custom"
|
||||
ofrouter "github.com/Rain-kl/Wavelet/internal/router/v1/openflare"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -15,6 +14,5 @@ func RegisterCustomRoutes(apiV1Router *gin.RouterGroup) {
|
||||
customRouter := apiV1Router.Group("/custom")
|
||||
{
|
||||
customRouter.GET("/hello", custom.Hello)
|
||||
ofrouter.RegisterV1Routes(customRouter)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package openflare registers OpenFlare HTTP routes.
|
||||
// Management console APIs are mounted via RegisterV1Routes under /api/v1/custom/openflare.
|
||||
// Management console APIs are mounted via RegisterV1Routes under /api/v1/openflare.
|
||||
// Agent/Relay/Flared protocol routes are mounted via RegisterRoutes under /api.
|
||||
package openflare
|
||||
|
||||
|
||||
@@ -5,13 +5,12 @@ package openflare
|
||||
|
||||
import "github.com/gin-gonic/gin"
|
||||
|
||||
// V1BasePath is the OpenFlare console API prefix under /api/v1/custom.
|
||||
const V1BasePath = "/api/v1/custom/openflare"
|
||||
// V1BasePath is the OpenFlare console API prefix under /api/v1.
|
||||
const V1BasePath = "/api/v1/openflare"
|
||||
|
||||
// RegisterV1Routes mounts OpenFlare management console APIs under /custom/openflare.
|
||||
// The parent group must already be the /custom router group from v1/custom.go.
|
||||
func RegisterV1Routes(customGroup *gin.RouterGroup) {
|
||||
group := customGroup.Group("/openflare")
|
||||
// RegisterV1Routes mounts OpenFlare management console APIs under /api/v1/openflare.
|
||||
func RegisterV1Routes(apiV1Router *gin.RouterGroup) {
|
||||
group := apiV1Router.Group("/openflare")
|
||||
registerOptionRoutes(group)
|
||||
registerOriginRoutes(group)
|
||||
registerApplyLogRoutes(group)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
package v1
|
||||
|
||||
import (
|
||||
ofrouter "github.com/Rain-kl/Wavelet/internal/router/v1/openflare"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -16,6 +17,9 @@ func RegisterV1Routes(apiV1Router *gin.RouterGroup, apiGroup *gin.RouterGroup) {
|
||||
// 2. Admin routes
|
||||
RegisterAdminRoutes(apiV1Router)
|
||||
|
||||
// 3. Register custom business routes
|
||||
// 3. OpenFlare management console APIs
|
||||
ofrouter.RegisterV1Routes(apiV1Router)
|
||||
|
||||
// 4. Custom business routes (example only)
|
||||
RegisterCustomRoutes(apiV1Router)
|
||||
}
|
||||
|
||||
@@ -73,10 +73,11 @@ sidebar: false
|
||||
- 移除 `internal/router/openflare` 中与 Wavelet `/api/v1` 重复的 legacy 认证路由(用户登录/注册、OAuth、Cap、认证源等),统一由 Wavelet 内置用户/OAuth/Cap 模块提供。
|
||||
- OpenFlare 路由注册统一收敛至 `internal/router/v1/openflare/`(`register_*.go` + `RegisterV1Routes`);`internal/apps/openflare/*/routers.go` 仅保留 Handler 与业务逻辑。
|
||||
- 将 OpenFlare 路由注册包从 `internal/router/openflare/` 迁移至 `internal/router/v1/openflare/`,与 v1 路由分层目录结构对齐。
|
||||
- OpenFlare 管理控制台 API 统一迁移至 `/api/v1/custom/openflare/*`,响应格式对齐 Wavelet `{error_msg, data}` + `response.Abort*`。
|
||||
- OpenFlare 管理端路由注册从 `RegisterCustomRoutes` 移至 `v1.RegisterV1Routes`,API 前缀由 `/api/v1/custom/openflare` 调整为 `/api/v1/openflare`。
|
||||
- OpenFlare 管理控制台 API 统一迁移至 `/api/v1/openflare/*`,响应格式对齐 Wavelet `{error_msg, data}` + `response.Abort*`。
|
||||
- `/api/*` 仅保留 Agent/Relay/Flared 节点协议路由(legacy `{success, message, data}` 信封);控制台鉴权改为 `apiutil.AdminRequired()`。
|
||||
- 前端 OpenFlare Service 层由 `LegacyOpenFlareBaseService` 切换为 `OpenFlareBaseService`(`BaseService` + v1 路径)。
|
||||
- 为 OpenFlare v1 管理端 API 补充 Swagger 注解(`/api/v1/custom/openflare/*`,约 99 个端点)。
|
||||
- 为 OpenFlare v1 管理端 API 补充 Swagger 注解(`/api/v1/openflare/*`,约 99 个端点)。
|
||||
- 移除已无引用的 `internal/apps/openflare/auth/`、`compat/auth.go`、`compat/routes.go` 及前端 `legacy-base.service.ts`。
|
||||
|
||||
## [v2.3.4] - 2026-06-17
|
||||
|
||||
Reference in New Issue
Block a user