| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/usr/bin/env python3
- """Search engine helpers: registry, query builder, decoder."""
- import sys, base64
- err = []
- from core.main import UFONet
- app = UFONet()
- try:
- app.start_ship_engine()
- except SystemExit:
- pass
- except Exception as e:
- err.append(f"start_ship_engine raised: {type(e).__name__}: {e}")
- expected_engines = ['bing', 'duck', 'brave', 'mojeek', 'yahoo', 'startpage', 'ecosia']
- for e in expected_engines:
- if e not in app.search_engines:
- err.append(f"search engine missing in registry: {e}")
- target = "https://example.com/page.php"
- b64 = base64.urlsafe_b64encode(target.encode("utf-8")).decode("ascii").rstrip("=")
- sample_bing = f"https://www.bing.com/ck/a?!&&p=xyz&u=a1{b64}&ntb=1"
- got = app._bing_decode(sample_bing)
- if got != target:
- err.append(f"_bing_decode mismatch: expected {target!r}, got {got!r}")
- raw_yahoo = "https://r.search.yahoo.com/_ylt=xxxx/RV=2/RE=00/RO=10/RU=https%3a%2f%2fexample.com%2fpage%3fa%3d1/RK=2/RS=zzz"
- got2 = app._yahoo_decode(raw_yahoo)
- if "example.com/page" not in got2:
- err.append(f"_yahoo_decode unexpected: {got2!r}")
- class _O: pass
- app.options = _O()
- app.options.search = "page.php?url="
- app.options.dorks = None
- app.options.autosearch = None
- sep, q = app._engine_query_string(None)
- if sep != "page.php?url=" or "instreamset" not in q:
- err.append(f"query_string (search mode) wrong: sep={sep!r} q={q!r}")
- app.options.search = None
- app.options.dorks = "dorks.txt"
- sep2, q2 = app._engine_query_string("redirect.php?url=")
- if sep2 != "redirect.php?url=" or "redirect.php" not in q2:
- err.append(f"query_string (dork mode) wrong: sep={sep2!r} q={q2!r}")
- print(f"registry: {app.search_engines}")
- print(f"bing decode OK: {got == target}")
- print(f"yahoo decode OK: {'example.com/page' in got2}")
- print(f"query_string (search): {sep!r}, {q!r}")
- print(f"query_string (dork): {sep2!r}, {q2!r}")
- for e in err:
- print("FAIL:", e)
- sys.exit(0 if not err else 1)
|