Releases: CTFd/ctfcli
Releases · CTFd/ctfcli
0.1.6
0.1.6 / 2026-01-06
Added
- Add
sha1sumto--ignoreas part ofctf challenge syncto allow syncing files when the remote checksum or local checksum is corrupted
Fixed
- Fix an issue where if deployment returned updated connection info we wouldn't update it in challenge.yml
- Fix an issue where relative paths would not deploy due to a logging error
Changed
- Challenges without an image will be considered a skipped deploy instead of a failed deploy
- Switch from poetry to uv
- Switch from to ruff
0.1.5
0.1.4
0.1.4 / 2025-04-29
Added
- Added support for
ctf instancewith thectf instance configcommand which can be used togetandsetconfiguration 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
attributionfield to challenge.yml - Added the
nextfield 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
0.1.3 / 2024-08-20
Added
- Added support for
git subrepoinstead of onlygit subtree - Added the
--createswitch toctf challenge mirrorto 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
--loadswitch as part of docker build to support alternate build drivers
0.1.2
0.1.1
0.1.1 / 2023-12-11
Added
- Added
ctf challenge mirrorcommand 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
0.1.0 / 2023-10-03
Added
- ctfcli has been separated into two main modules
cliandcore. Thecoremodule now packages logic previously found insideutils, wrapped into classes. - The classes in the
coremodule will only print out warnings instead of interrupting the whole process. Everything else will throw exceptions which can be caught and handled however desired cliandcoreinternal modules have type hints- Improved error messages
- Unit tests have been added for the entire
coremodule - ctfcli will now ask to initialize a new project if one does not exist
- Added
--hiddentoctf challenge installwhich will deploy the challenge / challenges in a hidden state regardless of theirchallenge.ymlvalue. - Added
ctf challenge edit <name>andctf challenge edit <name> --dockerfileto open challenge.yml or Dockerfile for that challenge - Added aliases under
ctf templatesandctf pluginsfordir(path) and forview(show) - Progress bars for
ctf challenge deploy/ctf challenge install/ctf challenge sync ctf challenge deploywill 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-projectand the challenge name will be appended for a full location.
- For the SSH and Registry deployments, to facilitate this behaviour the challenge name will be automatically appended. So the host should be for example:
ctf challenge deploywill 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
admin@example.ctfd.io. The deployment will use the access token as the password. - For registry deployment it will look for the
usernameandpasswordkeys inside a[registry]section in the project config file.
- 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
- ctfcli will read a
LOGLEVELenvironment 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 toinstall/sync/deploy.
- With
Changed
- Built using poetry and
pyproject.toml python-firehas been updated to 0.5.0
Removed
- Removed the
ctf challenge finalizecommand
0.0.13
0.0.13 / 2023-07-29
Added
- Add env variable
CTFCLI_PLUGIN_DIRto override the default plugin dir for development. - Add
--directoryargument toctfcli challenge add- Can also be called as
ctf challenge add git@github.com:repo.git directory - Useful for grouping challenges into separate directories like:
web/challenge1.
- Can also be called as
connection_infospecified 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
0.0.12 / 2023-06-25
Added
- Add cloud deploy for hosted CTFd instances
- Add the
protocolfield 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
0.0.11 / 2022-11-09
Added
- Added a restart policy and container name to services deployed via ssh
- Added
--yaml-pathtoctf challenge addto specify a specificchallenge.ymlpath that will be added to the .ctf config
Fixed
- Fixed issue in
ctf templates listwhere not all templates would be listed - Bumped version of dependencies to support Python 3.11
- Bumped
cookiecutterto 2.1.1 - Bumped
requeststo 2.28.1 - Bumped
coloramato 0.4.6
- Bumped