Releases: CTFd/ctfcli
Releases · CTFd/ctfcli
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
[email protected]. 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 [email protected]: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
0.0.10
0.0.10 / 2022-03-07
Added
- Add support for pages in event repos
- Add the
ctf pages installcommand that looks for markdown and html files with frontmatter in a special pages folder
- Add the
- Add
healthcheckkey inchallenge.ymlto specify a healthcheck script- Add
ctf challenge healthcheck [challenge_name]
- Add
- Add
ssl_verifyin the.ctf/configfile to support SSL verification disabling.ssl_verifycan betrueorfalseor a string (specifying the trusted SSL certificates) - Adds a
--no-gitoption toctf initto skip git repo creation in event folder
Changed
- Allow empty string in CTFd URL and CTFd access token values for
ctf init ctf initwill not attempt to create git repos when the event folder is in a git repo alreadyctf init <folder>can now be used to create the event folder instead of creating the folder beforehand
Fixed
- Fix issue in
ctf challenge addwhere challenges weren't being added to.ctf/config - Fix issue where plugins couldnt be installed if only pip3 was available