Tags: CTFd/ctfcli
Tags
Mark 0.1.6 (#196) # 0.1.6 / 2026-01-06 ### Added - Add `sha1sum` to `--ignore` as part of `ctf challenge sync` to 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
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
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
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`)
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
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
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
PreviousNext