initial commit
This commit is contained in:
53
types.ts
Normal file
53
types.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
export type Difficulty = 'Low' | 'Medium' | 'High';
|
||||
|
||||
export interface ChallengeFile {
|
||||
name: string;
|
||||
url: string;
|
||||
}
|
||||
|
||||
export interface Challenge {
|
||||
id: string;
|
||||
title: string;
|
||||
category: string;
|
||||
difficulty: Difficulty;
|
||||
description: string;
|
||||
initialPoints: number;
|
||||
flag: string;
|
||||
files: ChallengeFile[];
|
||||
solves: string[]; // Team IDs
|
||||
port?: number;
|
||||
connectionType?: 'nc' | 'http';
|
||||
}
|
||||
|
||||
export interface Team {
|
||||
id: string;
|
||||
name: string;
|
||||
password?: string;
|
||||
isAdmin?: boolean | number;
|
||||
isDisabled?: boolean | number;
|
||||
}
|
||||
|
||||
export interface Solve {
|
||||
teamId: string;
|
||||
challengeId: string;
|
||||
timestamp: number;
|
||||
pointsEarned: number; // Stored at time of solve, but usually recalculated dynamically
|
||||
}
|
||||
|
||||
export interface BlogPost {
|
||||
id: string;
|
||||
title: string;
|
||||
content: string;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
export interface CTFState {
|
||||
isStarted: boolean;
|
||||
startTime: number | null;
|
||||
teams: Team[];
|
||||
challenges: Challenge[];
|
||||
solves: Solve[];
|
||||
blogs: BlogPost[];
|
||||
config: Record<string, string>;
|
||||
}
|
||||
Reference in New Issue
Block a user