- Add logging when enrollment is silently skipped due to existing state - Add DELETE /admin/crowdsec/console/enrollment endpoint to clear state - Add re-enrollment UI section with guidance and crowdsec.net link - Add useClearConsoleEnrollment hook for state clearing Fixes silent idempotency bug where backend returned 200 OK without actually executing cscli when status was already enrolled.
41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import client from './client'
|
|
|
|
export interface ConsoleEnrollmentStatus {
|
|
status: string
|
|
tenant?: string
|
|
agent_name?: string
|
|
last_error?: string
|
|
last_attempt_at?: string
|
|
enrolled_at?: string
|
|
last_heartbeat_at?: string
|
|
key_present: boolean
|
|
correlation_id?: string
|
|
}
|
|
|
|
export interface ConsoleEnrollPayload {
|
|
enrollment_key: string
|
|
tenant?: string
|
|
agent_name: string
|
|
force?: boolean
|
|
}
|
|
|
|
export async function getConsoleStatus(): Promise<ConsoleEnrollmentStatus> {
|
|
const resp = await client.get<ConsoleEnrollmentStatus>('/admin/crowdsec/console/status')
|
|
return resp.data
|
|
}
|
|
|
|
export async function enrollConsole(payload: ConsoleEnrollPayload): Promise<ConsoleEnrollmentStatus> {
|
|
const resp = await client.post<ConsoleEnrollmentStatus>('/admin/crowdsec/console/enroll', payload)
|
|
return resp.data
|
|
}
|
|
|
|
export async function clearConsoleEnrollment(): Promise<void> {
|
|
await client.delete('/admin/crowdsec/console/enrollment')
|
|
}
|
|
|
|
export default {
|
|
getConsoleStatus,
|
|
enrollConsole,
|
|
clearConsoleEnrollment,
|
|
}
|