Spaces:
Running
Running
| FROM ymlisoft/kkfileview | |
| USER root | |
| RUN apt-get update && apt-get install -y xvfb python3 && rm -rf /var/lib/apt/lists/* | |
| ENV SERVER_PORT=8012 | |
| ENV KKFILEVIEW_SECURITY_TRUST_HOST=default | |
| ENV ACCESS_TOKEN=your-secret-token-here | |
| # 创建 Token 验证脚本(使用 printf) | |
| RUN printf '#!/usr/bin/env python3\n\ | |
| import http.server\n\ | |
| import socketserver\n\ | |
| import urllib.request\n\ | |
| import os\n\ | |
| from urllib.parse import urlparse, parse_qs\n\ | |
| \n\ | |
| PORT = 7860\n\ | |
| BACKEND = "http://127.0.0.1:8012"\n\ | |
| TOKEN = os.getenv("ACCESS_TOKEN", "changeme")\n\ | |
| \n\ | |
| class TokenHandler(http.server.SimpleHTTPRequestHandler):\n\ | |
| def do_GET(self):\n\ | |
| parsed = urlparse(self.path)\n\ | |
| params = parse_qs(parsed.query)\n\ | |
| \n\ | |
| # 检查 token\n\ | |
| if params.get("token", [""])[0] != TOKEN:\n\ | |
| self.send_response(403)\n\ | |
| self.end_headers()\n\ | |
| self.wfile.write(b"Access denied. Please provide valid token.")\n\ | |
| return\n\ | |
| \n\ | |
| # 转发到后端\n\ | |
| url = BACKEND + self.path\n\ | |
| try:\n\ | |
| response = urllib.request.urlopen(url)\n\ | |
| self.send_response(response.getcode())\n\ | |
| for header, value in response.headers.items():\n\ | |
| self.send_header(header, value)\n\ | |
| self.end_headers()\n\ | |
| self.wfile.write(response.read())\n\ | |
| except Exception as e:\n\ | |
| self.send_error(502, f"Backend error: {str(e)}")\n\ | |
| \n\ | |
| with socketserver.TCPServer(("", PORT), TokenHandler) as httpd:\n\ | |
| print(f"Token auth running. Access with ?token={TOKEN}")\n\ | |
| httpd.serve_forever()\n' > /token_check.py && \ | |
| chmod +x /token_check.py | |
| # 启动脚本 | |
| RUN printf '#!/bin/bash\n\ | |
| echo "=== Starting kkFileView with Token Auth ==="\n\ | |
| echo "Access token: [HIDDEN]"\n\ | |
| echo ""\n\ | |
| Xvfb :99 -screen 0 1024x768x24 &\n\ | |
| export DISPLAY=:99\n\ | |
| sleep 2\n\ | |
| /opt/kkFileView/bin/kkFileView --server.port=8012 &\n\ | |
| sleep 5\n\ | |
| python3 /token_check.py\n' > /start.sh && \ | |
| chmod +x /start.sh | |
| EXPOSE 7860 | |
| CMD ["/start.sh"] | |