#!/usr/bin/env bash # Simple helper to exercise checker.py in check/put/get modes. set -u set -o pipefail HOST=${POLYPHONIA_TEST_HOST:-127.0.0.1} if [[ -v POLYPHONIA_TEST_FLAG ]]; then FLAG=${POLYPHONIA_TEST_FLAG} else # Default to attack-defence style flag: 31 chars of A-Z0-9 plus '=' FLAG="$(LC_ALL=C tr -dc 'A-Z0-9' "${stdout_file}" 2>"${stderr_file}" local code=$? RUN_LAST_STDOUT=$(cat "${stdout_file}") RUN_LAST_STDERR=$(cat "${stderr_file}") rm -f "${stdout_file}" "${stderr_file}" if [[ -n "${RUN_LAST_STDOUT}" ]]; then printf '%s\n' "${RUN_LAST_STDOUT}" else echo "" fi if [[ -n "${RUN_LAST_STDERR}" ]]; then printf '%s\n' "${RUN_LAST_STDERR}" >&2 else printf '\n' >&2 fi echo "exit code: ${code}" return "${code}" } run_checker check "${HOST}" check_code=$? run_checker put "${HOST}" "${FLAG_ID}" "${FLAG}" "${VULN}" put_code=$? stored_flag_id="${PRESET_STORED}" if [[ -z "${stored_flag_id}" ]]; then if [[ ${put_code} -eq 101 && -n "${RUN_LAST_STDOUT}" ]]; then stored_flag_id=$(printf '%s' "${RUN_LAST_STDOUT}" | tail -n 1) else stored_flag_id="${FLAG_ID}" fi fi run_checker get "${HOST}" "${stored_flag_id}" "${FLAG}" "${VULN}" get_code=$? exit_code=0 for code in "${check_code}" "${put_code}" "${get_code}"; do if [[ ${code} -ne 101 ]]; then exit_code=${code} break fi done exit "${exit_code}"