http://127.0.0.1:8000/ にアクセスするとカレントディレクトリを返すサンプルです。
Python
1# -*- coding: utf8 -*-
2import os
3from http.server import HTTPServer, SimpleHTTPRequestHandler
4from socketserver import ThreadingMixIn
5from ipaddress import ip_address
6import html
7
8
9class MyHandler(SimpleHTTPRequestHandler):
10 def to_content(self) -> str:
11 body = f"time:{html.escape(self.date_time_string())}<br>dir:{html.escape(os.getcwd())}"
12 content = f"<html><head></head><body>{body}</body></html>"
13 return content
14
15 def do_GET(self):
16 req_ip = ip_address(self.client_address[0])
17 # IPアドレスによる簡易的なアクセス制限
18 # ループバック,ローカルアドレス以外はステータスコード:403を返す
19 is_accepted = any([req_ip.is_loopback, req_ip.is_private])
20 if is_accepted:
21 self.send_response(200)
22 self.end_headers()
23 self.wfile.write(self.to_content().encode('utf-8'))
24 self.wfile.write(b'\n')
25 return
26 else:
27 self.send_response(403)
28 self.end_headers()
29 return
30
31
32class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
33 daemon_threads = True
34
35
36def main() ->None:
37 PORT = 8000
38 print(os.getcwd())
39 print(os.path.abspath(__file__))
40 with ThreadingHTTPServer(("", PORT), MyHandler) as httpd:
41 print("serving at port", PORT)
42 httpd.serve_forever()
43
44
45if __name__ == '__main__':
46 main()
47
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/14 22:01