Ejemplo n.º 1
0
    def prepare_new_folder(self, audit_name, parent_path):
        millis = int(round(time.time() * 1000))
        user_folder_name = self._get_user_download_folder(audit_name)

        temp_path = os.path.join(parent_path, user_folder_name, str(millis))

        file_utils.prepare_folder(temp_path)

        return temp_path
Ejemplo n.º 2
0
    def prepare_new_folder(self, audit_name, parent_path):
        millis = get_current_millis()
        user_folder_name = self._get_user_download_folder(audit_name)

        temp_path = os.path.join(parent_path, user_folder_name, str(millis))

        file_utils.prepare_folder(temp_path)

        return temp_path
Ejemplo n.º 3
0
    def prepare_new_folder(self, audit_name, parent_path):
        millis = get_current_millis()
        user_folder_name = self._get_user_download_folder(audit_name)

        temp_path = os.path.join(parent_path, user_folder_name, str(millis))

        file_utils.prepare_folder(temp_path)

        return temp_path
Ejemplo n.º 4
0
    def __init__(self, output_folder, log_name_creator):
        self._output_folder = output_folder
        self._log_name_creator = log_name_creator

        self._visited_files = set()
        self._ids_to_file_map = {}

        file_utils.prepare_folder(output_folder)

        self._renew_files_cache()
Ejemplo n.º 5
0
    def __init__(self, output_folder):
        self._output_folder = output_folder

        self._visited_files = set()
        self._ids_to_file_map = {}

        file_utils.prepare_folder(output_folder)

        self._renew_files_cache()
        self.__migrate_old_files(output_folder)
Ejemplo n.º 6
0
    def __init__(self, output_folder, log_name_creator):
        self._output_folder = output_folder
        self._log_name_creator = log_name_creator

        self._visited_files = set()
        self._ids_to_file_map = {}
        self._output_loggers = {}

        file_utils.prepare_folder(output_folder)

        self._renew_files_cache()
Ejemplo n.º 7
0
def main():
    with open("logging.json", "rt") as f:
        config = json.load(f)
        file_utils.prepare_folder("logs/processes")

        logging.config.dictConfig(config)

    file_utils.prepare_folder(CONFIGS_FOLDER)

    http_server = httpserver.HTTPServer(application)
    http_server.listen(5000)
    tornado.ioloop.IOLoop.current().start()
Ejemplo n.º 8
0
def main():
    logging_conf_file = os.path.join(CONFIG_FOLDER, 'logging.json')
    with open(logging_conf_file, "rt") as f:
        log_config = json.load(f)
        file_utils.prepare_folder(os.path.join("logs", "processes"))

        logging.config.dictConfig(log_config)

    file_utils.prepare_folder(CONFIG_FOLDER)
    file_utils.prepare_folder(SCRIPT_CONFIGS_FOLDER)

    server_config = server_conf.from_json(SERVER_CONF_PATH)
    ssl_context = None
    if server_config.is_ssl():
        ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
        ssl_context.load_cert_chain(server_config.get_ssl_cert_path(),
                                    server_config.get_ssl_key_path())

    file_utils.prepare_folder(TEMP_FOLDER)

    settings = {
        "cookie_secret": get_tornado_secret(),
        "login_url": "/login.html"
    }

    auth = TornadoAuth(server_config.authorizer)

    result_files_folder = file_download_feature.get_result_files_folder(TEMP_FOLDER)
    file_download_feature.autoclean_downloads(TEMP_FOLDER)

    handlers = [(r"/conf/title", GetServerTitle),
                (r"/scripts/list", GetScripts),
                (r"/scripts/info", GetScriptInfo),
                (r"/scripts/execute", ScriptExecute),
                (r"/scripts/execute/stop", ScriptStop),
                (r"/scripts/execute/io/(.*)", ScriptStreamSocket),
                (r'/' + file_download_feature.RESULT_FILES_FOLDER + '/(.*)',
                 DownloadResultFile,
                 {'path': result_files_folder}),
                (r"/", ProxiedRedirectHandler, {"url": "/index.html"})]

    if auth.is_enabled():
        handlers.append((r"/login", LoginHandler))
        handlers.append((r"/logout", LogoutHandler))

    handlers.append((r"/username", GetUsernameHandler))

    handlers.append((r"/(.*)", AuthorizedStaticFileHandler, {"path": "web"}))

    application = tornado.web.Application(handlers, **settings)

    application.auth = auth

    application.alerts_config = server_config.get_alerts_config()
    application.server_title = server_config.title

    http_server = httpserver.HTTPServer(application, ssl_options=ssl_context)
    http_server.listen(server_config.port, address=server_config.address)
    tornado.ioloop.IOLoop.current().start()
