Skip to content

Commit 144749c

Browse files
authored
PYTHON-5260 Clean up OCSP Server (#642)
1 parent 1cc6994 commit 144749c

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

.evergreen/ocsp/mock_ocsp_responder.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,7 @@ def init(port=8080, debug=False, host=None):
634634

635635
@app.route("/", methods=["GET"])
636636
def _handle_root():
637+
logger.debug("Handled root get")
637638
return "ocsp-responder"
638639

639640

@@ -645,10 +646,14 @@ def _handle_get(u_path):
645646
An OCSP GET request contains the DER-in-base64 encoded OCSP request in the
646647
HTTP request URL.
647648
"""
649+
logger.debug("Handling get %s...", u_path)
648650
if "Host" not in request.headers:
649-
raise ValueError("Required 'Host' header not present")
651+
message = "Required 'Host' header not present"
652+
logger.error(message)
653+
raise ValueError(message)
650654
der = base64.b64decode(u_path)
651655
ocsp_request = responder.parse_ocsp_request(der)
656+
logger.debug("Handling get %s... done.", u_path)
652657
return responder.build_http_response(ocsp_request)
653658

654659

@@ -659,7 +664,11 @@ def _handle_post():
659664
An OCSP POST request contains the DER encoded OCSP request in the HTTP
660665
request body.
661666
"""
667+
logger.debug("Handling post to /status...")
662668
if "Host" not in request.headers:
663-
raise ValueError("Required 'Host' header not present")
669+
message = "Required 'Host' header not present"
670+
logger.error(message)
671+
raise ValueError(message)
664672
ocsp_request = responder.parse_ocsp_request(request.data)
673+
logger.debug("Handling post to /status... done.")
665674
return responder.build_http_response(ocsp_request)

.evergreen/ocsp/ocsp_mock.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ def main():
6565
)
6666

6767
args = parser.parse_args()
68-
if args.verbose:
69-
logging.basicConfig(level=logging.DEBUG)
68+
level = logging.DEBUG if args.verbose else logging.INFO
69+
logging.basicConfig(level=level, format="%(asctime)s %(levelname)-8s %(message)s")
7070

71-
print("Initializing OCSP Responder")
71+
mock_ocsp_responder.logger.info("Initializing OCSP Responder")
7272
mock_ocsp_responder.init_responder(
7373
issuer_cert=args.ca_file,
7474
responder_cert=args.ocsp_responder_cert,
@@ -78,6 +78,7 @@ def main():
7878
)
7979

8080
serve(mock_ocsp_responder.app, host=args.bind_ip, port=args.port)
81+
mock_ocsp_responder.logger.info("Shutting down OCSP Responder")
8182

8283

8384
if __name__ == "__main__":

.evergreen/ocsp/setup.sh

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ bash teardown.sh
2525
echo "Starting OCSP server ${OCSP_ALGORITHM}-${SERVER_TYPE}..."
2626

2727
CA_FILE="${OCSP_ALGORITHM}/ca.pem"
28-
ARGS="-p 8100 -v"
28+
PORT=8100
29+
ARGS="-p $PORT -v"
2930

3031
case $SERVER_TYPE in
3132
valid)
@@ -67,7 +68,22 @@ $COMMAND ocsp_mock.py \
6768
$ARGS > ocsp_mock_server.log 2>&1 &
6869
echo "$!" > ocsp.pid
6970

70-
sleep 1
71+
await_server() {
72+
echo "Waiting on $1 server on port $2"
73+
for _ in $(seq 10); do
74+
# Exit code 7: "Failed to connect to host".
75+
if curl -s "localhost:$2"; test $? -ne 7; then
76+
echo "Waiting on $1 server on port $2...done"
77+
return 0
78+
else
79+
echo "Could not connect, sleeping."
80+
sleep 2
81+
fi
82+
done
83+
echo "Could not detect '$1' server on port $2"
84+
exit 1
85+
}
86+
await_server ocsp_mock.py $PORT
7187
cat ocsp_mock_server.log
7288

7389
echo "Starting OCSP server ${OCSP_ALGORITHM}-${SERVER_TYPE}... done."

0 commit comments

Comments
 (0)