mirror of https://github.com/jumpserver/jumpserver
Add audits api
parent
59727656c3
commit
0954f6d7e8
|
@ -1,3 +1,15 @@
|
||||||
# ~*~ coding: utf-8 ~*~
|
# ~*~ coding: utf-8 ~*~
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
from rest_framework import generics
|
||||||
|
|
||||||
|
import serializers
|
||||||
|
|
||||||
|
|
||||||
|
class ProxyLogCreateApi(generics.CreateAPIView):
|
||||||
|
serializer_class = serializers.ProxyLogSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class CommandLogCreateApi(generics.CreateAPIView):
|
||||||
|
serializer_class = serializers.CommandLogSerializer
|
||||||
|
|
|
@ -23,7 +23,7 @@ class LoginLog(models.Model):
|
||||||
date_logout = models.DateTimeField(null=True, verbose_name=_('Date logout'))
|
date_logout = models.DateTimeField(null=True, verbose_name=_('Date logout'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = 'loginlog'
|
db_table = 'login_log'
|
||||||
ordering = ['-date_login', 'username']
|
ordering = ['-date_login', 'username']
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,10 +44,24 @@ class ProxyLog(models.Model):
|
||||||
date_start = models.DateTimeField(auto_now=True, verbose_name=_('Date start'))
|
date_start = models.DateTimeField(auto_now=True, verbose_name=_('Date start'))
|
||||||
date_finished = models.DateTimeField(null=True, verbose_name=_('Date finished'))
|
date_finished = models.DateTimeField(null=True, verbose_name=_('Date finished'))
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return '%s-%s-%s-%s' % (self.username, self.hostname, self.system_user, self.id)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = 'proxy_log'
|
||||||
|
ordering = ['-date_start', 'username']
|
||||||
|
|
||||||
|
|
||||||
class CommandLog(models.Model):
|
class CommandLog(models.Model):
|
||||||
proxy_log = models.ForeignKey(ProxyLog, on_delete=models.CASCADE, related_name='proxy_log')
|
proxy_log = models.ForeignKey(ProxyLog, on_delete=models.CASCADE, related_name='command_log')
|
||||||
command = models.CharField(max_length=1000, blank=True)
|
command = models.CharField(max_length=1000, blank=True)
|
||||||
output = models.TextField(blank=True)
|
output = models.TextField(blank=True)
|
||||||
date_start = models.DateTimeField(null=True)
|
date_start = models.DateTimeField(null=True)
|
||||||
date_finished = models.DateTimeField(null=True)
|
date_finished = models.DateTimeField(null=True)
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return '%s: %s' % (self.id, self.command)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = 'command_log'
|
||||||
|
ordering = ['-date_start', 'command']
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
import models
|
||||||
|
|
||||||
|
|
||||||
|
class ProxyLogSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.ProxyLog
|
||||||
|
|
||||||
|
|
||||||
|
class CommandLogSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = models.CommandLog
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
pass
|
|
@ -1 +1,16 @@
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
|
|
||||||
|
import api
|
||||||
|
import views
|
||||||
|
|
||||||
|
app_name = 'audits'
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
urlpatterns += [
|
||||||
|
url(r'^v1/proxy-log$', api.ProxyLogCreateApi.as_view(), name='proxy-log-create-api'),
|
||||||
|
url(r'^v1/command-log$', api.CommandLogCreateApi.as_view(), name='command-log-create-api'),
|
||||||
|
]
|
||||||
|
|
|
@ -25,6 +25,7 @@ urlpatterns = [
|
||||||
url(r'^(api/)?users/', include('users.urls')),
|
url(r'^(api/)?users/', include('users.urls')),
|
||||||
url(r'^assets/', include('assets.urls')),
|
url(r'^assets/', include('assets.urls')),
|
||||||
url(r'^perms/', include('perms.urls')),
|
url(r'^perms/', include('perms.urls')),
|
||||||
|
url(r'^(api/)?audits/', include('audits.urls')),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
# ~*~ coding: utf-8 ~*~
|
# ~*~ coding: utf-8 ~*~
|
||||||
#
|
#
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
from rest_framework import generics, status
|
from rest_framework import generics, status
|
||||||
|
@ -12,7 +10,8 @@ from rest_framework_bulk import ListBulkCreateUpdateDestroyAPIView
|
||||||
from .models import User, UserGroup
|
from .models import User, UserGroup
|
||||||
from .serializers import UserDetailSerializer, UserAndGroupSerializer, \
|
from .serializers import UserDetailSerializer, UserAndGroupSerializer, \
|
||||||
GroupDetailSerializer, UserPKUpdateSerializer, UserBulkUpdateSerializer, GroupBulkUpdateSerializer
|
GroupDetailSerializer, UserPKUpdateSerializer, UserBulkUpdateSerializer, GroupBulkUpdateSerializer
|
||||||
from common.mixins import BulkDeleteApiMixin, get_logger
|
from common.mixins import BulkDeleteApiMixin
|
||||||
|
from common.utils import get_logger
|
||||||
|
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
Loading…
Reference in New Issue