Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
17181db8
Commit
17181db8
authored
Jan 21, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Plain Diff
[Feature] 支持es存储
parents
41f1c3f7
67001dd9
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
175 additions
and
102 deletions
+175
-102
forms.py
apps/common/forms.py
+0
-3
views.py
apps/common/views.py
+2
-2
settings.py
apps/jumpserver/settings.py
+1
-0
django.mo
apps/locale/zh/LC_MESSAGES/django.mo
+0
-0
django.po
apps/locale/zh/LC_MESSAGES/django.po
+72
-71
api.py
apps/terminal/api.py
+5
-4
__init__.py
apps/terminal/backends/__init__.py
+7
-1
db.py
apps/terminal/backends/command/db.py
+1
-1
es.py
apps/terminal/backends/command/es.py
+38
-0
models.py
apps/terminal/backends/command/models.py
+6
-0
multi.py
apps/terminal/backends/command/multi.py
+28
-0
models.py
apps/terminal/models.py
+4
-3
serializers.py
apps/terminal/serializers.py
+3
-3
terminal_tags.py
apps/terminal/templatetags/terminal_tags.py
+3
-6
command.py
apps/terminal/views/command.py
+3
-6
session.py
apps/terminal/views/session.py
+2
-2
No files found.
apps/common/forms.py
View file @
17181db8
...
...
@@ -78,9 +78,6 @@ class BasicSettingForm(BaseForm):
max_length
=
1024
,
label
=
_
(
"Email Subject Prefix"
),
initial
=
"[Jumpserver] "
)
AUTH_LDAP
=
forms
.
BooleanField
(
label
=
_
(
"Enable LDAP Auth"
),
initial
=
False
,
required
=
False
)
class
EmailSettingForm
(
BaseForm
):
...
...
apps/common/views.py
View file @
17181db8
...
...
@@ -28,8 +28,6 @@ class BasicSettingView(AdminUserRequiredMixin, TemplateView):
form
=
self
.
form_class
(
request
.
POST
)
if
form
.
is_valid
():
form
.
save
()
if
"AUTH_LDAP"
in
form
.
cleaned_data
:
ldap_auth_enable
.
send
(
form
.
cleaned_data
[
"AUTH_LDAP"
])
msg
=
_
(
"Update setting successfully, please restart program"
)
messages
.
success
(
request
,
msg
)
return
redirect
(
'settings:basic-setting'
)
...
...
@@ -82,6 +80,8 @@ class LDAPSettingView(AdminUserRequiredMixin, TemplateView):
form
=
self
.
form_class
(
request
.
POST
)
if
form
.
is_valid
():
form
.
save
()
if
"AUTH_LDAP"
in
form
.
cleaned_data
:
ldap_auth_enable
.
send
(
form
.
cleaned_data
[
"AUTH_LDAP"
])
msg
=
_
(
"Update setting successfully, please restart program"
)
messages
.
success
(
request
,
msg
)
return
redirect
(
'settings:ldap-setting'
)
...
...
apps/jumpserver/settings.py
View file @
17181db8
...
...
@@ -391,6 +391,7 @@ TERMINAL_COMMAND_STORAGE = {
# }
}
# Django bootstrap3 setting, more see http://django-bootstrap3.readthedocs.io/en/latest/settings.html
BOOTSTRAP3
=
{
'horizontal_label_class'
:
'col-md-2'
,
...
...
apps/locale/zh/LC_MESSAGES/django.mo
View file @
17181db8
No preview for this file type
apps/locale/zh/LC_MESSAGES/django.po
View file @
17181db8
...
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-1
2 18:51
+0800\n"
"POT-Creation-Date: 2018-01-1
7 17:26
+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
...
...
@@ -129,7 +129,7 @@ msgid "Password or private key password"
msgstr "密码或秘钥不合法"
#: assets/forms.py:201 assets/forms.py:262 assets/models/user.py:30
#: common/forms.py:1
10
users/forms.py:16 users/forms.py:24
#: common/forms.py:1
07
users/forms.py:16 users/forms.py:24
#: users/templates/users/login.html:56
#: users/templates/users/reset_password.html:52
#: users/templates/users/user_create.html:11
...
...
@@ -661,7 +661,7 @@ msgstr "其它"
#: assets/templates/assets/asset_group_create.html:16
#: assets/templates/assets/asset_update.html:55
#: assets/templates/assets/cluster_create_update.html:54
#: common/templates/common/basic_setting.html:5
6
#: common/templates/common/basic_setting.html:5
5
#: common/templates/common/email_setting.html:56
#: common/templates/common/ldap_setting.html:56
#: perms/templates/perms/asset_permission_create_update.html:67
...
...
@@ -681,10 +681,10 @@ msgstr "重置"
#: assets/templates/assets/asset_bulk_update.html:24
#: assets/templates/assets/asset_create.html:41
#: assets/templates/assets/asset_group_create.html:17
#: assets/templates/assets/asset_list.html:5
5
#: assets/templates/assets/asset_list.html:5
3
#: assets/templates/assets/asset_update.html:56
#: assets/templates/assets/cluster_create_update.html:55
#: common/templates/common/basic_setting.html:5
7
#: common/templates/common/basic_setting.html:5
6
#: common/templates/common/email_setting.html:57
#: common/templates/common/ldap_setting.html:57
#: perms/templates/perms/asset_permission_create_update.html:68
...
...
@@ -726,8 +726,8 @@ msgstr "资产列表"
#: assets/templates/assets/asset_detail.html:24
#: assets/templates/assets/asset_group_detail.html:18
#: assets/templates/assets/asset_group_detail.html:177
#: assets/templates/assets/asset_group_list.html:
42
#: assets/templates/assets/asset_list.html:9
5
#: assets/templates/assets/asset_group_list.html:
38
#: assets/templates/assets/asset_list.html:9
8
#: assets/templates/assets/cluster_assets.html:170
#: assets/templates/assets/cluster_detail.html:25
#: assets/templates/assets/cluster_list.html:43
...
...
@@ -750,8 +750,8 @@ msgstr "更新"
#: assets/templates/assets/admin_user_list.html:84
#: assets/templates/assets/asset_detail.html:28
#: assets/templates/assets/asset_group_detail.html:22
#: assets/templates/assets/asset_group_list.html:
43
#: assets/templates/assets/asset_list.html:9
6
#: assets/templates/assets/asset_group_list.html:
39
#: assets/templates/assets/asset_list.html:9
9
#: assets/templates/assets/cluster_detail.html:29
#: assets/templates/assets/cluster_list.html:44
#: assets/templates/assets/system_user_detail.html:30
...
...
@@ -776,7 +776,6 @@ msgstr "资产列表"
#: assets/templates/assets/admin_user_assets.html:62
#: assets/templates/assets/asset_group_detail.html:53
#: assets/templates/assets/asset_list.html:34
#: assets/templates/assets/cluster_assets.html:54
#: assets/templates/assets/user_asset_list.html:22
#: users/templates/users/login_log_list.html:50
...
...
@@ -786,7 +785,7 @@ msgstr "类型"
#: assets/templates/assets/admin_user_assets.html:63
#: assets/templates/assets/admin_user_list.html:25
#: assets/templates/assets/asset_detail.html:376
#: assets/templates/assets/asset_list.html:3
8
#: assets/templates/assets/asset_list.html:3
6
#: assets/templates/assets/system_user_asset.html:55
#: assets/templates/assets/system_user_list.html:27
msgid "Reachable"
...
...
@@ -827,8 +826,8 @@ msgstr "使用集群管理用户"
#: assets/templates/assets/admin_user_detail.html:101
#: assets/templates/assets/asset_detail.html:230
#: assets/templates/assets/asset_group_list.html:8
5
#: assets/templates/assets/asset_list.html:2
14
#: assets/templates/assets/asset_group_list.html:8
1
#: assets/templates/assets/asset_list.html:2
20
#: assets/templates/assets/cluster_assets.html:104
#: assets/templates/assets/cluster_list.html:89
#: assets/templates/assets/system_user_detail.html:164
...
...
@@ -859,7 +858,7 @@ msgstr "比例"
#: assets/templates/assets/admin_user_list.html:29
#: assets/templates/assets/asset_group_detail.html:55
#: assets/templates/assets/asset_group_list.html:18
#: assets/templates/assets/asset_list.html:3
9
#: assets/templates/assets/asset_list.html:3
7
#: assets/templates/assets/cluster_assets.html:56
#: assets/templates/assets/cluster_list.html:23
#: assets/templates/assets/system_user_list.html:31
...
...
@@ -909,7 +908,7 @@ msgid "Quick modify"
msgstr "快速修改"
#: assets/templates/assets/asset_detail.html:175
#: assets/templates/assets/asset_list.html:3
7
#: assets/templates/assets/asset_list.html:3
5
#: assets/templates/assets/user_asset_list.html:25 perms/models.py:20
#: perms/templates/perms/asset_permission_create_update.html:47
#: perms/templates/perms/asset_permission_detail.html:116
...
...
@@ -970,8 +969,8 @@ msgstr "移除"
msgid "Create asset group"
msgstr "创建资产组"
#: assets/templates/assets/asset_group_list.html:
80
#: assets/templates/assets/asset_list.html:2
09
#: assets/templates/assets/asset_group_list.html:
76
#: assets/templates/assets/asset_list.html:2
15
#: assets/templates/assets/cluster_list.html:84
#: assets/templates/assets/system_user_list.html:129
#: users/templates/users/user_detail.html:333
...
...
@@ -981,29 +980,29 @@ msgstr "创建资产组"
msgid "Are you sure?"
msgstr "你确认吗?"
#: assets/templates/assets/asset_group_list.html:
81
#: assets/templates/assets/asset_group_list.html:
77
#: users/templates/users/user_group_list.html:78
msgid "This will delete the selected groups !!!"
msgstr "删除选择组"
#: assets/templates/assets/asset_group_list.html:8
9
#: assets/templates/assets/asset_group_list.html:8
5
msgid "Group deleted"
msgstr "组已被删除"
#: assets/templates/assets/asset_group_list.html:
90
#: assets/templates/assets/asset_group_list.html:9
5
#: assets/templates/assets/asset_group_list.html:
86
#: assets/templates/assets/asset_group_list.html:9
1
msgid "Group Delete"
msgstr "删除"
#: assets/templates/assets/asset_group_list.html:9
4
#: assets/templates/assets/asset_group_list.html:9
0
msgid "Group deleting failed."
msgstr "删除失败"
#: assets/templates/assets/asset_group_list.html:15
7
#: assets/templates/assets/asset_group_list.html:15
3
msgid "The selected asset groups has been updated successfully."
msgstr "更新成功"
#: assets/templates/assets/asset_group_list.html:15
8
#: assets/templates/assets/asset_group_list.html:15
4
msgid "AssetGroup Updated"
msgstr "资产组更新"
...
...
@@ -1021,52 +1020,47 @@ msgstr "导出"
msgid "Create asset"
msgstr "创建资产"
#: assets/templates/assets/asset_list.html:35
#: assets/templates/assets/user_asset_list.html:23
msgid "Env"
msgstr "环境"
#: assets/templates/assets/asset_list.html:36
#: assets/templates/assets/asset_list.html:34
#: assets/templates/assets/user_asset_list.html:24
msgid "Hardware"
msgstr "硬件"
#: assets/templates/assets/asset_list.html:4
8
#: assets/templates/assets/asset_list.html:4
6
#: users/templates/users/user_list.html:37
msgid "Delete selected"
msgstr "批量删除"
#: assets/templates/assets/asset_list.html:4
9
#: assets/templates/assets/asset_list.html:4
7
#: users/templates/users/user_list.html:38
msgid "Update selected"
msgstr "批量更新"
#: assets/templates/assets/asset_list.html:
50
#: assets/templates/assets/asset_list.html:
48
#: users/templates/users/user_list.html:39
msgid "Deactive selected"
msgstr "禁用所选"
#: assets/templates/assets/asset_list.html:
51
#: assets/templates/assets/asset_list.html:
49
#: users/templates/users/user_list.html:40
msgid "Active selected"
msgstr "激活所选"
#: assets/templates/assets/asset_list.html:21
0
#: assets/templates/assets/asset_list.html:21
6
msgid "This will delete the selected assets !!!"
msgstr "删除选择资产"
# msgid "Deleted!"
# msgstr "删除"
#: assets/templates/assets/asset_list.html:2
18
#: assets/templates/assets/asset_list.html:2
24
msgid "Asset Deleted."
msgstr "已被删除"
#: assets/templates/assets/asset_list.html:2
19
#: assets/templates/assets/asset_list.html:2
24
#: assets/templates/assets/asset_list.html:2
25
#: assets/templates/assets/asset_list.html:2
30
msgid "Asset Delete"
msgstr "删除"
#: assets/templates/assets/asset_list.html:22
3
#: assets/templates/assets/asset_list.html:22
9
msgid "Asset Deleting failed."
msgstr "删除失败"
...
...
@@ -1202,6 +1196,10 @@ msgstr "删除系统用户"
msgid "System Users Deleting failed."
msgstr "系统用户删除失败"
#: assets/templates/assets/user_asset_list.html:23
msgid "Env"
msgstr "环境"
#: assets/templates/assets/user_asset_list.html:26
msgid "Connective"
msgstr "连接性"
...
...
@@ -1317,58 +1315,62 @@ msgstr "LDAP认证"
msgid "SMTP host"
msgstr "SMTP主机"
#: common/forms.py:8
4
#: common/forms.py:8
1
msgid "SMTP port"
msgstr "SMTP端口"
#: common/forms.py:8
6
#: common/forms.py:8
3
msgid "SMTP user"
msgstr "SMTP账号"
#: common/forms.py:8
9
#: common/forms.py:8
6
msgid "SMTP password"
msgstr "SMTP密码"
#: common/forms.py:
90
#: common/forms.py:
87
msgid "Some provider use token except password"
msgstr "一些邮件提供商需要输入的是Token"
#: common/forms.py:9
3 common/forms.py:130
#: common/forms.py:9
0 common/forms.py:127
msgid "Use SSL"
msgstr "使用SSL"
#: common/forms.py:9
4
#: common/forms.py:9
1
msgid "If SMTP port is 465, may be select"
msgstr "如果SMTP端口是465,通常需要启用SSL"
#: common/forms.py:9
7
#: common/forms.py:9
4
msgid "Use TLS"
msgstr "使用TLS"
#: common/forms.py:9
8
#: common/forms.py:9
5
msgid "If SMTP port is 587, may be select"
msgstr "如果SMTP端口是587,通常需要启用TLS"
#: common/forms.py:10
4
#: common/forms.py:10
1
msgid "LDAP server"
msgstr "LDAP地址"
#: common/forms.py:10
7
#: common/forms.py:10
4
msgid "Bind DN"
msgstr "绑定DN"
#: common/forms.py:11
4
#: common/forms.py:11
1
msgid "User OU"
msgstr "用户OU"
#: common/forms.py:11
7
#: common/forms.py:11
4
msgid "User search filter"
msgstr "用户过滤器"
#: common/forms.py:1
20
#: common/forms.py:1
17
msgid "User attr map"
msgstr "LDAP属性映射"
#: common/forms.py:130
msgid "Enable LDAP Auth"
msgstr "开启LDAP认证"
#: common/mixins.py:29
msgid "is discard"
msgstr ""
...
...
@@ -1393,7 +1395,7 @@ msgstr "基本设置"
#: common/templates/common/basic_setting.html:18
#: common/templates/common/email_setting.html:18
#: common/templates/common/ldap_setting.html:18 common/views.py:4
5
#: common/templates/common/ldap_setting.html:18 common/views.py:4
4
msgid "Email setting"
msgstr "邮件设置"
...
...
@@ -1403,20 +1405,19 @@ msgstr "邮件设置"
msgid "LDAP setting"
msgstr "LDAP设置"
#: common/templates/common/basic_setting.html:55
#: common/templates/common/email_setting.html:55
#: common/templates/common/ldap_setting.html:55
msgid "Test connection"
msgstr "测试连接"
#: common/views.py:17 common/views.py:4
4
common/views.py:69
#: common/views.py:17 common/views.py:4
3
common/views.py:69
#: templates/_nav.html:69
msgid "Settings"
msgstr "系统设置"
#: common/views.py:
30 common/views.py:55 common/views.py:80
msgid "Update setting successfully"
msgstr "更新设置成功"
#: common/views.py:
28 common/views.py:54 common/views.py:82
msgid "Update setting successfully
, please restart program
"
msgstr "更新设置成功
, 请手动重启程序
"
#: ops/models.py:32
msgid "Interval"
...
...
@@ -1912,8 +1913,8 @@ msgid "Close"
msgstr "关闭"
#: templates/_nav.html:9 users/views/group.py:28 users/views/group.py:44
#: users/views/group.py:62 users/views/group.py:79 users/views/login.py:19
4
#: users/views/login.py:24
3
users/views/user.py:57 users/views/user.py:72
#: users/views/group.py:62 users/views/group.py:79 users/views/login.py:19
7
#: users/views/login.py:24
6
users/views/user.py:57 users/views/user.py:72
#: users/views/user.py:91 users/views/user.py:147 users/views/user.py:304
#: users/views/user.py:318 users/views/user.py:355 users/views/user.py:377
msgid "Users"
...
...
@@ -2740,48 +2741,48 @@ msgstr "编辑用户组"
msgid "Please enable cookies and try again."
msgstr "设置你的浏览器支持cookie"
#: users/views/login.py:8
4
#: users/views/login.py:8
7
msgid "Logout success"
msgstr "退出登录成功"
#: users/views/login.py:8
5
#: users/views/login.py:8
8
msgid "Logout success, return login page"
msgstr "退出登录成功,返回到登录页面"
#: users/views/login.py:10
1
#: users/views/login.py:10
4
msgid "Email address invalid, please input again"
msgstr "邮箱地址错误,重新输入"
#: users/views/login.py:11
4
#: users/views/login.py:11
7
msgid "Send reset password message"
msgstr "发送重置密码邮件"
#: users/views/login.py:11
5
#: users/views/login.py:11
8
msgid "Send reset password mail success, login your mail box and follow it "
msgstr ""
"发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)"
#: users/views/login.py:1
29
#: users/views/login.py:1
32
msgid "Reset password success"
msgstr "重置密码成功"
#: users/views/login.py:13
0
#: users/views/login.py:13
3
msgid "Reset password success, return to login page"
msgstr "重置密码成功,返回到登录页面"
#: users/views/login.py:1
47 users/views/login.py:160
#: users/views/login.py:1
50 users/views/login.py:163
msgid "Token invalid or expired"
msgstr "Token错误或失效"
#: users/views/login.py:15
6
#: users/views/login.py:15
9
msgid "Password not same"
msgstr "密码不一致"
#: users/views/login.py:19
4
#: users/views/login.py:19
7
msgid "First login"
msgstr "首次登陆"
#: users/views/login.py:24
4
#: users/views/login.py:24
7
msgid "Login log list"
msgstr "登录日志"
...
...
apps/terminal/api.py
View file @
17181db8
# -*- coding: utf-8 -*-
#
from
collections
import
OrderedDict
import
copy
import
logging
import
os
import
uuid
...
...
@@ -21,7 +20,8 @@ from .serializers import TerminalSerializer, StatusSerializer, \
SessionSerializer
,
TaskSerializer
,
ReplaySerializer
from
.hands
import
IsSuperUserOrAppUser
,
IsAppUser
,
\
IsSuperUserOrAppUserOrUserReadonly
from
.backends
import
get_terminal_command_store
,
SessionCommandSerializer
from
.backends
import
get_command_store
,
get_multi_command_store
,
\
SessionCommandSerializer
logger
=
logging
.
getLogger
(
__file__
)
...
...
@@ -196,7 +196,8 @@ class CommandViewSet(viewsets.ViewSet):
}
"""
command_store
=
get_terminal_command_store
()
command_store
=
get_command_store
()
multi_command_storage
=
get_multi_command_store
()
serializer_class
=
SessionCommandSerializer
permission_classes
=
(
IsSuperUserOrAppUser
,)
...
...
@@ -217,7 +218,7 @@ class CommandViewSet(viewsets.ViewSet):
return
Response
({
"msg"
:
msg
},
status
=
401
)
def
list
(
self
,
request
,
*
args
,
**
kwargs
):
queryset
=
list
(
self
.
command_store
.
all
()
)
queryset
=
self
.
multi_command_storage
.
filter
(
)
serializer
=
self
.
serializer_class
(
queryset
,
many
=
True
)
return
Response
(
serializer
.
data
)
...
...
apps/terminal/backends/__init__.py
View file @
17181db8
...
...
@@ -3,7 +3,7 @@ from django.conf import settings
from
.command.serializers
import
SessionCommandSerializer
TYPE_ENGINE_MAPPING
=
{
'elasticsearch'
:
'terminal.backends.command.
db
'
,
'elasticsearch'
:
'terminal.backends.command.
es
'
,
}
...
...
@@ -31,4 +31,10 @@ def get_terminal_command_store():
return
storage_list
def
get_multi_command_store
():
from
.command.multi
import
CommandStore
storage_list
=
get_terminal_command_store
()
.
values
()
storage
=
CommandStore
(
storage_list
)
return
storage
apps/terminal/backends/command/db.py
View file @
17181db8
...
...
@@ -73,7 +73,7 @@ class CommandStore(CommandBase):
session
=
session
,
)
queryset
=
self
.
model
.
objects
.
filter
(
**
filter_kwargs
)
return
queryset
return
[
command
.
to_dict
()
for
command
in
queryset
]
def
count
(
self
,
date_from
=
None
,
date_to
=
None
,
user
=
None
,
asset
=
None
,
system_user
=
None
,
...
...
apps/terminal/backends/command/es.py
0 → 100644
View file @
17181db8
# -*- coding: utf-8 -*-
#
from
jms_es_sdk
import
ESStore
from
.base
import
CommandBase
class
CommandStore
(
CommandBase
,
ESStore
):
def
__init__
(
self
,
params
):
hosts
=
params
.
get
(
'HOSTS'
,
[
'http://localhost'
])
ESStore
.
__init__
(
self
,
hosts
=
hosts
)
def
save
(
self
,
command
):
return
ESStore
.
save
(
self
,
command
)
def
bulk_save
(
self
,
commands
):
return
ESStore
.
bulk_save
(
self
,
commands
)
def
filter
(
self
,
date_from
=
None
,
date_to
=
None
,
user
=
None
,
asset
=
None
,
system_user
=
None
,
input
=
None
,
session
=
None
):
data
=
ESStore
.
filter
(
self
,
date_from
=
date_from
,
date_to
=
date_to
,
user
=
user
,
asset
=
asset
,
system_user
=
system_user
,
input
=
input
,
session
=
session
)
return
[
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
):
amount
=
ESStore
.
count
(
self
,
date_from
=
date_from
,
date_to
=
date_to
,
user
=
user
,
asset
=
asset
,
system_user
=
system_user
,
input
=
input
,
session
=
session
)
return
amount
apps/terminal/backends/command/models.py
View file @
17181db8
...
...
@@ -33,5 +33,11 @@ class AbstractSessionCommand(models.Model):
commands
.
append
(
command
)
return
commands
def
to_dict
(
self
):
d
=
{}
for
field
in
self
.
_meta
.
fields
:
d
[
field
.
name
]
=
getattr
(
self
,
field
.
name
)
return
d
def
__str__
(
self
):
return
self
.
input
apps/terminal/backends/command/multi.py
0 → 100644
View file @
17181db8
# -*- coding: utf-8 -*-
#
from
.base
import
CommandBase
class
CommandStore
(
CommandBase
):
def
__init__
(
self
,
storage_list
):
self
.
storage_list
=
storage_list
def
filter
(
self
,
**
kwargs
):
queryset
=
[]
for
storage
in
self
.
storage_list
:
queryset
.
extend
(
storage
.
filter
(
**
kwargs
))
return
sorted
(
queryset
,
key
=
lambda
command
:
command
[
"timestamp"
])
def
count
(
self
,
**
kwargs
):
amount
=
0
for
storage
in
self
.
storage_list
:
amount
+=
storage
.
count
(
**
kwargs
)
return
amount
def
save
(
self
,
command
):
pass
def
bulk_save
(
self
,
commands
):
pass
\ No newline at end of file
apps/terminal/models.py
View file @
17181db8
...
...
@@ -11,10 +11,11 @@ from .backends.command.models import AbstractSessionCommand
def
get_all_command_storage
():
storage_choices
=
[]
# storage_choices = []
from
common.models
import
Setting
Setting
.
refresh_all_settings
()
for
k
,
v
in
settings
.
TERMINAL_COMMAND_STORAGE
.
items
():
storage_choices
.
append
((
k
,
k
))
return
storage_choices
yield
(
k
,
k
)
class
Terminal
(
models
.
Model
):
...
...
apps/terminal/serializers.py
View file @
17181db8
...
...
@@ -5,7 +5,7 @@ from django.utils import timezone
from
rest_framework
import
serializers
from
.models
import
Terminal
,
Status
,
Session
,
Task
from
.backends
import
get_
terminal
_command_store
from
.backends
import
get_
multi
_command_store
class
TerminalSerializer
(
serializers
.
ModelSerializer
):
...
...
@@ -43,14 +43,14 @@ class TerminalSerializer(serializers.ModelSerializer):
class
SessionSerializer
(
serializers
.
ModelSerializer
):
command_amount
=
serializers
.
SerializerMethodField
()
command_store
=
get_
terminal
_command_store
()
command_store
=
get_
multi
_command_store
()
class
Meta
:
model
=
Session
fields
=
'__all__'
def
get_command_amount
(
self
,
obj
):
return
len
(
self
.
command_store
.
filter
(
session
=
obj
.
session
))
return
self
.
command_store
.
count
(
session
=
str
(
obj
.
id
))
class
StatusSerializer
(
serializers
.
ModelSerializer
):
...
...
apps/terminal/templatetags/terminal_tags.py
View file @
17181db8
# ~*~ coding: utf-8 ~*~
from
django
import
template
from
..backends
import
get_
terminal
_command_store
from
..backends
import
get_
multi
_command_store
register
=
template
.
Library
()
command_store
_dict
=
get_terminal
_command_store
()
command_store
=
get_multi
_command_store
()
@register.filter
def
get_session_command_amount
(
session_id
):
amount
=
0
for
name
,
store
in
command_store_dict
.
items
():
amount
+=
store
.
count
(
session
=
str
(
session_id
))
return
amount
return
command_store
.
count
(
session
=
session_id
)
apps/terminal/views/command.py
View file @
17181db8
...
...
@@ -9,10 +9,10 @@ from django.utils.translation import ugettext as _
from
common.mixins
import
DatetimeSearchMixin
from
..models
import
Command
from
..
import
utils
from
..backends
import
get_
terminal
_command_store
from
..backends
import
get_
multi
_command_store
__all__
=
[
'CommandListView'
]
comm
and_store_list
=
get_terminal
_command_store
()
comm
on_storage
=
get_multi
_command_store
()
class
CommandListView
(
DatetimeSearchMixin
,
ListView
):
...
...
@@ -39,10 +39,7 @@ class CommandListView(DatetimeSearchMixin, ListView):
filter_kwargs
[
'system_user'
]
=
self
.
system_user
if
self
.
command
:
filter_kwargs
[
'input'
]
=
self
.
command
queryset
=
[]
for
store
in
command_store_list
:
queryset
.
extend
(
store
.
filter
(
**
filter_kwargs
))
queryset
=
sorted
(
queryset
,
key
=
lambda
c
:
c
.
timestamp
,
reverse
=
True
)
queryset
=
common_storage
.
filter
(
**
filter_kwargs
)
return
queryset
def
get_context_data
(
self
,
**
kwargs
):
...
...
apps/terminal/views/session.py
View file @
17181db8
...
...
@@ -10,7 +10,7 @@ from django.conf import settings
from
users.utils
import
AdminUserRequiredMixin
from
common.mixins
import
DatetimeSearchMixin
from
..models
import
Session
,
Command
,
Terminal
from
..backends
import
get_
terminal
_command_store
from
..backends
import
get_
multi
_command_store
from
..
import
utils
...
...
@@ -19,7 +19,7 @@ __all__ = [
'SessionDetailView'
,
]
command_store
=
get_
terminal
_command_store
()
command_store
=
get_
multi
_command_store
()
class
SessionListView
(
AdminUserRequiredMixin
,
DatetimeSearchMixin
,
ListView
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment