Beispiel #1
0
    def __init__(self, **kwargs):
        if options.baseurl is None:
            raise ValueError('Base URL must be configured')

        router = SockJSRouter(SearchConnection, '/search',
                              self.sockjs_settings)
        # Allow connections to find the application
        router.application = self

        handlers = list(self.handlers)
        router.apply_routes(handlers)
        settings = dict(self.app_settings)
        settings.update(kwargs)
        tornado.web.Application.__init__(self, handlers, **settings)

        if not os.path.isdir(options.blob_cache_dir):
            os.makedirs(options.blob_cache_dir, 0700)
        self.blob_cache = BlobCache(options.blob_cache_dir)

        self.search_cache = SearchCache(options.search_cache_dir)

        self._pruner = threading.Thread(target=self._prune_cache_thread,
                                        name='prune-cache')
        self._pruner.daemon = True
        self._pruner.start()
Beispiel #2
0
    def __init__(self, **kwargs):
        if options.baseurl is None:
            raise ValueError('Base URL must be configured')

        router = SockJSRouter(SearchConnection, '/search',
                self.sockjs_settings)
        # Allow connections to find the application
        router.application = self

        handlers = list(self.handlers)
        router.apply_routes(handlers)
        settings = dict(self.app_settings)
        settings.update(kwargs)
        tornado.web.Application.__init__(self, handlers, **settings)

        if not os.path.isdir(options.blob_cache_dir):
            os.makedirs(options.blob_cache_dir, 0700)
        self.blob_cache = BlobCache(options.blob_cache_dir)

        self.search_cache = SearchCache(options.search_cache_dir)

        self._pruner = threading.Thread(target=self._prune_cache_thread,
                name='prune-cache')
        self._pruner.daemon = True
        self._pruner.start()
Beispiel #3
0
def main(host_config_filename, targets_config_filename):

	config = application_config.load_config(host_config_filename, targets_config_filename)

	application_logger.initialize_logger(config['logging'])
	
	host = config['host']
	port = int(config['port'])
	upload_folder = config['upload_folder']
	file_stash_folder = config['file_stash_folder']
	queue_folder = config['queue_folder']
	num_distribution_processes = int(config['num_distribution_processes'])
	max_file_age_days = int(config['max_file_age_days'])
	max_file_age_check_interval_seconds = int(config['max_file_age_check_interval_seconds'])
	max_task_execution_time_seconds = int(config['max_task_execution_time_seconds'])
	max_task_finalization_time_seconds = int(config['max_task_finalization_time_seconds'])
	task_cleanup_interval_seconds = int(config['task_cleanup_interval_seconds'])
	max_task_wait_seconds = int(config['max_task_wait_seconds'])
	max_task_exist_days = int(config['max_task_exist_days'])


	root = Flask(__name__)
	root.config['host_description'] = config['host_description']
	root.config['SEND_FILE_MAX_AGE_DEFAULT'] = 1

	sendor_queue = SendorQueue(num_distribution_processes, queue_folder, max_task_execution_time_seconds, max_task_finalization_time_seconds, task_cleanup_interval_seconds, max_task_wait_seconds, max_task_exist_days)
	file_stash = FileStash(file_stash_folder, max_file_age_days, max_file_age_check_interval_seconds)
	targets = Targets(config['targets'])

	ui_app = ui.create_ui(file_stash, upload_folder)
	root.register_blueprint(url_prefix = '/ui', blueprint = ui_app)
	rest_api_app = FileDistribution.rest_api.create_rest_api(sendor_queue, targets, file_stash)
	root.register_blueprint(url_prefix = '/api', blueprint = rest_api_app)

	FileDistribution.backsync_api.create_backsync_api(sendor_queue, targets, file_stash)
	
	@root.route('/')
	@root.route('/index.html')
	def index():
		return redirect('ui')

	logger.info("Starting wsgi server")

	wsgi_root = tornado.wsgi.WSGIContainer(root)

	backsyncRouter = SockJSRouter(BacksyncModelRouter, '/backsync') 

	handlers = []
	backsyncRouter.apply_routes(handlers)
	handlers.extend([(r".*", tornado.web.FallbackHandler, dict(fallback=wsgi_root))])
	
	application = tornado.web.Application(handlers)
	
	application.listen(port)
	tornado.ioloop.IOLoop.instance().start()
