fifa17-recon: reconcile authoritative tools with running backend (B)
- Add 8 files present in docker/fifa17-python/tools but missing from the top-level tree: fut_accounts.py + 7 test_*.py contracts (all committed in the server's docker tree; byte-identical to the running image). - Preserve newer responder work already matching the running container: utas_server.py (offlineSeason), lsx_responder_v2.py (OPENFUT_BIND), blaze_responder_v3b.py, autopatch.py, pow_server.py, fut_store.py, test_fut_contract.py, fifa17-hook-m1.sh. - Add 30 newer ghidra_queries (draft purchase/state, SBC 9-26, runtime registries). Local tree is now a strict superset of B with all shared files byte-identical.
This commit is contained in:
@@ -65,6 +65,18 @@ MODE = os.environ.get("POW_MODE", "serve")
|
||||
API_ADDR = os.environ.get("POW_ADDR", "127.0.0.1:8094")
|
||||
CONTENT_ADDR = os.environ.get("POW_CONTENT_ADDR", "127.0.0.1:8080")
|
||||
|
||||
# CardsDLL's store-description localizer accepts an empty translation catalogue;
|
||||
# transport/XML success is the gate. It discovers individual <trans-unit> records
|
||||
# when present, so keep a standards-shaped empty XLIFF document rather than invent
|
||||
# labels for server content we do not yet expose.
|
||||
STOREPACK_DESCRIPTIONS_XML = b"""<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff version="1.2">
|
||||
<file source-language="en_us" datatype="plaintext" original="storepackdescriptions">
|
||||
<body />
|
||||
</file>
|
||||
</xliff>
|
||||
"""
|
||||
|
||||
|
||||
def _split(hostport, default_port):
|
||||
host, _, port = hostport.partition(":")
|
||||
@@ -296,6 +308,17 @@ class _Handler(http.server.BaseHTTPRequestHandler):
|
||||
log(" body: %s" % body[:65536].decode("utf-8", "replace"))
|
||||
|
||||
if self.kind == "content":
|
||||
content_path = self.path.split("?", 1)[0]
|
||||
if content_path.rstrip("/") == "/fut/packs/loc/storepackdescriptions.en_us.xml":
|
||||
raw = STOREPACK_DESCRIPTIONS_XML
|
||||
self.send_response(200)
|
||||
self.send_header("Content-Type", "application/xml; charset=utf-8")
|
||||
self.send_header("Content-Length", str(len(raw)))
|
||||
self.end_headers()
|
||||
if self.command != "HEAD":
|
||||
self.wfile.write(raw)
|
||||
log(" -> 200 storepack descriptions XML (%d bytes)" % len(raw))
|
||||
return
|
||||
# Art assets (.dds/.png). We have none; 404 is the honest answer and is
|
||||
# what a missing-asset CDN would return. Logged so we learn what art the
|
||||
# client wants before deciding to synthesise any.
|
||||
|
||||
Reference in New Issue
Block a user