Ejemplo n.º 9
0
    def __init__(self, config_service: ConfigService,
                 execution_service: ExecutionService, conf_folder):
        self._schedules_folder = os.path.join(conf_folder, 'schedules')
        file_utils.prepare_folder(self._schedules_folder)

        self._config_service = config_service
        self._execution_service = execution_service

        (jobs, ids) = restore_jobs(self._schedules_folder)
        self._scheduled_executions = jobs
        self._id_generator = IdGenerator(ids)
        self.stopped = False

        self.scheduler = sched.scheduler(timefunc=time.time)
        self._start_scheduler()

        for job in jobs.values():
            self.schedule_job(job)
Ejemplo n.º 10
0
def main():
    with open("logging.json", "rt") as f:
        log_config = json.load(f)
        file_utils.prepare_folder(os.path.join("logs", "processes"))

        logging.config.dictConfig(log_config)

    file_utils.prepare_folder(CONFIG_FOLDER)
    file_utils.prepare_folder(SCRIPT_CONFIGS_FOLDER)

    server_config = server_conf.from_json(SERVER_CONF_PATH)
    ssl_context = None
    if server_config.is_ssl():
        ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
        ssl_context.load_cert_chain(server_config.get_ssl_cert_path(),
                                    server_config.get_ssl_key_path())

    file_utils.prepare_folder("temp")

    settings = {
        "cookie_secret": get_tornado_secret(),
        "login_url": "/login.html"
    }

    auth = TornadoAuth(server_config.authorizer)

    handlers = [(r"/scripts/list", GetScripts), (r"/wav/", IndexHandler),
                (r"/scripts/info", GetScriptInfo),
                (r"/scripts/execute", ScriptExecute),
                (r"/scripts/execute/stop", ScriptStop),
                (r"/scripts/execute/io/(.*)", ScriptStreamsSocket),
                (r"/", tornado.web.RedirectHandler, {
                    "url": "/audio.html"
                })]
    if auth.is_enabled():
        handlers.append((r"/login", LoginHandler))
        handlers.append((r"/logout", LogoutHandler))
        handlers.append((r"/username", GetUsernameHandler))

    handlers.append((r"/(.*)", AuthorizedStaticFileHandler, {
        "path": "web",
        "default_filename": "index.html"
    }))

    application = tornado.web.Application(handlers, **settings)

    application.auth = auth

    application.alerts_config = server_config.get_alerts_config()

    http_server = httpserver.HTTPServer(application, ssl_options=ssl_context)
    http_server.listen(server_config.port)
    tornado.ioloop.IOLoop.current().start()
Ejemplo n.º 11
0
def fast_install(project, repo_path):
    """

    :type project: MavenProject
    :type repo_path: str
    """

    repo_pom = repo_pom_path(project, repo_path)

    file_utils.prepare_folder(os.path.dirname(repo_pom))

    shutil.copyfile(project.get_pom_path(), repo_pom)

    if requires_archive(project):
        build_directory = get_full_build_directory(project)
        built_artifact_path = os.path.join(build_directory, project.get_artifact_name())
        repo_artifact = repo_artifact_path(project, repo_path)

        if (not os.path.exists(repo_artifact)) \
                or (not file_utils.equal(built_artifact_path, repo_artifact)):
            shutil.copyfile(built_artifact_path, repo_artifact)

    renew_metadata([project], repo_path)