Beispiel #4
0
def main():
    import core

    # turn on heavy debug logging
    #setup_logging()

    try:
        SockRouter = SockJSRouter(Status)

        application = Application(
            SockRouter.apply_routes([(r"/", IndexHandler),
                                     (r"/record", RecordHandler),
                                     (r"/resetPeaks", ResetPeaksHandler),
                                     (r"/resetBTimer", ResetBTimerHandler),
                                     (
                                         r"/flac/(.*)",
                                         tornado.web.StaticFileHandler,
                                         {
                                             "path": "."
                                         },
                                     )]),
            static_path=os.path.join(os.path.dirname(__file__), "static"),
            debug=sys.DEV_MODE)

        if not sys.DEV_MODE:
            port = 80
        else:
            port = 8080

        application.listen(port)
        ioloop.IOLoop.instance().start()

    finally:
        core.port.stop()
        core.port.waitTillFinished()
Beispiel #5
0
def main():
    import core

    # turn on heavy debug logging
    #setup_logging()

    try:
        SockRouter = SockJSRouter(Status)

        application = Application(SockRouter.apply_routes([(r"/", IndexHandler),
                                                           (r"/record", RecordHandler),
                                                           (r"/resetPeaks", ResetPeaksHandler),
                                                           (r"/resetBTimer", ResetBTimerHandler),
                                                           (r"/flac/(.*)",tornado.web.StaticFileHandler, {"path": "."},)]),
                                                           static_path = os.path.join(os.path.dirname(__file__), "static"),
                                                           debug = sys.DEV_MODE
            )
        

        if not sys.DEV_MODE:
            port = 80
        else:
            port = 8080

        application.listen(port)
        ioloop.IOLoop.instance().start()
        
    finally:
        core.port.stop()
        core.port.waitTillFinished()
Beispiel #6
0
def start_warrior_server(warrior,
                         bind_address="localhost",
                         port_number=8001,
                         http_username=None,
                         http_password=None):
    '''Starts the warrior web interface.'''
    SeesawConnection.warrior = warrior

    warrior.on_projects_loaded += SeesawConnection.handle_projects_loaded
    warrior.on_project_refresh += SeesawConnection.handle_project_refresh
    warrior.on_project_installing += SeesawConnection.handle_project_installing
    warrior.on_project_installed += SeesawConnection.handle_project_installed
    warrior.on_project_installation_failed += \
        SeesawConnection.handle_project_installation_failed
    warrior.on_project_selected += SeesawConnection.handle_project_selected
    warrior.on_broadcast_message_received += SeesawConnection.handle_broadcast_message
    warrior.on_status += SeesawConnection.handle_warrior_status
    warrior.runner.on_pipeline_start_item += SeesawConnection.handle_start_item
    warrior.runner.on_pipeline_finish_item += \
        SeesawConnection.handle_finish_item
    warrior.runner.on_status += SeesawConnection.handle_runner_status

    if not http_username:
        http_username = warrior.http_username
    if not http_password:
        http_password = warrior.http_password

    ioloop.PeriodicCallback(SeesawConnection.broadcast_bandwidth, 1000).start()
    ioloop.PeriodicCallback(SeesawConnection.broadcast_timestamp, 1000).start()

    router = SockJSRouter(SeesawConnection)

    application = web.Application(
        router.apply_routes([(r"/(.*\.(html|css|js|swf|png|ico))$",
                              web.StaticFileHandler, {
                                  "path": PUBLIC_PATH
                              }), ("/", IndexHandler),
                             ("/api/(.+)$", ApiHandler, {
                                 "warrior": warrior
                             })]),
        #   flash_policy_port = 843,
        #   flash_policy_file = os.path.join(PUBLIC_PATH, "flashpolicy.xml"),
        socket_io_address=bind_address,
        socket_io_port=port_number,

        # settings for AuthenticatedApplication
        auth_enabled=lambda: (realize(http_password) or "").strip() != "",
        check_auth=lambda r, username, password:
        (password == realize(http_password) and
         (realize(http_username) or "").strip() in ["", username]),
        auth_realm="ArchiveTeam Warrior",
        skip_auth=[])

    application.listen(port_number, bind_address)
