dragg2 commited on
Commit
e7e4e66
·
verified ·
1 Parent(s): 0c799ac

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +49 -10
Dockerfile CHANGED
@@ -2,23 +2,62 @@ FROM ymlisoft/kkfileview
2
 
3
  USER root
4
 
5
- RUN apt-get update && apt-get install -y xvfb && rm -rf /var/lib/apt/lists/*
6
 
7
- ENV SERVER_PORT=7860
8
  ENV KKFILEVIEW_SECURITY_TRUST_HOST=default
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  RUN printf '#!/bin/bash\n\
11
- echo "=== Environment Variables ==="\n\
12
- echo "SERVER_PORT: $SERVER_PORT"\n\
13
- echo "KKFILEVIEW_SECURITY_TRUST_HOST: $KKFILEVIEW_SECURITY_TRUST_HOST"\n\
14
- echo ""\n\
15
- echo "Starting Xvfb..."\n\
16
  Xvfb :99 -screen 0 1024x768x24 &\n\
17
  export DISPLAY=:99\n\
18
  sleep 2\n\
19
- echo "Starting kkFileView on port 7860..."\n\
20
- /opt/kkFileView/bin/kkFileView --server.port=7860\n' > /start.sh && \
21
- chmod +x /start.sh
22
 
23
  EXPOSE 7860
24
 
 
2
 
3
  USER root
4
 
5
+ RUN apt-get update && apt-get install -y xvfb python3 && rm -rf /var/lib/apt/lists/*
6
 
7
+ ENV SERVER_PORT=8012
8
  ENV KKFILEVIEW_SECURITY_TRUST_HOST=default
9
 
10
+ # 创建 Token 验证脚本
11
+ RUN cat > /token_check.py << 'PYEOF'
12
+ #!/usr/bin/env python3
13
+ import http.server
14
+ import socketserver
15
+ import urllib.request
16
+ import os
17
+ from urllib.parse import urlparse, parse_qs
18
+
19
+ PORT = 7860
20
+ BACKEND = "http://127.0.0.1:8012"
21
+ TOKEN = os.getenv("ACCESS_TOKEN", "changeme")
22
+
23
+ class TokenHandler(http.server.SimpleHTTPRequestHandler):
24
+ def do_GET(self):
25
+ parsed = urlparse(self.path)
26
+ params = parse_qs(parsed.query)
27
+
28
+ # 检查 token
29
+ if params.get('token', [''])[0] != TOKEN:
30
+ self.send_response(403)
31
+ self.end_headers()
32
+ self.wfile.write(b'Access denied. Please provide valid token.')
33
+ return
34
+
35
+ # 转发到后端
36
+ url = BACKEND + self.path
37
+ try:
38
+ response = urllib.request.urlopen(url)
39
+ self.send_response(response.getcode())
40
+ for header, value in response.headers.items():
41
+ self.send_header(header, value)
42
+ self.end_headers()
43
+ self.wfile.write(response.read())
44
+ except Exception as e:
45
+ self.send_error(502, f"Backend error: {str(e)}")
46
+
47
+ with socketserver.TCPServer(("", PORT), TokenHandler) as httpd:
48
+ print(f"Token auth running. Access with ?token={TOKEN}")
49
+ httpd.serve_forever()
50
+ PYEOF
51
+
52
+ RUN chmod +x /token_check.py
53
+
54
  RUN printf '#!/bin/bash\n\
 
 
 
 
 
55
  Xvfb :99 -screen 0 1024x768x24 &\n\
56
  export DISPLAY=:99\n\
57
  sleep 2\n\
58
+ /opt/kkFileView/bin/kkFileView --server.port=8012 &\n\
59
+ sleep 5\n\
60
+ python3 /token_check.py\n' > /start.sh && chmod +x /start.sh
61
 
62
  EXPOSE 7860
63