Ejemplo n.º 12
0
def fast_install(project, repo_path):
    """

    :type project: MavenProject
    :type repo_path: str
    """

    repo_pom = repo_pom_path(project, repo_path)

    file_utils.prepare_folder(os.path.dirname(repo_pom))

    shutil.copyfile(project.get_pom_path(), repo_pom)

    if requires_archive(project):
        build_directory = get_full_build_directory(project)
        built_artifact_path = os.path.join(build_directory,
                                           project.get_artifact_name())
        repo_artifact = repo_artifact_path(project, repo_path)

        if (not os.path.exists(repo_artifact)) \
                or (not file_utils.equal(built_artifact_path, repo_artifact)):
            shutil.copyfile(built_artifact_path, repo_artifact)

    renew_metadata([project], repo_path)
Ejemplo n.º 13
0
def main():
    tool_utils.validate_web_imports_exist(os.getcwd())

    logging_conf_file = os.path.join(CONFIG_FOLDER, 'logging.json')
    with open(logging_conf_file, 'rt') as f:
        log_config = json.load(f)
        file_utils.prepare_folder(os.path.join('logs'))

        logging.config.dictConfig(log_config)

    file_utils.prepare_folder(CONFIG_FOLDER)
    file_utils.prepare_folder(TEMP_FOLDER)

    migrations.migrate.migrate(TEMP_FOLDER, CONFIG_FOLDER)

    server_config = server_conf.from_json(SERVER_CONF_PATH)

    secret = get_secret(TEMP_FOLDER)

    config_service = ConfigService(CONFIG_FOLDER)

    alerts_service = AlertsService(server_config.get_alerts_config())
    alerts_service = alerts_service

    execution_logs_path = os.path.join('logs', 'processes')
    log_name_creator = LogNameCreator(
        server_config.logging_config.filename_pattern,
        server_config.logging_config.date_format)
    execution_logging_service = ExecutionLoggingService(
        execution_logs_path, log_name_creator)

    existing_ids = [
        entry.id for entry in execution_logging_service.get_history_entries()
    ]
    id_generator = IdGenerator(existing_ids)

    execution_service = ExecutionService(id_generator)

    execution_logging_initiator = ExecutionLoggingInitiator(
        execution_service, execution_logging_service)
    execution_logging_initiator.start()

    user_file_storage = UserFileStorage(secret)
    file_download_feature = FileDownloadFeature(user_file_storage, TEMP_FOLDER)
    file_download_feature.subscribe(execution_service)
    file_upload_feature = FileUploadFeature(user_file_storage, TEMP_FOLDER)

    alerter_feature = FailAlerterFeature(execution_service, alerts_service)
    alerter_feature.start()

    server.init(server_config, execution_service, execution_logging_service,
                config_service, alerts_service, file_upload_feature,
                file_download_feature, secret)
Ejemplo n.º 14
0
    def __init__(self, authorizer, conf_folder) -> None:
        self._authorizer = authorizer
        self._script_configs_folder = os.path.join(conf_folder, 'runners')

        file_utils.prepare_folder(self._script_configs_folder)
Ejemplo n.º 15
0
    def __init__(self, authorizer, conf_folder) -> None:
        self._authorizer = authorizer
        self._script_configs_folder = os.path.join(conf_folder, 'runners')

        file_utils.prepare_folder(self._script_configs_folder)
