MCPcopy Create free account
hub / github.com/Keeper-Security/Commander / execute

Method execute

keepercommander/commands/utils.py:1703–1853  ·  view source on GitHub ↗
(self, params, **kwargs)

Source from the content-addressed store, hash-verified

1701 return False
1702
1703 def execute(self, params, **kwargs):
1704 from ..constants import KEEPER_SERVERS, get_abbrev_by_host
1705
1706 if msp.current_mc_id:
1707 msp.current_mc_id = None
1708 msp.mc_params_dict.clear()
1709
1710 # Handle --server option to change data center
1711 server = kwargs.get('server')
1712 if server:
1713 server_upper = server.upper().replace('-', '_')
1714 if server_upper in KEEPER_SERVERS:
1715 params.server = KEEPER_SERVERS[server_upper]
1716 logging.info(f'Data center set to {server_upper}')
1717 else:
1718 logging.warning(f'Unknown server region: {server}. Using default.')
1719
1720 user = kwargs.get('email') or ''
1721 password = kwargs.get('password') or ''
1722
1723 try:
1724 if not user:
1725 # Show current data center before prompting for email
1726 region = get_abbrev_by_host(params.server) if params.server else 'US'
1727 if not region:
1728 # Check extended server list
1729 region = next((k for k, v in KEEPER_SERVERS.items() if v == params.server), params.server)
1730 print(f'{Fore.CYAN}Data center: {Fore.WHITE}{region}{Fore.RESET}', file=sys.stderr)
1731 hint_cmd = 'keeper login --server <region>' if params.batch_mode else 'login --server <region>'
1732 print(f'{Fore.CYAN}Use {Fore.GREEN}{hint_cmd}{Fore.CYAN} to change (US, EU, AU, CA, JP, GOV){Fore.RESET}', file=sys.stderr)
1733 print('', file=sys.stderr)
1734 user = input(f'{Fore.GREEN}Email: {Fore.RESET}').strip()
1735 if not user:
1736 return
1737 except KeyboardInterrupt as e:
1738 logging.info('Canceled')
1739 return
1740
1741 params.user = user.lower()
1742 if not password and isinstance(params.config, dict):
1743 if 'user' in params.config and 'password' in params.config:
1744 if params.config['user'] == params.user:
1745 password = params.config['password']
1746
1747 params.password = password
1748 new_login = kwargs.get('new_login') is True
1749 skip_sync = kwargs.get('skip_sync') is True
1750
1751 # Apply storage backend choice before login so that store_config_properties
1752 # (called inside api.login) honours the user's explicit preference.
1753 # Mirrors KSM CLI's use_config_file / use_keyring logic in Profile.init().
1754 import platform as _platform
1755 from ..config_storage.loader import (
1756 CONFIG_STORAGE_URL, OS_KEYCHAIN_URL, is_os_keychain_available, _is_os_keychain_url
1757 )
1758
1759 use_config_file = (
1760 kwargs.get('config_file') is True

Callers 2

test_loginMethod · 0.95
execute_argsMethod · 0.95

Calls 15

get_abbrev_by_hostFunction · 0.85
_is_os_keychain_urlFunction · 0.85
is_os_keychain_availableFunction · 0.85
SyncDownCommandClass · 0.85
post_login_summaryFunction · 0.85
getMethod · 0.80
warningMethod · 0.80
clearMethod · 0.45
infoMethod · 0.45

Tested by 1

test_loginMethod · 0.76