splithello 0.1.1

Local HTTPS CONNECT proxy that splits the TLS ClientHello for selected sites, with DNS over HTTPS
# SplitHello configuration. Only `targets` is required; every other value shown is the
# default. `splithello start` writes this file when none exists.

# Sites that use DoH + ClientHello splitting. A plain host also covers its subdomains;
# use { host = "example.com", subdomains = false } to match one exact host.
# SplitHello will not start until at least one site is listed, for example:
# targets = ["reddit.com", "medium.com"]
targets = []

[proxy]
listen = "127.0.0.1:8080" # browser HTTPS proxy address
pac = "127.0.0.1:8081"    # serves http://127.0.0.1:8081/proxy.pac; pac = false disables it
ports = [443]             # CONNECT ports to accept (443 and/or 8443)

[dns]
# The endpoint host must be bootstrap-reachable without resolving a selected/blocked domain.
# Prefer a literal-IP HTTPS endpoint with a certificate valid for that IP, as below, or an
# independently resolvable non-target host. HTTPS authentication is mandatory; an optional
# ca_certificate may add trusted roots but never disables certificate verification.
upstream = "https://1.1.1.1/dns-query"
timeout = "10s"
cache_ttl = "5m"  # upper bound; shorter DNS answer TTLs win
cache_size = 256
# ca_certificate = "extra-roots.pem"
# max_response_bytes = 65536

# Rarely needed; durations accept units like "750ms", "10s", "5m".
# [limits]
# max_connections = 256
# connect_timeout = "10s"
# client_hello_timeout = "5s"
# idle_timeout = "5m"
# shutdown_timeout = "10s"
# max_connect_header_bytes = 16384
# max_client_hello_bytes = 262144

# `start` and `check` ask GitHub for the latest release at most once a day and say when
# a newer one exists; `splithello update` installs it. SPLITHELLO_NO_UPDATE_CHECK=1 also
# turns the check off.
# [update]
# check = true