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
83c2704d
Commit
83c2704d
authored
Nov 14, 2015
by
yumaojun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. update role push
parent
74b6b4de
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
67 additions
and
4 deletions
+67
-4
models.py
jperm/models.py
+1
-1
views.py
jperm/views.py
+40
-0
perm_role_push.html
templates/jperm/perm_role_push.html
+26
-3
No files found.
jperm/models.py
View file @
83c2704d
...
@@ -20,7 +20,7 @@ class SysUser(models.Model):
...
@@ -20,7 +20,7 @@ class SysUser(models.Model):
class
PermRole
(
models
.
Model
):
class
PermRole
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
100
)
name
=
models
.
CharField
(
max_length
=
100
,
unique
=
True
)
comment
=
models
.
CharField
(
max_length
=
100
,
null
=
True
,
blank
=
True
,
default
=
''
)
comment
=
models
.
CharField
(
max_length
=
100
,
null
=
True
,
blank
=
True
,
default
=
''
)
password
=
models
.
CharField
(
max_length
=
100
)
password
=
models
.
CharField
(
max_length
=
100
)
key_path
=
models
.
CharField
(
max_length
=
100
)
key_path
=
models
.
CharField
(
max_length
=
100
)
...
...
jperm/views.py
View file @
83c2704d
...
@@ -344,6 +344,46 @@ def perm_role_push(request):
...
@@ -344,6 +344,46 @@ def perm_role_push(request):
return
my_render
(
'jperm/perm_role_push.html'
,
render_data
,
request
)
return
my_render
(
'jperm/perm_role_push.html'
,
render_data
,
request
)
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
# 获取推荐角色的名称列表
role_names
=
request
.
POST
.
getlist
(
"roles"
)
# 计算出需要推送的资产列表
asset_ips
=
request
.
POST
.
getlist
(
"assets"
)
asset_group_names
=
request
.
POST
.
getlist
(
"asset_groups"
)
assets_obj
=
[
Asset
.
objects
.
get
(
ip
=
asset_ip
)
for
asset_ip
in
asset_ips
]
asset_groups_obj
=
[
AssetGroup
.
objects
.
get
(
name
=
asset_group_name
)
for
asset_group_name
in
asset_group_names
]
group_assets_obj
=
[]
for
asset_group
in
asset_groups_obj
:
group_assets_obj
.
extend
(
asset_group
.
asset_set
.
all
())
calc_assets
=
set
(
assets_obj
)
|
set
(
group_assets_obj
)
# 生成Inventory
hosts
=
[{
"hostname"
:
asset
.
ip
,
"port"
:
asset
.
port
,
"username"
:
asset
.
username
,
"password"
:
asset
.
password
}
for
asset
in
calc_assets
]
# 获取角色的推送方式,以及推送需要的信息
roles_obj
=
[
PermRole
.
objects
.
get
(
name
=
role_name
)
for
role_name
in
role_names
]
roles_info
=
{}
for
role
in
roles_obj
:
roles_info
[
role
.
name
]
=
{
"password"
:
role
.
password
,
"key"
:
role
.
key_path
}
# 推送
password_push
=
request
.
POST
.
get
(
"use_password"
)
key_push
=
request
.
POST
.
get
(
"use_publicKey"
)
if
password_push
:
pass
if
key_push
:
pass
# 调用Ansible API 执行 password方式的授权 TODO: Surport sudo
# tasks = Tasks(hosts)
# ret = tasks.add_multi_user(*role_names)
return
HttpResponse
(
u"未实现"
)
return
HttpResponse
(
u"未实现"
)
...
...
templates/jperm/perm_role_push.html
View file @
83c2704d
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
<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"
>
资产
<span
class=
"red-fonts"
>
*
</span></label>
<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
s
"
data-placeholder=
"请选择资产"
class=
"chosen-select form-control m-b"
multiple
tabindex=
"2"
>
{% for asset in assets %}
{% for asset in assets %}
<option
value=
"{{ asset.ip }}"
>
{{ asset.ip }}
</option>
<option
value=
"{{ asset.ip }}"
>
{{ asset.ip }}
</option>
{% endfor %}
{% endfor %}
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
<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"
>
资产组
<span
class=
"red-fonts"
>
*
</span></label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
<select
name=
"asset
group
"
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.name }}"
>
{{ asset_group.name }}
</option>
{% endfor %}
{% endfor %}
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"role"
class=
"col-sm-2 control-label"
>
角色
<span
class=
"red-fonts"
>
*
</span></label>
<label
for=
"role"
class=
"col-sm-2 control-label"
>
角色
<span
class=
"red-fonts"
>
*
</span></label>
<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
s
"
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.name }}"
>
{{ role.name }}
</option>
{% endfor %}
{% endfor %}
...
@@ -66,6 +66,29 @@
...
@@ -66,6 +66,29 @@
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"row"
>
<div
class=
"form-group"
>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用密码
</label>
<div
class=
"col-sm-1"
>
<div
class=
"radio i-checks"
>
<label>
<input
type=
"checkbox"
value=
"1"
id=
"use_password"
name=
"use_password"
>
</label>
</div>
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"j_group"
class=
"col-sm-2 control-label"
>
使用秘钥
</label>
<div
class=
"col-sm-1"
>
<div
class=
"radio i-checks"
>
<label>
<input
type=
"checkbox"
value=
"1"
id=
"use_publicKey"
name=
"use_publicKey"
>
</label>
</div>
</div>
</div>
</div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<label
for=
"comment"
class=
"col-sm-2 control-label"
>
备注
</label>
<div
class=
"col-sm-8"
>
<div
class=
"col-sm-8"
>
...
...
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