Example #1
0
class ChallengeFilesUploadForm(BaseForm):
    file = MultipleFileField(
        "Upload Files",
        description="Attach multiple files using Control+Click or Cmd+Click.",
        validators=[InputRequired()],
    )
    submit = SubmitField("Upload")
Example #2
0
class ChallengeFilesUploadForm(BaseForm):
    file = MultipleFileField(
        "上传文件",
        description="使用 Control键+鼠标左键 或 Cmd键+鼠标左键 进行附加上传多个文件.",
        validators=[InputRequired()],
    )
    submit = SubmitField("上传")
Example #3
0
    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
Example #4
0
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")
Example #5
0
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("적용")
Example #6
0
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 초기화")
Example #7
0
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("적용")
Example #8
0
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")
Example #9
0
class ExportCSVForm(BaseForm):
    table = SelectField(
        "Database Table",
        choices=list(
            zip(sorted(db.metadata.tables.keys()),
                sorted(db.metadata.tables.keys()))),
    )
    submit = SubmitField("Download CSV")
Example #10
0
class SubmissionSearchForm(BaseForm):
    field = SelectField(
        "Search Field",
        choices=[("provided", "Provided"), ("id", "ID")],
        default="provided",
        validators=[InputRequired()],
    )
    q = StringField("Parameter", validators=[InputRequired()])
    submit = SubmitField("Search")
Example #11
0
    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
Example #12
0
    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=())
Example #13
0
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")
Example #14
0
    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')
Example #16
0
    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=()
            )
Example #17
0
    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=())
Example #18
0
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")
Example #19
0
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")
Example #20
0
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("创建")
Example #21
0
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")
Example #22
0
class ResetInstanceForm(BaseForm):
    accounts = BooleanField(
        "账户",
        description="删除所有用户和团队帐户及其关联信息",
    )
    submissions = BooleanField(
        "提交",
        description="删除所有提交,提交获得的分数或进度",
    )
    challenges = BooleanField("挑战", description="删除所有挑战相关数据")
    pages = BooleanField("页面", description="删除所有页面及其关联文件")
    notifications = BooleanField("公告", description="删除所有公告")
    submit = SubmitField("重置 CTF")
Example #23
0
class PublicTeamSearchForm(BaseForm):
    field = SelectField(
        "Search Field",
        choices=[
            ("name", "Название"),
            ("affiliation", "Учреждение"),
            ("website", "Сайт"),
        ],
        default="name",
        validators=[InputRequired()],
    )
    q = StringField("Parameter", validators=[InputRequired()])
    submit = SubmitField("Search")
Example #24
0
class PublicTeamSearchForm(BaseForm):
    field = SelectField(
        "Search Field",
        choices=[
            ("name", "用户名"),
            ("affiliation", "单位/组织"),
            ("website", "Blog/网站"),
        ],
        default="name",
        validators=[InputRequired()],
    )
    q = StringField("Parameter", validators=[InputRequired()])
    submit = SubmitField("Search")
Example #25
0
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("完成")
Example #26
0
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")
Example #28
0
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")
Example #29
0
class ChallengeSearchForm(BaseForm):
    field = SelectField(
        "搜索字段",
        choices=[
            ("name", "挑战名称"),
            ("id", "ID"),
            ("category", "挑战类别"),
            ("type", "挑战类型"),
        ],
        default="name",
        validators=[InputRequired()],
    )
    q = StringField("参数", validators=[InputRequired()])
    submit = SubmitField("搜索")
Example #30
0
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")