diff --git a/apps/i18n/zh/LC_MESSAGES/django.mo b/apps/i18n/zh/LC_MESSAGES/django.mo index c3c6b39c8..2861b0128 100644 Binary files a/apps/i18n/zh/LC_MESSAGES/django.mo and b/apps/i18n/zh/LC_MESSAGES/django.mo differ diff --git a/apps/i18n/zh/LC_MESSAGES/django.po b/apps/i18n/zh/LC_MESSAGES/django.po index 05acb43c3..d67596643 100644 --- a/apps/i18n/zh/LC_MESSAGES/django.po +++ b/apps/i18n/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-03-06 17:57+0800\n" +"POT-Creation-Date: 2018-03-07 11:27+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -660,12 +660,6 @@ msgstr "更新" msgid "Delete" msgstr "删除" -#: assets/templates/assets/_system_user.html:16 -#: assets/templates/assets/system_user_list.html:16 -#: assets/views/system_user.py:45 -msgid "Create system user" -msgstr "创建系统用户" - #: assets/templates/assets/_system_user.html:37 #: assets/templates/assets/asset_create.html:16 #: assets/templates/assets/asset_update.html:21 @@ -762,12 +756,6 @@ msgstr "测试" msgid "Task has been send, seen left asset status" msgstr "任务已下发,查看左侧资产状态" -#: assets/templates/assets/admin_user_create_update.html:16 -#: assets/templates/assets/admin_user_list.html:14 -#: assets/views/admin_user.py:48 -msgid "Create admin user" -msgstr "创建管理用户" - #: assets/templates/assets/admin_user_detail.html:83 msgid "Replace node assets admin user with this" msgstr "替换资产的管理员" @@ -788,6 +776,11 @@ msgstr "替换资产的管理员" msgid "Confirm" msgstr "确认" +#: assets/templates/assets/admin_user_list.html:14 +#: assets/views/admin_user.py:48 +msgid "Create admin user" +msgstr "创建管理用户" + #: assets/templates/assets/admin_user_list.html:26 #: assets/templates/assets/system_user_list.html:28 msgid "Unreachable" @@ -979,6 +972,11 @@ msgstr "Uid" msgid "Add to node" msgstr "添加到节点" +#: assets/templates/assets/system_user_list.html:16 +#: assets/views/system_user.py:45 +msgid "Create system user" +msgstr "创建系统用户" + #: assets/templates/assets/system_user_list.html:131 msgid "This will delete the selected System Users !!!" msgstr "删除选择系统用户" @@ -1607,10 +1605,6 @@ msgstr "选择资产组" msgid "Join" msgstr "加入" -#: perms/templates/perms/asset_permission_create_update.html:17 -msgid "Create asset permission " -msgstr "创建资产权限" - #: perms/templates/perms/asset_permission_detail.html:66 msgid "User count" msgstr "用户数量" @@ -1783,7 +1777,7 @@ msgstr "Web终端" #: templates/_nav.html:50 terminal/templates/terminal/session_list.html:75 #: terminal/views/command.py:47 terminal/views/session.py:75 -#: terminal/views/session.py:92 terminal/views/session.py:114 +#: terminal/views/session.py:93 terminal/views/session.py:115 #: terminal/views/terminal.py:31 terminal/views/terminal.py:46 #: terminal/views/terminal.py:58 msgid "Terminal" @@ -1896,7 +1890,7 @@ msgid "Goto" msgstr "转到" #: terminal/templates/terminal/session_detail.html:17 -#: terminal/views/session.py:115 +#: terminal/views/session.py:116 msgid "Session detail" msgstr "会话详情" @@ -1939,10 +1933,8 @@ msgid "Terminate" msgstr "终断" #: terminal/templates/terminal/session_list.html:116 -#, fuzzy -#| msgid "Deactive selected" msgid "Terminate selected" -msgstr "禁用所选" +msgstr "终断所选" #: terminal/templates/terminal/session_list.html:136 msgid "Terminate task send, waiting ..." @@ -1991,7 +1983,7 @@ msgstr "信息" msgid "Session online list" msgstr "在线会话" -#: terminal/views/session.py:93 +#: terminal/views/session.py:94 msgid "Session offline list" msgstr "离线会话" @@ -2653,3 +2645,6 @@ msgstr "密码更新" #: users/views/user.py:374 msgid "Public key update" msgstr "密钥更新" + +#~ msgid "Create asset permission " +#~ msgstr "创建资产权限" diff --git a/apps/jumpserver/urls.py b/apps/jumpserver/urls.py index 986f9b0cb..fe8a4417a 100644 --- a/apps/jumpserver/urls.py +++ b/apps/jumpserver/urls.py @@ -13,7 +13,7 @@ from .views import IndexView, LunaView schema_view = get_schema_view(title='Users API', renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer]) urlpatterns = [ url(r'^$', IndexView.as_view(), name='index'), - url(r'^luna/$', LunaView.as_view(), name='luna-error'), + url(r'^luna/', LunaView.as_view(), name='luna-error'), url(r'^users/', include('users.urls.views_urls', namespace='users')), url(r'^assets/', include('assets.urls.views_urls', namespace='assets')), url(r'^perms/', include('perms.urls.views_urls', namespace='perms')), diff --git a/apps/terminal/api.py b/apps/terminal/api.py index 9ce188af1..88f49c17d 100644 --- a/apps/terminal/api.py +++ b/apps/terminal/api.py @@ -5,14 +5,15 @@ import logging import os import uuid -from rest_framework import viewsets, serializers -from rest_framework.views import APIView, Response -from rest_framework.permissions import AllowAny from django.core.cache import cache from django.shortcuts import get_object_or_404, redirect from django.utils import timezone from django.core.files.storage import default_storage from django.http import HttpResponseNotFound +from rest_framework import viewsets, serializers +from rest_framework.views import APIView, Response +from rest_framework.permissions import AllowAny +from rest_framework_bulk import BulkModelViewSet from common.utils import get_object_or_none from .models import Terminal, Status, Session, Task @@ -178,12 +179,29 @@ class SessionViewSet(viewsets.ModelViewSet): return self.queryset -class TaskViewSet(viewsets.ModelViewSet): +class TaskViewSet(BulkModelViewSet): queryset = Task.objects.all() serializer_class = TaskSerializer permission_classes = (IsSuperUserOrAppUser,) +class KillSessionAPI(APIView): + permission_classes = (IsSuperUserOrAppUser,) + model = Task + + def post(self, request, *args, **kwargs): + validated_session = [] + for session_id in request.data: + session = get_object_or_none(Session, id=session_id) + if session and not session.is_finished: + validated_session.append(session_id) + self.model.objects.create( + name="kill_session", args=session.id, + terminal=session.terminal, + ) + return Response({"ok": validated_session}) + + class CommandViewSet(viewsets.ViewSet): """接受app发送来的command log, 格式如下 { diff --git a/apps/terminal/serializers.py b/apps/terminal/serializers.py index 275853411..8c40315a7 100644 --- a/apps/terminal/serializers.py +++ b/apps/terminal/serializers.py @@ -3,7 +3,11 @@ from django.utils import timezone from rest_framework import serializers +from rest_framework_bulk.serializers import BulkListSerializer + +from common.mixins import BulkSerializerMixin +from common.utils import get_object_or_none from .models import Terminal, Status, Session, Task from .backends import get_multi_command_store @@ -47,6 +51,7 @@ class SessionSerializer(serializers.ModelSerializer): class Meta: model = Session + list_serializer_class = BulkListSerializer fields = '__all__' def get_command_amount(self, obj): @@ -60,11 +65,12 @@ class StatusSerializer(serializers.ModelSerializer): model = Status -class TaskSerializer(serializers.ModelSerializer): +class TaskSerializer(BulkSerializerMixin, serializers.ModelSerializer): class Meta: fields = '__all__' model = Task + list_serializer_class = BulkListSerializer class ReplaySerializer(serializers.Serializer): diff --git a/apps/terminal/templates/terminal/session_list.html b/apps/terminal/templates/terminal/session_list.html index b5168f8e4..c7f29f7b1 100644 --- a/apps/terminal/templates/terminal/session_list.html +++ b/apps/terminal/templates/terminal/session_list.html @@ -110,10 +110,10 @@ {% endblock %} {% block content_bottom_left %} -
+