def on_init(self): self.process = getattr(self, "process", None) or self self.rr = self.container.resource_registry self.idm_client = IdentityManagementServiceProcessClient(process=self.process) self.org_client = OrgManagementServiceProcessClient(process=self.process) self.scion_client = ScionManagementProcessClient(process=self.process) self.op = self.CFG.get("op", "load") if self.op == "auto": self.do_auto_preload() elif self.op == "init": pass # Initialization only for explicit call elif self.op == "load": preload_master = CFG.get_safe("scion.preload.default_master") if preload_master: self.do_preload_master(preload_master) else: raise BadRequest("Unknown command")
def on_init(self): # Retain a pointer to this object for use in routes global ui_instance ui_instance = self # Main references to basic components (if initialized) self.http_server = None self.socket_io = None self.service_gateway = None self.oauth = oauth # Configuration self.server_enabled = self.CFG.get_safe(CFG_PREFIX + ".server.enabled") is True self.server_debug = self.CFG.get_safe(CFG_PREFIX + ".server.debug") is True # Note: this may be the empty string. Using localhost does not make the server publicly accessible self.server_hostname = self.CFG.get_safe(CFG_PREFIX + ".server.hostname", DEFAULT_WEB_SERVER_HOSTNAME) self.server_port = self.CFG.get_safe(CFG_PREFIX + ".server.port", DEFAULT_WEB_SERVER_PORT) self.server_log_access = self.CFG.get_safe(CFG_PREFIX + ".server.log_access") is True self.server_log_errors = self.CFG.get_safe(CFG_PREFIX + ".server.log_errors") is True self.server_socket_io = self.CFG.get_safe(CFG_PREFIX + ".server.socket_io") is True self.server_secret = self.CFG.get_safe(CFG_PREFIX + ".security.secret") or "" self.session_timeout = int(self.CFG.get_safe(CFG_PREFIX + ".security.session_timeout") or DEFAULT_SESSION_TIMEOUT) self.extend_session_timeout = self.CFG.get_safe(CFG_PREFIX + ".security.extend_session_timeout") is True self.max_session_validity = int(self.CFG.get_safe(CFG_PREFIX + ".security.max_session_validity") or DEFAULT_SESSION_TIMEOUT) self.remember_user = self.CFG.get_safe(CFG_PREFIX + ".security.remember_user") is True self.set_cors_headers = self.CFG.get_safe(CFG_PREFIX + ".server.set_cors") is True self.develop_mode = self.CFG.get_safe(CFG_PREFIX + ".server.develop_mode") is True self.oauth_enabled = self.CFG.get_safe(CFG_PREFIX + ".oauth.enabled") is True self.oauth_scope = self.CFG.get_safe(CFG_PREFIX + ".oauth.default_scope") or "scioncc" self.has_service_gateway = self.CFG.get_safe(CFG_PREFIX + ".service_gateway.enabled") is True self.service_gateway_prefix = self.CFG.get_safe(CFG_PREFIX + ".service_gateway.url_prefix", DEFAULT_GATEWAY_PREFIX) self.extensions = self.CFG.get_safe(CFG_PREFIX + ".extensions") or [] self.extension_objs = [] # TODO: What about https? self.base_url = "http://%s:%s" % (self.server_hostname or "localhost", self.server_port) self.gateway_base_url = None self.idm_client = IdentityManagementServiceProcessClient(process=self) # One time setup if self.server_enabled: app.secret_key = self.server_secret or self.__class__.__name__ # Enables encrypted session cookies if self.server_debug: app.debug = True if self.server_socket_io: self.socket_io = SocketIO(app) if self.has_service_gateway: from ion.service.service_gateway import ServiceGateway, sg_blueprint self.gateway_base_url = self.base_url + self.service_gateway_prefix self.service_gateway = ServiceGateway(process=self, config=self.CFG, response_class=app.response_class) app.register_blueprint(sg_blueprint, url_prefix=self.service_gateway_prefix) for ext_cls in self.extensions: try: cls = named_any(ext_cls) except AttributeError as ae: # Try to nail down the error import importlib importlib.import_module(ext_cls.rsplit(".", 1)[0]) raise self.extension_objs.append(cls()) for ext_obj in self.extension_objs: ext_obj.on_init(self, app) if self.extensions: log.info("UI Server: %s extensions initialized", len(self.extensions)) # Start the web server self.start_service() log.info("UI Server: Started server on %s" % self.base_url) else: log.warn("UI Server: Server disabled in config")
def __init__(self, process, config, response_class): global sg_instance sg_instance = self self.name = "service_gateway" self.process = process self.config = config self.response_class = response_class self.gateway_base_url = process.gateway_base_url self.develop_mode = self.config.get_safe(CFG_PREFIX + ".develop_mode") is True self.require_login = self.config.get_safe(CFG_PREFIX + ".require_login") is True self.token_from_session = self.config.get_safe( CFG_PREFIX + ".token_from_session") is True # Optional list of trusted originators can be specified in config. self.trusted_originators = self.config.get_safe(CFG_PREFIX + ".trusted_originators") if not self.trusted_originators: self.trusted_originators = None log.info( "Service Gateway will not check requests against trusted originators since none are configured." ) # Service screening self.service_blacklist = self.config.get_safe( CFG_PREFIX + ".service_blacklist") or [] self.service_whitelist = self.config.get_safe( CFG_PREFIX + ".service_whitelist") or [] self.no_login_whitelist = set( self.config.get_safe(CFG_PREFIX + ".no_login_whitelist") or []) self.set_cors_headers = self.config.get_safe(CFG_PREFIX + ".set_cors") is True self.strict_types = self.config.get_safe(CFG_PREFIX + ".strict_types") is True # Swagger spec generation support self.swagger_cfg = self.config.get_safe(CFG_PREFIX + ".swagger_spec") or {} self._swagger_gen = None if self.swagger_cfg.get("enable", None) is True: self._swagger_gen = SwaggerSpecGenerator(config=self.swagger_cfg) # Get the user_cache_size self.user_cache_size = self.config.get_safe( CFG_PREFIX + ".user_cache_size", DEFAULT_USER_CACHE_SIZE) # Initialize an LRU Cache to keep user roles cached for performance reasons #maxSize = maximum number of elements to keep in cache #maxAgeMs = oldest entry to keep self.user_role_cache = LRUCache(self.user_cache_size, 0, 0) self.request_callback = None self.log_errors = self.config.get_safe(CFG_PREFIX + ".log_errors", True) self.rr_client = ResourceRegistryServiceProcessClient( process=self.process) self.idm_client = IdentityManagementServiceProcessClient( process=self.process) self.org_client = OrgManagementServiceProcessClient( process=self.process)