aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'server.py')
-rwxr-xr-xserver.py75
1 files changed, 0 insertions, 75 deletions
diff --git a/server.py b/server.py
deleted file mode 100755
index 914765d..0000000
--- a/server.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env python3
-
-# Copyright (c) 2021 Egor Tensin <Egor.Tensin@gmail.com>
-# This file is part of the "linux-status" project.
-# For details, see https://github.com/egor-tensin/linux-status.
-# Distributed under the MIT License.
-
-# This script launches a HTTP server and uses app.py for processing a set of
-# custom URLs. See that file for the reasons behind this.
-
-import argparse
-import http.server
-import os
-import sys
-import traceback
-
-from app import Request, Response
-
-
-DEFAULT_PORT = 18101
-
-
-def script_dir():
- return os.path.dirname(os.path.realpath(__file__))
-
-
-class RequestHandler(http.server.SimpleHTTPRequestHandler):
- def do_GET(self):
- try:
- request = Request.from_http_path(self.path)
- except ValueError:
- return super().do_GET()
- try:
- response = request.process()
- response.write_to_request_handler(self)
- except:
- status = http.server.HTTPStatus.INTERNAL_SERVER_ERROR
- response = Response(traceback.format_exc(), status)
- response.write_to_request_handler(self)
- return
-
-
-def make_server(port):
- addr = ('', port)
- server = http.server.HTTPServer
- if sys.version_info >= (3, 7):
- server = http.server.ThreadingHTTPServer
- return server(addr, RequestHandler)
-
-
-def parse_args(args=None):
- if args is None:
- args = sys.argv[1:]
- parser = argparse.ArgumentParser()
- parser.add_argument('-p', '--port', metavar='PORT',
- type=int, default=DEFAULT_PORT,
- help='set port number')
- return parser.parse_args(args)
-
-
-def main(args=None):
- # It's a failsafe; this script is only allowed to serve the directory it
- # resides in.
- os.chdir(script_dir())
-
- args = parse_args(args)
- httpd = make_server(args.port)
- try:
- httpd.serve_forever()
- except KeyboardInterrupt:
- print('\nKeyboard interrupt received, exiting...')
-
-
-if __name__ == '__main__':
- main()