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
16db2abc
Unverified
Commit
16db2abc
authored
Feb 20, 2019
by
老广
Committed by
GitHub
Feb 20, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2419 from jumpserver/dev
Dev
parents
0ac6e6ba
859f2d97
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
88 additions
and
59 deletions
+88
-59
api.py
apps/common/api.py
+22
-19
forms.py
apps/common/forms.py
+4
-0
conf.py
apps/jumpserver/conf.py
+1
-0
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
+53
-40
celery.py
apps/ops/api/celery.py
+7
-0
No files found.
apps/common/api.py
View file @
16db2abc
...
...
@@ -199,6 +199,8 @@ class LogTailApi(generics.RetrieveAPIView):
buff_size
=
1024
*
10
serializer_class
=
OutputSerializer
end
=
False
mark
=
''
log_path
=
''
def
is_file_finish_write
(
self
):
return
True
...
...
@@ -206,6 +208,9 @@ class LogTailApi(generics.RetrieveAPIView):
def
get_log_path
(
self
):
raise
NotImplementedError
()
def
get_no_file_message
(
self
,
request
):
return
'Not found the log'
def
filter_line
(
self
,
line
):
"""
过滤行,可能替换一些信息
...
...
@@ -214,27 +219,14 @@ class LogTailApi(generics.RetrieveAPIView):
"""
return
line
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
mark
=
request
.
query_params
.
get
(
"mark"
)
or
str
(
uuid
.
uuid4
())
log_path
=
self
.
get_log_path
()
if
not
log_path
or
not
os
.
path
.
isfile
(
log_path
):
if
self
.
is_file_finish_write
():
return
Response
({
"data"
:
'Not found the log'
,
'end'
:
True
,
'mark'
:
mark
})
else
:
return
Response
({
"data"
:
"Waiting...
\r\n
"
},
status
=
200
)
with
open
(
log_path
,
'r'
)
as
f
:
offset
=
cache
.
get
(
mark
,
0
)
def
read_from_file
(
self
):
with
open
(
self
.
log_path
,
'r'
)
as
f
:
offset
=
cache
.
get
(
self
.
mark
,
0
)
f
.
seek
(
offset
)
data
=
f
.
read
(
self
.
buff_size
)
.
replace
(
'
\n
'
,
'
\r\n
'
)
mark
=
str
(
uuid
.
uuid4
())
cache
.
set
(
mark
,
f
.
tell
(),
5
)
new_
mark
=
str
(
uuid
.
uuid4
())
cache
.
set
(
new_
mark
,
f
.
tell
(),
5
)
if
data
==
''
and
self
.
is_file_finish_write
():
self
.
end
=
True
...
...
@@ -244,4 +236,15 @@ class LogTailApi(generics.RetrieveAPIView):
if
line
==
''
:
continue
_data
+=
new_line
+
'
\r\n
'
return
Response
({
"data"
:
_data
,
'end'
:
self
.
end
,
'mark'
:
mark
})
return
_data
,
self
.
end
,
new_mark
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
mark
=
request
.
query_params
.
get
(
"mark"
)
or
str
(
uuid
.
uuid4
())
self
.
log_path
=
self
.
get_log_path
()
if
not
self
.
log_path
or
not
os
.
path
.
isfile
(
self
.
log_path
):
msg
=
self
.
get_no_file_message
(
self
.
request
)
return
Response
({
"data"
:
msg
},
status
=
200
)
data
,
end
,
new_mark
=
self
.
read_from_file
()
return
Response
({
"data"
:
data
,
'end'
:
end
,
'mark'
:
new_mark
})
apps/common/forms.py
View file @
16db2abc
...
...
@@ -159,6 +159,10 @@ class TerminalSettingForm(BaseForm):
help_text
=
_
(
"Units: days, Session, record, command will be delete "
"if more than duration, only in database"
)
)
TERMINAL_TELNET_REGEX
=
forms
.
CharField
(
required
=
False
,
label
=
_
(
"Telnet login regex"
),
help_text
=
_
(
"ex: Last
\
s*login|success|成功"
)
)
class
TerminalCommandStorage
(
BaseForm
):
...
...
apps/jumpserver/conf.py
View file @
16db2abc
...
...
@@ -330,6 +330,7 @@ defaults = {
'TERMINAL_ASSET_LIST_PAGE_SIZE'
:
'auto'
,
'TERMINAL_SESSION_KEEP_DURATION'
:
9999
,
'TERMINAL_HOST_KEY'
:
''
,
'TERMINAL_TELNET_REGEX'
:
''
,
'SECURITY_MFA_AUTH'
:
False
,
'SECURITY_LOGIN_LIMIT_COUNT'
:
7
,
'SECURITY_LOGIN_LIMIT_TIME'
:
30
,
...
...
apps/jumpserver/settings.py
View file @
16db2abc
...
...
@@ -555,3 +555,4 @@ SWAGGER_SETTINGS = {
# Default email suffix
EMAIL_SUFFIX
=
CONFIG
.
EMAIL_SUFFIX
TERMINAL_TELNET_REGEX
=
CONFIG
.
TERMINAL_TELNET_REGEX
apps/locale/zh/LC_MESSAGES/django.mo
View file @
16db2abc
No preview for this file type
apps/locale/zh/LC_MESSAGES/django.po
View file @
16db2abc
...
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Jumpserver 0.3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-0
1-28 12
:56+0800\n"
"POT-Creation-Date: 2019-0
2-20 18
:56+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"
...
...
@@ -21,11 +21,11 @@ msgstr ""
msgid "You can't update the root node name"
msgstr "不能修改根节点名称"
#: assets/api/node.py:28
1
#: assets/api/node.py:28
2
msgid "Update node asset hardware information: {}"
msgstr "更新节点资产硬件信息: {}"
#: assets/api/node.py:29
5
#: assets/api/node.py:29
6
msgid "Test if the assets under the node are connectable: {}"
msgstr "测试节点下资产是否可连接: {}"
...
...
@@ -764,48 +764,48 @@ msgstr "获取资产信息失败:{}"
msgid "Update some assets hardware info"
msgstr "更新资产硬件信息"
#: assets/tasks.py:13
6
#: assets/tasks.py:13
4
msgid "Update asset hardware info: {}"
msgstr "更新资产硬件信息: {}"
#: assets/tasks.py:1
61
#: assets/tasks.py:1
59
msgid "Test assets connectivity"
msgstr "测试资产可连接性"
#: assets/tasks.py:18
5
#: assets/tasks.py:18
3
msgid "Test assets connectivity: {}"
msgstr "测试资产可连接性: {}"
#: assets/tasks.py:22
4
#: assets/tasks.py:22
5
msgid "Test admin user connectivity period: {}"
msgstr "定期测试管理账号可连接性: {}"
#: assets/tasks.py:23
1
#: assets/tasks.py:23
2
msgid "Test admin user connectivity: {}"
msgstr "测试管理行号可连接性: {}"
#: assets/tasks.py:27
0
#: assets/tasks.py:27
1
msgid "Test system user connectivity: {}"
msgstr "测试系统用户可连接性: {}"
#: assets/tasks.py:27
7
#: assets/tasks.py:27
8
msgid "Test system user connectivity: {} => {}"
msgstr "测试系统用户可连接性: {} => {}"
#: assets/tasks.py:29
0
#: assets/tasks.py:29
1
msgid "Test system user connectivity period: {}"
msgstr "定期测试系统用户可连接性: {}"
#: assets/tasks.py:36
2
#: assets/tasks.py:36
3
msgid ""
"Push system user task skip, auto push not enable or protocol is not ssh: {}"
msgstr "推送系统用户任务跳过,自动推送没有打开,或协议不是ssh: {}"
#: assets/tasks.py:38
2 assets/tasks.py:396
#: assets/tasks.py:38
3 assets/tasks.py:397
msgid "Push system users to assets: {}"
msgstr "推送系统用户到入资产: {}"
#: assets/tasks.py:38
8
#: assets/tasks.py:38
9
msgid "Push system users to asset: {} => {}"
msgstr "推送系统用户到入资产: {} => {}"
...
...
@@ -1092,7 +1092,7 @@ msgstr "选择节点"
#: assets/templates/assets/admin_user_detail.html:100
#: assets/templates/assets/asset_detail.html:208
#: assets/templates/assets/asset_list.html:63
5
#: assets/templates/assets/asset_list.html:63
6
#: assets/templates/assets/cmd_filter_detail.html:106
#: assets/templates/assets/system_user_asset.html:112
#: assets/templates/assets/system_user_detail.html:182
...
...
@@ -1312,7 +1312,7 @@ msgstr "重命名成功"
msgid "Rename failed, do not change the root node name"
msgstr "重命名失败,不能更改root节点的名称"
#: assets/templates/assets/asset_list.html:6
29
#: assets/templates/assets/asset_list.html:6
30
#: assets/templates/assets/system_user_list.html:137
#: users/templates/users/user_detail.html:382
#: users/templates/users/user_detail.html:408
...
...
@@ -1322,11 +1322,11 @@ msgstr "重命名失败,不能更改root节点的名称"
msgid "Are you sure?"
msgstr "你确认吗?"
#: assets/templates/assets/asset_list.html:63
0
#: assets/templates/assets/asset_list.html:63
1
msgid "This will delete the selected assets !!!"
msgstr "删除选择资产"
#: assets/templates/assets/asset_list.html:63
3
#: assets/templates/assets/asset_list.html:63
4
#: assets/templates/assets/system_user_list.html:141
#: common/templates/common/terminal_setting.html:163
#: users/templates/users/user_detail.html:386
...
...
@@ -1339,16 +1339,16 @@ msgstr "删除选择资产"
msgid "Cancel"
msgstr "取消"
#: assets/templates/assets/asset_list.html:6
39
#: assets/templates/assets/asset_list.html:6
40
msgid "Asset Deleted."
msgstr "已被删除"
#: assets/templates/assets/asset_list.html:64
0
#: assets/templates/assets/asset_list.html:64
5
#: assets/templates/assets/asset_list.html:64
1
#: assets/templates/assets/asset_list.html:64
6
msgid "Asset Delete"
msgstr "删除"
#: assets/templates/assets/asset_list.html:64
4
#: assets/templates/assets/asset_list.html:64
5
msgid "Asset Deleting failed."
msgstr "删除失败"
...
...
@@ -2003,45 +2003,54 @@ msgstr ""
"单位:天。 会话、录像、命令记录超过该时长将会被删除(仅影响数据库存储, oss等不"
"受影响)"
#: common/forms.py:171
#: common/forms.py:163
msgid "Telnet login regex"
msgstr "Telnet 成功正则表达式"
#: common/forms.py:164
msgid "ex: Last\\s*login|success|成功"
msgstr ""
"登录telnet服务器成功后的提示正则表达式,如: Last\\s*login|success|成功 "
#: common/forms.py:175
msgid "MFA Secondary certification"
msgstr "MFA 二次认证"
#: common/forms.py:17
3
#: common/forms.py:17
7
msgid ""
"After opening, the user login must use MFA secondary authentication (valid "
"for all users, including administrators)"
msgstr "开启后,用户登录必须使用MFA二次认证(对所有用户有效,包括管理员)"
#: common/forms.py:1
79
#: common/forms.py:1
83
msgid "Limit the number of login failures"
msgstr "限制登录失败次数"
#: common/forms.py:18
3
#: common/forms.py:18
7
msgid "No logon interval"
msgstr "禁止登录时间间隔"
#: common/forms.py:18
5
#: common/forms.py:18
9
msgid ""
"Tip: (unit/minute) if the user has failed to log in for a limited number of "
"times, no login is allowed during this time interval."
msgstr ""
"提示:(单位:分)当用户登录失败次数达到限制后,那么在此时间间隔内禁止登录"
#: common/forms.py:19
1
#: common/forms.py:19
5
msgid "Connection max idle time"
msgstr "SSH最大空闲时间"
#: common/forms.py:19
3
#: common/forms.py:19
7
msgid ""
"If idle time more than it, disconnect connection(only ssh now) Unit: minute"
msgstr "提示:(单位:分)如果超过该配置没有操作,连接会被断开(仅ssh)"
#: common/forms.py:
199
#: common/forms.py:
203
msgid "Password expiration time"
msgstr "密码过期时间"
#: common/forms.py:20
2
#: common/forms.py:20
6
msgid ""
"Tip: (unit: day) If the user does not update the password during the time, "
"the user password will expire failure;The password expiration reminder mail "
...
...
@@ -2051,45 +2060,45 @@ msgstr ""
"提示:(单位:天)如果用户在此期间没有更新密码,用户密码将过期失效; 密码过期"
"提醒邮件将在密码过期前5天内由系统(每天)自动发送给用户"
#: common/forms.py:21
1
#: common/forms.py:21
5
msgid "Password minimum length"
msgstr "密码最小长度 "
#: common/forms.py:21
5
#: common/forms.py:21
9
msgid "Must contain capital letters"
msgstr "必须包含大写字母"
#: common/forms.py:2
17
#: common/forms.py:2
21
msgid ""
"After opening, the user password changes and resets must contain uppercase "
"letters"
msgstr "开启后,用户密码修改、重置必须包含大写字母"
#: common/forms.py:22
2
#: common/forms.py:22
6
msgid "Must contain lowercase letters"
msgstr "必须包含小写字母"
#: common/forms.py:22
3
#: common/forms.py:22
7
msgid ""
"After opening, the user password changes and resets must contain lowercase "
"letters"
msgstr "开启后,用户密码修改、重置必须包含小写字母"
#: common/forms.py:2
28
#: common/forms.py:2
32
msgid "Must contain numeric characters"
msgstr "必须包含数字字符"
#: common/forms.py:2
29
#: common/forms.py:2
33
msgid ""
"After opening, the user password changes and resets must contain numeric "
"characters"
msgstr "开启后,用户密码修改、重置必须包含数字字符"
#: common/forms.py:23
4
#: common/forms.py:23
8
msgid "Must contain special characters"
msgstr "必须包含特殊字符"
#: common/forms.py:23
5
#: common/forms.py:23
9
msgid ""
"After opening, the user password changes and resets must contain special "
"characters"
...
...
@@ -2315,6 +2324,10 @@ msgstr ""
"div><div>如果你看到了这个页面,证明你访问的不是nginx监听的端口,祝你好运</"
"div>"
#: ops/api/celery.py:54
msgid "Waiting task start"
msgstr "等待任务开始"
#: ops/models/adhoc.py:38
msgid "Interval"
msgstr "间隔"
...
...
apps/ops/api/celery.py
View file @
16db2abc
...
...
@@ -4,6 +4,7 @@
import
os
import
re
from
django.utils.translation
import
ugettext
as
_
from
celery.result
import
AsyncResult
from
rest_framework
import
generics
...
...
@@ -46,6 +47,12 @@ class CeleryTaskLogApi(LogTailApi):
def
is_file_finish_write
(
self
):
return
self
.
task
.
ready
()
def
get_no_file_message
(
self
,
request
):
if
self
.
mark
==
'undefined'
:
return
'.'
else
:
return
_
(
'Waiting task start'
)
class
CeleryResultApi
(
generics
.
RetrieveAPIView
):
permission_classes
=
(
IsValidUser
,)
...
...
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