import http.server, os, re, sys
ROOT="/root/v8ctf-lab/payloads"
class H(http.server.SimpleHTTPRequestHandler):
  def __init__(self,*a,**k): super().__init__(*a,directory=ROOT,**k)
  def do_GET(self):
    p=self.path.split("?")[0].lstrip("/")
    fp=os.path.join(ROOT,p)
    if not os.path.isfile(fp): return self.send_error(404)
    data=open(fp,"rb").read(); rng=self.headers.get("Range")
    ct="text/html" if p.endswith(".html") else "video/mp4" if p.endswith(".mp4") else "application/octet-stream"
    if rng:
      m=re.match(r"bytes=(\d+)-(\d*)",rng)
      if m:
        s=int(m.group(1)); e=int(m.group(2)) if m.group(2) else len(data)-1; e=min(e,len(data)-1)
        self.send_response(206); self.send_header("Content-Type",ct); self.send_header("Content-Range",f"bytes {s}-{e}/{len(data)}"); self.send_header("Content-Length",str(e-s+1)); self.send_header("Accept-Ranges","bytes"); self.end_headers(); self.wfile.write(data[s:e+1]); return
    self.send_response(200); self.send_header("Content-Type",ct); self.send_header("Content-Length",str(len(data))); self.send_header("Accept-Ranges","bytes"); self.end_headers(); self.wfile.write(data)
  def log_message(self,*a): sys.stderr.write("SRV %s\n"%(a[0]%a[1:] if len(a)>1 else a[0]))
http.server.ThreadingHTTPServer(("127.0.0.1",8917),H).serve_forever()
