Skip to content

Tags: CTFd/ctfcli

Tags

0.1.5

Toggle 0.1.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Mark 0.1.5 (#191)

# 0.1.5 / 2025-09-04

### Added

- Support for hint titles
- Support `logic` key for challenges

### Fixed

- Fix issue with resolving relative challenge paths during install

0.1.4

Toggle 0.1.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Mark 0.1.4 (#182)

# 0.1.4 / 2025-04-29

### Added

- Added support for `ctf instance` with the `ctf instance config` command which can be used to `get` and `set` configuration on CTFd
- Added `ctf media add`, `ctf media rm`, `ctf media url`
  - Allows ctfcli repos to manage files locally and reference the actual server URLs of media files in Pages
  - Adds concept of replacing placeholders like `{{ media/ctfd.png }}` with the actual URL on the server
- Added the `attribution` field to challenge.yml
- Added the `next` field to challenge.yml
- Added ability to anoymize challenges while specifying prerequisites
- Added specifying CTFd instance URL and access token via envvars: `CTFCLI_URL`, `CTFCLI_ACCESS_TOKEN`

### Fixed

- Fix issue with managing challenges with an empty files section
- Fix issue where images could not be deployed due to being named incorrectly

0.1.3

Toggle 0.1.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Mark 0.1.3 (#154)

# 0.1.3 / 2024-08-20

### Added

- Added support for `git subrepo` instead of only `git subtree`
- Added the `--create` switch to `ctf challenge mirror` to create local copies of challenges that exist on a remote CTFd instance

### Fixed

- `ctf challenge {push, pull}` will now push / pull all challenges instead of the challenge in the current working directory.

### Changed

- Use `--load` switch as part of docker build to support alternate build drivers

0.1.2

Toggle 0.1.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Mark 0.1.2 in pyproject.toml (#145)

0.1.1

Toggle 0.1.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Mark 0.1.1 (#140)

# 0.1.1 / 2023-12-11

### Added

- Added `ctf challenge mirror` command to pull changes from the remote CTFd instance into the local project

### Fixed

- Properly include challenge.yml when generating a challenge from a template

### Changed

- No longer require a ctfcli project to run all `ctf challenge` (e.g. `new`, `format`, `lint`)

0.1.0

Toggle 0.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Mark 0.1.0 (#133)

# 0.1.0 / 2023-10-03

### Added

- ctfcli has been separated into two main modules `cli` and `core`. The `core` module now packages logic previously found inside `utils`, wrapped into classes.
- The classes in the `core` module will only print out warnings instead of interrupting the whole process. Everything else will throw exceptions which can be caught and handled however desired
- `cli` and `core` internal modules have type hints
- Improved error messages
- Unit tests have been added for the entire `core` module
- ctfcli will now ask to initialize a new project if one does not exist
- Added `--hidden` to `ctf challenge install` which will deploy the challenge / challenges in a hidden state regardless of their `challenge.yml` value.
- Added `ctf challenge edit <name>` and `ctf challenge edit <name> --dockerfile` to open challenge.yml or Dockerfile for that challenge
- Added aliases under `ctf templates` and `ctf plugins` for `dir` (`path`) and for `view` (`show`)
- Progress bars for `ctf challenge deploy` / `ctf challenge install` / `ctf challenge sync`
- `ctf challenge deploy` will now deploy ALL deployable challenges if a specific challenge is not specified
  - For the SSH and Registry deployments, to facilitate this behaviour the challenge name will be automatically appended. So the host should be for example: `registry://registry.example.com/example-project` and the challenge name will be appended for a full location.
- `ctf challenge deploy` will now also automatically login to the registry with Cloud and Registry deployments.
  - For cloud deployments the instance url must be ctfd assigned (e.g. example.ctfd.io) - this is because to log-in to the registry we require a username like `[email protected]`. The deployment will use the access token as the password.
  - For registry deployment it will look for the `username` and `password` keys inside a `[registry]` section in the project config file.
- ctfcli will read a `LOGLEVEL` environment variable to enable DEBUG logging has been added

### Fixed

- When syncing a challenge to a remote instance, state specified in challenge.yml will now be ignored to prevent accidental challenge leaking
- The CLI will now exit with a 0 if everything went right, and 1 if something went wrong.
  - With `install`/`sync`/`deploy` - exit code will be 1 if ANY of the challenges failed to `install`/`sync`/`deploy`.

### Changed

- Built using poetry and `pyproject.toml`
- `python-fire` has been updated to 0.5.0

### Removed

- Removed the `ctf challenge finalize` command

0.0.13

Toggle 0.0.13's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Mark 0.0.13 (#128)

# 0.0.13 / 2023-07-29

### Added

- Add env variable `CTFCLI_PLUGIN_DIR` to override the default plugin dir for development.
- Add `--directory` argument to `ctfcli challenge add`
  - Can also be called as `ctf challenge add [email protected]:repo.git directory`
  - Useful for grouping challenges into separate directories like: `web/challenge1`.
- `connection_info` specified in challenge.yml will be used instead of details generated by a deploy handler

### Fixed

- Bump PyYAML version to 6.0.1

0.0.12

Toggle 0.0.12's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Mark 0.0.12 (#119)

# 0.0.12 / 2023-06-25

### Added

- Add cloud deploy for hosted CTFd instances
- Add the `protocol` field in the challenge.yml spec
- Further define what other deployment methods should provide & return
- Add the ability to add HTTP cookies to ctfcli requests via the config file

### Fixed

- Allow ignoring category during challenge sync

0.0.11

Toggle 0.0.11's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Mark 0.0.11 (#103)

# 0.0.11 / 2022-11-09

### Added

- Added a restart policy and container name to services deployed via ssh
- Added `--yaml-path` to `ctf challenge add` to specify a specific `challenge.yml` path that will be added to the .ctf config

### Fixed

- Fixed issue in `ctf templates list` where not all templates would be listed
- Bumped version of dependencies to support Python 3.11
  - Bumped `cookiecutter` to 2.1.1
  - Bumped `requests` to 2.28.1
  - Bumped `colorama` to 0.4.6

0.0.10

Toggle 0.0.10's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Mark 0.0.10 (#88)

# 0.0.10 / 2022-03-07

### Added

- Add support for pages in event repos
  - Add the `ctf pages install` command that looks for markdown and html files with frontmatter in a special pages folder
- Add `healthcheck` key in `challenge.yml` to specify a healthcheck script
  - Add `ctf challenge healthcheck [challenge_name]`
- Add `ssl_verify` in the `.ctf/config` file to support SSL verification disabling. `ssl_verify` can be `true` or `false` or a string (specifying the trusted SSL certificates)
- Adds a `--no-git` option to `ctf init` to skip git repo creation in event folder

### Changed

- Allow empty string in CTFd URL and CTFd access token values for `ctf init`
- `ctf init` will not attempt to create git repos when the event folder is in a git repo already
- `ctf init <folder>` can now be used to create the event folder instead of creating the folder beforehand

### Fixed

- Fix issue in `ctf challenge add` where challenges weren't being added to `.ctf/config`
- Fix issue where plugins couldnt be installed if only pip3 was available