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

Method execute

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

Source from the content-addressed store, hash-verified

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