class ChallengeFilesUploadForm(BaseForm): file = MultipleFileField( "Upload Files", description="Attach multiple files using Control+Click or Cmd+Click.", validators=[InputRequired()], ) submit = SubmitField("Upload")
class ChallengeFilesUploadForm(BaseForm): file = MultipleFileField( "上传文件", description="使用 Control键+鼠标左键 或 Cmd键+鼠标左键 进行附加上传多个文件.", validators=[InputRequired()], ) submit = SubmitField("上传")
class _SettingsForm(BaseForm): name = StringField("User Name") email = StringField("Email") password = PasswordField("Password") confirm = PasswordField("Current Password") affiliation = StringField("Affiliation") website = URLField("Website") country = SelectField("Country", choices=SELECT_COUNTRIES_LIST) submit = SubmitField("Submit") @property def extra(self): fields_kwargs = _SettingsForm.get_field_kwargs() return build_custom_user_fields( self, include_entries=True, fields_kwargs=fields_kwargs, field_entries_kwargs={"user_id": session["id"]}, ) @staticmethod def get_field_kwargs(): user = get_current_user() field_kwargs = {"editable": True} if user.filled_all_required_fields is False: # Show all fields field_kwargs = {} return field_kwargs
class AccountSettingsForm(BaseForm): domain_whitelist = StringField( "Account Email Whitelist", description= "Comma-seperated email domains which users can register under (e.g. ctfd.io, gmail.com, yahoo.com)", ) team_size = IntegerField(widget=NumberInput(min=0), description="Amount of users per team") verify_emails = SelectField( "Verify Emails", description= "Control whether users must confirm their email addresses before playing", choices=[("true", "Enabled"), ("false", "Disabled")], default="false", ) team_disbanding = SelectField( "Team Disbanding", description= "Control whether team capatins are allowed to disband their own teams", choices=[ ("inactive_only", "Enabled for Inactive Teams"), ("disabled", "Disabled"), ], default="inactive_only", ) name_changes = SelectField( "Name Changes", description="Control whether users and teams can change their names", choices=[("true", "Enabled"), ("false", "Disabled")], default="true", ) submit = SubmitField("Update")
class NotificationForm(BaseForm): # title = StringField("Title", description="Notification title") title = StringField("제목", description="알림 제목") content = TextAreaField( # "Content", "내용", # description="Notification contents. Can consist of HTML and/or Markdown.", description="알림을 발송할 내용을 입력합니다. HTML 혹은 Markdown 형식으로 구성할 수 있습니다.", ) type = RadioField( # "Notification Type", "알림 형식", choices=[("toast", "Toast"), ("alert", "Alert"), ("background", "Background")], default="toast", # description="What type of notification users receive", description="유저가 받을 알림 형식을 선택하세요.", validators=[InputRequired()], ) sound = BooleanField( # "Play Sound", "소리 재생", default=True, # description="Play sound for users when they receive the notification", description="유저가 알림을 받으면 소리를 재생합니다.", ) # submit = SubmitField("Submit") submit = SubmitField("적용")
class ResetInstanceForm(BaseForm): accounts = BooleanField( # "Accounts", "계정", # description="Deletes all user and team accounts and their associated information", description="유저와 팀 계정 관련 모든 정보를 삭제합니다.", ) submissions = BooleanField( # "Submissions", "제출", # description="Deletes all records that accounts gained points or took an action", description="계정이 획득한 포인트와 행동한 모든 기록을 삭제합니다.", ) challenges = BooleanField( # "Challenges", description="Deletes all challenges and associated data" "문제", description="문제와 관련 모든 정보를 삭제합니다.", ) pages = BooleanField( # "Pages", description="Deletes all pages and their associated files" "페이지", description="페이지와 관련 모든 정보를 삭제합니다.", ) notifications = BooleanField( # "Notifications", description="Deletes all notifications" "알림", description="모든 알림을 삭제합니다.", ) # submit = SubmitField("Reset CTF") submit = SubmitField("CTF 초기화")
class LegalSettingsForm(BaseForm): tos_url = URLField( # "Terms of Service URL", "서비스 약관 URL", # description="External URL to a Terms of Service document hosted elsewhere", description="외부에서 호스트된 서비스 약관 URL을 링크할 수 있습니다.", ) tos_text = TextAreaField( # "Terms of Service", "서비스 약관", # description="Text shown on the Terms of Service page", description="서비스 약관 페이지에 표시되는 텍스트입니다.", ) privacy_url = URLField( # "Privacy Policy URL", "개인정보 보호정책 URL", # description="External URL to a Privacy Policy document hosted elsewhere", description="외부에서 호스트된 개인정보 보호정책 URL을 링크할 수 있습니다.", ) privacy_text = TextAreaField( # "Privacy Policy", "개인정보 보호정책", # description="Text shown on the Privacy Policy page", description="개인정보 보호정책 페이지에 표시되는 텍스트입니다.", ) # submit = SubmitField("Update") submit = SubmitField("적용")
class TeamSettingsForm(BaseForm): name = StringField("Team Name") confirm = PasswordField("Current Password") password = PasswordField("Team Password") affiliation = StringField("Affiliation") website = URLField("Website") country = SelectField("Country", choices=SELECT_COUNTRIES_LIST) submit = SubmitField("Submit")
class ExportCSVForm(BaseForm): table = SelectField( "Database Table", choices=list( zip(sorted(db.metadata.tables.keys()), sorted(db.metadata.tables.keys()))), ) submit = SubmitField("Download CSV")
class SubmissionSearchForm(BaseForm): field = SelectField( "Search Field", choices=[("provided", "Provided"), ("id", "ID")], default="provided", validators=[InputRequired()], ) q = StringField("Parameter", validators=[InputRequired()]) submit = SubmitField("Search")
class _TeamSettingsForm(BaseForm): name = StringField( "Team Name", description="Your team's public name shown to other competitors", ) password = PasswordField("New Team Password", description="Set a new team join password") confirm = PasswordField( "Confirm Password", description= "Provide your current team password (or your password) to update your team's password", ) affiliation = StringField( "Affiliation", description= "Your team's affiliation publicly shown to other competitors", ) website = URLField( "Website", description= "Your team's website publicly shown to other competitors", ) country = SelectField( "Country", choices=SELECT_COUNTRIES_LIST, description= "Your team's country publicly shown to other competitors", ) submit = SubmitField("Submit") @property def extra(self): fields_kwargs = _TeamSettingsForm.get_field_kwargs() return build_custom_team_fields( self, include_entries=True, fields_kwargs=fields_kwargs, field_entries_kwargs={"team_id": self.obj.id}, ) def get_field_kwargs(): team = get_current_team() field_kwargs = {"editable": True} if team.filled_all_required_fields is False: # Show all fields field_kwargs = {} return field_kwargs def __init__(self, *args, **kwargs): """ Custom init to persist the obj parameter to the rest of the form """ super().__init__(*args, **kwargs) obj = kwargs.get("obj") if obj: self.obj = obj
class _TeamRegisterForm(BaseForm): name = StringField("Team Name", validators=[InputRequired()]) password = PasswordField("Team Password", validators=[InputRequired()]) submit = SubmitField("Create") @property def extra(self): return build_custom_team_fields(self, include_entries=False, blacklisted_items=())
class TeamBaseForm(BaseForm): name = StringField("Team Name", validators=[InputRequired()]) email = EmailField("Email") password = PasswordField("Password") website = URLField("Website") affiliation = StringField("Affiliation") country = SelectField("Country", choices=SELECT_COUNTRIES_LIST) hidden = BooleanField("Hidden") banned = BooleanField("Banned") submit = SubmitField("Submit")
class _RegistrationForm(BaseForm): name = StringField("Пользователь", validators=[InputRequired()]) email = EmailField("Почта", validators=[InputRequired()]) password = PasswordField("Пароль", validators=[InputRequired()]) submit = SubmitField("Зарегистрироваться") @property def extra(self): return build_custom_user_fields( self, include_entries=False, blacklisted_items=() )
class DockerConfigForm(BaseForm): id = HiddenField() hostname = StringField( "Docker Hostname", description="The Hostname/IP and Port of your Docker Server" ) tls_enabled = RadioField('TLS Enabled?') ca_cert = FileField('CA Cert') client_cert = FileField('Client Cert') client_key = FileField('Client Key') repositories = SelectMultipleField('Repositories') submit = SubmitField('Submit')
class _RegistrationForm(BaseForm): name = StringField("User Name", validators=[InputRequired()]) email = EmailField("Email", validators=[InputRequired()]) password = PasswordField("Password", validators=[InputRequired()]) submit = SubmitField("Submit") @property def extra(self): return build_custom_user_fields( self, include_entries=False, blacklisted_items=() )
class _TeamRegisterForm(BaseForm): name = StringField("Название команды", validators=[InputRequired()]) password = PasswordField("Пароль команды", validators=[InputRequired()]) submit = SubmitField("Создать") @property def extra(self): return build_custom_team_fields(self, include_entries=False, blacklisted_items=())
class UserEditForm(BaseForm): name = StringField("User Name", validators=[InputRequired()]) email = EmailField("Email", validators=[InputRequired()]) password = PasswordField("Password") website = StringField("Website") affiliation = StringField("Affiliation") country = SelectField("Country", choices=SELECT_COUNTRIES_LIST) type = SelectField("Type", choices=[("user", "User"), ("admin", "Admin")]) verified = BooleanField("Verified") hidden = BooleanField("Hidden") banned = BooleanField("Banned") submit = SubmitField("Submit")
class AccountSettingsForm(BaseForm): domain_whitelist = StringField( "Account Email Whitelist", description= "Comma-seperated email domains which users can register under (e.g. ctfd.io, gmail.com, yahoo.com)", ) team_creation = SelectField( "Team Creation", description= "Control whether users can create their own teams (Teams mode only)", choices=[("true", "Enabled"), ("false", "Disabled")], default="true", ) team_size = IntegerField( widget=NumberInput(min=0), description="Amount of users per team (Teams mode only)", ) num_teams = IntegerField( "Total Number of Teams", widget=NumberInput(min=0), description="Max number of teams (Teams mode only)", ) verify_emails = SelectField( "Verify Emails", description= "Control whether users must confirm their email addresses before playing", choices=[("true", "Enabled"), ("false", "Disabled")], default="false", ) team_disbanding = SelectField( "Team Disbanding", description= "Control whether team captains are allowed to disband their own teams", choices=[ ("inactive_only", "Enabled for Inactive Teams"), ("disabled", "Disabled"), ], default="inactive_only", ) name_changes = SelectField( "Name Changes", description="Control whether users and teams can change their names", choices=[("true", "Enabled"), ("false", "Disabled")], default="true", ) incorrect_submissions_per_min = IntegerField( "Incorrect Submissions per Minute", widget=NumberInput(min=1), description= "Amount of submissions allowed per minute for flag bruteforce protection (default: 10)", ) submit = SubmitField("Update")
class UserBaseForm(BaseForm): name = StringField("用户名", validators=[InputRequired()]) email = EmailField("邮箱", validators=[InputRequired()]) password = PasswordField("密码") website = StringField("Blog/网站") affiliation = StringField("单位/组织") country = SelectField("地区", choices=SELECT_COUNTRIES_LIST) type = SelectField("类型", choices=[("user", "普通用户"), ("admin", "管理员")]) verified = BooleanField("验证邮箱") hidden = BooleanField("是否隐藏") banned = BooleanField("是否封禁") submit = SubmitField("创建")
class PublicUserSearchForm(BaseForm): field = SelectField( "Search Field", choices=[ ("name", "Name"), ("affiliation", "Affiliation"), ("website", "Website"), ], default="name", validators=[InputRequired()], ) q = StringField("Parameter", validators=[InputRequired()]) submit = SubmitField("Search")
class ResetInstanceForm(BaseForm): accounts = BooleanField( "账户", description="删除所有用户和团队帐户及其关联信息", ) submissions = BooleanField( "提交", description="删除所有提交,提交获得的分数或进度", ) challenges = BooleanField("挑战", description="删除所有挑战相关数据") pages = BooleanField("页面", description="删除所有页面及其关联文件") notifications = BooleanField("公告", description="删除所有公告") submit = SubmitField("重置 CTF")
class PublicTeamSearchForm(BaseForm): field = SelectField( "Search Field", choices=[ ("name", "Название"), ("affiliation", "Учреждение"), ("website", "Сайт"), ], default="name", validators=[InputRequired()], ) q = StringField("Parameter", validators=[InputRequired()]) submit = SubmitField("Search")
class PublicTeamSearchForm(BaseForm): field = SelectField( "Search Field", choices=[ ("name", "用户名"), ("affiliation", "单位/组织"), ("website", "Blog/网站"), ], default="name", validators=[InputRequired()], ) q = StringField("Parameter", validators=[InputRequired()]) submit = SubmitField("Search")
class SetupForm(BaseForm): ctf_name = StringField("竞赛名称", description="您的CTF竞赛主名称") ctf_description = TextAreaField("竞赛描述", description="您的CTF竞赛描述") user_mode = RadioField( "模式选择", choices=[("teams", "团队赛"), ("users", "个人赛")], default="teams", description="控制比赛形式是以团队为单位进行竞赛,还是以个人为单位进行竞赛", validators=[InputRequired()], ) name = StringField( "管理员用户名", description="管理员账户自己的用户名", validators=[InputRequired()], ) email = EmailField( "管理员邮箱", description="管理员账户自己的邮箱", validators=[InputRequired()], ) password = PasswordField( "管理员密码", description="管理员账户的密码", validators=[InputRequired()], ) ctf_logo = FileField( "Logo", description="网站的Logo(徽标),不是CTF名称. 用作主页按钮.", ) ctf_banner = FileField("Banner", description="主页的Banner(横幅图片).") ctf_small_icon = FileField( "网站小图标", description="用户浏览器标签左侧显示的图标(favicon),只能是PNG图片。并且大小必须是32x32px", ) ctf_theme = SelectField( "主题", description="CTFd使用的主题", choices=list(zip(get_themes(), get_themes())), default=DEFAULT_THEME, validators=[InputRequired()], ) theme_color = HiddenField( "主题颜色", description="主题使用的用于控制界面美观的颜色,需要主题支持才能生效。(可选)", ) start = StringField("开始时间", description="CTF竞赛的开始时间. (可选).") end = StringField("结束时间", description="CTF竞赛的结束时间. (可选).") submit = SubmitField("完成")
class ChallengeSearchForm(BaseForm): field = SelectField( "Search Field", choices=[ ("name", "Название"), ("id", "ID"), ("category", "Категория"), ("type", "Тип"), ], default="name", validators=[InputRequired()], ) q = StringField("Параметр", validators=[InputRequired()]) submit = SubmitField("Поиск")
class ChallengeSearchForm(BaseForm): field = SelectField( "Search Field", choices=[ ("name", "Name"), ("id", "ID"), ("category", "Category"), ("type", "Type"), ], default="name", validators=[InputRequired()], ) q = StringField("Parameter", validators=[InputRequired()]) submit = SubmitField("Search")
class SetupForm(BaseForm): ctf_name = StringField( "Event Name", description="The name of your CTF event/workshop" ) ctf_description = TextAreaField( "Event Description", description="Description for the CTF" ) user_mode = RadioField( "User Mode", choices=[("teams", "Team Mode"), ("users", "User Mode")], default="teams", description="Controls whether users join together in teams to play (Team Mode) or play as themselves (User Mode)", validators=[InputRequired()], ) name = StringField( "Admin Username", description="Your username for the administration account", validators=[InputRequired()], ) email = EmailField( "Admin Email", description="Your email address for the administration account", validators=[InputRequired()], ) password = PasswordField( "Admin Password", description="Your password for the administration account", validators=[InputRequired()], ) ctf_theme = SelectField( "Theme", description="CTFd Theme to use", choices=list(zip(get_themes(), get_themes())), default="core", validators=[InputRequired()], ) theme_color = HiddenField( "Theme Color", description="Color used by theme to control aesthetics. Requires theme support. Optional.", ) start = StringField( "Start Time", description="Time when your CTF is scheduled to start. Optional." ) end = StringField( "End Time", description="Time when your CTF is scheduled to end. Optional." ) submit = SubmitField("Finish")
class ChallengeSearchForm(BaseForm): field = SelectField( "搜索字段", choices=[ ("name", "挑战名称"), ("id", "ID"), ("category", "挑战类别"), ("type", "挑战类型"), ], default="name", validators=[InputRequired()], ) q = StringField("参数", validators=[InputRequired()]) submit = SubmitField("搜索")
class SubmissionSearchForm(BaseForm): field = SelectField( "Search Field", choices=[ ("provided", "Provided"), ("id", "ID"), ("account_id", "Account ID"), ("challenge_id", "Challenge ID"), ("challenge_name", "Challenge Name"), ], default="provided", validators=[InputRequired()], ) q = StringField("Parameter", validators=[InputRequired()]) submit = SubmitField("Search")