Add --no-directories option.

master
voussoir 2022-05-07 10:33:35 -07:00
parent 48552690dc
commit d040c65af6
No known key found for this signature in database
GPG Key ID: 5F7554F8C26DACCB
1 changed files with 22 additions and 3 deletions

View File

@ -203,9 +203,14 @@ class RequestHandler(http.server.BaseHTTPRequestHandler):
response = read_filebytes(path, range_min=range_min, range_max=range_max)
elif path.is_dir:
headers['Content-type'] = 'text/html'
response = generate_opendir(path, enable_zip=self.server.enable_zip)
response = response.encode('utf-8')
if self.server.enable_directory_listings:
headers['Content-type'] = 'text/html'
response = generate_opendir(path, enable_zip=self.server.enable_zip)
response = response.encode('utf-8')
else:
status_code = 404
self.send_error(status_code)
response = bytes()
elif self.path.endswith('.zip') and self.server.enable_zip:
path = url_to_path(self.path.rsplit('.zip', 1)[0])
@ -303,12 +308,14 @@ class SimpleServer:
password,
authorize_by_ip,
enable_zip,
enable_directory_listings,
overall_ratelimit,
individual_ratelimit,
):
self.port = port
self.password = password
self.authorize_by_ip = authorize_by_ip
self.enable_directory_listings = enable_directory_listings
self.enable_zip = enable_zip
self.overall_ratelimit = ratelimiter.Ratelimiter(overall_ratelimit)
self.individual_ratelimit = individual_ratelimit
@ -489,6 +496,7 @@ def simpleserver_argparse(args):
password=args.password,
authorize_by_ip=args.authorize_by_ip,
enable_zip=args.enable_zip,
enable_directory_listings=args.enable_directory_listings,
overall_ratelimit=args.overall_ratelimit,
individual_ratelimit=args.individual_ratelimit,
)
@ -550,6 +558,17 @@ def main(argv):
The maximum bytes/sec of the server overall.
''',
)
parser.add_argument(
'--no_directories',
'--no-directories',
dest='enable_directory_listings',
action='store_false',
default=True,
help='''
Disable the generation of directory listing pages. They will return 404
instead. The visitor must have the exact link to a file.
''',
)
parser.add_argument(
'--individual_ratelimit',
'--individual-ratelimit',