From 0954f6d7e8771d08d6291f7b3ef82cea7034d0b1 Mon Sep 17 00:00:00 2001 From: ibuler Date: Sun, 9 Oct 2016 00:12:18 +0800 Subject: [PATCH] Add audits api --- apps/audits/api.py | 12 ++++++++++++ apps/audits/migrations/__init__.py | 0 apps/audits/models.py | 18 ++++++++++++++++-- apps/audits/serializers.py | 20 ++++++++++++++++++++ apps/audits/urls.py | 15 +++++++++++++++ apps/jumpserver/urls.py | 1 + apps/users/api.py | 5 ++--- 7 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 apps/audits/migrations/__init__.py create mode 100644 apps/audits/serializers.py diff --git a/apps/audits/api.py b/apps/audits/api.py index ecbf4289f..5c3a71d9e 100644 --- a/apps/audits/api.py +++ b/apps/audits/api.py @@ -1,3 +1,15 @@ # ~*~ 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 diff --git a/apps/audits/migrations/__init__.py b/apps/audits/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/apps/audits/models.py b/apps/audits/models.py index 71f0ce353..33c635d10 100644 --- a/apps/audits/models.py +++ b/apps/audits/models.py @@ -23,7 +23,7 @@ class LoginLog(models.Model): date_logout = models.DateTimeField(null=True, verbose_name=_('Date logout')) class Meta: - db_table = 'loginlog' + db_table = 'login_log' ordering = ['-date_login', 'username'] @@ -44,10 +44,24 @@ class ProxyLog(models.Model): date_start = models.DateTimeField(auto_now=True, verbose_name=_('Date start')) 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): - 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) output = models.TextField(blank=True) date_start = 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'] diff --git a/apps/audits/serializers.py b/apps/audits/serializers.py new file mode 100644 index 000000000..74adc8ee0 --- /dev/null +++ b/apps/audits/serializers.py @@ -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 diff --git a/apps/audits/urls.py b/apps/audits/urls.py index 39b3350fb..1cbb6f089 100644 --- a/apps/audits/urls.py +++ b/apps/audits/urls.py @@ -1 +1,16 @@ 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'), +] diff --git a/apps/jumpserver/urls.py b/apps/jumpserver/urls.py index 7a1c3ae95..f4222aa49 100644 --- a/apps/jumpserver/urls.py +++ b/apps/jumpserver/urls.py @@ -25,6 +25,7 @@ urlpatterns = [ url(r'^(api/)?users/', include('users.urls')), url(r'^assets/', include('assets.urls')), url(r'^perms/', include('perms.urls')), + url(r'^(api/)?audits/', include('audits.urls')), ] diff --git a/apps/users/api.py b/apps/users/api.py index aaf67a9a4..4302cec6e 100644 --- a/apps/users/api.py +++ b/apps/users/api.py @@ -1,8 +1,6 @@ # ~*~ coding: utf-8 ~*~ # -import logging - from django.shortcuts import get_object_or_404 from rest_framework import generics, status @@ -12,7 +10,8 @@ from rest_framework_bulk import ListBulkCreateUpdateDestroyAPIView from .models import User, UserGroup from .serializers import UserDetailSerializer, UserAndGroupSerializer, \ 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__)