backend: require confirmation for signed channel updates [CI]
ci/woodpecker/pr/verify Pipeline failed
ci/woodpecker/pr/web-build unknown status

This commit is contained in:
justme committed 2026-10-07 12:57:20 +08:00
1 parent 7160de2a36
commit 84f9d211bc
62 files changed
+1717 -70

No files matched your search

+255
View File
@@ -21,6 +21,23 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/public/ipv6": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** IPv6 configuration and collector diagnostics without addresses */
get: operations["ipv6_get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/public/lines/{line_id}": {
parameters: {
query?: never;
@@ -851,6 +868,41 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/admin/backend/update": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Current channel and host-verified backend update */
get: operations["backend_update_get"];
put?: never;
/** Confirm one verified backend release before the host restarts it */
post: operations["backend_update_confirm"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/admin/backend/update/live": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Server-sent backend update notifications */
get: operations["backend_update_live"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/api/admin/links": {
parameters: {
query?: never;
@@ -1011,6 +1063,13 @@ export interface components {
ipv6_host: string;
/** @default false */
ipv6_supported: boolean;
ipv6?: null | components["schemas"]["Ipv6DiagnosticDto"];
};
AgentIpv6Dto: {
agent_id: string;
name: string;
online: boolean;
ipv6: components["schemas"]["Ipv6DiagnosticDto"];
};
AgentPatchRequest: {
name: null | string;
@@ -1030,6 +1089,15 @@ export interface components {
/** Format: date-time */
revoked_at: unknown;
};
BackendUpdateDto: {
channel: string;
enabled: boolean;
state: string;
current_tag: null | string;
current_digest: null | string;
available: null | components["schemas"]["ReleaseDto"];
error: null | string;
};
BlocksDto: {
transport: string;
pacer: string;
@@ -1046,6 +1114,7 @@ export interface components {
BuildInfoDto: {
backend: components["schemas"]["BuildDto"];
nodes: components["schemas"]["NodeBuildDto"][];
backend_update?: null | components["schemas"]["BackendUpdateDto"];
};
ChangePasswordRequest: {
password: string;
@@ -1074,6 +1143,10 @@ export interface components {
[key: string]: null | number | string;
};
};
ConfirmBackendUpdateRequest: {
/** Format: int64 */
seq: number | string;
};
ConnectedProbeDto: {
probe_id: string;
version: null | string;
@@ -1253,6 +1326,18 @@ export interface components {
macos: string;
windows: string;
};
Ipv6DiagnosticDto: {
address_configured: null | boolean;
socket_supported: boolean;
listening: null | boolean;
has_global_address: null | boolean;
has_default_route: null | boolean;
state: string;
/** @default unknown */
network_scope: string;
host_has_global_address?: null | boolean;
host_has_default_route?: null | boolean;
};
JoinTokenDto: {
id: string;
note: null | string;
@@ -1426,6 +1511,10 @@ export interface components {
items: components["schemas"]["AgentDto"][];
next_cursor: null | string;
};
PageDtoOfAgentIpv6Dto: {
items: components["schemas"]["AgentIpv6Dto"][];
next_cursor: null | string;
};
PageDtoOfApiTokenDto: {
items: components["schemas"]["ApiTokenDto"][];
next_cursor: null | string;
@@ -1553,6 +1642,7 @@ export interface components {
revoked: boolean;
online: boolean;
connections: components["schemas"]["ProbeConnectionDto"][];
ipv6?: null | components["schemas"]["Ipv6DiagnosticDto"];
};
ProbeIdentityDto: {
probe_id: string;
@@ -1624,6 +1714,8 @@ export interface components {
tag: string;
version: string;
digest: string;
/** @default release */
channel: string;
};
ScoreDto: {
/** Format: double */
@@ -1836,6 +1928,35 @@ export interface operations {
};
};
};
ipv6_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["PageDtoOfAgentIpv6Dto"];
};
};
/** @description Forbidden */
403: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
};
};
lines_get: {
parameters: {
query?: never;
@@ -4834,6 +4955,140 @@ export interface operations {
};
};
};
backend_update_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["BackendUpdateDto"];
};
};
/** @description Unauthorized */
401: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
/** @description Forbidden */
403: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
};
};
backend_update_confirm: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["ConfirmBackendUpdateRequest"];
};
};
responses: {
/** @description No Content */
204: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": unknown;
};
};
/** @description Bad Request */
400: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
/** @description Unauthorized */
401: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
/** @description Forbidden */
403: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
/** @description Precondition Failed */
412: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
};
};
backend_update_live: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description OK */
200: {
headers: {
[name: string]: unknown;
};
content?: never;
};
/** @description Unauthorized */
401: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
/** @description Forbidden */
403: {
headers: {
[name: string]: unknown;
};
content: {
"application/problem+json": components["schemas"]["ProblemDto"];
};
};
};
};
links_list: {
parameters: {
query?: never;
+2
View File
@@ -7,6 +7,7 @@ type NarrowValue<V> = unknown extends V ? string : number extends V ? Exclude<V,
type Narrow<T> = { [K in keyof T]: NarrowValue<T[K]> }
export type AgentDto = Narrow<S['AgentDto']>
export type AgentIpv6Dto = Narrow<S['AgentIpv6Dto']>
export type ConnectedProbeDto = Narrow<S['ConnectedProbeDto']>
export type ProbeDto = Narrow<S['ProbeDto']>
export type ProbeConnectionDto = Narrow<S['ProbeConnectionDto']>
@@ -16,6 +17,7 @@ export type NodeInfoDto = Narrow<S['NodeInfoDto']>
export type AboutDto = Narrow<S['AboutDto']>
export type BuildDto = Narrow<S['BuildDto']>
export type BuildInfoDto = Narrow<S['BuildInfoDto']>
export type BackendUpdateDto = Narrow<S['BackendUpdateDto']>
export type NodeBuildDto = Narrow<S['NodeBuildDto']>
export type NodeUpdateDto = Narrow<S['NodeUpdateDto']>
export type ReleaseDto = Narrow<S['ReleaseDto']>