Update default index file
This commit is contained in:
parent
1066d39125
commit
fea2d91d1e
|
@ -1,5 +1,12 @@
|
||||||
# Jetforce Changelog
|
# Jetforce Changelog
|
||||||
|
|
||||||
|
### Unreleased
|
||||||
|
|
||||||
|
- Files with the ".gemini" extension are now recognized as text/gemini.
|
||||||
|
- The default index file has been changed from ".gemini" to "index.gmi".
|
||||||
|
- Added a new --index-file flag that can be used to customize the name of the
|
||||||
|
gemini file that will be served when a directory is requested.
|
||||||
|
|
||||||
### v0.0.6 (2019-08-22)
|
### v0.0.6 (2019-08-22)
|
||||||
|
|
||||||
- Significant refactoring of the base application interface.
|
- Significant refactoring of the base application interface.
|
||||||
|
|
21
jetforce.py
21
jetforce.py
|
@ -198,13 +198,15 @@ class StaticDirectoryApplication(JetforceApplication):
|
||||||
directory listing will be auto-generated.
|
directory listing will be auto-generated.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, directory: str = "/var/gemini"):
|
def __init__(self, directory: str = "/var/gemini", index_file: str = "index.gmi"):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.routes.append((RoutePattern(), self.serve_static_file))
|
self.routes.append((RoutePattern(), self.serve_static_file))
|
||||||
|
|
||||||
self.root = pathlib.Path(directory).resolve(strict=True)
|
self.root = pathlib.Path(directory).resolve(strict=True)
|
||||||
|
self.index_file = index_file
|
||||||
self.mimetypes = mimetypes.MimeTypes()
|
self.mimetypes = mimetypes.MimeTypes()
|
||||||
self.mimetypes.add_type("text/gemini", ".gmi")
|
self.mimetypes.add_type("text/gemini", ".gmi")
|
||||||
|
self.mimetypes.add_type("text/gemini", ".gemini")
|
||||||
|
|
||||||
def serve_static_file(self, request: Request):
|
def serve_static_file(self, request: Request):
|
||||||
|
|
||||||
|
@ -222,9 +224,9 @@ class StaticDirectoryApplication(JetforceApplication):
|
||||||
generator = self.load_file(filesystem_path)
|
generator = self.load_file(filesystem_path)
|
||||||
return Response(Status.SUCCESS, mimetype, generator)
|
return Response(Status.SUCCESS, mimetype, generator)
|
||||||
elif filesystem_path.is_dir():
|
elif filesystem_path.is_dir():
|
||||||
gemini_file = filesystem_path / ".gemini"
|
index_file = filesystem_path / self.index_file
|
||||||
if gemini_file.exists():
|
if index_file.exists():
|
||||||
generator = self.load_file(gemini_file)
|
generator = self.load_file(index_file)
|
||||||
else:
|
else:
|
||||||
generator = self.list_directory(url_path, filesystem_path)
|
generator = self.list_directory(url_path, filesystem_path)
|
||||||
return Response(Status.SUCCESS, "text/gemini", generator)
|
return Response(Status.SUCCESS, "text/gemini", generator)
|
||||||
|
@ -519,10 +521,17 @@ def run_server() -> None:
|
||||||
Entry point for running the command line static directory server.
|
Entry point for running the command line static directory server.
|
||||||
"""
|
"""
|
||||||
parser = command_line_parser()
|
parser = command_line_parser()
|
||||||
parser.add_argument("--dir", help="local directory to serve", default="/var/gemini")
|
parser.add_argument(
|
||||||
|
"--dir", help="Path on the filesystem to serve", default="/var/gemini"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--index-file",
|
||||||
|
help="The gemini directory index file [i.e. index.html]",
|
||||||
|
default="index.gmi",
|
||||||
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
app = StaticDirectoryApplication(args.dir)
|
app = StaticDirectoryApplication(args.dir, args.index_file)
|
||||||
server = GeminiServer(
|
server = GeminiServer(
|
||||||
host=args.host,
|
host=args.host,
|
||||||
port=args.port,
|
port=args.port,
|
||||||
|
|
Loading…
Reference in New Issue