dragg2 commited on
Commit
19c209b
·
verified ·
1 Parent(s): e7e4e66

Update Dockerfile

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