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
40d00f7c
Commit
40d00f7c
authored
Oct 21, 2015
by
广宏伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lost playboo_run
parent
fe1f825f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
36 deletions
+46
-36
models.py
jperm/models.py
+4
-2
perm_api.py
jperm/perm_api.py
+42
-34
views.py
jperm/views.py
+0
-0
views.py
juser/views.py
+0
-0
No files found.
jperm/models.py
View file @
40d00f7c
...
@@ -7,5 +7,7 @@ from jasset.models import Asset, AssetGroup
...
@@ -7,5 +7,7 @@ from jasset.models import Asset, AssetGroup
class
PermLog
(
models
.
Model
):
class
PermLog
(
models
.
Model
):
datetime
=
models
.
DateTimeField
(
auto_now_add
=
True
)
datetime
=
models
.
DateTimeField
(
auto_now_add
=
True
)
result
=
models
.
CharField
(
max_length
=
1000
,
null
=
True
,
blank
=
True
,
default
=
''
)
action
=
models
.
CharField
(
max_length
=
100
,
null
=
True
,
blank
=
True
,
default
=
''
)
is_finished
=
models
.
BooleanField
(
default
=
False
)
results
=
models
.
CharField
(
max_length
=
1000
,
null
=
True
,
blank
=
True
,
default
=
''
)
is_success
=
models
.
BooleanField
(
default
=
False
)
is_finish
=
models
.
BooleanField
(
default
=
False
)
jperm/perm_api.py
View file @
40d00f7c
...
@@ -6,9 +6,10 @@ import uuid
...
@@ -6,9 +6,10 @@ import uuid
import
re
import
re
from
ansible.playbook
import
PlayBook
from
ansible.playbook
import
PlayBook
from
ansible
import
callbacks
,
utils
from
ansible
import
callbacks
,
utils
from
jumpserver.tasks
import
playbook_run
,
add
from
jumpserver.tasks
import
playbook_run
from
jumpserver.models
import
Setting
from
jumpserver.models
import
Setting
from
jperm.models
import
PermLog
def
get_object_list
(
model
,
id_list
):
def
get_object_list
(
model
,
id_list
):
...
@@ -64,38 +65,21 @@ def perm_user_api(perm_info):
...
@@ -64,38 +65,21 @@ def perm_user_api(perm_info):
'new': {'users': [],
'new': {'users': [],
'assets': []}}
'assets': []}}
"""
"""
log
=
PermLog
(
action
=
perm_info
.
get
(
'action'
,
''
))
try
:
try
:
new_users
=
perm_info
.
get
(
'new'
,
{})
.
get
(
'users'
,
[])
new_users
=
perm_info
.
get
(
'new'
,
{})
.
get
(
'users'
,
[])
new_assets
=
perm_info
.
get
(
'new'
,
{})
.
get
(
'assets'
,[])
new_assets
=
perm_info
.
get
(
'new'
,
{})
.
get
(
'assets'
,
[])
del_users
=
perm_info
.
get
(
'del'
,
{})
.
get
(
'users'
,
[])
del_users
=
perm_info
.
get
(
'del'
,
{})
.
get
(
'users'
,
[])
del_assets
=
perm_info
.
get
(
'del'
,
{})
.
get
(
'assets'
,
[])
del_assets
=
perm_info
.
get
(
'del'
,
{})
.
get
(
'assets'
,
[])
print
new_users
,
new_assets
print
new_users
,
new_assets
except
IndexError
:
except
IndexError
:
raise
ServerError
(
"Error: function perm_user_api传入参数错误"
)
raise
ServerError
(
"Error: function perm_user_api传入参数错误"
)
# 检查传入的是字符串还是对象
check_users
=
new_users
+
del_users
try
:
try
:
if
isinstance
(
check_users
[
0
],
str
):
new_ip
=
[
asset
.
ip
for
asset
in
new_assets
if
isinstance
(
asset
,
Asset
)]
var_type
=
'str'
del_ip
=
[
asset
.
ip
for
asset
in
del_assets
if
isinstance
(
asset
,
Asset
)]
else
:
new_username
=
[
user
.
username
for
user
in
new_users
if
isinstance
(
user
,
User
)]
var_type
=
'obj'
del_username
=
[
user
.
username
for
user
in
del_users
if
isinstance
(
user
,
User
)]
except
IndexError
:
raise
ServerError
(
"Error: function perm_user_api传入参数错误"
)
try
:
if
var_type
==
'str'
:
new_ip
=
new_assets
del_ip
=
del_assets
new_username
=
new_users
del_username
=
del_users
else
:
new_ip
=
[
asset
.
ip
for
asset
in
new_assets
if
isinstance
(
asset
,
Asset
)]
del_ip
=
[
asset
.
ip
for
asset
in
del_assets
if
isinstance
(
asset
,
Asset
)]
new_username
=
[
user
.
username
for
user
in
new_users
if
isinstance
(
user
,
User
)]
del_username
=
[
user
.
username
for
user
in
del_users
if
isinstance
(
user
,
User
)]
except
IndexError
:
except
IndexError
:
raise
ServerError
(
"Error: function perm_user_api传入参数类型错误"
)
raise
ServerError
(
"Error: function perm_user_api传入参数类型错误"
)
...
@@ -114,11 +98,20 @@ def perm_user_api(perm_info):
...
@@ -114,11 +98,20 @@ def perm_user_api(perm_info):
settings
=
get_object
(
Setting
,
name
=
'default'
)
settings
=
get_object
(
Setting
,
name
=
'default'
)
results
=
playbook_run
(
inventory
,
playbook
,
settings
)
results
=
playbook_run
(
inventory
,
playbook
,
settings
)
if
not
results
.
get
(
'failed'
,
1
)
and
not
results
.
get
(
'unreachable'
,
''
):
is_success
=
True
else
:
is_success
=
False
log
.
results
=
results
log
.
is_finish
=
True
log
.
is_success
=
is_success
log
.
save
()
return
results
return
results
def
user_group_permed
(
user_group
):
def
user_group_permed
(
user_group
):
assets
=
user_group
.
asset
_set
.
all
()
assets
=
user_group
.
asset
.
all
()
asset_groups
=
user_group
.
asset_group
.
all
()
asset_groups
=
user_group
.
asset_group
.
all
()
for
asset_group
in
asset_groups
:
for
asset_group
in
asset_groups
:
...
@@ -130,7 +123,7 @@ def user_group_permed(user_group):
...
@@ -130,7 +123,7 @@ def user_group_permed(user_group):
def
user_permed
(
user
):
def
user_permed
(
user
):
asset_groups
=
[]
asset_groups
=
[]
assets
=
[]
assets
=
[]
user_groups
=
user
.
user_
group
.
all
()
user_groups
=
user
.
group
.
all
()
asset_groups
.
extend
(
user
.
asset_group
.
all
())
asset_groups
.
extend
(
user
.
asset_group
.
all
())
assets
.
extend
(
user
.
asset
.
all
())
assets
.
extend
(
user
.
asset
.
all
())
...
@@ -213,7 +206,7 @@ def _public_perm_api(info):
...
@@ -213,7 +206,7 @@ def _public_perm_api(info):
new_assets
.
extend
(
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[]))
new_assets
.
extend
(
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[]))
perm_info
=
{
perm_info
=
{
'new'
:
{
'users'
:
[
user
],
'assets'
:
new_assets
}
'new'
:
{
'
action'
:
'new user: '
+
user
.
name
,
'
users'
:
[
user
],
'assets'
:
new_assets
}
}
}
elif
info
.
get
(
'type'
)
==
'edit_user'
:
elif
info
.
get
(
'type'
)
==
'edit_user'
:
new_assets
=
[]
new_assets
=
[]
...
@@ -229,6 +222,7 @@ def _public_perm_api(info):
...
@@ -229,6 +222,7 @@ def _public_perm_api(info):
del_assets
.
extend
((
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[])))
del_assets
.
extend
((
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[])))
perm_info
=
{
perm_info
=
{
'action'
:
'edit user: '
+
user
.
name
,
'del'
:
{
'users'
:
[
user
],
'assets'
:
del_assets
},
'del'
:
{
'users'
:
[
user
],
'assets'
:
del_assets
},
'new'
:
{
'users'
:
[
user
],
'assets'
:
new_assets
}
'new'
:
{
'users'
:
[
user
],
'assets'
:
new_assets
}
}
}
...
@@ -237,7 +231,7 @@ def _public_perm_api(info):
...
@@ -237,7 +231,7 @@ def _public_perm_api(info):
user
=
info
.
get
(
'user'
)
user
=
info
.
get
(
'user'
)
del_assets
=
user_permed
(
user
)
.
get
(
'assets'
,
[])
del_assets
=
user_permed
(
user
)
.
get
(
'assets'
,
[])
perm_info
=
{
perm_info
=
{
'del'
:
{
'users'
:
[
user
],
'assets'
:
del_assets
},
'
action'
:
'del user: '
+
user
.
name
,
'
del'
:
{
'users'
:
[
user
],
'assets'
:
del_assets
},
}
}
elif
info
.
get
(
'type'
)
==
'edit_user_group'
:
elif
info
.
get
(
'type'
)
==
'edit_user_group'
:
...
@@ -247,18 +241,32 @@ def _public_perm_api(info):
...
@@ -247,18 +241,32 @@ def _public_perm_api(info):
assets
=
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[])
assets
=
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[])
perm_info
=
{
perm_info
=
{
'action'
:
'edit user group: '
+
user_group
.
name
,
'new'
:
{
'users'
:
new_users
,
'assets'
:
assets
},
'new'
:
{
'users'
:
new_users
,
'assets'
:
assets
},
'del'
:
{
'users'
:
del_users
,
'assets'
:
assets
}
'del'
:
{
'users'
:
del_users
,
'assets'
:
assets
}
}
}
elif
info
.
get
(
'type'
)
==
'del_user_group'
:
elif
info
.
get
(
'type'
)
==
'del_user_group'
:
assets
=
[]
user_group
=
info
.
get
(
'group'
,
[])
user_groups
=
info
.
get
(
'group'
,
[])
del_users
=
user_group
.
user_set
.
all
()
del_users
=
[
user_group
.
user_set
.
all
()
for
user_group
in
user_groups
]
assets
=
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[])
for
user_group
in
user_groups
:
assets
.
extend
(
user_group_permed
(
user_group
)
.
get
(
'assets'
,
[]))
perm_info
=
{
'action'
:
"del user group: "
+
user_group
.
name
,
'del'
:
{
'users'
:
del_users
,
'assets'
:
assets
}
}
else
:
return
try
:
results
=
perm_user_api
(
perm_info
)
# 通过API授权或回收
except
ServerError
,
e
:
return
e
else
:
return
results
perm_info
=
{}
...
...
jperm/views.py
View file @
40d00f7c
This diff is collapsed.
Click to expand it.
juser/views.py
View file @
40d00f7c
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