├── .coveragerc ├── .flake8 ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .readthedocs.yml ├── CONTRIBUTING.rst ├── LICENSE ├── Makefile ├── README.rst ├── docs ├── Makefile ├── api │ ├── challenge.rst │ └── project.rst ├── backends │ ├── index.rst │ ├── k8s │ │ ├── cluster-role.yaml │ │ └── index.rst │ └── rctf │ │ └── index.rst ├── challenge.rst ├── conf.py ├── config-samples.rst ├── contributing.rst ├── index.rst ├── make.bat └── project.rst ├── example ├── pwn │ └── example │ │ ├── .dockerignore │ │ └── challenge.yaml ├── rcds.yaml └── web │ └── with-database │ ├── chall │ ├── .dockerignore │ ├── Dockerfile │ ├── index.js │ ├── package-lock.json │ └── package.json │ └── challenge.yaml ├── poetry.lock ├── pyproject.toml ├── rcds ├── __init__.py ├── backend │ ├── __init__.py │ └── backend.py ├── backends │ ├── __init__.py │ ├── k8s │ │ ├── __init__.py │ │ ├── backend.py │ │ ├── jinja.py │ │ ├── manifests.py │ │ ├── options.schema.yaml │ │ └── templates │ │ │ ├── _helpers.jinja │ │ │ ├── deployment.yaml │ │ │ ├── ingress.yaml │ │ │ ├── namespace.yaml │ │ │ ├── network-policy.yaml │ │ │ └── service.yaml │ └── rctf │ │ ├── __init__.py │ │ ├── backend.py │ │ ├── options.schema.yaml │ │ └── rctf.py ├── challenge │ ├── __init__.py │ ├── challenge.py │ ├── challenge.schema.yaml │ ├── config.py │ └── docker.py ├── cli │ ├── __init__.py │ ├── __main__.py │ └── deploy.py ├── errors.py ├── project │ ├── __init__.py │ ├── assets.py │ ├── config.py │ ├── project.py │ └── rcds.schema.yaml ├── py.typed └── util │ ├── __init__.py │ ├── deep_merge.py │ ├── find.py │ ├── jsonschema.py │ └── load.py ├── tests ├── challenge │ ├── test_challenge.py │ ├── test_challenge │ │ ├── bad#dir │ │ │ └── challenge.yml │ │ ├── id_override │ │ │ └── challenge.yml │ │ ├── json │ │ │ └── challenge.json │ │ ├── nonexistent │ │ │ └── .dir │ │ ├── rcds.yml │ │ ├── render-description │ │ │ └── challenge.yml │ │ ├── shortcuts-http │ │ │ └── challenge.yaml │ │ ├── shortcuts-tcp │ │ │ └── challenge.yaml │ │ ├── static-assets │ │ │ ├── challenge.yml │ │ │ ├── file1.txt │ │ │ └── file2.txt │ │ └── yaml │ │ │ └── challenge.yml │ ├── test_config.py │ ├── test_config │ │ ├── default-category │ │ │ └── chall │ │ │ │ └── challenge.yml │ │ ├── defaults │ │ │ ├── 1 │ │ │ │ └── challenge.yml │ │ │ └── 2 │ │ │ │ └── challenge.yml │ │ ├── expose-no-containers │ │ │ └── challenge.yml │ │ ├── flag-format │ │ │ ├── invalid │ │ │ │ └── challenge.yml │ │ │ └── valid │ │ │ │ └── challenge.yml │ │ ├── no-default-category │ │ │ └── challenge.yml │ │ ├── nonexistent-flag-file │ │ │ └── challenge.yml │ │ ├── nonexistent-provide-file │ │ │ └── challenge.yml │ │ ├── nonexistent-target-container │ │ │ └── challenge.yml │ │ ├── nonexistent-target-port │ │ │ └── challenge.yml │ │ ├── rcds.yaml │ │ ├── schema-fail │ │ │ └── challenge.yml │ │ ├── valid │ │ │ ├── challenge.yml │ │ │ └── flag.txt │ │ └── warn-multiline-flag │ │ │ ├── challenge.yml │ │ │ └── flag.txt │ ├── test_docker.py │ └── test_docker │ │ ├── contexts │ │ ├── basic │ │ │ ├── .file │ │ │ ├── Dockerfile │ │ │ ├── a │ │ │ │ ├── .file │ │ │ │ ├── b │ │ │ │ │ ├── .file │ │ │ │ │ └── file │ │ │ │ └── file │ │ │ └── file │ │ ├── complex_dockerignore │ │ │ ├── .dockerignore │ │ │ ├── Dockerfile │ │ │ ├── a │ │ │ ├── b │ │ │ ├── c │ │ │ │ └── file │ │ │ └── d │ │ │ │ └── file │ │ └── dockerignore │ │ │ ├── .dockerignore │ │ │ ├── .file │ │ │ ├── Dockerfile │ │ │ ├── a │ │ │ ├── .file │ │ │ ├── b │ │ │ │ ├── .file │ │ │ │ └── file │ │ │ └── file │ │ │ └── file │ │ └── project │ │ ├── chall │ │ └── challenge.yml │ │ ├── chall2 │ │ └── challenge.yml │ │ └── rcds.yml ├── project │ ├── test_assets.py │ └── test_assets │ │ ├── dir │ │ └── .dir │ │ ├── file1 │ │ └── file2 └── util │ └── test_deep_merge.py └── tox.ini /.coveragerc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/.coveragerc -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/.flake8 -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/.gitignore -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /.readthedocs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/.readthedocs.yml -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/CONTRIBUTING.rst -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/Makefile -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/README.rst -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/Makefile -------------------------------------------------------------------------------- /docs/api/challenge.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/api/challenge.rst -------------------------------------------------------------------------------- /docs/api/project.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/api/project.rst -------------------------------------------------------------------------------- /docs/backends/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/backends/index.rst -------------------------------------------------------------------------------- /docs/backends/k8s/cluster-role.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/backends/k8s/cluster-role.yaml -------------------------------------------------------------------------------- /docs/backends/k8s/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/backends/k8s/index.rst -------------------------------------------------------------------------------- /docs/backends/rctf/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/backends/rctf/index.rst -------------------------------------------------------------------------------- /docs/challenge.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/challenge.rst -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/conf.py -------------------------------------------------------------------------------- /docs/config-samples.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/config-samples.rst -------------------------------------------------------------------------------- /docs/contributing.rst: -------------------------------------------------------------------------------- 1 | ../CONTRIBUTING.rst -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/index.rst -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/make.bat -------------------------------------------------------------------------------- /docs/project.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/docs/project.rst -------------------------------------------------------------------------------- /example/pwn/example/.dockerignore: -------------------------------------------------------------------------------- 1 | challenge.yaml 2 | -------------------------------------------------------------------------------- /example/pwn/example/challenge.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/example/pwn/example/challenge.yaml -------------------------------------------------------------------------------- /example/rcds.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/example/rcds.yaml -------------------------------------------------------------------------------- /example/web/with-database/chall/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /example/web/with-database/chall/Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/example/web/with-database/chall/Dockerfile -------------------------------------------------------------------------------- /example/web/with-database/chall/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /example/web/with-database/chall/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/example/web/with-database/chall/package-lock.json -------------------------------------------------------------------------------- /example/web/with-database/chall/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/example/web/with-database/chall/package.json -------------------------------------------------------------------------------- /example/web/with-database/challenge.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/example/web/with-database/challenge.yaml -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/poetry.lock -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/pyproject.toml -------------------------------------------------------------------------------- /rcds/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/__init__.py -------------------------------------------------------------------------------- /rcds/backend/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backend/__init__.py -------------------------------------------------------------------------------- /rcds/backend/backend.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backend/backend.py -------------------------------------------------------------------------------- /rcds/backends/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rcds/backends/k8s/__init__.py: -------------------------------------------------------------------------------- 1 | from .backend import get_info # noqa: F401 2 | -------------------------------------------------------------------------------- /rcds/backends/k8s/backend.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/backend.py -------------------------------------------------------------------------------- /rcds/backends/k8s/jinja.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/jinja.py -------------------------------------------------------------------------------- /rcds/backends/k8s/manifests.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/manifests.py -------------------------------------------------------------------------------- /rcds/backends/k8s/options.schema.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/options.schema.yaml -------------------------------------------------------------------------------- /rcds/backends/k8s/templates/_helpers.jinja: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/templates/_helpers.jinja -------------------------------------------------------------------------------- /rcds/backends/k8s/templates/deployment.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/templates/deployment.yaml -------------------------------------------------------------------------------- /rcds/backends/k8s/templates/ingress.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/templates/ingress.yaml -------------------------------------------------------------------------------- /rcds/backends/k8s/templates/namespace.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/templates/namespace.yaml -------------------------------------------------------------------------------- /rcds/backends/k8s/templates/network-policy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/templates/network-policy.yaml -------------------------------------------------------------------------------- /rcds/backends/k8s/templates/service.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/k8s/templates/service.yaml -------------------------------------------------------------------------------- /rcds/backends/rctf/__init__.py: -------------------------------------------------------------------------------- 1 | from .backend import get_info # noqa: F401 2 | -------------------------------------------------------------------------------- /rcds/backends/rctf/backend.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/rctf/backend.py -------------------------------------------------------------------------------- /rcds/backends/rctf/options.schema.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/rctf/options.schema.yaml -------------------------------------------------------------------------------- /rcds/backends/rctf/rctf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/backends/rctf/rctf.py -------------------------------------------------------------------------------- /rcds/challenge/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/challenge/__init__.py -------------------------------------------------------------------------------- /rcds/challenge/challenge.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/challenge/challenge.py -------------------------------------------------------------------------------- /rcds/challenge/challenge.schema.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/challenge/challenge.schema.yaml -------------------------------------------------------------------------------- /rcds/challenge/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/challenge/config.py -------------------------------------------------------------------------------- /rcds/challenge/docker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/challenge/docker.py -------------------------------------------------------------------------------- /rcds/cli/__init__.py: -------------------------------------------------------------------------------- 1 | from .__main__ import cli # noqa: F401 2 | -------------------------------------------------------------------------------- /rcds/cli/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/cli/__main__.py -------------------------------------------------------------------------------- /rcds/cli/deploy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/cli/deploy.py -------------------------------------------------------------------------------- /rcds/errors.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/errors.py -------------------------------------------------------------------------------- /rcds/project/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/project/__init__.py -------------------------------------------------------------------------------- /rcds/project/assets.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/project/assets.py -------------------------------------------------------------------------------- /rcds/project/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/project/config.py -------------------------------------------------------------------------------- /rcds/project/project.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/project/project.py -------------------------------------------------------------------------------- /rcds/project/rcds.schema.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/project/rcds.schema.yaml -------------------------------------------------------------------------------- /rcds/py.typed: -------------------------------------------------------------------------------- 1 | # Marker file for PEP 561. The mypy package uses inline types. 2 | -------------------------------------------------------------------------------- /rcds/util/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/util/__init__.py -------------------------------------------------------------------------------- /rcds/util/deep_merge.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/util/deep_merge.py -------------------------------------------------------------------------------- /rcds/util/find.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/util/find.py -------------------------------------------------------------------------------- /rcds/util/jsonschema.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/util/jsonschema.py -------------------------------------------------------------------------------- /rcds/util/load.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/rcds/util/load.py -------------------------------------------------------------------------------- /tests/challenge/test_challenge.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge.py -------------------------------------------------------------------------------- /tests/challenge/test_challenge/bad#dir/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/bad#dir/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_challenge/id_override/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/id_override/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_challenge/json/challenge.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/json/challenge.json -------------------------------------------------------------------------------- /tests/challenge/test_challenge/nonexistent/.dir: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/nonexistent/.dir -------------------------------------------------------------------------------- /tests/challenge/test_challenge/rcds.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/challenge/test_challenge/render-description/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/render-description/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_challenge/shortcuts-http/challenge.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/shortcuts-http/challenge.yaml -------------------------------------------------------------------------------- /tests/challenge/test_challenge/shortcuts-tcp/challenge.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/shortcuts-tcp/challenge.yaml -------------------------------------------------------------------------------- /tests/challenge/test_challenge/static-assets/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/static-assets/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_challenge/static-assets/file1.txt: -------------------------------------------------------------------------------- 1 | File 1 contents 2 | -------------------------------------------------------------------------------- /tests/challenge/test_challenge/static-assets/file2.txt: -------------------------------------------------------------------------------- 1 | File 2 contents 2 | -------------------------------------------------------------------------------- /tests/challenge/test_challenge/yaml/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_challenge/yaml/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config.py -------------------------------------------------------------------------------- /tests/challenge/test_config/default-category/chall/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/default-category/chall/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/defaults/1/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/defaults/1/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/defaults/2/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/defaults/2/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/expose-no-containers/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/expose-no-containers/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/flag-format/invalid/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/flag-format/invalid/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/flag-format/valid/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/flag-format/valid/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/no-default-category/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/no-default-category/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/nonexistent-flag-file/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/nonexistent-flag-file/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/nonexistent-provide-file/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/nonexistent-provide-file/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/nonexistent-target-container/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/nonexistent-target-container/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/nonexistent-target-port/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/nonexistent-target-port/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/rcds.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/challenge/test_config/schema-fail/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/schema-fail/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/valid/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/valid/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/valid/flag.txt: -------------------------------------------------------------------------------- 1 | flag{test_flag_here} 2 | -------------------------------------------------------------------------------- /tests/challenge/test_config/warn-multiline-flag/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_config/warn-multiline-flag/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_config/warn-multiline-flag/flag.txt: -------------------------------------------------------------------------------- 1 | two 2 | lines 3 | -------------------------------------------------------------------------------- /tests/challenge/test_docker.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_docker.py -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/basic/.file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/basic/Dockerfile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/basic/a/.file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/basic/a/b/.file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/basic/a/b/file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/basic/a/file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/basic/file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/complex_dockerignore/.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_docker/contexts/complex_dockerignore/.dockerignore -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/complex_dockerignore/Dockerfile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/complex_dockerignore/a: -------------------------------------------------------------------------------- 1 | asdf 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/complex_dockerignore/b: -------------------------------------------------------------------------------- 1 | asdf 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/complex_dockerignore/c/file: -------------------------------------------------------------------------------- 1 | asdf 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/complex_dockerignore/d/file: -------------------------------------------------------------------------------- 1 | asdf 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/.dockerignore: -------------------------------------------------------------------------------- 1 | a/ 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/.file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/Dockerfile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/a/.file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/a/b/.file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/a/b/file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/a/file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/contexts/dockerignore/file: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/challenge/test_docker/project/chall/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_docker/project/chall/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_docker/project/chall2/challenge.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_docker/project/chall2/challenge.yml -------------------------------------------------------------------------------- /tests/challenge/test_docker/project/rcds.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/challenge/test_docker/project/rcds.yml -------------------------------------------------------------------------------- /tests/project/test_assets.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/project/test_assets.py -------------------------------------------------------------------------------- /tests/project/test_assets/dir/.dir: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/project/test_assets/dir/.dir -------------------------------------------------------------------------------- /tests/project/test_assets/file1: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/project/test_assets/file2: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/util/test_deep_merge.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tests/util/test_deep_merge.py -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redpwn/rcds/HEAD/tox.ini --------------------------------------------------------------------------------