59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
import os
|
|
import sys
|
|
import logging
|
|
|
|
from wsgiref.simple_server import make_server, WSGIRequestHandler
|
|
|
|
import ankisyncd
|
|
import ankisyncd.config
|
|
from ankisyncd.sync_app import SyncApp
|
|
from ankisyncd.thread import shutdown
|
|
|
|
logger = logging.getLogger("ankisyncd")
|
|
|
|
if __package__ is None and not hasattr(sys, "frozen"):
|
|
path = os.path.realpath(os.path.abspath(__file__))
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(path)))
|
|
|
|
|
|
class RequestHandler(WSGIRequestHandler):
|
|
logger = logging.getLogger("ankisyncd.http")
|
|
|
|
def log_error(self, format, *args):
|
|
self.logger.error("%s %s", self.address_string(), format % args)
|
|
|
|
def log_message(self, format, *args):
|
|
self.logger.info("%s %s", self.address_string(), format % args)
|
|
|
|
|
|
def main():
|
|
logging.basicConfig(
|
|
level=logging.INFO, format="[%(asctime)s]:%(levelname)s:%(name)s:%(message)s"
|
|
)
|
|
logger.info(
|
|
"ankisyncd {} ({})".format(ankisyncd._get_version(), ankisyncd._homepage)
|
|
)
|
|
|
|
if len(sys.argv) > 1:
|
|
# backwards compat
|
|
config = ankisyncd.config.load(sys.argv[1])
|
|
else:
|
|
config = ankisyncd.config.load()
|
|
|
|
ankiserver = SyncApp(config)
|
|
httpd = make_server(
|
|
config["host"], int(config["port"]), ankiserver, handler_class=RequestHandler
|
|
)
|
|
|
|
try:
|
|
logger.info("Serving HTTP on {} port {}...".format(*httpd.server_address))
|
|
httpd.serve_forever()
|
|
except KeyboardInterrupt:
|
|
logger.info("Exiting...")
|
|
finally:
|
|
shutdown()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|