{
	# we’re behind cloudflare tunnel; terminate tls there
	auto_https off
}

:8550 {
	# route by host header to each backend

	@paste host {env.PASTE_DOMAIN}
	handle @paste {
		# privatebin ui
		reverse_proxy privatebin:8080
	}

	@files host {env.FILES_DOMAIN}
	handle @files {
		# lufi ui
		reverse_proxy lufi:8081
	}

	@short host {env.SHORT_DOMAIN}
	handle @short {
		# shlink ui/api default
		reverse_proxy shlink:8080
	}

	# --- adapter endpoint so privatebin can call a simple ?link=... and get a plain-text short url ---
	# this lives on the same short domain; it just proxies to your tiny bun adapter service
	@shorten host {env.SHORT_DOMAIN} && path /shorten
	handle @shorten {
		# allow browser calls from your privatebin origin
		header {
			Access-Control-Allow-Origin https://{env.PASTE_DOMAIN}
			Access-Control-Allow-Methods GET, OPTIONS
			Access-Control-Allow-Headers *
			# do not cache shortened responses; they contain the full (keyed) url
			Cache-Control no-store
		}
		# forward to the adapter (which turns GET ?link=... into a shlink POST and replies with text)
		reverse_proxy shlink-adapter:3000
	}

	# preflight for /shorten
	@shortenPre host {env.SHORT_DOMAIN} && method OPTIONS && path /shorten
	respond @shortenPre 204

	respond "unauthorized domain" 404
}
