def _resolve_default(default, username, audit_name, working_dir): if not default: return default script = False if isinstance(default, dict) and 'script' in default: string_value = default['script'] script = True elif isinstance(default, str): string_value = default else: return default resolved_string_value = resolve_env_vars(string_value, full_match=True) if resolved_string_value == string_value: resolved_string_value = replace_auth_vars(string_value, username, audit_name) if script: has_variables = string_value != resolved_string_value shell = read_bool_from_config('shell', default, default=not has_variables) output = process_utils.invoke(resolved_string_value, working_dir, shell=shell) return output.strip() return resolved_string_value
def _resolve_excluded_files(config, key, file_dir): raw_patterns = model_helper.read_list(config, key) if raw_patterns is None: patterns = [] else: patterns = [resolve_env_vars(e) for e in strip(raw_patterns)] return FileMatcher(patterns, file_dir)
def _resolve_default(default, username, audit_name): if not default: return default if not isinstance(default, str): return default resolved_env_default = resolve_env_vars(default, full_match=True) if resolved_env_default != default: return resolved_env_default return replace_auth_vars(default, username, audit_name)
def __init__(self, params_dict): super().__init__() self.client_id = model_helper.read_obligatory(params_dict, 'client_id', ' for Google OAuth') secret_value = model_helper.read_obligatory(params_dict, 'secret', ' for Google OAuth') self.secret = model_helper.resolve_env_vars(secret_value, full_match=True) self.states = {} self._client_visible_config['client_id'] = self.client_id self._client_visible_config['oauth_url'] = tornado.auth.GoogleOAuth2Mixin._OAUTH_AUTHORIZE_URL self._client_visible_config['oauth_scope'] = 'email'
def _resolve_default(default, username, audit_name, working_dir): if not default: return default script = False if isinstance(default, dict) and 'script' in default: string_value = default['script'] script = True elif isinstance(default, str): string_value = default else: return default resolved_string_value = resolve_env_vars(string_value, full_match=True) if resolved_string_value == string_value: resolved_string_value = replace_auth_vars(string_value, username, audit_name) if not script: return resolved_string_value output = process_utils.invoke(resolved_string_value, working_dir) return output.strip()
def __init__(self, oauth_authorize_url, oauth_token_url, oauth_scope, params_dict): super().__init__() self.oauth_token_url = oauth_token_url self.oauth_scope = oauth_scope self.client_id = model_helper.read_obligatory(params_dict, 'client_id', ' for OAuth') secret_value = model_helper.read_obligatory(params_dict, 'secret', ' for OAuth') self.secret = model_helper.resolve_env_vars(secret_value, full_match=True) self._client_visible_config['client_id'] = self.client_id self._client_visible_config['oauth_url'] = oauth_authorize_url self._client_visible_config['oauth_scope'] = oauth_scope self.group_support = read_bool_from_config('group_support', params_dict, default=True) self.auth_info_ttl = params_dict.get('auth_info_ttl') self.session_expire = read_int_from_config( 'session_expire_minutes', params_dict, default=0) * 60 self.dump_file = params_dict.get('state_dump_file') if self.dump_file: self._validate_dump_file(self.dump_file) self._users = {} # type: Dict[str, _UserState] self._user_locks = defaultdict(lambda: threading.Lock()) self.timer = None if self.dump_file: self._restore_state() self._schedule_dump_task()
def test_resolve_when_empty(self): resolved_val = resolve_env_vars('') self.assertEqual('', resolved_val)
def test_replace_any_when_multiple(self): set_env_value('key1', 'Hello') set_env_value('key2', 'world') set_env_value('key3', '!') resolved_val = resolve_env_vars('$$key1 $$key2!$$key3') self.assertEqual('Hello world!!', resolved_val)
def test_replace_any_when_no_env(self): resolved_val = resolve_env_vars('Hello $$key1!') self.assertEqual('Hello $$key1!', resolved_val)
def test_replace_any_when_single_in_middle(self): set_env_value('my_key', 'my_password') resolved_val = resolve_env_vars('start/$$my_key/end') self.assertEqual('start/my_password/end', resolved_val)
def test_replace_any_when_repeating(self): set_env_value('my_key', 'abc') resolved_val = resolve_env_vars('$$my_key,$$my_key.$$my_key') self.assertEqual('abc,abc.abc', resolved_val)
def _resolve_file_dir(config, key): raw_value = config.get(key) if not raw_value: return raw_value return resolve_env_vars(raw_value)
def read_password(params_dict): password = params_dict.get('password') password = model_helper.resolve_env_vars(password, full_match=True) return password
def test_no_replace_full_match(self): value = 'abc!@#$%^&*,?$xyz' resolved_val = resolve_env_vars(value, full_match=True) self.assertEqual(value, resolved_val)
def test_no_replace_in_middle_full_match(self): value = 'abc$$HOME.123' resolved_val = resolve_env_vars(value, full_match=True) self.assertEqual(value, resolved_val)
def test_resolve_when_int(self): resolved_val = resolve_env_vars(123) self.assertEqual(123, resolved_val)
def test_replace_full_match(self): set_env_value('my_key', 'my_password') resolved_val = resolve_env_vars('$$my_key', full_match=True) self.assertEqual('my_password', resolved_val)
def test_replace_any_when_exact(self): set_env_value('my_key', 'my_password') resolved_val = resolve_env_vars('$$my_key') self.assertEqual('my_password', resolved_val)