Compare commits
6 Commits
nginx
..
d5ead66a07
| Author | SHA1 | Date | |
|---|---|---|---|
| d5ead66a07 | |||
| f8436927cf | |||
| 3b4ee632b1 | |||
| 6b868c2b63 | |||
| 40bda207e1 | |||
| ea8bf8fa1e |
+2
-1
@@ -1,3 +1,4 @@
|
||||
.vscode
|
||||
__pycache__
|
||||
test.mp4
|
||||
test.mp4
|
||||
env
|
||||
+7
-2
@@ -13,9 +13,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
:80 {
|
||||
#nl.u2b.cx u2b.cx {
|
||||
{$CADDY_SITE:":80"} {
|
||||
log
|
||||
tls {
|
||||
dns porkbun {
|
||||
api_key {env.PORKBUN_API_KEY}
|
||||
api_secret_key {env.PORKBUN_API_SECRET}
|
||||
}
|
||||
}
|
||||
handle_path /proxy/* {
|
||||
@gv path_regexp gvurl ^\/([a-z0-9-]+\.googlevideo\.com)
|
||||
handle @gv {
|
||||
|
||||
+3
-1
@@ -1,4 +1,6 @@
|
||||
FROM caddy:2.6-builder AS builder
|
||||
RUN xcaddy build --with github.com/caddyserver/transform-encoder
|
||||
RUN xcaddy build \
|
||||
--with github.com/caddyserver/transform-encoder \
|
||||
--with github.com/caddy-dns/porkbun
|
||||
FROM caddy:2.6
|
||||
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
||||
+7
-15
@@ -11,26 +11,18 @@ services:
|
||||
- PORT=8080
|
||||
- PROXY=/proxy/
|
||||
command: python server.py
|
||||
# caddy:
|
||||
# image: caddy:2.6
|
||||
# restart: always
|
||||
# ports:
|
||||
# - "80:80"
|
||||
# - "443:443"
|
||||
# - "443:443/udp"
|
||||
# volumes:
|
||||
# - ./Caddyfile:/etc/caddy/Caddyfile
|
||||
# - caddy_data:/data
|
||||
# - caddy_config:/config
|
||||
nginx:
|
||||
image: nginx:1.25
|
||||
caddy:
|
||||
build: caddy
|
||||
restart: always
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "443:443/udp"
|
||||
volumes:
|
||||
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||
- caddy_data:/data
|
||||
- caddy_config:/config
|
||||
env_file: env
|
||||
volumes:
|
||||
caddy_data:
|
||||
caddy_config:
|
||||
-56
@@ -1,56 +0,0 @@
|
||||
user nginx;
|
||||
worker_processes auto;
|
||||
error_log /var/log/nginx/error.log notice;
|
||||
pid /var/run/nginx.pid;
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
log_format main '$time_local $remote_addr "$request" $status "$http_user_agent"';
|
||||
access_log /var/log/nginx/access.log main;
|
||||
resolver 8.8.8.8 ipv6=off;#until I can get ipv6 on the new host
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location /proxy/ {
|
||||
limit_except GET { deny all; }
|
||||
location ~^/proxy/([a-z0-9-]+)\.googlevideo\.com/videoplayback {
|
||||
#return 200 "$uri\n\n$request_uri\n\n$query_string\n\nhttps://$1/$2";
|
||||
proxy_pass https://$1.googlevideo.com/videoplayback?$query_string;
|
||||
#proxy_redirect ~https://([a-z0-9-]+).googlevideo.com/ /proxy/$1.googlevideo.com/;
|
||||
proxy_redirect https:// /proxy/;
|
||||
}
|
||||
return 403;
|
||||
}
|
||||
|
||||
location = / {
|
||||
return 301 https://www.u2b.cx/;
|
||||
}
|
||||
location = /favicon.ico {
|
||||
return 404;
|
||||
}
|
||||
location /. {
|
||||
return 403;
|
||||
}
|
||||
location = /robots.txt {
|
||||
add_header Content-Type text/plain;
|
||||
return 200 "User-agent: *\nDisallow: /\n";
|
||||
}
|
||||
|
||||
if ($request_method != GET) {
|
||||
return 403;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Connection "";
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_pass http://app:8080;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -26,10 +26,10 @@ class Handler(BaseHTTPRequestHandler):
|
||||
def address_string(self):
|
||||
return getattr(self, 'headers', {}).get('X-Forwarded-For', '').split(',')[0] or self.client_address[0]
|
||||
|
||||
def is_pc_vrchat(self):
|
||||
ua = self.headers.get('User-Agent', '')
|
||||
ae = self.headers.get('Accept-Encoding', '')
|
||||
return ua.startswith("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/") and ua.endswith(" Safari/537.36") and ae == "identity"
|
||||
#def is_pc_vrchat(self):
|
||||
# ua = self.headers.get('User-Agent', '')
|
||||
# ae = self.headers.get('Accept-Encoding', '')
|
||||
# return ua.startswith("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/") and ua.endswith(" Safari/537.36") and ae == "identity"
|
||||
|
||||
def send_error(self, code, message=""):
|
||||
body = bytes(message, "utf-8")
|
||||
@@ -48,11 +48,11 @@ class Handler(BaseHTTPRequestHandler):
|
||||
path = unquote(self.path)
|
||||
match = re.match("\/(?:id\/|(?:https?:\/\/)?(?:(?:www\.|music\.|m\.)?youtube\.com\/(?:watch\?v=|shorts\/)|youtu\.be\/))([A-Za-z0-9_-]{11})", path)
|
||||
if match:
|
||||
if self.is_pc_vrchat():
|
||||
self.send_response(302)
|
||||
self.send_header("Location", "https://www.youtube.com/watch?v=" + match[1])
|
||||
self.end_headers()
|
||||
return
|
||||
#if self.is_pc_vrchat():
|
||||
# self.send_response(302)
|
||||
# self.send_header("Location", "https://www.youtube.com/watch?v=" + match[1])
|
||||
# self.end_headers()
|
||||
# return
|
||||
query = match[1]
|
||||
else:
|
||||
query = "ytsearch:" + path[1:]
|
||||
@@ -70,7 +70,7 @@ class Handler(BaseHTTPRequestHandler):
|
||||
'event': Event(),
|
||||
'expire': datetime.now() + timedelta(hours=5)
|
||||
}
|
||||
with YoutubeDL() as ydl:
|
||||
with YoutubeDL({'extractor_args': {'youtube': {'skip': ['dash', 'hls']}}}) as ydl:
|
||||
info = ydl.extract_info(query, download=False)
|
||||
|
||||
selection = info
|
||||
@@ -103,12 +103,12 @@ class Handler(BaseHTTPRequestHandler):
|
||||
elif 'url' not in ctx:
|
||||
ctx['event'].wait(60)
|
||||
|
||||
if self.is_pc_vrchat():
|
||||
if ctx.get('id'):
|
||||
self.send_response(302)
|
||||
self.send_header("Location", "https://www.youtube.com/watch?v=" + ctx['id'])
|
||||
self.end_headers()
|
||||
return
|
||||
#if self.is_pc_vrchat():
|
||||
# if ctx.get('id'):
|
||||
# self.send_response(302)
|
||||
# self.send_header("Location", "https://www.youtube.com/watch?v=" + ctx['id'])
|
||||
# self.end_headers()
|
||||
# return
|
||||
|
||||
if not ctx.get('url'):
|
||||
if 'exception' in ctx:
|
||||
|
||||
Reference in New Issue
Block a user