source: server/lib/gutenbach/server/__init__.py @ 609a9b0

no-cups
Last change on this file since 609a9b0 was 609a9b0, checked in by Jessica B. Hamrick <jhamrick@…>, 12 years ago

Add basic configuration file support

  • Property mode set to 100644
File size: 1.4 KB
Line 
1import errors
2from errors import *
3__all__ = ['errors']
4__all__.extend(errors.__all__)
5
6from job import GutenbachJob
7__all__.append('GutenbachJob')
8
9from printer import GutenbachPrinter
10__all__.append('GutenbachPrinter')
11
12from requests import make_empty_response, GutenbachRequestHandler
13__all__.append('make_empty_response')
14__all__.append('GutenbachRequestHandler')
15
16from server import IPPServer
17__all__.append('IPPServer')
18
19import BaseHTTPServer
20import logging
21import sys
22import traceback
23
24# configure and initialize logging
25logger = None
26
27def error(self, request=None, client_address=None):
28    logger.fatal(traceback.format_exc())
29    self.gutenbach_printer.running = False
30    sys.exit(1)
31
32def start(config):
33    global logger
34    loglevel_num = getattr(logging, config['loglevel'].upper())
35    logging.basicConfig(level=loglevel_num)
36    logger = logging.getLogger(__name__)   
37    logger.info("Starting Gutenbach server...")
38    printers = sorted(config['printers'].keys())
39    gutenbach = GutenbachPrinter(printers[0], config['printers'][printers[0]])
40    gutenbach.start()
41
42    logger.info("Starting IPP server...")
43    server_address = ('', config['port'])
44    httpd = BaseHTTPServer.HTTPServer(server_address, IPPServer)
45    httpd.handle_error = error.__get__(httpd)
46    httpd.gutenbach_printer = gutenbach
47    while gutenbach.isAlive():
48        try:
49            httpd.handle_request()
50        except:
51            error(httpd)
52
53__all__.append('start')
Note: See TracBrowser for help on using the repository browser.