Beispiel #7
0
def start_warrior_server(warrior, bind_address="localhost", port_number=8001,
                         http_username=None, http_password=None):
    '''Starts the warrior web interface.'''
    SeesawConnection.warrior = warrior

    warrior.on_projects_loaded += SeesawConnection.handle_projects_loaded
    warrior.on_project_refresh += SeesawConnection.handle_project_refresh
    warrior.on_project_installing += SeesawConnection.handle_project_installing
    warrior.on_project_installed += SeesawConnection.handle_project_installed
    warrior.on_project_installation_failed += \
        SeesawConnection.handle_project_installation_failed
    warrior.on_project_selected += SeesawConnection.handle_project_selected
    warrior.on_broadcast_message_received += SeesawConnection.handle_broadcast_message
    warrior.on_status += SeesawConnection.handle_warrior_status
    warrior.runner.on_pipeline_start_item += SeesawConnection.handle_start_item
    warrior.runner.on_pipeline_finish_item += \
        SeesawConnection.handle_finish_item
    warrior.runner.on_status += SeesawConnection.handle_runner_status

    if not http_username:
        http_username = warrior.http_username
    if not http_password:
        http_password = warrior.http_password

    ioloop.PeriodicCallback(SeesawConnection.broadcast_bandwidth, 1000).start()
    ioloop.PeriodicCallback(SeesawConnection.broadcast_timestamp, 1000).start()
    
    router = SockJSRouter(SeesawConnection)

    application = web.Application(
        router.apply_routes([
            (r"/(.*\.(html|css|js|swf|png|ico))$",
                web.StaticFileHandler, {"path": PUBLIC_PATH}),
            ("/", IndexHandler),
            ("/api/(.+)$", ApiHandler, {"warrior": warrior})]),
        #   flash_policy_port = 843,
        #   flash_policy_file = os.path.join(PUBLIC_PATH, "flashpolicy.xml"),
        socket_io_address=bind_address,
        socket_io_port=port_number,

        # settings for AuthenticatedApplication
        auth_enabled=lambda: (realize(http_password) or "").strip() != "",
        check_auth=lambda r, username, password:
            (
                password == realize(http_password) and
                (realize(http_username) or "").strip() in ["", username]
            ),
        auth_realm="ArchiveTeam Warrior",
        skip_auth=[]
    )

    application.listen(port_number, bind_address)
Beispiel #8
0
def start_runner_server(project,
                        runner,
                        bind_address="localhost",
                        port_number=8001,
                        http_username=None,
                        http_password=None):
    '''Starts a web interface for a manually run pipeline.

    Unlike :func:`start_warrior_server`, this UI does not contain an
    configuration or project management panel.
    '''
    #     if bind_address == "0.0.0.0":
    #         bind_address = ""

    SeesawConnection.project = project
    SeesawConnection.runner = runner

    runner.on_pipeline_start_item += SeesawConnection.handle_start_item
    runner.on_pipeline_finish_item += SeesawConnection.handle_finish_item
    runner.on_status += SeesawConnection.handle_runner_status

    ioloop.PeriodicCallback(SeesawConnection.broadcast_timestamp, 1000).start()

    router = SockJSRouter(SeesawConnection)

    application = web.Application(
        router.apply_routes([(r"/(.*\.(html|css|js|swf|png|ico))$",
                              web.StaticFileHandler, {
                                  "path": PUBLIC_PATH
                              }), ("/", IndexHandler),
                             ("/api/(.+)$", ApiHandler, {
                                 "runner": runner
                             })]),
        #  flash_policy_port = 843,
        #  flash_policy_file=os.path.join(PUBLIC_PATH, "flashpolicy.xml"),
        socket_io_address=bind_address,
        socket_io_port=port_number,

        # settings for AuthenticatedApplication
        auth_enabled=(http_password or "").strip() != "",
        check_auth=lambda r, username, password:
        (password == http_password and
         (http_username or "").strip() in ["", username]),
        auth_realm="ArchiveTeam Warrior",
        skip_auth=[])

    application.listen(port_number, bind_address)
Beispiel #9
0
def start_runner_server(project, runner, bind_address="localhost", port_number=8001,
                        http_username=None, http_password=None):
    '''Starts a web interface for a manually run pipeline.

    Unlike :func:`start_warrior_server`, this UI does not contain an
    configuration or project management panel.
    '''
#     if bind_address == "0.0.0.0":
#         bind_address = ""

    SeesawConnection.project = project
    SeesawConnection.runner = runner

    runner.on_pipeline_start_item += SeesawConnection.handle_start_item
    runner.on_pipeline_finish_item += SeesawConnection.handle_finish_item
    runner.on_status += SeesawConnection.handle_runner_status
    
    ioloop.PeriodicCallback(SeesawConnection.broadcast_timestamp, 1000).start()
    
    router = SockJSRouter(SeesawConnection)

    application = web.Application(
        router.apply_routes([
            (r"/(.*\.(html|css|js|swf|png|ico))$",
                web.StaticFileHandler, {"path": PUBLIC_PATH}),
            ("/", IndexHandler),
            ("/api/(.+)$", ApiHandler, {"runner": runner})]),
        #  flash_policy_port = 843,
        #  flash_policy_file=os.path.join(PUBLIC_PATH, "flashpolicy.xml"),
        socket_io_address=bind_address,
        socket_io_port=port_number,

        # settings for AuthenticatedApplication
        auth_enabled=(http_password or "").strip() != "",
        check_auth=lambda r, username, password:
            (
                password == http_password and
                (http_username or "").strip() in ["", username]
            ),
        auth_realm="ArchiveTeam Warrior",
        skip_auth=[]
    )

    application.listen(port_number, bind_address)