5 import tornado
.httpserver
10 from .. import Backend
12 from . import handlers
15 tornado
.options
.define("debug", default
=False, help="Run in debug mode", type=bool)
16 tornado
.options
.parse_command_line()
18 class Application(tornado
.web
.Application
):
23 debug
= tornado
.options
.options
.debug
,
28 tornado
.locale
.load_gettext_translations(LOCALEDIR
, PACKAGE_NAME
)
30 tornado
.web
.Application
.__init
__(self
, **settings
)
32 self
.add_handlers(r
"pakfirehub.ipfire.org", [
33 # Redirect strayed users.
34 #(r"/", handlers.RedirectHandler),
37 (r
"/noop", handlers
.NoopHandler
),
38 (r
"/error/test", handlers
.ErrorTestHandler
),
39 (r
"/error/test/(\d+)", handlers
.ErrorTestHandler
),
42 (r
"/builds/create", handlers
.BuildsCreateHandler
),
43 (r
"/builds/(.*)", handlers
.BuildsGetHandler
),
46 (r
"/builders/info", handlers
.BuildersInfoHandler
),
47 (r
"/builders/jobs/queue", handlers
.BuildersJobsQueueHandler
),
48 (r
"/builders/jobs/(.*)/addfile/(.*)", handlers
.BuildersJobsAddFileHandler
),
49 (r
"/builders/jobs/(.*)/buildroot", handlers
.BuildersJobsBuildrootHandler
),
50 (r
"/builders/jobs/(.*)/state/(.*)", handlers
.BuildersJobsStateHandler
),
51 (r
"/builders/keepalive", handlers
.BuildersKeepaliveHandler
),
54 (r
"/jobs/active", handlers
.JobsGetActiveHandler
),
55 (r
"/jobs/latest", handlers
.JobsGetLatestHandler
),
56 (r
"/jobs/queue", handlers
.JobsGetQueueHandler
),
57 (r
"/jobs/(.*)", handlers
.JobsGetHandler
),
60 (r
"/packages/(.*)", handlers
.PackagesGetHandler
),
63 (r
"/uploads/create", handlers
.UploadsCreateHandler
),
64 (r
"/uploads/(.*)/sendchunk", handlers
.UploadsSendChunkHandler
),
65 (r
"/uploads/(.*)/finished", handlers
.UploadsFinishedHandler
),
66 (r
"/uploads/(.*)/destroy", handlers
.UploadsDestroyHandler
),
69 logging
.info("Successfully initialied application")
73 if self
.__pakfire
is None:
74 self
.__pakfire
= Backend()
79 logging
.info("Shutting down application")
83 return tornado
.ioloop
.IOLoop
.instance()
85 def shutdown(self
, *args
):
86 logging
.debug("Caught shutdown signal")
89 def run(self
, port
=81):
90 logging
.debug("Going to background")
92 http_server
= tornado
.httpserver
.HTTPServer(self
, xheaders
=True)
94 # If we are not running in debug mode, we can actually run multiple
95 # frontends to get best performance out of our service.
96 if not self
.settings
["debug"]:
97 http_server
.bind(port
)
98 http_server
.start(num_processes
=4)
100 http_server
.listen(port
)
102 # All requests should be done after 30 seconds or they will be killed.
103 self
.ioloop
.set_blocking_log_threshold(30)
108 logging
.debug("Caught reload signal")