aboutsummaryrefslogtreecommitdiffstats
path: root/src/server/HttpServer.hx
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2024-04-28 07:23:25 +0300
committerRblSb <msrblsb@gmail.com>2024-04-28 21:51:50 +0300
commit9d844bbf3ac6be327325b13a91a6b33f73c49c1d (patch)
tree52108f2300ca84decf33a1e7b3552e81166ba5ac /src/server/HttpServer.hx
parent8679f8edcb6d2f3142db30848c640aed6fe883b8 (diff)
Raw youtube fallback for unavailable videos
Also: - fix `tryLocalIp` replacement (NAT workaround) - improve proxy headers a bit - use json2object fork for better generated diffs
Diffstat (limited to 'src/server/HttpServer.hx')
-rw-r--r--src/server/HttpServer.hx24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/server/HttpServer.hx b/src/server/HttpServer.hx
index c953bb0..1a0c4d5 100644
--- a/src/server/HttpServer.hx
+++ b/src/server/HttpServer.hx
@@ -187,9 +187,9 @@ class HttpServer {
static function proxyUrl(req:IncomingMessage, res:ServerResponse):Bool {
final url = req.url.replace("/proxy?url=", "");
- final proxy = proxyRequest(url, req, res, proxyReq -> {
- final url = proxyReq.headers["location"] ?? return false;
- final proxy2 = proxyRequest(url, req, res, proxyReq -> false);
+ final proxy = proxyRequest(url, req, res, proxyRes -> {
+ final url = proxyRes.headers["location"] ?? return false;
+ final proxy2 = proxyRequest(url, req, res, proxyRes -> false);
if (proxy2 == null) {
res.end('Proxy error: multiple redirects for url $url');
return true;
@@ -203,8 +203,10 @@ class HttpServer {
}
static function proxyRequest(
- url:String, req:IncomingMessage, res:ServerResponse,
- fn:(req:IncomingMessage) -> Bool
+ url:String,
+ req:IncomingMessage,
+ res:ServerResponse,
+ cancelProxyRequest:(proxyRes:IncomingMessage) -> Bool
):Null<ClientRequest> {
final url = try {
new URL(safeDecodeURI(url));
@@ -216,12 +218,14 @@ class HttpServer {
path: url.pathname + url.search,
method: req.method
};
+ req.headers["referer"] = url.toString();
+ req.headers["host"] = url.hostname;
final request = url.protocol == "https:" ? Https.request : Http.request;
- final proxy = request(options, proxyReq -> {
- if (fn(proxyReq)) return;
- proxyReq.headers["Content-Type"] = "application/octet-stream";
- res.writeHead(proxyReq.statusCode, proxyReq.headers);
- proxyReq.pipe(res);
+ final proxy = request(options, proxyRes -> {
+ if (cancelProxyRequest(proxyRes)) return;
+ proxyRes.headers["Content-Type"] = "application/octet-stream";
+ res.writeHead(proxyRes.statusCode, proxyRes.headers);
+ proxyRes.pipe(res);
});
proxy.on("error", err -> {
res.end('Proxy error: ${url.href}');
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage