mirror of https://github.com/jumpserver/jumpserver
fix: es命令记录可以看到其他资产执行的命令
parent
9f67ba573c
commit
98c9cddcbf
|
@ -228,6 +228,18 @@ class ES(object):
|
||||||
datetime_range['lte'] = datetime__lte
|
datetime_range['lte'] = datetime__lte
|
||||||
return 'datetime', datetime_range
|
return 'datetime', datetime_range
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def handle_exact_fields(exact):
|
||||||
|
_filter = []
|
||||||
|
for k, v in exact.items():
|
||||||
|
query = 'term'
|
||||||
|
if isinstance(v, list):
|
||||||
|
query = 'terms'
|
||||||
|
_filter.append({
|
||||||
|
query: {k: v}
|
||||||
|
})
|
||||||
|
return _filter
|
||||||
|
|
||||||
def get_query_body(self, **kwargs):
|
def get_query_body(self, **kwargs):
|
||||||
new_kwargs = {}
|
new_kwargs = {}
|
||||||
for k, v in kwargs.items():
|
for k, v in kwargs.items():
|
||||||
|
@ -235,6 +247,8 @@ class ES(object):
|
||||||
v = str(v)
|
v = str(v)
|
||||||
if k == 'pk':
|
if k == 'pk':
|
||||||
k = 'id'
|
k = 'id'
|
||||||
|
if k.endswith('__in'):
|
||||||
|
k = k.replace('__in', '')
|
||||||
new_kwargs[k] = v
|
new_kwargs[k] = v
|
||||||
kwargs = new_kwargs
|
kwargs = new_kwargs
|
||||||
|
|
||||||
|
@ -287,11 +301,8 @@ class ES(object):
|
||||||
{'match': {k: v}} for k, v in match.items()
|
{'match': {k: v}} for k, v in match.items()
|
||||||
],
|
],
|
||||||
'should': should,
|
'should': should,
|
||||||
'filter': [
|
'filter': self.handle_exact_fields(exact) +
|
||||||
{
|
[
|
||||||
'term': {k: v}
|
|
||||||
} for k, v in exact.items()
|
|
||||||
] + [
|
|
||||||
{
|
{
|
||||||
'range': {
|
'range': {
|
||||||
time_field_name: time_range
|
time_field_name: time_range
|
||||||
|
|
|
@ -167,7 +167,6 @@ class CommandViewSet(JMSBulkModelViewSet):
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
command_storage_id = self.request.query_params.get('command_storage_id')
|
command_storage_id = self.request.query_params.get('command_storage_id')
|
||||||
asset_id = self.request.query_params.get('asset_id')
|
|
||||||
if not command_storage_id:
|
if not command_storage_id:
|
||||||
return Command.objects.none()
|
return Command.objects.none()
|
||||||
|
|
||||||
|
@ -176,9 +175,6 @@ class CommandViewSet(JMSBulkModelViewSet):
|
||||||
raise StorageInvalid
|
raise StorageInvalid
|
||||||
else:
|
else:
|
||||||
qs = storage.get_command_queryset()
|
qs = storage.get_command_queryset()
|
||||||
if asset_id:
|
|
||||||
session_ids = Session.objects.filter(asset_id=asset_id).values_list('id', flat=True)
|
|
||||||
qs = qs.filter(session__in=list(session_ids))
|
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -2,7 +2,7 @@ from django.db.models import QuerySet
|
||||||
from django_filters import rest_framework as filters
|
from django_filters import rest_framework as filters
|
||||||
|
|
||||||
from orgs.utils import filter_org_queryset
|
from orgs.utils import filter_org_queryset
|
||||||
from terminal.models import Command, CommandStorage
|
from terminal.models import Command, CommandStorage, Session
|
||||||
|
|
||||||
|
|
||||||
class CommandFilter(filters.FilterSet):
|
class CommandFilter(filters.FilterSet):
|
||||||
|
@ -13,7 +13,7 @@ class CommandFilter(filters.FilterSet):
|
||||||
user = filters.CharFilter(lookup_expr='startswith')
|
user = filters.CharFilter(lookup_expr='startswith')
|
||||||
input = filters.CharFilter(lookup_expr='icontains')
|
input = filters.CharFilter(lookup_expr='icontains')
|
||||||
asset = filters.CharFilter(field_name='asset', lookup_expr='icontains')
|
asset = filters.CharFilter(field_name='asset', lookup_expr='icontains')
|
||||||
asset_id = filters.UUIDFilter(method='do_nothing')
|
asset_id = filters.UUIDFilter(method='filter_by_asset_id')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Command
|
model = Command
|
||||||
|
@ -48,6 +48,15 @@ class CommandFilter(filters.FilterSet):
|
||||||
qs = qs.filter(**filters)
|
qs = qs.filter(**filters)
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
def filter_by_asset_id(self, queryset, name, value):
|
||||||
|
asset_id = self.form.cleaned_data.get('asset_id')
|
||||||
|
filters = {}
|
||||||
|
if asset_id:
|
||||||
|
session_ids = Session.objects.filter(asset_id=asset_id).values_list('id', flat=True)
|
||||||
|
filters['session__in'] = list(session_ids)
|
||||||
|
queryset = queryset.filter(**filters)
|
||||||
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class CommandFilterForStorageTree(CommandFilter):
|
class CommandFilterForStorageTree(CommandFilter):
|
||||||
asset = filters.CharFilter(method='do_nothing')
|
asset = filters.CharFilter(method='do_nothing')
|
||||||
|
|
Loading…
Reference in New Issue