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
4d844548
Commit
4d844548
authored
9 years ago
by
yumaojun
Browse files
Options
Browse Files
Download
Plain Diff
fixed merge...
parents
b241d6d1
29e1090d
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
211 additions
and
263 deletions
+211
-263
log_api.py
jlog/log_api.py
+2
-2
ansible_api.py
jperm/ansible_api.py
+2
-1
models.py
jperm/models.py
+1
-0
utils.py
jperm/utils.py
+3
-5
views.py
jperm/views.py
+84
-138
run_websocket.py
run_websocket.py
+1
-0
asset_list.html
templates/jasset/asset_list.html
+4
-4
idc_list.html
templates/jasset/idc_list.html
+1
-1
log_online.html
templates/jlog/log_online.html
+4
-4
perm_role_add.html
templates/jperm/perm_role_add.html
+11
-11
perm_role_edit.html
templates/jperm/perm_role_edit.html
+1
-1
perm_role_list.html
templates/jperm/perm_role_list.html
+1
-1
perm_role_push.html
templates/jperm/perm_role_push.html
+31
-35
perm_rule_add.html
templates/jperm/perm_rule_add.html
+5
-6
perm_rule_edit.html
templates/jperm/perm_rule_edit.html
+5
-36
perm_sudo_add.html
templates/jperm/perm_sudo_add.html
+31
-2
perm_sudo_edit.html
templates/jperm/perm_sudo_edit.html
+7
-0
role_sudo.j2
templates/jperm/role_sudo.j2
+7
-5
nav.html
templates/nav.html
+2
-4
setting.html
templates/setting.html
+8
-7
No files found.
jlog/log_api.py
View file @
4d844548
...
@@ -46,12 +46,12 @@ def scriptToJSON(scriptf, timing=None):
...
@@ -46,12 +46,12 @@ def scriptToJSON(scriptf, timing=None):
ret
=
[]
ret
=
[]
with
closing
(
scriptf
):
with
closing
(
scriptf
):
print
"#
%
s #"
%
scriptf
.
readline
()
# ignore first header line from script file
scriptf
.
readline
()
# ignore first header line from script file
offset
=
0
offset
=
0
for
t
in
timing
:
for
t
in
timing
:
dt
=
scriptf
.
read
(
t
[
1
])
dt
=
scriptf
.
read
(
t
[
1
])
data
=
escapeString
(
dt
)
data
=
escapeString
(
dt
)
print
(
'###### (
%
s,
%
s)'
%
(
t
[
1
],
repr
(
data
)))
#
print ('###### (%s, %s)' % (t[1], repr(data)))
offset
+=
t
[
0
]
offset
+=
t
[
0
]
ret
.
append
((
data
,
offset
))
ret
.
append
((
data
,
offset
))
return
dumps
(
ret
)
return
dumps
(
ret
)
...
...
This diff is collapsed.
Click to expand it.
jperm/ansible_api.py
View file @
4d844548
...
@@ -326,7 +326,7 @@ class Tasks(Command):
...
@@ -326,7 +326,7 @@ class Tasks(Command):
module_args
=
'name=
%
s shell=/bin/bash password=
%
s'
%
(
username
,
encrypt_pass
)
module_args
=
'name=
%
s shell=/bin/bash password=
%
s'
%
(
username
,
encrypt_pass
)
self
.
__run
(
module_args
,
"user"
)
self
.
__run
(
module_args
,
"user"
)
return
{
"status"
:
"failed"
,
"msg"
:
self
.
msg
}
if
self
.
msg
else
{
"status"
:
"ok"
}
return
{
"status"
:
"failed"
,
"msg"
:
self
.
msg
}
if
self
.
msg
else
{
"status"
:
"ok"
}
def
add_multi_user
(
self
,
**
user_info
):
def
add_multi_user
(
self
,
**
user_info
):
"""
"""
...
@@ -457,6 +457,7 @@ class Tasks(Command):
...
@@ -457,6 +457,7 @@ class Tasks(Command):
return
result
return
result
class
CustomAggregateStats
(
callbacks
.
AggregateStats
):
class
CustomAggregateStats
(
callbacks
.
AggregateStats
):
"""
"""
Holds stats about per-host activity during playbook runs.
Holds stats about per-host activity during playbook runs.
...
...
This diff is collapsed.
Click to expand it.
jperm/models.py
View file @
4d844548
...
@@ -22,6 +22,7 @@ class SysUser(models.Model):
...
@@ -22,6 +22,7 @@ class SysUser(models.Model):
class
PermSudo
(
models
.
Model
):
class
PermSudo
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
100
,
unique
=
True
)
name
=
models
.
CharField
(
max_length
=
100
,
unique
=
True
)
date_added
=
models
.
DateTimeField
(
auto_now
=
True
)
date_added
=
models
.
DateTimeField
(
auto_now
=
True
)
runas
=
models
.
CharField
(
max_length
=
200
,
default
=
'root'
)
commands
=
models
.
TextField
()
commands
=
models
.
TextField
()
comment
=
models
.
CharField
(
max_length
=
100
,
null
=
True
,
blank
=
True
,
default
=
''
)
comment
=
models
.
CharField
(
max_length
=
100
,
null
=
True
,
blank
=
True
,
default
=
''
)
...
...
This diff is collapsed.
Click to expand it.
jperm/utils.py
View file @
4d844548
...
@@ -96,23 +96,21 @@ def gen_sudo(role_custom, role_name, role_chosen):
...
@@ -96,23 +96,21 @@ def gen_sudo(role_custom, role_name, role_chosen):
return
sudo_file_path
return
sudo_file_path
def
get_add_sudo_script
(
sudo_chosen_aliase
,
sudo_chosen_obj
):
def
get_add_sudo_script
(
role_chosen_aliase
,
sudo_alias
):
"""
"""
get the sudo file
get the sudo file
:param kwargs:
:param kwargs:
:return:
:return:
"""
"""
sudo_j2
=
get_template
(
'jperm/role_sudo.j2'
)
sudo_j2
=
get_template
(
'jperm/role_sudo.j2'
)
sudo_content
=
sudo_j2
.
render
(
Context
({
"
sudo_chosen_aliase"
:
sudo
_chosen_aliase
,
sudo_content
=
sudo_j2
.
render
(
Context
({
"
role_chosen_aliase"
:
role
_chosen_aliase
,
"sudo_
chosen_obj"
:
sudo_chosen_obj
}))
"sudo_
alias"
:
sudo_alias
}))
sudo_file
=
NamedTemporaryFile
(
delete
=
False
)
sudo_file
=
NamedTemporaryFile
(
delete
=
False
)
sudo_file
.
write
(
sudo_content
)
sudo_file
.
write
(
sudo_content
)
sudo_file
.
close
()
sudo_file
.
close
()
print
(
sudo_file
.
name
)
print
(
sudo_file
.
name
)
return
sudo_file
.
name
return
sudo_file
.
name
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
print
gen_keys
()
print
gen_keys
()
...
...
This diff is collapsed.
Click to expand it.
jperm/views.py
View file @
4d844548
...
@@ -69,7 +69,6 @@ def perm_rule_add(request):
...
@@ -69,7 +69,6 @@ def perm_rule_add(request):
# 渲染数据
# 渲染数据
header_title
,
path1
,
path2
=
"授权规则"
,
"规则管理"
,
"添加规则"
header_title
,
path1
,
path2
=
"授权规则"
,
"规则管理"
,
"添加规则"
if
request
.
method
==
'GET'
:
# 渲染数据, 获取所有 用户,用户组,资产,资产组,用户角色, 用于添加授权规则
# 渲染数据, 获取所有 用户,用户组,资产,资产组,用户角色, 用于添加授权规则
users
=
User
.
objects
.
all
()
users
=
User
.
objects
.
all
()
user_groups
=
UserGroup
.
objects
.
all
()
user_groups
=
UserGroup
.
objects
.
all
()
...
@@ -77,9 +76,7 @@ def perm_rule_add(request):
...
@@ -77,9 +76,7 @@ def perm_rule_add(request):
asset_groups
=
AssetGroup
.
objects
.
all
()
asset_groups
=
AssetGroup
.
objects
.
all
()
roles
=
PermRole
.
objects
.
all
()
roles
=
PermRole
.
objects
.
all
()
return
my_render
(
'jperm/perm_rule_add.html'
,
locals
(),
request
)
if
request
.
method
==
'POST'
:
elif
request
.
method
==
'POST'
:
# 获取用户选择的 用户,用户组,资产,资产组,用户角色
# 获取用户选择的 用户,用户组,资产,资产组,用户角色
users_select
=
request
.
POST
.
getlist
(
'user'
,
[])
users_select
=
request
.
POST
.
getlist
(
'user'
,
[])
user_groups_select
=
request
.
POST
.
getlist
(
'usergroup'
,
[])
user_groups_select
=
request
.
POST
.
getlist
(
'usergroup'
,
[])
...
@@ -88,28 +85,32 @@ def perm_rule_add(request):
...
@@ -88,28 +85,32 @@ def perm_rule_add(request):
roles_select
=
request
.
POST
.
getlist
(
'role'
,
[])
roles_select
=
request
.
POST
.
getlist
(
'role'
,
[])
rule_name
=
request
.
POST
.
get
(
'rulename'
)
rule_name
=
request
.
POST
.
get
(
'rulename'
)
rule_comment
=
request
.
POST
.
get
(
'rule_comment'
)
rule_comment
=
request
.
POST
.
get
(
'rule_comment'
)
rule_ssh_key
=
request
.
POST
.
get
(
"use_publicKey"
)
try
:
rule
=
get_object
(
PermRule
,
name
=
rule_name
)
if
rule
:
raise
ServerError
(
u'授权规则
%
s 已存在'
%
rule_name
)
# 获取需要授权的主机列表
# 获取需要授权的主机列表
assets_obj
=
[
Asset
.
objects
.
get
(
ip
=
asset
)
for
asset
in
assets_select
]
assets_obj
=
[
Asset
.
objects
.
get
(
id
=
asset_id
)
for
asset_id
in
assets_select
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
name
=
group
)
for
group
in
asset_groups_select
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
id
=
group_id
)
for
group_id
in
asset_groups_select
]
group_assets_obj
=
[
asset
for
asset
in
[
group
.
asset_set
.
all
()
for
group
in
asset_groups_obj
]]
#
group_assets_obj = [asset for asset in [group.asset_set.all() for group in asset_groups_obj]]
calc_assets
=
set
(
group_assets_obj
)
|
set
(
assets_obj
)
#
calc_assets = set(group_assets_obj) | set(assets_obj)
# 获取需要授权的用户列表
# 获取需要授权的用户列表
users_obj
=
[
User
.
objects
.
get
(
name
=
user
)
for
user
in
users_select
]
users_obj
=
[
User
.
objects
.
get
(
id
=
user_id
)
for
user_id
in
users_select
]
user_groups_obj
=
[
UserGroup
.
objects
.
get
(
name
=
group
)
for
group
in
user_groups_select
]
user_groups_obj
=
[
UserGroup
.
objects
.
get
(
id
=
group_id
)
for
group_id
in
user_groups_select
]
group_users_obj
=
[
user
for
user
in
[
group
.
user_set
.
all
()
for
group
in
user_groups_obj
]]
#
group_users_obj = [user for user in [group.user_set.all() for group in user_groups_obj]]
calc_users
=
set
(
group_users_obj
)
|
set
(
users_obj
)
#
calc_users = set(group_users_obj) | set(users_obj)
# 获取授予的角色列表
# 获取授予的角色列表
roles_obj
=
[
PermRole
.
objects
.
get
(
name
=
role
)
for
role
in
roles_select
]
roles_obj
=
[
PermRole
.
objects
.
get
(
id
=
role_id
)
for
role_id
in
roles_select
]
# 仅授权成功的,写回数据库(授权规则,用户,用户组,资产,资产组,用户角色)
# 仅授权成功的,写回数据库(授权规则,用户,用户组,资产,资产组,用户角色)
rule
=
PermRule
(
name
=
rule_name
,
comment
=
rule_comment
)
rule
=
PermRule
(
name
=
rule_name
,
comment
=
rule_comment
)
rule
.
save
()
rule
.
save
()
rule
.
user
=
users_obj
rule
.
user
=
users_obj
rule
.
user
group
=
user_groups_obj
rule
.
user_
group
=
user_groups_obj
rule
.
asset
=
assets_obj
rule
.
asset
=
assets_obj
rule
.
asset_group
=
asset_groups_obj
rule
.
asset_group
=
asset_groups_obj
rule
.
role
=
roles_obj
rule
.
role
=
roles_obj
...
@@ -117,16 +118,10 @@ def perm_rule_add(request):
...
@@ -117,16 +118,10 @@ def perm_rule_add(request):
msg
=
u"添加授权规则:
%
s"
%
rule
.
name
msg
=
u"添加授权规则:
%
s"
%
rule
.
name
# 渲染数据
# 渲染数据
header_title
,
path1
,
path2
=
"授权规则"
,
"规则管理"
,
"查看规则"
return
HttpResponseRedirect
(
'/jperm/rule/'
)
rules_list
=
PermRule
.
objects
.
all
()
except
ServerError
,
e
:
error
=
e
# TODO: 搜索和分页
return
my_render
(
'jperm/perm_rule_add.html'
,
locals
(),
request
)
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
if
keyword
:
rules_list
=
rules_list
.
filter
(
Q
(
name
=
keyword
))
rules_list
,
p
,
rules
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
rules_list
,
request
)
return
my_render
(
'jperm/perm_rule_list.html'
,
locals
(),
request
)
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
@@ -155,7 +150,6 @@ def perm_rule_edit(request):
...
@@ -155,7 +150,6 @@ def perm_rule_edit(request):
assets
=
Asset
.
objects
.
all
()
assets
=
Asset
.
objects
.
all
()
asset_groups
=
AssetGroup
.
objects
.
all
()
asset_groups
=
AssetGroup
.
objects
.
all
()
roles
=
PermRole
.
objects
.
all
()
roles
=
PermRole
.
objects
.
all
()
return
my_render
(
'jperm/perm_rule_edit.html'
,
locals
(),
request
)
return
my_render
(
'jperm/perm_rule_edit.html'
,
locals
(),
request
)
elif
request
.
method
==
'POST'
and
rule_id
:
elif
request
.
method
==
'POST'
and
rule_id
:
...
@@ -168,24 +162,23 @@ def perm_rule_edit(request):
...
@@ -168,24 +162,23 @@ def perm_rule_edit(request):
asset_groups_select
=
request
.
POST
.
getlist
(
'assetgroup'
,
[])
asset_groups_select
=
request
.
POST
.
getlist
(
'assetgroup'
,
[])
roles_select
=
request
.
POST
.
getlist
(
'role'
,
[])
roles_select
=
request
.
POST
.
getlist
(
'role'
,
[])
# 获取需要授权的主机列表
assets_obj
=
[
Asset
.
objects
.
get
(
id
=
asset_id
)
for
asset_id
in
assets_select
]
assets_obj
=
[
Asset
.
objects
.
get
(
ip
=
asset
)
for
asset
in
assets_select
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
id
=
group_id
)
for
group_id
in
asset_groups_select
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
name
=
group
)
for
group
in
asset_groups_select
]
# group_assets_obj = [asset for asset in [group.asset_set.all() for group in asset_groups_obj]]
group_assets_obj
=
[
asset
for
asset
in
[
group
.
asset_set
.
all
()
for
group
in
asset_groups_obj
]]
# calc_assets = set(group_assets_obj) | set(assets_obj)
calc_assets
=
set
(
group_assets_obj
)
|
set
(
assets_obj
)
# 获取需要授权的用户列表
# 获取需要授权的用户列表
users_obj
=
[
User
.
objects
.
get
(
name
=
user
)
for
user
in
users_select
]
users_obj
=
[
User
.
objects
.
get
(
id
=
user_id
)
for
user_id
in
users_select
]
user_groups_obj
=
[
UserGroup
.
objects
.
get
(
name
=
group
)
for
group
in
user_groups_select
]
user_groups_obj
=
[
UserGroup
.
objects
.
get
(
id
=
group_id
)
for
group_id
in
user_groups_select
]
group_users_obj
=
[
user
for
user
in
[
group
.
user_set
.
all
()
for
group
in
user_groups_obj
]]
#
group_users_obj = [user for user in [group.user_set.all() for group in user_groups_obj]]
calc_users
=
set
(
group_users_obj
)
|
set
(
users_obj
)
#
calc_users = set(group_users_obj) | set(users_obj)
# 获取授予的角色列表
# 获取授予的角色列表
roles_obj
=
[
PermRole
.
objects
.
get
(
name
=
role
)
for
role
in
roles_select
]
roles_obj
=
[
PermRole
.
objects
.
get
(
id
=
role_id
)
for
role_id
in
roles_select
]
# 仅授权成功的,写回数据库(授权规则,用户,用户组,资产,资产组,用户角色)
# 仅授权成功的,写回数据库(授权规则,用户,用户组,资产,资产组,用户角色)
rule
.
user
=
users_obj
rule
.
user
=
users_obj
rule
.
usergroup
=
user_groups_obj
rule
.
user
_
group
=
user_groups_obj
rule
.
asset
=
assets_obj
rule
.
asset
=
assets_obj
rule
.
asset_group
=
asset_groups_obj
rule
.
asset_group
=
asset_groups_obj
rule
.
role
=
roles_obj
rule
.
role
=
roles_obj
...
@@ -194,17 +187,8 @@ def perm_rule_edit(request):
...
@@ -194,17 +187,8 @@ def perm_rule_edit(request):
rule
.
save
()
rule
.
save
()
msg
=
u"更新授权规则:
%
s"
%
rule
.
name
msg
=
u"更新授权规则:
%
s"
%
rule
.
name
# 渲染数据
header_title
,
path1
,
path2
=
"授权规则"
,
"规则管理"
,
"查看规则"
rules_list
=
PermRule
.
objects
.
all
()
# TODO: 搜索和分页
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
if
keyword
:
rules_list
=
rules_list
.
filter
(
Q
(
name
=
keyword
))
rules_list
,
p
,
rules
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
rules_list
,
request
)
return
my_render
(
'jperm/perm_rule_list.html'
,
locals
(),
request
)
return
HttpResponseRedirect
(
'/jperm/rule/'
)
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
@@ -254,37 +238,37 @@ def perm_role_add(request):
...
@@ -254,37 +238,37 @@ def perm_role_add(request):
"""
"""
# 渲染数据
# 渲染数据
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"添加角色"
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"添加角色"
if
request
.
method
==
"GET"
:
default_password
=
get_rand_pass
()
sudos
=
PermSudo
.
objects
.
all
()
sudos
=
PermSudo
.
objects
.
all
()
return
my_render
(
'jperm/perm_role_add.html'
,
locals
(),
request
)
elif
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
# 获取参数: name, comment, sudo
# 获取参数: name, comment
name
=
request
.
POST
.
get
(
"role_name"
)
name
=
request
.
POST
.
get
(
"role_name"
,
""
)
comment
=
request
.
POST
.
get
(
"role_comment"
)
comment
=
request
.
POST
.
get
(
"role_comment"
,
""
)
password
=
request
.
POST
.
get
(
"role_password"
)
password
=
request
.
POST
.
get
(
"role_password"
,
""
)
sudos_name
=
request
.
POST
.
getlist
(
"sudo_name"
)
key_content
=
request
.
POST
.
get
(
"role_key"
,
""
)
sudos_obj
=
[
PermSudo
.
objects
.
get
(
name
=
sudo_name
)
for
sudo_name
in
sudos_name
]
sudo_ids
=
request
.
POST
.
getlist
(
'sudo_name'
)
try
:
if
get_object
(
PermRole
,
name
=
name
):
raise
ServerError
(
'已经存在该用户
%
s'
%
name
)
if
password
:
encrypt_pass
=
CRYPTOR
.
encrypt
(
password
)
encrypt_pass
=
CRYPTOR
.
encrypt
(
password
)
else
:
encrypt_pass
=
CRYPTOR
.
encrypt
(
CRYPTOR
.
gen_rand_pass
(
20
))
# 生成随机密码,生成秘钥对
# 生成随机密码,生成秘钥对
sudos_obj
=
[
get_object
(
PermSudo
,
id
=
sudo_id
)
for
sudo_id
in
sudo_ids
]
if
key_content
:
key_path
=
gen_keys
(
key
=
key_content
)
else
:
key_path
=
gen_keys
()
key_path
=
gen_keys
()
logger
.
debug
(
'generate role key:
%
s'
%
key_path
)
role
=
PermRole
(
name
=
name
,
comment
=
comment
,
password
=
encrypt_pass
,
key_path
=
key_path
)
role
=
PermRole
(
name
=
name
,
comment
=
comment
,
password
=
encrypt_pass
,
key_path
=
key_path
)
role
.
save
()
role
.
save
()
role
.
sudo
=
sudos_obj
role
.
sudo
=
sudos_obj
role
.
save
()
msg
=
u"添加角色:
%
s"
%
name
msg
=
u"添加角色:
%
s"
%
name
# 渲染 刷新数据
return
HttpResponseRedirect
(
'/jperm/role/'
)
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"查看角色"
except
ServerError
,
e
:
roles_list
=
PermRole
.
objects
.
all
()
error
=
e
# TODO: 搜索和分页
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
if
keyword
:
roles_list
=
roles_list
.
filter
(
Q
(
name
=
keyword
))
return
my_render
(
'jperm/perm_role_add.html'
,
locals
(),
request
)
return
my_render
(
'jperm/perm_role_add.html'
,
locals
(),
request
)
...
@@ -352,6 +336,7 @@ def perm_role_edit(request):
...
@@ -352,6 +336,7 @@ def perm_role_edit(request):
role_id
=
request
.
GET
.
get
(
"id"
)
role_id
=
request
.
GET
.
get
(
"id"
)
role
=
PermRole
.
objects
.
get
(
id
=
role_id
)
role
=
PermRole
.
objects
.
get
(
id
=
role_id
)
role_pass
=
CRYPTOR
.
decrypt
(
role
.
password
)
role_pass
=
CRYPTOR
.
decrypt
(
role
.
password
)
sudo_all
=
PermSudo
.
objects
.
all
()
role_sudos
=
role
.
sudo
.
all
()
role_sudos
=
role
.
sudo
.
all
()
sudo_all
=
PermSudo
.
objects
.
all
()
sudo_all
=
PermSudo
.
objects
.
all
()
if
request
.
method
==
"GET"
:
if
request
.
method
==
"GET"
:
...
@@ -363,7 +348,7 @@ def perm_role_edit(request):
...
@@ -363,7 +348,7 @@ def perm_role_edit(request):
role_password
=
request
.
POST
.
get
(
"role_password"
)
role_password
=
request
.
POST
.
get
(
"role_password"
)
role_comment
=
request
.
POST
.
get
(
"role_comment"
)
role_comment
=
request
.
POST
.
get
(
"role_comment"
)
role_sudo_names
=
request
.
POST
.
getlist
(
"sudo_name"
)
role_sudo_names
=
request
.
POST
.
getlist
(
"sudo_name"
)
role_sudos
=
[
PermSudo
.
objects
.
get
(
name
=
sudo_name
)
for
sudo_name
in
role_sudo_names
]
role_sudos
=
[
PermSudo
.
objects
.
get
(
id
=
sudo_id
)
for
sudo_id
in
role_sudo_names
]
key_content
=
request
.
POST
.
get
(
"role_key"
,
""
)
key_content
=
request
.
POST
.
get
(
"role_key"
,
""
)
try
:
try
:
...
@@ -382,11 +367,9 @@ def perm_role_edit(request):
...
@@ -382,11 +367,9 @@ def perm_role_edit(request):
logger
.
debug
(
'Recreate role key:
%
s'
%
role
.
key_path
)
logger
.
debug
(
'Recreate role key:
%
s'
%
role
.
key_path
)
# 写入数据库
# 写入数据库
role
.
name
=
role_name
role
.
name
=
role_name
role
.
password
=
encrypt_role_pass
role
.
comment
=
role_comment
role
.
comment
=
role_comment
role
.
sudo
=
role_sudos
role
.
sudo
=
role_sudos
role
.
save
()
role
.
save
()
msg
=
u"更新系统角色:
%
s"
%
role
.
name
msg
=
u"更新系统角色:
%
s"
%
role
.
name
return
HttpResponseRedirect
(
'/jperm/role/'
)
return
HttpResponseRedirect
(
'/jperm/role/'
)
...
@@ -404,23 +387,19 @@ def perm_role_push(request):
...
@@ -404,23 +387,19 @@ def perm_role_push(request):
# 渲染数据
# 渲染数据
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"角色推送"
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"角色推送"
if
request
.
method
==
"GET"
:
# 渲染数据
roles
=
PermRole
.
objects
.
all
()
roles
=
PermRole
.
objects
.
all
()
assets
=
Asset
.
objects
.
all
()
assets
=
Asset
.
objects
.
all
()
asset_groups
=
AssetGroup
.
objects
.
all
()
asset_groups
=
AssetGroup
.
objects
.
all
()
return
my_render
(
'jperm/perm_role_push.html'
,
locals
(),
request
)
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
# 获取推荐角色的名称列表
# 获取推荐角色的名称列表
role_
name
s
=
request
.
POST
.
getlist
(
"roles"
)
role_
id
s
=
request
.
POST
.
getlist
(
"roles"
)
# 计算出需要推送的资产列表
# 计算出需要推送的资产列表
asset_i
p
s
=
request
.
POST
.
getlist
(
"assets"
)
asset_i
d
s
=
request
.
POST
.
getlist
(
"assets"
)
asset_group_
name
s
=
request
.
POST
.
getlist
(
"asset_groups"
)
asset_group_
id
s
=
request
.
POST
.
getlist
(
"asset_groups"
)
assets_obj
=
[
Asset
.
objects
.
get
(
i
p
=
asset_ip
)
for
asset_ip
in
asset_ip
s
]
assets_obj
=
[
Asset
.
objects
.
get
(
i
d
=
asset_id
)
for
asset_id
in
asset_id
s
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
name
=
asset_group_name
)
for
asset_group_name
in
asset_group_name
s
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
id
=
asset_group_id
)
for
asset_group_id
in
asset_group_id
s
]
group_assets_obj
=
[]
group_assets_obj
=
[]
for
asset_group
in
asset_groups_obj
:
for
asset_group
in
asset_groups_obj
:
group_assets_obj
.
extend
(
asset_group
.
asset_set
.
all
())
group_assets_obj
.
extend
(
asset_group
.
asset_set
.
all
())
...
@@ -442,10 +421,9 @@ def perm_role_push(request):
...
@@ -442,10 +421,9 @@ def perm_role_push(request):
# "username": username,
# "username": username,
# "password": password})
# "password": password})
push_resource
=
gen_resource
(
calc_assets
)
push_resource
=
gen_resource
(
calc_assets
)
print
push_resource
# 获取角色的推送方式,以及推送需要的信息
# 获取角色的推送方式,以及推送需要的信息
roles_obj
=
[
PermRole
.
objects
.
get
(
name
=
role_name
)
for
role_name
in
role_name
s
]
roles_obj
=
[
PermRole
.
objects
.
get
(
id
=
role_id
)
for
role_id
in
role_id
s
]
role_pass
=
{}
role_pass
=
{}
role_key
=
{}
role_key
=
{}
for
role
in
roles_obj
:
for
role
in
roles_obj
:
...
@@ -476,31 +454,28 @@ def perm_role_push(request):
...
@@ -476,31 +454,28 @@ def perm_role_push(request):
ret_failed
[
"step2-2"
]
=
"failed"
ret_failed
[
"step2-2"
]
=
"failed"
# 3. 推送sudo配置文件
# 3. 推送sudo配置文件
sudo_chosen_aliase
=
{
}
role_chosen_aliase
=
{}
# {'dev': [sudo1, sudo2], 'sa': [sudo2, sudo3]
}
sudo_alias
=
[]
sudo_alias
=
set
()
# set(sudo1, sudo2, sudo3)
for
role
in
roles_obj
:
for
role
in
roles_obj
:
role_alias
=
[
sudo
.
name
for
sudo
in
role
.
sudo
.
all
()]
sudos
=
set
([
sudo
for
sudo
in
role
.
sudo
.
all
()])
sudo_alias
.
extend
(
role_alias
)
sudo_alias
.
update
(
sudos
)
sudo_chosen_aliase
[
role
.
name
]
=
','
.
join
(
role_alias
)
role_chosen_aliase
[
role
.
name
]
=
sudos
sudo_chosen_obj
=
[
PermSudo
.
objects
.
get
(
name
=
sudo_name
)
for
sudo_name
in
set
(
sudo_alias
)]
add_sudo_script
=
get_add_sudo_script
(
role_chosen_aliase
,
sudo_alias
)
add_sudo_script
=
get_add_sudo_script
(
sudo_chosen_aliase
,
sudo_chosen_obj
)
ret_sudo
=
task
.
push_sudo_file
(
add_sudo_script
)
ret_sudo
=
task
.
push_sudo_file
(
add_sudo_script
)
if
ret_sudo
[
"step1"
]
!=
"ok"
or
ret_sudo
[
"step2"
]
!=
"ok"
:
if
ret_sudo
[
"step1"
]
!=
"ok"
or
ret_sudo
[
"step2"
]
!=
"ok"
:
ret_failed
[
"step3"
]
=
"failed"
ret_failed
[
"step3"
]
=
"failed"
#
os.remove(add_sudo_script)
os
.
remove
(
add_sudo_script
)
print
ret
print
ret
# 结果汇总统计
# 结果汇总统计
if
ret_failed
:
if
ret_failed
:
# 推送失败
# 推送失败
error
=
u"推送失败, 原因:
%
s 失败"
%
','
.
join
(
ret_failed
.
keys
())
error
=
u"推送失败, 原因:
%
s 失败"
%
','
.
join
(
ret_failed
.
keys
())
else
:
else
:
# 推送成功 回写push表
# 推送成功 回写push表
msg
=
u"推送系统角色:
%
s"
%
','
.
join
(
role_
names
)
msg
=
u"推送系统角色:
%
s"
%
','
.
join
(
role_
chosen_aliase
.
keys
()
)
push
=
PermPush
(
is_public_key
=
bool
(
key_push
),
is_password
=
bool
(
password_push
))
push
=
PermPush
(
is_public_key
=
bool
(
key_push
),
is_password
=
bool
(
password_push
))
push
.
save
()
push
.
save
()
push
.
asset_group
=
asset_groups_obj
push
.
asset_group
=
asset_groups_obj
...
@@ -508,16 +483,7 @@ def perm_role_push(request):
...
@@ -508,16 +483,7 @@ def perm_role_push(request):
push
.
role
=
roles_obj
push
.
role
=
roles_obj
push
.
save
()
push
.
save
()
# 渲染 刷新数据
return
my_render
(
'jperm/perm_role_push.html'
,
locals
(),
request
)
header_title
,
path1
,
path2
=
"系统角色"
,
"角色管理"
,
"查看角色"
roles_list
=
PermRole
.
objects
.
all
()
# TODO: 搜索和分页
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
if
keyword
:
roles_list
=
roles_list
.
filter
(
Q
(
name
=
keyword
))
roles_list
,
p
,
roles
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
roles_list
,
request
)
return
my_render
(
'jperm/perm_role_list.html'
,
locals
(),
request
)
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
@@ -553,34 +519,22 @@ def perm_sudo_add(request):
...
@@ -553,34 +519,22 @@ def perm_sudo_add(request):
# 渲染数据
# 渲染数据
header_title
,
path1
,
path2
=
"Sudo命令"
,
"别名管理"
,
"添加别名"
header_title
,
path1
,
path2
=
"Sudo命令"
,
"别名管理"
,
"添加别名"
if
request
.
method
==
"GET"
:
if
request
.
method
==
"POST"
:
return
my_render
(
'jperm/perm_sudo_add.html'
,
locals
(),
request
)
elif
request
.
method
==
"POST"
:
# 获取参数: name, comment
# 获取参数: name, comment
name
=
request
.
POST
.
get
(
"sudo_name"
)
name
=
request
.
POST
.
get
(
"sudo_name"
)
.
strip
()
comment
=
request
.
POST
.
get
(
"sudo_comment"
)
runas
=
request
.
POST
.
get
(
'sudo_runas'
,
'root'
)
.
strip
()
commands
=
request
.
POST
.
get
(
"sudo_commands"
)
comment
=
request
.
POST
.
get
(
"sudo_comment"
)
.
strip
()
commands
=
request
.
POST
.
get
(
"sudo_commands"
)
.
strip
()
sudo
=
PermSudo
(
name
=
name
.
strip
(),
comment
=
comment
,
commands
=
commands
.
strip
())
if
get_object
(
PermSudo
,
name
=
name
):
error
=
'Sudo别名
%
s已经存在'
%
name
else
:
sudo
=
PermSudo
(
name
=
name
.
strip
(),
runas
=
runas
,
comment
=
comment
,
commands
=
commands
.
strip
())
sudo
.
save
()
sudo
.
save
()
msg
=
u"添加Sudo命令别名:
%
s"
%
name
msg
=
u"添加Sudo命令别名:
%
s"
%
name
# 渲染数据
# 渲染数据
header_title
,
path1
,
path2
=
"Sudo命令"
,
"别名管理"
,
"查看别名"
# 获取所有sudo 命令别名
sudos_list
=
PermSudo
.
objects
.
all
()
# TODO: 搜索和分页
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
if
keyword
:
roles_list
=
sudos_list
.
filter
(
Q
(
name
=
keyword
))
sudos_list
,
p
,
sudos
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
sudos_list
,
request
)
return
my_render
(
'jperm/perm_sudo_add.html'
,
locals
(),
request
)
return
my_render
(
'jperm/perm_sudo_list.html'
,
locals
(),
request
)
else
:
return
HttpResponse
(
u"不支持该操作"
)
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
@@ -595,29 +549,21 @@ def perm_sudo_edit(request):
...
@@ -595,29 +549,21 @@ def perm_sudo_edit(request):
sudo_id
=
request
.
GET
.
get
(
"id"
)
sudo_id
=
request
.
GET
.
get
(
"id"
)
sudo
=
PermSudo
.
objects
.
get
(
id
=
sudo_id
)
sudo
=
PermSudo
.
objects
.
get
(
id
=
sudo_id
)
if
request
.
method
==
"GET"
:
return
my_render
(
'jperm/perm_sudo_edit.html'
,
locals
(),
request
)
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
name
=
request
.
POST
.
get
(
"sudo_name"
)
name
=
request
.
POST
.
get
(
"sudo_name"
)
commands
=
request
.
POST
.
get
(
"sudo_commands"
)
commands
=
request
.
POST
.
get
(
"sudo_commands"
)
runas
=
request
.
POST
.
get
(
'sudo_runas'
,
'root'
)
comment
=
request
.
POST
.
get
(
"sudo_comment"
)
comment
=
request
.
POST
.
get
(
"sudo_comment"
)
sudo
.
name
=
name
.
strip
()
sudo
.
name
=
name
.
strip
()
sudo
.
commands
=
commands
.
strip
()
sudo
.
commands
=
commands
.
strip
()
sudo
.
runas
=
runas
.
strip
()
sudo
.
comment
=
comment
sudo
.
comment
=
comment
sudo
.
save
()
sudo
.
save
()
msg
=
u"更新命令别名:
%
s"
%
name
msg
=
u"更新命令别名:
%
s"
%
name
# 渲染数据
header_title
,
path1
,
path2
=
"Sudo命令"
,
"别名管理"
,
"查看别名"
return
my_render
(
'jperm/perm_sudo_edit.html'
,
locals
(),
request
)
# 获取所有sudo 命令别名
sudos_list
=
PermSudo
.
objects
.
all
()
# TODO: 搜索和分页
keyword
=
request
.
GET
.
get
(
'search'
,
''
)
if
keyword
:
sudos_list
=
sudos_list
.
filter
(
Q
(
name
=
keyword
))
sudos_list
,
p
,
sudos
,
page_range
,
current_page
,
show_first
,
show_end
=
pages
(
sudos_list
,
request
)
return
my_render
(
'jperm/perm_sudo_list.html'
,
locals
(),
request
)
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
...
This diff is collapsed.
Click to expand it.
run_websocket.py
View file @
4d844548
...
@@ -250,6 +250,7 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler):
...
@@ -250,6 +250,7 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler):
if
asset
:
if
asset
:
roles
=
user_have_perm
(
self
.
user
,
asset
)
roles
=
user_have_perm
(
self
.
user
,
asset
)
logger
.
debug
(
roles
)
logger
.
debug
(
roles
)
logger
.
debug
(
'rolename:
%
s'
%
role_name
)
login_role
=
''
login_role
=
''
for
role
in
roles
:
for
role
in
roles
:
if
role
.
name
==
role_name
:
if
role
.
name
==
role_name
:
...
...
This diff is collapsed.
Click to expand it.
templates/jasset/asset_list.html
View file @
4d844548
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
<div
class=
"col-sm-7"
style=
"padding-left: 0px"
>
<div
class=
"col-sm-7"
style=
"padding-left: 0px"
>
<label>
<label>
<select
name=
"idc"
class=
"form-control m-b"
onchange=
"change_info()"
>
<select
name=
"idc"
class=
"form-control m-b"
onchange=
"change_info()"
>
<option
value=
""
>
IDC
机房
</option>
<option
value=
""
>
机房
</option>
{% for idc in idc_all %}
{% for idc in idc_all %}
{% ifequal idc.name idc_name %}
{% ifequal idc.name idc_name %}
<option
value=
"{{idc.name}}"
selected
>
{{ idc.name }}
</option>
<option
value=
"{{idc.name}}"
selected
>
{{ idc.name }}
</option>
...
@@ -57,7 +57,7 @@
...
@@ -57,7 +57,7 @@
<label>
<label>
<select
name=
"asset_type"
class=
"form-control m-b"
onchange=
"change_info()"
>
<select
name=
"asset_type"
class=
"form-control m-b"
onchange=
"change_info()"
>
<option
value=
""
>
所有
类型
</option>
<option
value=
""
>
资产
类型
</option>
{% for type in asset_types %}
{% for type in asset_types %}
{% ifequal type.0|int2str asset_type %}
{% ifequal type.0|int2str asset_type %}
<option
value=
"{{ type.0 }}"
selected
>
{{ type.1 }}
</option>
<option
value=
"{{ type.0 }}"
selected
>
{{ type.1 }}
</option>
...
@@ -70,7 +70,7 @@
...
@@ -70,7 +70,7 @@
<label>
<label>
<select
name=
"status"
class=
"form-control m-b"
onchange=
"change_info()"
>
<select
name=
"status"
class=
"form-control m-b"
onchange=
"change_info()"
>
<option
value=
""
>
所有
状态
</option>
<option
value=
""
>
资产
状态
</option>
{% for s in asset_status %}
{% for s in asset_status %}
{% ifequal s.0|int2str status %}
{% ifequal s.0|int2str status %}
<option
value=
"{{ s.0 }}"
selected
>
{{ s.1 }}
</option>
<option
value=
"{{ s.0 }}"
selected
>
{{ s.1 }}
</option>
...
@@ -215,7 +215,7 @@
...
@@ -215,7 +215,7 @@
maxmin
:
true
,
maxmin
:
true
,
shade
:
false
,
shade
:
false
,
area
:
[
'628px'
,
'452px'
],
area
:
[
'628px'
,
'452px'
],
content
:
new_url
content
:
new_url
+
data
});
});
//window.open(new_url + data, '', 'location=no, resizeable=no, height=410, width=625, top=89px, left=99px,toolbar=no,menubar=no,scrollbars=auto,status=no');
//window.open(new_url + data, '', 'location=no, resizeable=no, height=410, width=625, top=89px, left=99px,toolbar=no,menubar=no,scrollbars=auto,status=no');
}
else
if
(
dataArray
.
length
==
'1'
&&
data
==
'error'
){
}
else
if
(
dataArray
.
length
==
'1'
&&
data
==
'error'
){
...
...
This diff is collapsed.
Click to expand it.
templates/jasset/idc_list.html
View file @
4d844548
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
</div>
</div>
<div
class=
"ibox-content"
>
<div
class=
"ibox-content"
>
<div
class=
""
>
<div
class=
""
>
<a
target=
"_blank"
href=
"/jasset/idc_add"
class=
"btn btn-sm btn-primary "
>
添加
IDC
</a>
<a
target=
"_blank"
href=
"/jasset/idc_add"
class=
"btn btn-sm btn-primary "
>
添加
机房
</a>
<input
type=
"button"
id=
"del_check"
class=
"btn btn-danger btn-sm"
name=
"del_button"
value=
"删除所选"
/>
<input
type=
"button"
id=
"del_check"
class=
"btn btn-danger btn-sm"
name=
"del_button"
value=
"删除所选"
/>
<form
id=
"search_form"
method=
"get"
action=
""
class=
"pull-right mail-search"
>
<form
id=
"search_form"
method=
"get"
action=
""
class=
"pull-right mail-search"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
...
...
This diff is collapsed.
Click to expand it.
templates/jlog/log_online.html
View file @
4d844548
...
@@ -97,7 +97,7 @@
...
@@ -97,7 +97,7 @@
<td
class=
"text-center"
>
{{ post.login_type }}
</td>
<td
class=
"text-center"
>
{{ post.login_type }}
</td>
<td
class=
"text-center"
><a
href=
"/jlog/history/?id={{ post.id }}"
class=
"log_command"
>
统计
</a></td>
<td
class=
"text-center"
><a
href=
"/jlog/history/?id={{ post.id }}"
class=
"log_command"
>
统计
</a></td>
<td
class=
"text-center"
><a
class=
"monitor"
file_path=
"{{ post.log_path }}"
>
监控
</a></td>
<td
class=
"text-center"
><a
class=
"monitor"
file_path=
"{{ post.log_path }}"
>
监控
</a></td>
<td
class=
"text-center"
><input
type=
"button"
id=
"cut"
class=
"btn btn-danger btn-xs"
name=
"cut"
value=
"阻断"
onclick=
'cut("{{ post.pid }}", "{{ post.
remote_ip
}}")'
/></td>
<td
class=
"text-center"
><input
type=
"button"
id=
"cut"
class=
"btn btn-danger btn-xs"
name=
"cut"
value=
"阻断"
onclick=
'cut("{{ post.pid }}", "{{ post.
login_type
}}")'
/></td>
<td
class=
"text-center"
id=
"start_time"
>
{{ post.start_time|date:"Y-m-d H:i:s" }}
</td>
<td
class=
"text-center"
id=
"start_time"
>
{{ post.start_time|date:"Y-m-d H:i:s" }}
</td>
</tr>
</tr>
{% endfor %}
{% endfor %}
...
@@ -189,9 +189,9 @@
...
@@ -189,9 +189,9 @@
});
});
});
});
function
cut
(
num
,
host
){
function
cut
(
num
,
login_type
){
console
.
log
(
host
);
console
.
log
(
login_type
);
if
(
host
==
'W
eb'
){
if
(
login_type
==
'w
eb'
){
var
g_url
=
'{{ web_kill_uri }}'
+
'?id='
+
num
;
var
g_url
=
'{{ web_kill_uri }}'
+
'?id='
+
num
;
}
else
{
}
else
{
var
g_url
=
"/jlog/log_kill/?id="
+
num
;
var
g_url
=
"/jlog/log_kill/?id="
+
num
;
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/perm_role_add.html
View file @
4d844548
...
@@ -56,11 +56,11 @@
...
@@ -56,11 +56,11 @@
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"sudo"
class=
"col-sm-2 control-label"
>
角色Sudo命令
<
span
class=
"red-fonts"
>
*
</span><
/label>
<label
for=
"sudo"
class=
"col-sm-2 control-label"
>
角色Sudo命令
</label>
<div
class=
"col-sm-8"
id=
"sudo_name"
>
<div
class=
"col-sm-8"
id=
"sudo_name"
>
<select
name=
"sudo_name"
data-placeholder=
"请选择Sudo别名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"sudo_name"
data-placeholder=
"请选择Sudo别名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for sudo in sudos %}
{% for sudo in sudos %}
<option
>
{{ sudo.name }}
</option>
<option
value=
"{{ sudo.id }}"
>
{{ sudo.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -93,9 +93,9 @@ $('#roleForm').validator({
...
@@ -93,9 +93,9 @@ $('#roleForm').validator({
theme
:
"yellow_right_effect"
,
theme
:
"yellow_right_effect"
,
rules
:
{
rules
:
{
check_name
:
[
/^
\w{2,20}
$/
,
'大小写字母数字和下划线,2-20位'
],
check_name
:
[
/^
\w{2,20}
$/
,
'大小写字母数字和下划线,2-20位'
],
either
:
function
(){
{
#
either
:
function
(){
#
}
return
$
(
'#role_password'
).
val
()
==
''
{
#
return
$
(
'#role_password'
).
val
()
==
''
#
}
}
{
#
}
#
}
},
},
fields
:
{
fields
:
{
...
@@ -105,12 +105,12 @@ $('#roleForm').validator({
...
@@ -105,12 +105,12 @@ $('#roleForm').validator({
ok
:
""
,
ok
:
""
,
msg
:
{
required
:
"角色名称必填"
}
msg
:
{
required
:
"角色名称必填"
}
},
},
"role_key"
:
{
{
#
"role_key"
:
{
#
}
rule
:
"required(either)"
,
{
#
rule
:
"required(either)"
,
#
}
tip
:
"输入密钥"
,
{
#
tip
:
"输入密钥"
,
#
}
ok
:
""
,
{
#
ok
:
""
,
#
}
msg
:
{
required
:
"密码和密钥必填一个!"
}
{
#
msg
:
{
required
:
"密码和密钥必填一个!"
}
#
}
}
{
#
}
#
}
},
},
valid
:
function
(
form
)
{
valid
:
function
(
form
)
{
form
.
submit
();
form
.
submit
();
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/perm_role_edit.html
View file @
4d844548
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"sudo_name"
data-placeholder=
"请选择Sudo别名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"sudo_name"
data-placeholder=
"请选择Sudo别名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for sudo in sudo_all %}
{% for sudo in sudo_all %}
<option
value=
"{{ sudo.
name
}}"
{%
if
sudo
in
role_sudos
%}
selected
{%
endif
%}
>
{{ sudo.name }}
</option>
<option
value=
"{{ sudo.
id
}}"
{%
if
sudo
in
role_sudos
%}
selected
{%
endif
%}
>
{{ sudo.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/perm_role_list.html
View file @
4d844548
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
<div
class=
"ibox-content"
>
<div
class=
"ibox-content"
>
<div
class=
""
>
<div
class=
""
>
<a
href=
"/jperm/role/perm_role_add/"
class=
"btn btn-sm btn-primary "
>
添加角色
</a>
<a
href=
"/jperm/role/perm_role_add/"
class=
"btn btn-sm btn-primary "
>
添加角色
</a>
<a
href=
"/jperm/role/perm_role_push/"
class=
"btn btn-sm btn-
primary
"
>
推送角色
</a>
<a
href=
"/jperm/role/perm_role_push/"
class=
"btn btn-sm btn-
danger
"
>
推送角色
</a>
<form
id=
"search_form"
method=
"get"
action=
""
class=
"pull-right mail-search"
>
<form
id=
"search_form"
method=
"get"
action=
""
class=
"pull-right mail-search"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<input
type=
"text"
class=
"form-control input-sm"
id=
"search_input"
name=
"search"
placeholder=
"Search"
>
<input
type=
"text"
class=
"form-control input-sm"
id=
"search_input"
name=
"search"
placeholder=
"Search"
>
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/perm_role_push.html
View file @
4d844548
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
</div>
</div>
</div>
</div>
<div
class=
"ibox-content"
>
<div
class=
"ibox-content"
>
<form
method=
"post"
id=
"
user
Form"
class=
"form-horizontal"
action=
""
>
<form
method=
"post"
id=
"
push
Form"
class=
"form-horizontal"
action=
""
>
{% if error %}
{% if error %}
<div
class=
"alert alert-warning text-center"
>
{{ error }}
</div>
<div
class=
"alert alert-warning text-center"
>
{{ error }}
</div>
{% endif %}
{% endif %}
...
@@ -34,22 +34,22 @@
...
@@ -34,22 +34,22 @@
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
{% endif %}
{% endif %}
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"asset"
class=
"col-sm-2 control-label"
>
资产
<
span
class=
"red-fonts"
>
*
</span><
/label>
<label
for=
"asset"
class=
"col-sm-2 control-label"
>
资产
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"assets"
data-placeholder=
"请选择资产"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"assets"
id=
"assets"
data-placeholder=
"请选择资产"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for asset in assets %}
{% for asset in assets %}
<option
value=
"{{ asset.i
p
}}"
>
{{ asset.ip }}
</option>
<option
value=
"{{ asset.i
d
}}"
>
{{ asset.ip }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"assetgroup"
class=
"col-sm-2 control-label"
>
资产组
<
span
class=
"red-fonts"
>
*
</span><
/label>
<label
for=
"assetgroup"
class=
"col-sm-2 control-label"
>
资产组
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"asset_groups"
data-placeholder=
"请选择资产组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"asset_groups"
data-placeholder=
"请选择资产组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for asset_group in asset_groups %}
{% for asset_group in asset_groups %}
<option
value=
"{{ asset_group.
name
}}"
>
{{ asset_group.name }}
</option>
<option
value=
"{{ asset_group.
id
}}"
>
{{ asset_group.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -60,7 +60,7 @@
...
@@ -60,7 +60,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"roles"
data-placeholder=
"请选择角色"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"roles"
data-placeholder=
"请选择角色"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for role in roles %}
{% for role in roles %}
<option
value=
"{{ role.
name
}}"
>
{{ role.name }}
</option>
<option
value=
"{{ role.
id
}}"
>
{{ role.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -68,11 +68,11 @@
...
@@ -68,11 +68,11 @@
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用
秘
钥
</label>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用
密
钥
</label>
<div
class=
"col-sm-1"
>
<div
class=
"col-sm-1"
>
<div
class=
"radio i-checks"
>
<div
class=
"radio i-checks"
>
<label>
<label>
<input
type=
"checkbox"
value=
"1"
id=
"use_publicKey"
name=
"use_publicKey"
>
<input
type=
"checkbox"
value=
"1"
id=
"use_publicKey"
name=
"use_publicKey"
checked
>
</label>
</label>
</div>
</div>
</div>
</div>
...
@@ -111,37 +111,33 @@
...
@@ -111,37 +111,33 @@
{% endblock %}
{% endblock %}
{% block self_footer_js %}
{% block self_footer_js %}
<script>
<script>
$
(
document
).
ready
(
function
(){
$
(
'#pushForm'
).
validator
({
$
(
"input.role"
).
click
(
function
(){
timely
:
2
,
if
(
$
(
"input.role[value=GA]"
).
is
(
":checked"
)){
theme
:
"yellow_right_effect"
,
$
(
"#admin_groups"
).
css
(
"display"
,
'none'
);
rules
:
{
check_name
:
[
/^
\w{2,20}
$/
,
'大小写字母数字和下划线,2-20位'
],
check_asset
:
function
(){
return
$
(
'#assets'
).
val
()
==
null
}
}
else
{
},
fields
:
{
$
(
"#admin_groups"
).
css
(
"display"
,
'block'
);
"asset_groups"
:
{
}
rule
:
"required(check_asset)"
,
});
tip
:
"输入资产组"
,
msg
:
{
required
:
"资产和资产组必选一个!"
}
$
(
'#use_password'
).
click
(
function
(){
},
if
(
$
(
this
).
is
(
':checked'
)){
"roles"
:
{
$
(
'#admin_account_password'
).
css
(
'display'
,
'block'
)
rule
:
"required"
,
tip
:
"请选择角色"
,
msg
:
{
required
:
"必须选择角色"
}
}
}
else
{
},
valid
:
function
(
form
)
{
$
(
'#admin_account_password'
).
css
(
'display'
,
'none'
)
form
.
submit
();
}
}
});
});
$
(
'#use_publicKey'
).
click
(
function
(){
if
(
$
(
this
).
is
(
':checked'
)){
$
(
'#admin_account_publicKey'
).
css
(
'display'
,
'block'
)
}
else
{
$
(
'#admin_account_publicKey'
).
css
(
'display'
,
'none'
)
}
});
});
var
config
=
{
var
config
=
{
'.chosen-select'
:
{},
'.chosen-select'
:
{},
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/perm_rule_add.html
View file @
4d844548
...
@@ -44,9 +44,8 @@
...
@@ -44,9 +44,8 @@
<label
for=
"user"
class=
"col-sm-2 control-label"
>
用户
</label>
<label
for=
"user"
class=
"col-sm-2 control-label"
>
用户
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"user"
id=
"user"
data-placeholder=
"用户名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"user"
id=
"user"
data-placeholder=
"用户名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for user in users %}
{% for user in users %}
<option>
{{ user.name }}
</option>
<option
value=
"{{ user.id }}"
>
{{ user.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
<span
class=
"help-block m-b-none"
>
用户和用户组必选一个
</span>
<span
class=
"help-block m-b-none"
>
用户和用户组必选一个
</span>
...
@@ -58,7 +57,7 @@
...
@@ -58,7 +57,7 @@
<select
name=
"usergroup"
id=
"usergroup"
data-placeholder=
"请选择用户组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"usergroup"
id=
"usergroup"
data-placeholder=
"请选择用户组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for user_group in user_groups %}
{% for user_group in user_groups %}
<option
value=
"{{ user_group.
name
}}"
>
{{ user_group.name }}
</option>
<option
value=
"{{ user_group.
id
}}"
>
{{ user_group.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -69,7 +68,7 @@
...
@@ -69,7 +68,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"asset"
id=
"asset"
data-placeholder=
"请选择资产"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"asset"
id=
"asset"
data-placeholder=
"请选择资产"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for asset in assets %}
{% for asset in assets %}
<option
value=
"{{ asset.i
p
}}"
>
{{ asset.ip }}
</option>
<option
value=
"{{ asset.i
d
}}"
>
{{ asset.ip }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
<span
class=
"help-block m-b-none"
>
资产和资产组必选一个
</span>
<span
class=
"help-block m-b-none"
>
资产和资产组必选一个
</span>
...
@@ -80,7 +79,7 @@
...
@@ -80,7 +79,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"assetgroup"
data-placeholder=
"请选择资产组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"assetgroup"
data-placeholder=
"请选择资产组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for asset_group in asset_groups %}
{% for asset_group in asset_groups %}
<option
value=
"{{ asset_group.
name
}}"
>
{{ asset_group.name }}
</option>
<option
value=
"{{ asset_group.
id
}}"
>
{{ asset_group.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -91,7 +90,7 @@
...
@@ -91,7 +90,7 @@
<div
class=
"col-sm-8"
id=
"role_name"
>
<div
class=
"col-sm-8"
id=
"role_name"
>
<select
name=
"role"
data-placeholder=
"请选择角色"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"role"
data-placeholder=
"请选择角色"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for role in roles %}
{% for role in roles %}
<option
value=
"{{ role.
name
}}"
>
{{ role.name }}
</option>
<option
value=
"{{ role.
id
}}"
>
{{ role.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/perm_rule_edit.html
View file @
4d844548
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"user"
data-placeholder=
"用户名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"user"
data-placeholder=
"用户名"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for user in users %}
{% for user in users %}
<option
value=
"{{ user.
name
}}"
{%
if
user
in
users_select
%}
selected
{%
endif
%}
>
{{ user.name }}
</option>
<option
value=
"{{ user.
id
}}"
{%
if
user
in
users_select
%}
selected
{%
endif
%}
>
{{ user.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"usergroup"
data-placeholder=
"请选择用户组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"usergroup"
data-placeholder=
"请选择用户组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for user_group in user_groups %}
{% for user_group in user_groups %}
<option
value=
"{{ user_group.
name }}"
{%
if
user_group
in
users
_groups_select
%}
selected
{%
endif
%}
>
{{ user_group.name }}
</option>
<option
value=
"{{ user_group.
id }}"
{%
if
user_group
in
user
_groups_select
%}
selected
{%
endif
%}
>
{{ user_group.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -67,7 +67,7 @@
...
@@ -67,7 +67,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"asset"
data-placeholder=
"请选择资产"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"asset"
data-placeholder=
"请选择资产"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for asset in assets %}
{% for asset in assets %}
<option
value=
"{{ asset.i
p
}}"
{%
if
asset
in
assets_select
%}
selected
{%
endif
%}
>
{{ asset.ip }}
</option>
<option
value=
"{{ asset.i
d
}}"
{%
if
asset
in
assets_select
%}
selected
{%
endif
%}
>
{{ asset.ip }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -78,7 +78,7 @@
...
@@ -78,7 +78,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"assetgroup"
data-placeholder=
"请选择资产组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"assetgroup"
data-placeholder=
"请选择资产组"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for asset_group in asset_groups %}
{% for asset_group in asset_groups %}
<option
value=
"{{ asset_group.
name
}}"
{%
if
asset_group
in
asset_groups_select
%}
selected
{%
endif
%}
>
{{ asset_group.name }}
</option>
<option
value=
"{{ asset_group.
id
}}"
{%
if
asset_group
in
asset_groups_select
%}
selected
{%
endif
%}
>
{{ asset_group.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -89,7 +89,7 @@
...
@@ -89,7 +89,7 @@
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"role"
data-placeholder=
"请选择角色"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
<select
name=
"role"
data-placeholder=
"请选择角色"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for role in roles %}
{% for role in roles %}
<option
value=
"{{ role.
name
}}"
{%
if
role
in
roles_select
%}
selected
{%
endif
%}
>
{{ role.name }}
</option>
<option
value=
"{{ role.
id
}}"
{%
if
role
in
roles_select
%}
selected
{%
endif
%}
>
{{ role.name }}
</option>
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
...
@@ -118,37 +118,6 @@
...
@@ -118,37 +118,6 @@
{% endblock %}
{% endblock %}
{% block self_footer_js %}
{% block self_footer_js %}
<script>
<script>
$
(
document
).
ready
(
function
(){
$
(
"input.role"
).
click
(
function
(){
if
(
$
(
"input.role[value=GA]"
).
is
(
":checked"
)){
$
(
"#admin_groups"
).
css
(
"display"
,
'none'
);
}
else
{
$
(
"#admin_groups"
).
css
(
"display"
,
'block'
);
}
});
$
(
'#use_password'
).
click
(
function
(){
if
(
$
(
this
).
is
(
':checked'
)){
$
(
'#admin_account_password'
).
css
(
'display'
,
'block'
)
}
else
{
$
(
'#admin_account_password'
).
css
(
'display'
,
'none'
)
}
});
$
(
'#use_publicKey'
).
click
(
function
(){
if
(
$
(
this
).
is
(
':checked'
)){
$
(
'#admin_account_publicKey'
).
css
(
'display'
,
'block'
)
}
else
{
$
(
'#admin_account_publicKey'
).
css
(
'display'
,
'none'
)
}
});
});
var
config
=
{
var
config
=
{
'.chosen-select'
:
{},
'.chosen-select'
:
{},
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/perm_sudo_add.html
View file @
4d844548
...
@@ -36,9 +36,17 @@
...
@@ -36,9 +36,17 @@
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"sudo_
commands_label"
class=
"col-sm-2 control-label"
>
系统命令
<span
class=
"red-fonts"
>
*
</span></label>
<label
for=
"sudo_
runas"
class=
"col-sm-2 control-label"
>
RunAs
<span
class=
"red-fonts"
>
*
</span></label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<textarea
id=
"sudo_commands"
name=
"sudo_commands"
class=
"form-control"
rows=
"3"
></textarea>
<input
id=
"sudo_runas"
name=
"sudo_runas"
placeholder=
"Sudo RunAs User"
type=
"text"
class=
"form-control"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
"sudo_commands"
class=
"col-sm-2 control-label"
>
系统命令
<span
class=
"red-fonts"
>
*
</span></label>
<div
class=
"col-sm-8"
>
<textarea
id=
"sudo_commands"
name=
"sudo_commands"
class=
"form-control"
rows=
"3"
placeholder=
"/bin/grep, /bin/find"
></textarea>
<span
class=
"help-block m-b-none"
>
sudo命令,逗号分隔, 不支持换行
</span>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
...
@@ -64,7 +72,28 @@
...
@@ -64,7 +72,28 @@
{% endblock %}
{% endblock %}
{% block self_footer_js %}
{% block self_footer_js %}
<script>
<script>
$
(
'#sudoForm'
).
validator
({
timely
:
2
,
theme
:
"yellow_right_effect"
,
rules
:
{
check_name
:
[
/^
\w{2,20}
$/
,
'大小写字母数字和下划线,2-20位'
]
},
fields
:
{
"sudo_name"
:
{
rule
:
"required;check_name"
},
"sudo_runas"
:
{
rule
:
"required;check_name"
},
"sudo_commands"
:
{
rule
:
"required"
}
},
valid
:
function
(
form
)
{
form
.
submit
();
}
});
</script>
</script>
{% endblock %}
{% endblock %}
This diff is collapsed.
Click to expand it.
templates/jperm/perm_sudo_edit.html
View file @
4d844548
...
@@ -40,6 +40,13 @@
...
@@ -40,6 +40,13 @@
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<label
for=
"sudo_runas"
class=
"col-sm-2 control-label"
>
RunAs
<span
class=
"red-fonts"
>
*
</span></label>
<div
class=
"col-sm-8"
>
<input
id=
"sudo_runas"
name=
"sudo_runas"
placeholder=
"Sudo RunAs User"
type=
"text"
class=
"form-control"
value=
"{{ sudo.runas }}"
>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"sudo_commands_label"
class=
"col-sm-2 control-label"
>
系统命令
<span
class=
"red-fonts"
>
*
</span></label>
<label
for=
"sudo_commands_label"
class=
"col-sm-2 control-label"
>
系统命令
<span
class=
"red-fonts"
>
*
</span></label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/role_sudo.j2
View file @
4d844548
...
@@ -6,7 +6,7 @@ sudo_file=/etc/sudoers
...
@@ -6,7 +6,7 @@ sudo_file=/etc/sudoers
# Add Command Aliases
# Add Command Aliases
add_cmd_alias
()
{
add_cmd_alias
()
{
{
%
for
sudo
in
sudo_
chosen_obj
%
}
{
%
for
sudo
in
sudo_
alias
%
}
if
$(
grep
'^Cmnd_Alias {{ sudo.name }}'
${
sudo_file
}
&> /dev/null
)
;
then
if
$(
grep
'^Cmnd_Alias {{ sudo.name }}'
${
sudo_file
}
&> /dev/null
)
;
then
sed
-i
's@^Cmnd_Alias.*{{ sudo.name }}.*@Cmnd_Alias {{ sudo.name }} = {{ sudo.commands }}@g'
${
sudo_file
}
sed
-i
's@^Cmnd_Alias.*{{ sudo.name }}.*@Cmnd_Alias {{ sudo.name }} = {{ sudo.commands }}@g'
${
sudo_file
}
else
else
...
@@ -17,13 +17,15 @@ add_cmd_alias() {
...
@@ -17,13 +17,15 @@ add_cmd_alias() {
add_role_chosen
()
{
add_role_chosen
()
{
{
%
for
role,
alias
in
sudo_chosen_aliase.items %
}
{
%
for
role, sudos
in
role_chosen_aliase.items %
}
if
$(
grep
'^{{ role }}'
${
sudo_file
}
&> /dev/null
)
;
then
{
%
for
sudo
in
sudos %
}
sed
-i
's@^{{ role }}.*@{{ role }} ALL = {{ alias }}@g'
${
sudo_file
}
if
$(
grep
'^{{ role }}.*sudo.name'
${
sudo_file
}
&> /dev/null
)
;
then
sed
-i
's@^{{ role }}.*sudo.name@{{ role }} ALL = ({{ sudo.runas }}) NOPASSWD: {{ sudo.name }}@g'
${
sudo_file
}
else
else
echo
"{{ role }} ALL = {{ alias
}}"
>>
${
sudo_file
}
echo
"{{ role }} ALL = ({{ sudo.runas }}) NOPASSWD: {{ sudo.name
}}"
>>
${
sudo_file
}
fi
fi
{
% endfor %
}
{
% endfor %
}
{
% endfor %
}
}
}
...
...
This diff is collapsed.
Click to expand it.
templates/nav.html
View file @
4d844548
...
@@ -28,14 +28,12 @@
...
@@ -28,14 +28,12 @@
<a
href=
"/jperm/rule/"
>
授权规则
</a>
<a
href=
"/jperm/rule/"
>
授权规则
</a>
</li>
</li>
<li
class=
"
sudo_list sudo_edit sudo_add cmd_list cmd_edit cmd_add sudo_detail
"
>
<li
class=
"
role
"
>
<a
href=
"/jperm/role/"
>
系统角色
</a>
<a
href=
"/jperm/role/"
>
系统角色
</a>
</li>
</li>
<li
class=
"sudo
_list sudo_edit sudo_add cmd_list cmd_edit cmd_add sudo_detail
"
>
<li
class=
"sudo"
>
<a
href=
"/jperm/sudo/"
>
Sudo命令
</a>
<a
href=
"/jperm/sudo/"
>
Sudo命令
</a>
</li>
</li>
<li
class=
"apply_show online"
><a
href=
"/jperm/apply_show/online/"
>
权限审批
</a></li>
<li
class=
"apply_show online"
><a
href=
"/jperm/log/"
>
授权记录
</a></li>
</ul>
</ul>
</li>
</li>
...
...
This diff is collapsed.
Click to expand it.
templates/setting.html
View file @
4d844548
...
@@ -45,25 +45,26 @@
...
@@ -45,25 +45,26 @@
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
{% endif %}
{% endif %}
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"username"
class=
"col-sm-2 control-label"
>
默认
用户名
<span
class=
"red-fonts"
>
*
</span></label>
<label
for=
"username"
class=
"col-sm-2 control-label"
>
默认
管理用户
<span
class=
"red-fonts"
>
*
</span></label>
<input
name=
"setting"
value=
"default"
style=
"display: none"
>
<input
name=
"setting"
value=
"default"
style=
"display: none"
>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<input
id=
"username"
name=
"username"
placeholder=
"Username"
type=
"text"
value=
"{{ setting_default.field1 }}"
class=
"form-control"
>
<input
id=
"username"
name=
"username"
placeholder=
"Username"
type=
"text"
value=
"{{ setting_default.field1 }}"
class=
"form-control"
>
<span
class=
"help-block m-b-none"
>
该用户为root或用户NOPASS:ALL sudo权限的用户
</span>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"
port"
class=
"col-sm-2 control-label"
>
默认ssh端口
<span
class=
"red-fonts"
>
*
</span>
</label>
<label
for=
"
key"
class=
"col-sm-2 control-label"
>
默认密码
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<input
id=
"port"
name=
"port"
placeholder=
"Port"
type=
"text"
value=
"{{ setting_default.field2 }}"
class=
"form-control"
>
<input
id=
"password"
name=
"password"
placeholder=
"Password"
type=
"password"
class=
"form-control"
>
<span
class=
"help-block m-b-none"
>
如果不修改密码,请留空
</span>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"
key"
class=
"col-sm-2 control-label"
>
默认密码
</label>
<label
for=
"
port"
class=
"col-sm-2 control-label"
>
默认ssh端口
<span
class=
"red-fonts"
>
*
</span>
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<input
id=
"password"
name=
"password"
placeholder=
"Password"
type=
"password"
class=
"form-control"
>
<input
id=
"port"
name=
"port"
placeholder=
"Port"
type=
"text"
value=
"{{ setting_default.field2 }}"
class=
"form-control"
>
<span
class=
"help-block m-b-none"
>
如果不修改密码,请留空
</span>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
...
@@ -118,7 +119,7 @@
...
@@ -118,7 +119,7 @@
fields
:
{
fields
:
{
"username"
:
{
"username"
:
{
rule
:
"required;check_name"
,
rule
:
"required;check_name"
,
tip
:
"输入用户名"
,
tip
:
"输入
管理
用户名"
,
ok
:
""
,
ok
:
""
,
msg
:
{
required
:
"用户名称必填"
}
msg
:
{
required
:
"用户名称必填"
}
},
},
...
...
This diff is collapsed.
Click to expand it.
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