updated sla jon

This commit is contained in:
Rayhan Hanaputra
2025-10-26 09:29:22 +07:00
parent 33da190f37
commit 720941ee63
+24 -9
View File
@@ -205,23 +205,38 @@ class Blogpost(Challenge):
self.logger.error(f" ✗ View post failed: {e}") self.logger.error(f" ✗ View post failed: {e}")
return False return False
# 6) Locate the uploaded file link on the post page, then fetch the .meta file via /uploads/<file>.meta # 6) Verify the uploaded image is accessible and check metadata
self.logger.info("[7/7] Verifying ExifTool metadata persisted & accessible ...") self.logger.info("[7/7] Verifying uploaded image and metadata ...")
try: try:
# Find something like /uploads/<sha256>.png (or .jpg/.jpeg/.bmp) # Find something like /uploads/<sha256>.png (or .jpg/.jpeg/.bmp)
m = re.search(r'/uploads/([A-Za-z0-9_.-]+\.(?:png|jpg|jpeg|bmp))', vp.text, flags=re.IGNORECASE) m = re.search(r'/uploads/([A-Za-z0-9_.-]+\.(?:png|jpg|jpeg|bmp))', vp.text, flags=re.IGNORECASE)
assert m, "No uploaded image link found on post page" assert m, "No uploaded image link found on post page"
image_name = m.group(1) image_name = m.group(1)
# The server stores metadata in a sibling file with .meta suffix; it is served by the same /uploads route. self.logger.info(f" → Found image: {image_name}")
# Verify the image itself is accessible
img_url = base_url + f"/uploads/{image_name}"
img_r = s.get(img_url, timeout=10)
assert img_r.status_code == 200, f"Image file HTTP {img_r.status_code}"
assert len(img_r.content) > 0, "Image file is empty"
self.logger.info(" ✓ Uploaded image accessible")
# Check if metadata file exists
meta_url = base_url + f"/uploads/{image_name}.meta" meta_url = base_url + f"/uploads/{image_name}.meta"
self.logger.info(f" → Trying metadata at: {meta_url}")
mr = s.get(meta_url, timeout=10) mr = s.get(meta_url, timeout=10)
assert mr.status_code == 200, f"Meta file HTTP {mr.status_code}" if mr.status_code == 200:
meta_text = mr.text.strip() meta_text = mr.text.strip()
# Heuristic: expect at least one ExifTool-like marker if any(tag in meta_text for tag in self._exif_markers):
assert any(tag in meta_text for tag in self._exif_markers), "Meta file does not look like ExifTool output" self.logger.info(" ✓ Exif metadata present and readable")
self.logger.info(" ✓ Exif metadata present and readable") else:
self.logger.warning(f" ⚠ Metadata file exists but doesn't look like ExifTool output")
else:
# Try without .meta extension, maybe it's embedded or stored differently
self.logger.warning(f" ⚠ Metadata file returned HTTP {mr.status_code}")
# Non-fatal - as long as upload/display works
except Exception as e: except Exception as e:
self.logger.error(f" ✗ Metadata verification failed: {e}") self.logger.error(f" ✗ Upload verification failed: {e}")
return False return False
# 7) Flag existence in container (do not fail SLA if only host copy exists but container is missing—treat as warning or policy-driven) # 7) Flag existence in container (do not fail SLA if only host copy exists but container is missing—treat as warning or policy-driven)