补记录后能解析吗
按模型,resolvable_after({}, "api", "1.2.3.4") 交回什么?
贯穿本节的全链路模型(判题机不联网、镜像没 dig/tcpdump,这是它的确定模型,见 spine.py):一次访问要依次走通四步——解析(DNS) → 连接(TCP) → 加密(TLS) → 请求(HTTP);证据 ev 是 {步名: 是否 OK}。
修复:add_record(表,域名,ip)=补 A 记录、resolvable_after=补后能否解析、open_port(监听表,端口)=把端口加进监听、serve_ok(状态码)=2xx/3xx 算好。
def add_record(table, host, ip):
"""给 DNS 表补一条 A 记录,交回新表。"""
t = dict(table)
t[host] = ip
return t
def resolvable_after(table, host, ip):
"""补上记录后,这个域名解析得了吗。"""
return host in add_record(table, host, ip)
def open_port(listening, port):
"""把端口加进监听列表,交回新列表。"""
return listening + [port] if port not in listening else list(listening)
def serve_ok(status):
"""这次响应算好吗(2xx/3xx 算好)。"""
return 200 <= status < 400
print(resolvable_after({}, "api", "1.2.3.4"))
全部评论