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
ef717f88
Commit
ef717f88
authored
Jun 21, 2019
by
ibuler
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into bugfix
parents
3e73dbdb
90890591
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
163 additions
and
183 deletions
+163
-183
remote_app.py
apps/applications/views/remote_app.py
+4
-4
vault.py
apps/assets/backends/vault.py
+1
-9
asset.py
apps/assets/models/asset.py
+2
-0
asset.py
apps/assets/serializers/asset.py
+7
-8
tasks.py
apps/assets/tasks.py
+15
-8
views.py
apps/audits/views.py
+1
-1
mixins.py
apps/common/mixins.py
+1
-1
django.mo
apps/locale/zh/LC_MESSAGES/django.mo
+0
-0
django.po
apps/locale/zh/LC_MESSAGES/django.po
+82
-108
djangojs.mo
apps/locale/zh/LC_MESSAGES/djangojs.mo
+0
-0
djangojs.po
apps/locale/zh/LC_MESSAGES/djangojs.po
+36
-32
mixins.py
apps/perms/mixins.py
+0
-2
api.py
apps/settings/api.py
+1
-1
jumpserver.js
apps/static/js/jumpserver.js
+1
-1
_nav_user.html
apps/templates/_nav_user.html
+4
-0
command.py
apps/terminal/views/command.py
+1
-1
session.py
apps/terminal/views/session.py
+4
-4
terminal.py
apps/terminal/views/terminal.py
+3
-3
No files found.
apps/applications/views/remote_app.py
View file @
ef717f88
...
...
@@ -28,7 +28,7 @@ class RemoteAppListView(PermissionsMixin, TemplateView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'A
sset
s'
),
'app'
:
_
(
'A
pplication
s'
),
'action'
:
_
(
'RemoteApp list'
),
}
kwargs
.
update
(
context
)
...
...
@@ -44,7 +44,7 @@ class RemoteAppCreateView(PermissionsMixin, SuccessMessageMixin, CreateView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'A
sset
s'
),
'app'
:
_
(
'A
pplication
s'
),
'action'
:
_
(
'Create RemoteApp'
),
}
kwargs
.
update
(
context
)
...
...
@@ -66,7 +66,7 @@ class RemoteAppUpdateView(PermissionsMixin, SuccessMessageMixin, UpdateView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'A
sset
s'
),
'app'
:
_
(
'A
pplication
s'
),
'action'
:
_
(
'Update RemoteApp'
),
}
kwargs
.
update
(
context
)
...
...
@@ -84,7 +84,7 @@ class RemoteAppDetailView(PermissionsMixin, DetailView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'A
sset
s'
),
'app'
:
_
(
'A
pplication
s'
),
'action'
:
_
(
'RemoteApp detail'
),
}
kwargs
.
update
(
context
)
...
...
apps/assets/backends/vault.py
View file @
ef717f88
# -*- coding: utf-8 -*-
#
from
.
.
base
import
BaseBackend
from
.base
import
BaseBackend
class
VaultBackend
(
BaseBackend
):
@classmethod
def
get
(
cls
,
username
,
asset
):
pass
@classmethod
def
filter
(
cls
,
username
=
None
,
asset
=
None
,
latest
=
True
):
pass
@classmethod
def
create
(
cls
,
**
kwargs
):
pass
apps/assets/models/asset.py
View file @
ef717f88
...
...
@@ -229,6 +229,8 @@ class Asset(OrgModelMixin):
@property
def
connectivity
(
self
):
if
not
self
.
admin_user
:
return
self
.
UNKNOWN
return
self
.
admin_user
.
get_connectivity_of
(
self
)
@connectivity.setter
...
...
apps/assets/serializers/asset.py
View file @
ef717f88
...
...
@@ -27,8 +27,6 @@ class ProtocolsRelatedField(serializers.RelatedField):
return
str
(
value
)
def
to_internal_value
(
self
,
data
):
print
(
data
)
print
(
type
(
data
))
if
isinstance
(
data
,
dict
):
return
data
if
'/'
not
in
data
:
...
...
@@ -152,7 +150,9 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
"""
被授权资产的数据结构
"""
protocols
=
ProtocolSerializer
(
many
=
True
)
protocols
=
ProtocolsRelatedField
(
many
=
True
,
queryset
=
Protocol
.
objects
.
all
(),
label
=
_
(
"Protocols"
)
)
system_users_granted
=
AssetSystemUserSerializer
(
many
=
True
,
read_only
=
True
)
system_users_join
=
serializers
.
SerializerMethodField
()
# nodes = NodeTMPSerializer(many=True, read_only=True)
...
...
@@ -160,9 +160,9 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
class
Meta
:
model
=
Asset
fields
=
(
"id"
,
"hostname"
,
"ip"
,
"protocol
s"
,
"system_users_granted
"
,
"
is_active"
,
"system_users_join"
,
"os"
,
'domain'
,
"platform"
,
"comment"
,
"org_id"
,
"org_name"
,
"id"
,
"hostname"
,
"ip"
,
"protocol
"
,
"port"
,
"protocols
"
,
"
system_users_granted"
,
"is_active"
,
"system_users_join"
,
"os"
,
'domain'
,
"platform"
,
"comment"
,
"org_id"
,
"org_name"
,
)
@staticmethod
...
...
@@ -187,8 +187,7 @@ class AssetGrantedSerializer(serializers.ModelSerializer):
class
AssetSimpleSerializer
(
serializers
.
ModelSerializer
):
protocols
=
ProtocolSerializer
(
many
=
True
)
class
Meta
:
model
=
Asset
fields
=
[
'id'
,
'hostname'
,
'ip'
,
'
protocols'
,
'
connectivity'
,
'port'
]
fields
=
[
'id'
,
'hostname'
,
'ip'
,
'connectivity'
,
'port'
]
apps/assets/tasks.py
View file @
ef717f88
...
...
@@ -209,9 +209,13 @@ def test_asset_connectivity_util(assets, task_name=None):
)
result
=
task
.
run
()
summary
=
result
[
1
]
results_summary
[
'success'
]
&=
summary
[
'success'
]
results_summary
[
'contacted'
]
.
update
(
summary
[
'contacted'
])
results_summary
[
'dark'
]
.
update
(
summary
[
'dark'
])
success
=
summary
.
get
(
'success'
,
False
)
contacted
=
summary
.
get
(
'contacted'
,
{})
dark
=
summary
.
get
(
'dark'
,
{})
results_summary
[
'success'
]
&=
success
results_summary
[
'contacted'
]
.
update
(
contacted
)
results_summary
[
'dark'
]
.
update
(
dark
)
for
asset
in
assets
:
if
asset
.
hostname
in
results_summary
.
get
(
'dark'
,
{}):
...
...
@@ -330,14 +334,17 @@ def test_system_user_connectivity_util(system_user, assets, task_name):
task
,
created
=
update_or_create_ansible_task
(
task_name
=
task_name
,
hosts
=
value
[
'hosts'
],
tasks
=
value
[
'tasks'
],
pattern
=
'all'
,
options
=
const
.
TASK_OPTIONS
,
run_as
=
system_user
.
username
,
created_by
=
system_user
.
org_id
,
run_as
=
system_user
.
username
,
created_by
=
system_user
.
org_id
,
)
result
=
task
.
run
()
summary
=
result
[
1
]
results_summary
[
'success'
]
&=
summary
[
'success'
]
results_summary
[
'contacted'
]
.
update
(
summary
[
'contacted'
])
results_summary
[
'dark'
]
.
update
(
summary
[
'dark'
])
success
=
summary
.
get
(
'success'
,
False
)
contacted
=
summary
.
get
(
'contacted'
,
{})
dark
=
summary
.
get
(
'dark'
,
{})
results_summary
[
'success'
]
&=
success
results_summary
[
'contacted'
]
.
update
(
contacted
)
results_summary
[
'dark'
]
.
update
(
dark
)
set_system_user_connectivity_info
(
system_user
,
results_summary
)
return
results_summary
...
...
apps/audits/views.py
View file @
ef717f88
...
...
@@ -248,7 +248,7 @@ class CommandExecutionListView(UserCommandExecutionListView):
'keyword'
:
self
.
keyword
,
'user_id'
:
self
.
user_id
,
})
return
super
()
.
get_context_data
(
**
context
)
return
context
@method_decorator
(
csrf_exempt
,
name
=
'dispatch'
)
...
...
apps/common/mixins.py
View file @
ef717f88
...
...
@@ -224,7 +224,7 @@ class ApiMessageMixin:
def
dispatch
(
self
,
request
,
*
args
,
**
kwargs
):
resp
=
super
()
.
dispatch
(
request
,
*
args
,
**
kwargs
)
if
request
.
method
.
lower
()
in
(
"get"
,
"delete"
):
if
request
.
method
.
lower
()
in
(
"get"
,
"delete"
,
"patch"
):
return
resp
if
resp
.
status_code
>=
400
:
return
resp
...
...
apps/locale/zh/LC_MESSAGES/django.mo
View file @
ef717f88
No preview for this file type
apps/locale/zh/LC_MESSAGES/django.po
View file @
ef717f88
...
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-
19 18:16
+0800\n"
"POT-Creation-Date: 2019-06-
20 17:55
+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"
...
...
@@ -210,7 +210,7 @@ msgstr "参数"
#: assets/models/cluster.py:28 assets/models/cmd_filter.py:25
#: assets/models/cmd_filter.py:58 assets/models/group.py:21
#: assets/templates/assets/admin_user_detail.html:68
#: assets/templates/assets/asset_detail.html:12
9
#: assets/templates/assets/asset_detail.html:12
8
#: assets/templates/assets/cmd_filter_detail.html:77
#: assets/templates/assets/domain_detail.html:72
#: assets/templates/assets/system_user_detail.html:100
...
...
@@ -265,7 +265,7 @@ msgstr "创建日期"
#: assets/models/domain.py:53 assets/models/group.py:23
#: assets/models/label.py:23 assets/templates/assets/admin_user_detail.html:72
#: assets/templates/assets/admin_user_list.html:53
#: assets/templates/assets/asset_detail.html:13
7
#: assets/templates/assets/asset_detail.html:13
6
#: assets/templates/assets/cmd_filter_detail.html:65
#: assets/templates/assets/cmd_filter_list.html:27
#: assets/templates/assets/cmd_filter_rule_list.html:62
...
...
@@ -305,7 +305,7 @@ msgstr "备注"
#: perms/templates/perms/remote_app_permission_list.html:17
#: perms/templates/perms/remote_app_permission_remote_app.html:26
#: perms/templates/perms/remote_app_permission_user.html:26
#: templates/_nav.html:36 templates/_nav.html:48 templates/_nav_user.html:1
4
#: templates/_nav.html:36 templates/_nav.html:48 templates/_nav_user.html:1
6
msgid "RemoteApp"
msgstr "远程应用"
...
...
@@ -558,28 +558,9 @@ msgstr "连接"
#: applications/views/remote_app.py:31 applications/views/remote_app.py:47
#: applications/views/remote_app.py:69 applications/views/remote_app.py:87
#: assets/models/user.py:135
#: assets/templates/assets/_asset_group_bulk_update_modal.html:11
#: assets/templates/assets/system_user_asset.html:22
#: assets/templates/assets/system_user_detail.html:22
#: assets/views/admin_user.py:30 assets/views/admin_user.py:49
#: assets/views/admin_user.py:66 assets/views/admin_user.py:82
#: assets/views/admin_user.py:107 assets/views/asset.py:52
#: assets/views/asset.py:69 assets/views/asset.py:128 assets/views/asset.py:171
#: assets/views/asset.py:199 assets/views/asset.py:226
#: assets/views/cmd_filter.py:31 assets/views/cmd_filter.py:48
#: assets/views/cmd_filter.py:65 assets/views/cmd_filter.py:82
#: assets/views/cmd_filter.py:102 assets/views/cmd_filter.py:136
#: assets/views/cmd_filter.py:170 assets/views/domain.py:30
#: assets/views/domain.py:47 assets/views/domain.py:64
#: assets/views/domain.py:78 assets/views/domain.py:104
#: assets/views/domain.py:133 assets/views/domain.py:153
#: assets/views/label.py:27 assets/views/label.py:45 assets/views/label.py:72
#: assets/views/system_user.py:29 assets/views/system_user.py:46
#: assets/views/system_user.py:63 assets/views/system_user.py:78
#: templates/_nav.html:19 xpack/plugins/change_auth_plan/models.py:68
msgid "Assets"
msgstr "资产管理"
#: templates/_nav.html:33
msgid "Applications"
msgstr "应用管理"
#: applications/views/remote_app.py:32
msgid "RemoteApp list"
...
...
@@ -619,8 +600,8 @@ msgid "Test if the assets under the node are connectable: {}"
msgstr "测试节点下资产是否可连接: {}"
#: assets/forms/asset.py:45 assets/models/asset.py:103
#: assets/models/user.py:134 assets/templates/assets/asset_detail.html:19
5
#: assets/templates/assets/asset_detail.html:20
3
#: assets/models/user.py:134 assets/templates/assets/asset_detail.html:19
4
#: assets/templates/assets/asset_detail.html:20
2
#: assets/templates/assets/system_user_asset.html:83
#: perms/models/asset_permission.py:38
#: xpack/plugins/change_auth_plan/models.py:72
...
...
@@ -629,7 +610,7 @@ msgstr "节点"
#: assets/forms/asset.py:48 assets/forms/asset.py:83 assets/models/asset.py:107
#: assets/models/cluster.py:19 assets/models/user.py:92
#: assets/templates/assets/asset_detail.html:8
1
templates/_nav.html:24
#: assets/templates/assets/asset_detail.html:8
0
templates/_nav.html:24
#: xpack/plugins/cloud/models.py:124
#: xpack/plugins/cloud/templates/cloud/sync_instance_task_detail.html:65
#: xpack/plugins/orgs/templates/orgs/org_list.html:18
...
...
@@ -647,7 +628,7 @@ msgstr "标签"
#: assets/forms/asset.py:54 assets/forms/asset.py:89 assets/models/asset.py:102
#: assets/models/domain.py:26 assets/models/domain.py:52
#: assets/templates/assets/asset_detail.html:8
5
#: assets/templates/assets/asset_detail.html:8
4
#: assets/templates/assets/user_asset_list.html:173
#: xpack/plugins/orgs/templates/orgs/org_list.html:17
msgid "Domain"
...
...
@@ -858,14 +839,14 @@ msgstr "主机名"
msgid "Protocol"
msgstr "协议"
#: assets/models/asset.py:101 assets/templates/assets/asset_detail.html:10
9
#: assets/models/asset.py:101 assets/templates/assets/asset_detail.html:10
8
#: assets/templates/assets/user_asset_list.html:170
msgid "Platform"
msgstr "系统平台"
#: assets/models/asset.py:104 assets/models/cmd_filter.py:21
#: assets/models/domain.py:54 assets/models/label.py:22
#: assets/templates/assets/asset_detail.html:11
7
#: assets/templates/assets/asset_detail.html:11
6
#: assets/templates/assets/user_asset_list.html:174
msgid "Is active"
msgstr "激活"
...
...
@@ -874,19 +855,19 @@ msgstr "激活"
msgid "Public IP"
msgstr "公网IP"
#: assets/models/asset.py:111 assets/templates/assets/asset_detail.html:12
5
#: assets/models/asset.py:111 assets/templates/assets/asset_detail.html:12
4
msgid "Asset number"
msgstr "资产编号"
#: assets/models/asset.py:114 assets/templates/assets/asset_detail.html:8
9
#: assets/models/asset.py:114 assets/templates/assets/asset_detail.html:8
8
msgid "Vendor"
msgstr "制造商"
#: assets/models/asset.py:115 assets/templates/assets/asset_detail.html:9
3
#: assets/models/asset.py:115 assets/templates/assets/asset_detail.html:9
2
msgid "Model"
msgstr "型号"
#: assets/models/asset.py:116 assets/templates/assets/asset_detail.html:12
1
#: assets/models/asset.py:116 assets/templates/assets/asset_detail.html:12
0
msgid "Serial number"
msgstr "序列号"
...
...
@@ -907,7 +888,7 @@ msgstr "CPU核数"
msgid "CPU vcpus"
msgstr "CPU总数"
#: assets/models/asset.py:122 assets/templates/assets/asset_detail.html:10
1
#: assets/models/asset.py:122 assets/templates/assets/asset_detail.html:10
0
msgid "Memory"
msgstr "内存"
...
...
@@ -919,7 +900,7 @@ msgstr "硬盘大小"
msgid "Disk info"
msgstr "硬盘信息"
#: assets/models/asset.py:126 assets/templates/assets/asset_detail.html:11
3
#: assets/models/asset.py:126 assets/templates/assets/asset_detail.html:11
2
#: assets/templates/assets/user_asset_list.html:171
msgid "OS"
msgstr "操作系统"
...
...
@@ -937,7 +918,7 @@ msgid "Hostname raw"
msgstr "主机名原始"
#: assets/models/asset.py:131 assets/templates/assets/asset_create.html:46
#: assets/templates/assets/asset_detail.html:23
2
templates/_nav.html:26
#: assets/templates/assets/asset_detail.html:23
1
templates/_nav.html:26
msgid "Labels"
msgstr "标签管理"
...
...
@@ -1182,6 +1163,29 @@ msgstr "自动登录"
msgid "Manually login"
msgstr "手动登录"
#: assets/models/user.py:135
#: assets/templates/assets/_asset_group_bulk_update_modal.html:11
#: assets/templates/assets/system_user_asset.html:22
#: assets/templates/assets/system_user_detail.html:22
#: assets/views/admin_user.py:30 assets/views/admin_user.py:49
#: assets/views/admin_user.py:66 assets/views/admin_user.py:82
#: assets/views/admin_user.py:107 assets/views/asset.py:52
#: assets/views/asset.py:69 assets/views/asset.py:128 assets/views/asset.py:171
#: assets/views/asset.py:199 assets/views/asset.py:226
#: assets/views/cmd_filter.py:31 assets/views/cmd_filter.py:48
#: assets/views/cmd_filter.py:65 assets/views/cmd_filter.py:82
#: assets/views/cmd_filter.py:102 assets/views/cmd_filter.py:136
#: assets/views/cmd_filter.py:170 assets/views/domain.py:30
#: assets/views/domain.py:47 assets/views/domain.py:64
#: assets/views/domain.py:78 assets/views/domain.py:104
#: assets/views/domain.py:133 assets/views/domain.py:153
#: assets/views/label.py:27 assets/views/label.py:45 assets/views/label.py:72
#: assets/views/system_user.py:29 assets/views/system_user.py:46
#: assets/views/system_user.py:63 assets/views/system_user.py:78
#: templates/_nav.html:19 xpack/plugins/change_auth_plan/models.py:68
msgid "Assets"
msgstr "资产管理"
#: assets/models/user.py:138 assets/templates/assets/_system_user.html:59
#: assets/templates/assets/system_user_detail.html:122
#: assets/templates/assets/system_user_update.html:10
...
...
@@ -1206,24 +1210,24 @@ msgstr "登录模式"
msgid "%(value)s is not an even number"
msgstr "%(value)s is not an even number"
#: assets/serializers/asset.py:
2
6 assets/templates/assets/asset_create.html:24
#: assets/serializers/asset.py:
4
6 assets/templates/assets/asset_create.html:24
msgid "Protocols"
msgstr "协议组"
#: assets/serializers/asset.py:
52
#: assets/serializers/asset.py:
73
msgid "Hardware info"
msgstr "硬件信息"
#: assets/serializers/asset.py:
53
assets/serializers/asset_user.py:29
#: assets/serializers/asset.py:
74
assets/serializers/asset_user.py:29
#: assets/templates/assets/_asset_user_list.html:18
msgid "Connectivity"
msgstr "连接"
#: assets/serializers/asset.py:
54
orgs/mixins.py:223
#: assets/serializers/asset.py:
75
orgs/mixins.py:223
msgid "Org name"
msgstr "组织名称"
#: assets/serializers/asset.py:
70
#: assets/serializers/asset.py:
93
msgid "Protocol duplicate: {}"
msgstr "协议重复: {}"
...
...
@@ -1400,7 +1404,7 @@ msgid "Please input password"
msgstr "请输入密码"
#: assets/templates/assets/_asset_user_auth_update_modal.html:68
#: assets/templates/assets/asset_detail.html:31
2
#: assets/templates/assets/asset_detail.html:31
1
#: users/templates/users/user_detail.html:307
#: users/templates/users/user_detail.html:334
#: xpack/plugins/interface/views.py:35
...
...
@@ -1437,15 +1441,13 @@ msgid "Datetime"
msgstr "日期"
#: assets/templates/assets/_asset_user_list.html:61
#, fuzzy
#| msgid "View auth"
msgid "View"
msgstr "查看
认证
"
msgstr "查看"
#: assets/templates/assets/_asset_user_list.html:63
#: assets/templates/assets/admin_user_assets.html:61
#: assets/templates/assets/asset_asset_user_list.html:57
#: assets/templates/assets/asset_detail.html:18
3
#: assets/templates/assets/asset_detail.html:18
2
#: assets/templates/assets/system_user_asset.html:63
#: assets/templates/assets/system_user_detail.html:151
msgid "Test"
...
...
@@ -1535,7 +1537,7 @@ msgstr "快速更新"
#: assets/templates/assets/admin_user_assets.html:58
#: assets/templates/assets/asset_asset_user_list.html:54
#: assets/templates/assets/asset_detail.html:1
80
#: assets/templates/assets/asset_detail.html:1
79
msgid "Test connective"
msgstr "测试可连接性"
...
...
@@ -1551,7 +1553,7 @@ msgid "Select nodes"
msgstr "选择节点"
#: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/asset_detail.html:21
2
#: assets/templates/assets/asset_detail.html:21
1
#: assets/templates/assets/asset_list.html:682
#: assets/templates/assets/cmd_filter_detail.html:106
#: assets/templates/assets/system_user_asset.html:100
...
...
@@ -1649,7 +1651,7 @@ msgid "Asset users of"
msgstr "资产用户"
#: assets/templates/assets/asset_asset_user_list.html:47
#: assets/templates/assets/asset_detail.html:14
9
#: assets/templates/assets/asset_detail.html:14
8
#: terminal/templates/terminal/session_detail.html:81
#: users/templates/users/user_detail.html:138
#: users/templates/users/user_profile.html:146
...
...
@@ -1668,21 +1670,21 @@ msgstr "选择需要修改属性"
msgid "Select all"
msgstr "全选"
#: assets/templates/assets/asset_detail.html:9
7
#: assets/templates/assets/asset_detail.html:9
6
msgid "CPU"
msgstr "CPU"
#: assets/templates/assets/asset_detail.html:10
5
#: assets/templates/assets/asset_detail.html:10
4
msgid "Disk"
msgstr "硬盘"
#: assets/templates/assets/asset_detail.html:13
3
#: assets/templates/assets/asset_detail.html:13
2
#: users/templates/users/user_detail.html:115
#: users/templates/users/user_profile.html:104
msgid "Date joined"
msgstr "创建日期"
#: assets/templates/assets/asset_detail.html:15
5
#: assets/templates/assets/asset_detail.html:15
4
#: assets/templates/assets/user_asset_list.html:46
#: perms/models/asset_permission.py:60 perms/models/base.py:38
#: perms/templates/perms/asset_permission_create_update.html:55
...
...
@@ -1698,11 +1700,11 @@ msgstr "创建日期"
msgid "Active"
msgstr "激活中"
#: assets/templates/assets/asset_detail.html:17
2
#: assets/templates/assets/asset_detail.html:17
1
msgid "Refresh hardware"
msgstr "更新硬件信息"
#: assets/templates/assets/asset_detail.html:17
5
#: assets/templates/assets/asset_detail.html:17
4
msgid "Refresh"
msgstr "刷新"
...
...
@@ -2319,8 +2321,8 @@ msgid "Date"
msgstr "日期"
#: audits/views.py:85 audits/views.py:129 audits/views.py:166
#: audits/views.py:211 audits/views.py:243
templates/_nav.html:8
7
#: templates/_nav_audits.html:22
#: audits/views.py:211 audits/views.py:243
ops/views/command.py:4
7
#: templates/_nav
.html:87 templates/_nav
_audits.html:22
msgid "Audits"
msgstr "日志审计"
...
...
@@ -2986,7 +2988,7 @@ msgstr "更新任务内容: {}"
#: ops/views/adhoc.py:45 ops/views/adhoc.py:71 ops/views/adhoc.py:85
#: ops/views/adhoc.py:99 ops/views/adhoc.py:113 ops/views/adhoc.py:127
#: ops/views/adhoc.py:141 ops/views/command.py:
47 ops/views/command.py:
72
#: ops/views/adhoc.py:141 ops/views/command.py:72
msgid "Ops"
msgstr "作业中心"
...
...
@@ -3002,7 +3004,7 @@ msgstr "执行历史"
msgid "Command execution list"
msgstr "命令执行列表"
#: ops/views/command.py:73 templates/_nav_user.html:2
2
#: ops/views/command.py:73 templates/_nav_user.html:2
6
msgid "Command execution"
msgstr "命令执行"
...
...
@@ -3827,7 +3829,7 @@ msgstr "文档"
msgid "Commercial support"
msgstr "商业支持"
#: templates/_header_bar.html:89 templates/_nav_user.html:
28
users/forms.py:139
#: templates/_header_bar.html:89 templates/_nav_user.html:
32
users/forms.py:139
#: users/templates/users/_user.html:43
#: users/templates/users/first_login.html:39
#: users/templates/users/user_password_update.html:40
...
...
@@ -3943,11 +3945,11 @@ msgstr "用户列表"
msgid "Command filters"
msgstr "命令过滤"
#: templates/_nav.html:33
msgid "Applications"
msgstr "应用管理"
#: templates/_nav.html:55 templates/_nav_audits.html:11
#: terminal/views/command.py:51 terminal/views/session.py:74
#: terminal/views/session.py:92 terminal/views/session.py:116
#: terminal/views/terminal.py:31 terminal/views/terminal.py:47
#: terminal/views/terminal.py:60
msgid "Sessions"
msgstr "会话管理"
...
...
@@ -3956,6 +3958,7 @@ msgid "Session online"
msgstr "在线会话"
#: templates/_nav.html:59 templates/_nav_audits.html:15
#: terminal/views/session.py:93
msgid "Session offline"
msgstr "历史会话"
...
...
@@ -3963,18 +3966,15 @@ msgstr "历史会话"
msgid "Commands"
msgstr "命令记录"
#: templates/_nav.html:63 templates/_nav_user.html:3
3
#: templates/_nav.html:63 templates/_nav_user.html:3
7
msgid "Web terminal"
msgstr "Web终端"
#: templates/_nav.html:68 templates/_nav_user.html:
38
#: templates/_nav.html:68 templates/_nav_user.html:
42
msgid "File manager"
msgstr "文件管理"
#: templates/_nav.html:72 terminal/views/command.py:51
#: terminal/views/session.py:74 terminal/views/session.py:92
#: terminal/views/session.py:116 terminal/views/terminal.py:31
#: terminal/views/terminal.py:47 terminal/views/terminal.py:60
#: templates/_nav.html:72
msgid "Terminal"
msgstr "终端管理"
...
...
@@ -3998,7 +3998,7 @@ msgstr "账户列表"
msgid "Sync instance"
msgstr "同步实例"
#: templates/_nav_user.html:
9
#: templates/_nav_user.html:
11
msgid "My Applications"
msgstr "我的应用"
...
...
@@ -4356,10 +4356,6 @@ msgstr "信息"
msgid "Session online list"
msgstr "在线会话"
#: terminal/views/session.py:93
msgid "Session offline list"
msgstr "离线会话"
#: terminal/views/terminal.py:32
msgid "Terminal list"
msgstr "终端列表"
...
...
@@ -5401,8 +5397,6 @@ msgid "Password rules"
msgstr "密码规则"
#: xpack/plugins/change_auth_plan/models.py:213
#, fuzzy
#| msgid "For security, do not change root user's password"
msgid "For security, do not change {} user's password"
msgstr "为了安全,禁止更改 {} 用户的密码"
...
...
@@ -5774,7 +5768,7 @@ msgid "Interface settings"
msgstr "界面设置"
#: xpack/plugins/interface/templates/interface/interface.html:15
#: xpack/plugins/interface/views.py:25
#: xpack/plugins/interface/views.py:2
4 xpack/plugins/interface/views.py:2
5
msgid "Interface setting"
msgstr "界面设置"
...
...
@@ -5797,10 +5791,6 @@ msgstr "恢复默认成功!"
msgid "Restore default failed."
msgstr "恢复默认失败!"
#: xpack/plugins/interface/views.py:24
msgid "Interface"
msgstr "界面"
#: xpack/plugins/interface/views.py:51
msgid "It is already in the default setting state!"
msgstr "当前已经是初始化状态!"
...
...
@@ -5904,7 +5894,9 @@ msgstr "无效的许可证"
msgid "Admin"
msgstr "管理员"
#: xpack/plugins/orgs/meta.py:8
#: xpack/plugins/orgs/meta.py:8 xpack/plugins/orgs/views.py:26
#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60
#: xpack/plugins/orgs/views.py:77
msgid "Organizations"
msgstr "组织管理"
...
...
@@ -5921,19 +5913,10 @@ msgstr "添加管理员"
msgid "Create organization "
msgstr "创建组织"
#: xpack/plugins/orgs/views.py:26
msgid "Org"
msgstr "组织"
#: xpack/plugins/orgs/views.py:27
msgid "Org list"
msgstr "组织列表"
#: xpack/plugins/orgs/views.py:43 xpack/plugins/orgs/views.py:60
#: xpack/plugins/orgs/views.py:77
msgid "Orgs"
msgstr "组织"
#: xpack/plugins/orgs/views.py:44
msgid "Create org"
msgstr "创建组织"
...
...
@@ -5942,8 +5925,8 @@ msgstr "创建组织"
msgid "Update org"
msgstr "更新组织"
#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:2
3
#: xpack/plugins/vault/views.py:3
8
#: xpack/plugins/vault/meta.py:11 xpack/plugins/vault/views.py:2
2
#: xpack/plugins/vault/views.py:3
7
msgid "Vault"
msgstr "密码匣子"
...
...
@@ -5951,23 +5934,14 @@ msgstr "密码匣子"
msgid "Import vault"
msgstr "导入密码"
#: xpack/plugins/vault/views.py:2
4
#: xpack/plugins/vault/views.py:2
3
msgid "vault list"
msgstr "密码匣子"
#: xpack/plugins/vault/views.py:3
9
#: xpack/plugins/vault/views.py:3
8
msgid "vault create"
msgstr "创建"
#~ msgid "Update failed!"
#~ msgstr "更新失败"
#~ msgid "Update auth"
#~ msgstr "更新认证"
#~ msgid "Password version"
#~ msgstr "密码版本"
#~ msgid "User does not exist"
#~ msgstr "用户不存在"
...
...
apps/locale/zh/LC_MESSAGES/djangojs.mo
View file @
ef717f88
No preview for this file type
apps/locale/zh/LC_MESSAGES/djangojs.po
View file @
ef717f88
...
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-0
5-27 15:53
+0800\n"
"POT-Creation-Date: 2019-0
6-20 16:30
+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
...
...
@@ -17,58 +17,58 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: static/js/jumpserver.js:2
49
#: static/js/jumpserver.js:2
63
msgid "Update is successful!"
msgstr "更新成功"
#: static/js/jumpserver.js:2
51
#: static/js/jumpserver.js:2
65
msgid "An unknown error occurred while updating.."
msgstr "更新时发生未知错误"
#: static/js/jumpserver.js:3
15 static/js/jumpserver.js:352
#: static/js/jumpserver.js:3
55
#: static/js/jumpserver.js:3
29 static/js/jumpserver.js:366
#: static/js/jumpserver.js:3
69
msgid "Error"
msgstr "错误"
#: static/js/jumpserver.js:3
15
#: static/js/jumpserver.js:3
29
msgid "Being used by the asset, please unbind the asset first."
msgstr "正在被资产使用中,请先解除资产绑定"
#: static/js/jumpserver.js:3
21 static/js/jumpserver.js:362
#: static/js/jumpserver.js:3
35 static/js/jumpserver.js:376
msgid "Delete the success"
msgstr "删除成功"
#: static/js/jumpserver.js:3
27
#: static/js/jumpserver.js:3
41
msgid "Are you sure about deleting it?"
msgstr "你确定删除吗 ?"
#: static/js/jumpserver.js:3
31 static/js/jumpserver.js:372
#: static/js/jumpserver.js:3
45 static/js/jumpserver.js:386
msgid "Cancel"
msgstr "取消"
#: static/js/jumpserver.js:3
33 static/js/jumpserver.js:374
#: static/js/jumpserver.js:3
47 static/js/jumpserver.js:388
msgid "Confirm"
msgstr "确认"
#: static/js/jumpserver.js:3
52
#: static/js/jumpserver.js:3
66
msgid ""
"The organization contains undeleted information. Please try again after "
"deleting"
msgstr "组织中包含未删除信息,请删除后重试"
#: static/js/jumpserver.js:3
55
#: static/js/jumpserver.js:3
69
msgid ""
"Do not perform this operation under this organization. Try again after "
"switching to another organization"
msgstr "请勿在此组织下执行此操作,切换到其他组织后重试"
#: static/js/jumpserver.js:3
68
#: static/js/jumpserver.js:3
82
msgid ""
"Please ensure that the following information in the organization has been "
"deleted"
msgstr "请确保组织内的以下信息已删除"
#: static/js/jumpserver.js:3
69
#: static/js/jumpserver.js:3
83
msgid ""
"User list、User group、Asset list、Domain list、Admin user、System user、"
"Labels、Asset permission"
...
...
@@ -76,76 +76,80 @@ msgstr ""
"用户列表、用户组、资产列表、网域列表、管理用户、系统用户、标签管理、资产授权"
"规则"
#: static/js/jumpserver.js:4
08
#: static/js/jumpserver.js:4
22
msgid "Loading ..."
msgstr "加载中 ..."
#: static/js/jumpserver.js:4
09
#: static/js/jumpserver.js:4
23
msgid "Search"
msgstr "搜索"
#: static/js/jumpserver.js:4
12
#: static/js/jumpserver.js:4
26
#, javascript-format
msgid "Selected item %d"
msgstr "选中 %d 项"
#: static/js/jumpserver.js:4
16
#: static/js/jumpserver.js:4
30
msgid "Per page _MENU_"
msgstr "每页 _MENU_"
#: static/js/jumpserver.js:4
17
#: static/js/jumpserver.js:4
31
msgid ""
"Displays the results of items _START_ to _END_; A total of _TOTAL_ entries"
msgstr "显示第 _START_ 至 _END_ 项结果; 总共 _TOTAL_ 项"
#: static/js/jumpserver.js:4
20
#: static/js/jumpserver.js:4
34
msgid "No match"
msgstr "没有匹配项"
#: static/js/jumpserver.js:4
21
#: static/js/jumpserver.js:4
35
msgid "No record"
msgstr "没有记录"
#: static/js/jumpserver.js:5
63
#: static/js/jumpserver.js:5
77
msgid "Unknown error occur"
msgstr ""
#: static/js/jumpserver.js:8
00
#: static/js/jumpserver.js:8
16
msgid "Password minimum length {N} bits"
msgstr "密码最小长度 {N} 位"
#: static/js/jumpserver.js:8
01
#: static/js/jumpserver.js:8
17
msgid "Must contain capital letters"
msgstr "必须包含大写字母"
#: static/js/jumpserver.js:8
02
#: static/js/jumpserver.js:8
18
msgid "Must contain lowercase letters"
msgstr "必须包含小写字母"
#: static/js/jumpserver.js:8
03
#: static/js/jumpserver.js:8
19
msgid "Must contain numeric characters"
msgstr "必须包含数字字符"
#: static/js/jumpserver.js:8
04
#: static/js/jumpserver.js:8
20
msgid "Must contain special characters"
msgstr "必须包含特殊字符"
#: static/js/jumpserver.js:9
76
#: static/js/jumpserver.js:9
95
msgid "Export failed"
msgstr "导出失败"
#: static/js/jumpserver.js:
993
#: static/js/jumpserver.js:
1012
msgid "Import Success"
msgstr "导入成功"
#: static/js/jumpserver.js:
998
#: static/js/jumpserver.js:
1017
msgid "Update Success"
msgstr "更新成功"
#: static/js/jumpserver.js:1028
#: static/js/jumpserver.js:1018
msgid "Count"
msgstr "数量"
#: static/js/jumpserver.js:1047
msgid "Import failed"
msgstr "导入失败"
#: static/js/jumpserver.js:10
33
#: static/js/jumpserver.js:10
52
msgid "Update failed"
msgstr "更新失败"
apps/perms/mixins.py
View file @
ef717f88
# ~*~ coding: utf-8 ~*~
#
from
orgs.utils
import
set_to_root_org
__all__
=
[
...
...
@@ -116,4 +115,3 @@ class ChangeOrgIfNeedMixin(object):
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
change_org_if_need
(
request
,
kwargs
)
return
super
()
.
get
(
request
,
*
args
,
**
kwargs
)
apps/settings/api.py
View file @
ef717f88
...
...
@@ -39,7 +39,7 @@ class MailTestingAPI(APIView):
subject
=
"Test"
message
=
"Test smtp setting"
email_from
=
email_from
or
email_host_user
send_mail
(
subject
,
message
,
email_from
,
[
email_
host_user
])
send_mail
(
subject
,
message
,
email_from
,
[
email_
from
])
except
Exception
as
e
:
return
Response
({
"error"
:
str
(
e
)},
status
=
401
)
...
...
apps/static/js/jumpserver.js
View file @
ef717f88
...
...
@@ -1015,7 +1015,7 @@ function APIImportData(props){
$
(
'#updated_failed'
).
html
(
''
);
$
(
'#updated_failed_detail'
).
html
(
''
);
$
(
'#success_updated'
).
html
(
gettext
(
"Update Success"
));
$
(
'#success_updated_detail'
).
html
(
"Count"
+
": "
+
data
.
length
);
$
(
'#success_updated_detail'
).
html
(
gettext
(
"Count"
)
+
": "
+
data
.
length
);
}
props
.
data_table
.
ajax
.
reload
()
...
...
apps/templates/_nav_user.html
View file @
ef717f88
...
...
@@ -4,6 +4,8 @@
<i
class=
"fa fa-files-o"
style=
"width: 14px"
></i><span
class=
"nav-label"
>
{% trans 'My assets' %}
</span><span
class=
"label label-info pull-right"
></span>
</a>
</li>
{% if LICENSE_VALID %}
<li
id=
"applications"
>
<a>
<i
class=
"fa fa-th"
style=
"width: 14px"
></i>
<span
class=
"nav-label"
>
{% trans 'My Applications' %}
</span><span
class=
"fa arrow"
></span>
...
...
@@ -16,6 +18,8 @@
</li>
</ul>
</li>
{% endif %}
{% if SECURITY_COMMAND_EXECUTION %}
<li
id=
"ops"
>
<a
href=
"{% url 'ops:command-execution-start' %}"
>
...
...
apps/terminal/views/command.py
View file @
ef717f88
...
...
@@ -48,7 +48,7 @@ class CommandListView(DatetimeSearchMixin, PermissionsMixin, ListView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'
Terminal
'
),
'app'
:
_
(
'
Sessions
'
),
'action'
:
_
(
'Command list'
),
'user_list'
:
utils
.
get_session_user_list
(),
'asset_list'
:
utils
.
get_session_asset_list
(),
...
...
apps/terminal/views/session.py
View file @
ef717f88
...
...
@@ -71,7 +71,7 @@ class SessionOnlineListView(SessionListView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'
Terminal
'
),
'app'
:
_
(
'
Sessions
'
),
'action'
:
_
(
'Session online list'
),
'type'
:
'online'
,
'now'
:
timezone
.
now
(),
...
...
@@ -89,8 +89,8 @@ class SessionOfflineListView(SessionListView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'
Terminal
'
),
'action'
:
_
(
'Session offline
list
'
),
'app'
:
_
(
'
Sessions
'
),
'action'
:
_
(
'Session offline'
),
'now'
:
timezone
.
now
(),
}
kwargs
.
update
(
context
)
...
...
@@ -113,7 +113,7 @@ class SessionDetailView(SingleObjectMixin, PermissionsMixin, ListView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'
Terminal
'
),
'app'
:
_
(
'
Sessions
'
),
'action'
:
_
(
'Session detail'
),
}
kwargs
.
update
(
context
)
...
...
apps/terminal/views/terminal.py
View file @
ef717f88
...
...
@@ -28,7 +28,7 @@ class TerminalListView(PermissionsMixin, ListView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
TerminalListView
,
self
)
.
get_context_data
(
**
kwargs
)
context
.
update
({
'app'
:
_
(
'
Terminal
'
),
'app'
:
_
(
'
Sessions
'
),
'action'
:
_
(
'Terminal list'
),
'form'
:
self
.
form_class
()
})
...
...
@@ -44,7 +44,7 @@ class TerminalUpdateView(PermissionsMixin, UpdateView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
TerminalUpdateView
,
self
)
.
get_context_data
(
**
kwargs
)
context
.
update
({
'app'
:
_
(
'
Terminal
'
),
'action'
:
_
(
'Update terminal'
)})
context
.
update
({
'app'
:
_
(
'
Sessions
'
),
'action'
:
_
(
'Update terminal'
)})
return
context
...
...
@@ -57,7 +57,7 @@ class TerminalDetailView(PermissionsMixin, DetailView):
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
TerminalDetailView
,
self
)
.
get_context_data
(
**
kwargs
)
context
.
update
({
'app'
:
_
(
'
Terminal
'
),
'app'
:
_
(
'
Sessions
'
),
'action'
:
_
(
'Terminal detail'
)
})
return
context
...
...
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