Ejemplo n.º 16
0
def main():
    try:
        tool_utils.validate_web_build_exists(os.getcwd())
    except InvalidWebBuildException as e:
        print(str(e))
        sys.exit(-1)

    logging_conf_file = os.path.join(CONFIG_FOLDER, 'logging.json')
    with open(logging_conf_file, 'rt') as f:
        log_config = json.load(f)
        file_utils.prepare_folder(LOG_FOLDER)

        logging.config.dictConfig(log_config)

    file_utils.prepare_folder(CONFIG_FOLDER)
    file_utils.prepare_folder(TEMP_FOLDER)

    migrations.migrate.migrate(TEMP_FOLDER, CONFIG_FOLDER, SERVER_CONF_PATH,
                               LOG_FOLDER)

    server_config = server_conf.from_json(SERVER_CONF_PATH, TEMP_FOLDER)

    secret = get_secret(TEMP_FOLDER)

    tornado_client_config.initialize()

    group_provider = create_group_provider(server_config.user_groups,
                                           server_config.authenticator,
                                           server_config.admin_users)

    authorizer = Authorizer(server_config.allowed_users,
                            server_config.admin_users, group_provider)

    config_service = ConfigService(authorizer, CONFIG_FOLDER)

    alerts_service = AlertsService(server_config.get_alerts_config())
    alerts_service = alerts_service

    execution_logs_path = os.path.join(LOG_FOLDER, 'processes')
    log_name_creator = LogNameCreator(
        server_config.logging_config.filename_pattern,
        server_config.logging_config.date_format)
    execution_logging_service = ExecutionLoggingService(
        execution_logs_path, log_name_creator)

    existing_ids = [
        entry.id for entry in execution_logging_service.get_history_entries()
    ]
    id_generator = IdGenerator(existing_ids)

    execution_service = ExecutionService(id_generator)

    execution_logging_initiator = ExecutionLoggingInitiator(
        execution_service, execution_logging_service)
    execution_logging_initiator.start()

    user_file_storage = UserFileStorage(secret)
    file_download_feature = FileDownloadFeature(user_file_storage, TEMP_FOLDER)
    file_download_feature.subscribe(execution_service)
    file_upload_feature = FileUploadFeature(user_file_storage, TEMP_FOLDER)

    alerter_feature = FailAlerterFeature(execution_service, alerts_service)
    alerter_feature.start()

    server.init(server_config, server_config.authenticator, authorizer,
                execution_service, execution_logging_service, config_service,
                alerts_service, file_upload_feature, file_download_feature,
                secret)
Ejemplo n.º 17
0
def main():
    project_path = os.getcwd()

    try:
        tool_utils.validate_web_build_exists(project_path)
    except InvalidWebBuildException as e:
        print(str(e))
        sys.exit(-1)

    logging_conf_file = os.path.join(CONFIG_FOLDER, 'logging.json')
    with open(logging_conf_file, 'rt') as f:
        log_config = json.load(f)
        file_utils.prepare_folder(LOG_FOLDER)

        logging.config.dictConfig(log_config)

    server_version = tool_utils.get_server_version(project_path)
    logging.info('Starting Script Server' +
                 (', v' +
                  server_version if server_version else ' (custom version)'))

    file_utils.prepare_folder(CONFIG_FOLDER)
    file_utils.prepare_folder(TEMP_FOLDER)

    migrations.migrate.migrate(TEMP_FOLDER, CONFIG_FOLDER, SERVER_CONF_PATH,
                               LOG_FOLDER)

    server_config = server_conf.from_json(SERVER_CONF_PATH, TEMP_FOLDER)

    secret = get_secret(server_config.secret_storage_file)

    tornado_client_config.initialize()

    group_provider = create_group_provider(server_config.user_groups,
                                           server_config.authenticator,
                                           server_config.admin_users)

    authorizer = Authorizer(server_config.allowed_users,
                            server_config.admin_users,
                            server_config.full_history_users,
                            server_config.code_editor_users, group_provider)

    config_service = ConfigService(authorizer, CONFIG_FOLDER)

    alerts_service = AlertsService(server_config.alerts_config)
    alerts_service = alerts_service

    execution_logs_path = os.path.join(LOG_FOLDER, 'processes')
    log_name_creator = LogNameCreator(
        server_config.logging_config.filename_pattern,
        server_config.logging_config.date_format)
    execution_logging_service = ExecutionLoggingService(
        execution_logs_path, log_name_creator, authorizer)

    existing_ids = [
        entry.id for entry in execution_logging_service.get_history_entries(
            None, system_call=True)
    ]
    id_generator = IdGenerator(existing_ids)

    execution_service = ExecutionService(authorizer, id_generator)

    execution_logging_controller = ExecutionLoggingController(
        execution_service, execution_logging_service)
    execution_logging_controller.start()

    user_file_storage = UserFileStorage(secret)
    file_download_feature = FileDownloadFeature(user_file_storage, TEMP_FOLDER)
    file_download_feature.subscribe(execution_service)
    file_upload_feature = FileUploadFeature(user_file_storage, TEMP_FOLDER)

    alerter_feature = FailAlerterFeature(execution_service, alerts_service)
    alerter_feature.start()

    executions_callback_feature = ExecutionsCallbackFeature(
        execution_service, server_config.callbacks_config)
    executions_callback_feature.start()

    schedule_service = ScheduleService(config_service, execution_service,
                                       CONFIG_FOLDER)

    server.init(server_config, server_config.authenticator, authorizer,
                execution_service, schedule_service, execution_logging_service,
                config_service, alerts_service, file_upload_feature,
                file_download_feature, secret, server_version, CONFIG_FOLDER)
