jumpserver/apps/terminal/backends/command/es.py

54 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
#
from datetime import datetime
from jms_storage.es import ESStorage
from common.utils import get_logger
from .base import CommandBase
from .models import AbstractSessionCommand
logger = get_logger(__file__)
class CommandStore(ESStorage, CommandBase):
def __init__(self, params):
super().__init__(params)
def filter(self, date_from=None, date_to=None,
user=None, asset=None, system_user=None,
input=None, session=None, risk_level=None, org_id=None):
if date_from is not None:
if isinstance(date_from, float):
date_from = datetime.fromtimestamp(date_from)
if date_to is not None:
if isinstance(date_to, float):
date_to = datetime.fromtimestamp(date_to)
try:
data = super().filter(date_from=date_from, date_to=date_to,
user=user, asset=asset, system_user=system_user,
input=input, session=session,
risk_level=risk_level, org_id=org_id)
except Exception as e:
logger.error(e, exc_info=True)
return []
else:
return AbstractSessionCommand.from_multi_dict(
[item["_source"] for item in data["hits"] if item]
)
def count(self, date_from=None, date_to=None, user=None, asset=None,
system_user=None, input=None, session=None):
try:
count = super().count(
date_from=date_from, date_to=date_to, user=user, asset=asset,
system_user=system_user, input=input, session=session
)
except Exception as e:
logger.error(e, exc_info=True)
return 0
else:
return count