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

Method execute

keepercommander/commands/enterprise.py:3782–3903  ·  view source on GitHub ↗
(self, params, **kwargs)

Source from the content-addressed store, hash-verified

3780 return user_report_parser
3781
3782 def execute(self, params, **kwargs):
3783 self.nodes.clear()
3784 if 'nodes' in params.enterprise:
3785 for node in params.enterprise['nodes']:
3786 self.nodes[node['node_id']] = {
3787 'parent_id': node.get('parent_id') or 0,
3788 'name': node['data'].get('displayname') or ''
3789 }
3790
3791 self.roles.clear()
3792 if 'roles' in params.enterprise:
3793 for role in params.enterprise['roles']:
3794 if 'data' in role:
3795 self.roles[role['role_id']] = role['data'].get('displayname') or ''
3796
3797 self.teams.clear()
3798 if 'teams' in params.enterprise:
3799 for team in params.enterprise['teams']:
3800 self.teams[team['team_uid']] = team['name']
3801
3802 self.users.clear()
3803 kw_euid = 'enterprise_user_id'
3804 ei_cmd = EnterpriseInfoCommand()
3805 cmd_output = ei_cmd.execute(params, users=True, columns='roles,teams', format='json', quiet=True)
3806 enterprise_users = json.loads(cmd_output)
3807
3808 def get_user_info(user):
3809 u = {
3810 'enterprise_user_id': user.get('enterprise_user_id'),
3811 'node_id': user.get('node_id'),
3812 'username': user.get('username'),
3813 'name': user.get('data', {}).get('displayname') or '',
3814 'status': user.get('status'),
3815 'lock': user.get('lock')
3816 }
3817 if 'account_share_expiration' in user:
3818 u['account_share_expiration'] = user['account_share_expiration']
3819 return u
3820
3821 self.user_teams = {u.get('user_id'): u.get('teams') for u in enterprise_users}
3822 self.user_roles = {u.get('user_id'): u.get('roles') for u in enterprise_users}
3823 euids = list(self.user_roles.keys())
3824 users_cache_filtered = {u.get(kw_euid): u for u in params.enterprise.get('users', []) if u.get(kw_euid) in euids}
3825 self.users = {k: get_user_info(u) for k, u in users_cache_filtered.items()}
3826
3827 limit = API_EVENT_SUMMARY_ROW_LIMIT
3828 look_back_days = kwargs.get('days', 365)
3829 report_filter = {'audit_event_type': ['login', 'login_console', 'chat_login', 'accept_invitation']}
3830 if isinstance(look_back_days, int) and look_back_days > 0:
3831 logging.info(f'Querying latest login for the last {look_back_days} days')
3832 from_date = datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(days=look_back_days)
3833 from_ts = int(from_date.timestamp())
3834 report_filter['created'] = {'min': from_ts}
3835
3836 last_login = {}
3837 active = [x['username'].lower() for x in self.users.values() if x['status'] == 'active']
3838 rq = {
3839 "command": "get_audit_event_reports",

Callers 3

test_report_commandsMethod · 0.95
create_user_reportFunction · 0.95
executeMethod · 0.45

Calls 10

executeMethod · 0.95
get_user_status_dictFunction · 0.85
field_to_titleFunction · 0.85
dump_report_dataFunction · 0.85
getMethod · 0.80
get_node_pathMethod · 0.80
clearMethod · 0.45
infoMethod · 0.45
updateMethod · 0.45

Tested by 1

test_report_commandsMethod · 0.76