Ejemplo n.º 18
0
def main():
    tool_utils.validate_web_imports_exist(os.getcwd())

    logging_conf_file = os.path.join(CONFIG_FOLDER, 'logging.json')
    with open(logging_conf_file, "rt") as f:
        log_config = json.load(f)
        file_utils.prepare_folder(os.path.join("logs", "processes"))

        logging.config.dictConfig(log_config)

    file_utils.prepare_folder(CONFIG_FOLDER)
    file_utils.prepare_folder(SCRIPT_CONFIGS_FOLDER)

    server_config = server_conf.from_json(SERVER_CONF_PATH)
    ssl_context = None
    if server_config.is_ssl():
        ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
        ssl_context.load_cert_chain(server_config.get_ssl_cert_path(),
                                    server_config.get_ssl_key_path())

    file_utils.prepare_folder(TEMP_FOLDER)

    settings = {
        "cookie_secret": get_tornado_secret(),
        "login_url": "/login.html"
    }

    auth = TornadoAuth(server_config.authenticator, server_config.authorizer)

    user_file_storage = UserFileStorage(get_tornado_secret())
    file_download_feature = FileDownloadFeature(user_file_storage, TEMP_FOLDER)
    file_upload_feature = FileUploadFeature(user_file_storage, TEMP_FOLDER)

    result_files_folder = file_download_feature.get_result_files_folder()

    handlers = [(r"/conf/title", GetServerTitle),
                (r"/scripts/list", GetScripts),
                (r"/scripts/info", GetScriptInfo),
                (r"/scripts/execute", ScriptExecute),
                (r"/scripts/execute/stop", ScriptStop),
                (r"/scripts/execute/io/(.*)", ScriptStreamSocket),
                (r'/' + os.path.basename(result_files_folder) + '/(.*)',
                 DownloadResultFile, {
                     'path': result_files_folder
                 }), (r"/", ProxiedRedirectHandler, {
                     "url": "/index.html"
                 })]

    if auth.is_enabled():
        handlers.append((r'/login', LoginHandler))
        handlers.append((r'/auth/config', AuthConfigHandler))
        handlers.append((r'/logout', LogoutHandler))

    handlers.append((r"/username", GetUsernameHandler))

    handlers.append((r"/(.*)", AuthorizedStaticFileHandler, {"path": "web"}))

    application = tornado.web.Application(handlers, **settings)

    application.auth = auth

    application.alerts_config = server_config.get_alerts_config()
    application.server_title = server_config.title

    application.file_download_feature = file_download_feature
    application.file_upload_feature = file_upload_feature

    http_server = httpserver.HTTPServer(application, ssl_options=ssl_context)
    http_server.listen(server_config.port, address=server_config.address)

    http_protocol = 'https' if server_config.ssl else 'http'
    print('Server is running on: %s://%s:%s' %
          (http_protocol, server_config.address, server_config.port))

    tornado.ioloop.IOLoop.current().start()