@ctfer-io/pulumi-ctfd
Version:
The CTFd provider for Pulumi, to manage its resources as code.
273 lines (272 loc) • 7.68 kB
TypeScript
import * as outputs from "../types/output";
export interface ChallengeDynamicRequirements {
/**
* Behavior if not unlocked, either hidden or anonymized.
*/
behavior: string;
/**
* List of the challenges ID.
*/
prerequisites?: string[];
}
export interface ChallengeStandardRequirements {
/**
* Behavior if not unlocked, either hidden or anonymized.
*/
behavior: string;
/**
* List of the challenges ID.
*/
prerequisites?: string[];
}
export interface GetBracketsUser {
/**
* Description that explains the goal of this bracket.
*/
description: string;
/**
* Identifier of the bracket, used internally to handle the CTFd corresponding object.
*/
id: string;
/**
* Name displayed to end-users (e.g. "Students", "Interns", "Engineers").
*/
name: string;
/**
* Type of the bracket, either "users" or "teams".
*/
type: string;
}
export interface GetChallengesDynamicChallenge {
/**
* Attribution to the creator(s) of the challenge.
*/
attribution: string;
/**
* Category of the challenge that CTFd groups by on the web UI.
*/
category: string;
/**
* Connection Information to connect to the challenge instance, useful for pwn or web pentest.
*/
connectionInfo: string;
/**
* The decay defines from each number of solves does the decay function triggers until reaching minimum. This function is defined by CTFd and could be configured through `.function`.
*/
decay: number;
/**
* Description of the challenge, consider using multiline descriptions for better style.
*/
description: string;
/**
* Decay function to define how the challenge value evolve through solves, either linear or logarithmic.
*/
function: string;
/**
* Identifier of the challenge.
*/
id: string;
/**
* Maximum amount of attempts before being unable to flag the challenge.
*/
maxAttempts: number;
/**
* The minimum points for a dynamic-score challenge to reach with the decay function. Once there, no solve could have more value.
*/
minimum: number;
/**
* Name of the challenge, displayed as it.
*/
name: string;
/**
* Suggestion for the end-user as next challenge to work on.
*/
next: number;
/**
* List of required challenges that needs to get flagged before this one being accessible. Useful for skill-trees-like strategy CTF.
*/
requirements: outputs.GetChallengesDynamicChallengeRequirements;
/**
* State of the challenge, either hidden or visible.
*/
state: string;
/**
* List of challenge tags that will be displayed to the end-user. You could use them to give some quick insights of what a challenge involves.
*/
tags: string[];
/**
* List of challenge topics that are displayed to the administrators for maintenance and planification.
*/
topics: string[];
/**
* The value (points) of the challenge once solved. It is mapped to `initial` under the hood, but displayed as `value` for consistency with the standard challenge.
*/
value: number;
}
export interface GetChallengesDynamicChallengeRequirements {
/**
* Behavior if not unlocked, either hidden or anonymized.
*/
behavior: string;
/**
* List of the challenges ID.
*/
prerequisites: string[];
}
export interface GetChallengesStandardChallenge {
/**
* Attribution to the creator(s) of the challenge.
*/
attribution: string;
/**
* Category of the challenge that CTFd groups by on the web UI.
*/
category: string;
/**
* Connection Information to connect to the challenge instance, useful for pwn or web pentest.
*/
connectionInfo: string;
/**
* Description of the challenge, consider using multiline descriptions for better style.
*/
description: string;
/**
* Identifier of the challenge.
*/
id: string;
/**
* Maximum amount of attempts before being unable to flag the challenge.
*/
maxAttempts: number;
/**
* Name of the challenge, displayed as it.
*/
name: string;
/**
* Suggestion for the end-user as next challenge to work on.
*/
next: number;
/**
* List of required challenges that needs to get flagged before this one being accessible. Useful for skill-trees-like strategy CTF.
*/
requirements: outputs.GetChallengesStandardChallengeRequirements;
/**
* State of the challenge, either hidden or visible.
*/
state: string;
/**
* List of challenge tags that will be displayed to the end-user. You could use them to give some quick insights of what a challenge involves.
*/
tags: string[];
/**
* List of challenge topics that are displayed to the administrators for maintenance and planification.
*/
topics: string[];
value: number;
}
export interface GetChallengesStandardChallengeRequirements {
/**
* Behavior if not unlocked, either hidden or anonymized.
*/
behavior: string;
/**
* List of the challenges ID.
*/
prerequisites: string[];
}
export interface GetTeamsTeam {
/**
* Affiliation to a company or agency.
*/
affiliation: string;
/**
* Is true if the team is banned from the CTF.
*/
banned: boolean;
/**
* Member who is captain of the team. Must be part of the members too. Note it could cause a fatal error in case of resource import with an inconsistent CTFd configuration i.e. if a team has no captain yet (should not be possible).
*/
captain: string;
/**
* Country the team represent or is hail from.
*/
country: string;
/**
* Email of the team.
*/
email: string;
/**
* Is true if the team is hidden to the participants.
*/
hidden: boolean;
/**
* Identifier of the user.
*/
id: string;
/**
* List of members (User), defined by their IDs.
*/
members: string[];
/**
* Name of the team.
*/
name: string;
/**
* Password of the team. Notice that during a CTF you may not want to update those to avoid defaulting team accesses.
*/
password: string;
/**
* Website, blog, or anything similar (displayed to other participants).
*/
website: string;
}
export interface GetUsersUser {
/**
* Affiliation to a team, company or agency.
*/
affiliation: string;
/**
* Is true if the user is banned from the CTF.
*/
banned: boolean;
/**
* Country the user represent or is native from.
*/
country: string;
/**
* Email of the user, may be used to verify the account.
*/
email: string;
/**
* Is true if the user is hidden to the participants.
*/
hidden: boolean;
/**
* Identifier of the user.
*/
id: string;
/**
* Language the user is fluent in.
*/
language: string;
/**
* Name or pseudo of the user.
*/
name: string;
/**
* Password of the user. Notice that during a CTF you may not want to update those to avoid defaulting user accesses.
*/
password: string;
/**
* Generic type for RBAC purposes.
*/
type: string;
/**
* Is true if the user has verified its account by email, or if set by an admin.
*/
verified: boolean;
/**
* Website, blog, or anything similar (displayed to other participants).
*/
website: string;
}