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
e117cd00
Commit
e117cd00
authored
Dec 10, 2015
by
ibuler
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of git.coding.net:jumpserver/jumpserver into dev
parents
e03b4722
b5a3fb44
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
84 additions
and
97 deletions
+84
-97
urls.py
jasset/urls.py
+0
-4
views.py
jasset/views.py
+1
-2
ansible_api.py
jperm/ansible_api.py
+3
-1
perm_api.py
jperm/perm_api.py
+13
-25
views.py
jperm/views.py
+1
-1
api.py
jumpserver/api.py
+2
-2
asset_cu_list.html
templates/jasset/asset_cu_list.html
+1
-55
asset_list.html
templates/jasset/asset_list.html
+1
-1
asset_update_status.html
templates/jasset/asset_update_status.html
+46
-0
perm_rule_detail.html
templates/jperm/perm_rule_detail.html
+11
-6
role_sudo.j2
templates/jperm/role_sudo.j2
+5
-0
No files found.
jasset/urls.py
View file @
e117cd00
...
...
@@ -12,15 +12,11 @@ urlpatterns = patterns('',
url
(
r'^asset_edit/$'
,
asset_edit
),
url
(
r'^asset_update/$'
,
asset_update
),
url
(
r'^asset_update_batch/$'
,
asset_update_batch
),
# url(r'^search/$', host_search),
# url(r"^show_all_ajax/$", show_all_ajax),
url
(
r'^group_add/$'
,
group_add
),
url
(
r'^group_list/$'
,
group_list
),
url
(
r'^group_edit/$'
,
group_edit
),
url
(
r'^group_list/$'
,
group_list
),
# url(r'^group_del_host/$', group_del_host),
url
(
r'^asset_edit_batch/$'
,
asset_edit_batch
),
# url(r'^host_edit_common/batch/$', host_edit_common_batch),
url
(
r'^idc_add/$'
,
idc_add
),
url
(
r'^idc_list/$'
,
idc_list
),
url
(
r'^idc_edit/$'
,
idc_edit
),
...
...
jasset/views.py
View file @
e117cd00
...
...
@@ -294,7 +294,6 @@ def asset_list(request):
asset_find
=
asset_find
.
filter
(
idc__name__contains
=
idc_name
)
if
group_name
:
print
asset_find
,
type
(
asset_find
)
asset_find
=
asset_find
.
filter
(
group__name__contains
=
group_name
)
if
asset_type
:
...
...
@@ -413,7 +412,7 @@ def asset_edit_batch(request):
if
alert_list
:
recode_name
=
unicode
(
name
)
+
' - '
+
u'批量'
AssetRecord
.
objects
.
create
(
asset
=
asset
,
username
=
recode_name
,
content
=
alert_list
)
return
HttpResponse
(
'ok'
)
return
my_render
(
'jasset/asset_update_status.html'
,
locals
(),
request
)
return
my_render
(
'jasset/asset_edit_batch.html'
,
locals
(),
request
)
...
...
jperm/ansible_api.py
View file @
e117cd00
...
...
@@ -323,11 +323,13 @@ class MyTask(MyRunner):
"""
add a host user.
"""
if
password
:
encrypt_pass
=
sha512_crypt
.
encrypt
(
password
)
module_args
=
'name=
%
s shell=/bin/bash password=
%
s'
%
(
username
,
encrypt_pass
)
else
:
module_args
=
'name=
%
s shell=/bin/bash'
%
username
self
.
run
(
"user"
,
module_args
,
become
=
True
)
return
self
.
results
...
...
@@ -359,9 +361,9 @@ class MyTask(MyRunner):
"""
module_args
=
'name=
%
s state=absent remove=yes move_home=yes force=yes'
%
username
self
.
run
(
"user"
,
module_args
,
become
=
True
)
return
self
.
results
@staticmethod
def
gen_sudo_script
(
role_list
,
sudo_list
):
# receive role_list = [role1, role2] sudo_list = [sudo1, sudo2]
...
...
jperm/perm_api.py
View file @
e117cd00
...
...
@@ -241,47 +241,39 @@ def get_role_info(role_id, type="all"):
"""
# 获取role对应的授权规则
role_obj
=
PermRole
.
objects
.
get
(
id
=
role_id
)
rule
s
_obj
=
role_obj
.
perm_rule
.
all
()
rule
_push
_obj
=
role_obj
.
perm_rule
.
all
()
# 获取role 对应的用户 和 用户组
# 获取role 对应的主机 和主机组
users_obj
=
[]
assets_obj
=
[]
user_groups_obj
=
[]
group_users_obj
=
[]
asset_groups_obj
=
[]
group_assets_obj
=
[]
for
rule
in
rules_obj
:
for
user
in
rule
.
user
.
all
():
for
push
in
rule_push_obj
:
for
user
in
push
.
user
.
all
():
users_obj
.
append
(
user
)
for
asset
in
rule
.
asset
.
all
():
for
asset
in
push
.
asset
.
all
():
assets_obj
.
append
(
asset
)
for
user_group
in
rule
.
user_group
.
all
():
for
user_group
in
push
.
user_group
.
all
():
user_groups_obj
.
append
(
user_group
)
for
user
in
user_group
.
user_set
.
all
():
group_users_obj
.
append
(
user
)
for
asset_group
in
rule
.
asset_group
.
all
():
for
asset_group
in
push
.
asset_group
.
all
():
asset_groups_obj
.
append
(
asset_group
)
for
asset
in
asset_group
.
asset_set
.
all
():
group_assets_obj
.
append
(
asset
)
calc_users
=
set
(
users_obj
)
|
set
(
group_users_obj
)
calc_assets
=
set
(
assets_obj
)
|
set
(
group_assets_obj
)
if
type
==
"all"
:
return
{
"rules"
:
rule
s
_obj
,
"users"
:
list
(
calc_users
)
,
return
{
"rules"
:
rule
_push
_obj
,
"users"
:
users_obj
,
"user_groups"
:
user_groups_obj
,
"assets"
:
list
(
calc_assets
)
,
"assets"
:
assets_obj
,
"asset_groups"
:
asset_groups_obj
,
}
elif
type
==
"rule"
:
return
rule
s
_obj
return
rule
_push
_obj
elif
type
==
"user"
:
return
calc_users
return
users_obj
elif
type
==
"user_group"
:
return
user_groups_obj
elif
type
==
"asset"
:
return
calc_assets
return
assets_obj
elif
type
==
"asset_group"
:
return
asset_groups_obj
else
:
...
...
@@ -308,7 +300,3 @@ def get_role_push_host(role):
if
__name__
==
"__main__"
:
print
get_role_info
(
1
)
jperm/views.py
View file @
e117cd00
...
...
@@ -35,7 +35,7 @@ def perm_rule_list(request):
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
)
...
...
jumpserver/api.py
View file @
e117cd00
...
...
@@ -27,12 +27,12 @@ from django.shortcuts import render_to_response
from
django.core.mail
import
send_mail
def
set_log
(
level
):
def
set_log
(
level
,
filename
=
'jumpserver.log'
):
"""
return a log file object
根据提示设置log打印
"""
log_file
=
os
.
path
.
join
(
LOG_DIR
,
'jumpserver.log'
)
log_file
=
os
.
path
.
join
(
LOG_DIR
,
filename
)
if
not
os
.
path
.
isfile
(
log_file
):
os
.
mknod
(
log_file
)
os
.
chmod
(
log_file
,
0777
)
...
...
templates/jasset/asset_cu_list.html
View file @
e117cd00
...
...
@@ -24,61 +24,7 @@
<div
class=
"ibox-content"
>
<form
id=
"asset_form"
>
<div
class=
"col-sm-7"
style=
"padding-left: 0px"
>
<label>
<select
name=
"idc"
class=
"form-control m-b input-sm"
onchange=
"change_info()"
>
<option
value=
""
>
机房
</option>
{% for idc in idc_all %}
{% ifequal idc.name idc_name %}
<option
value=
"{{idc.name}}"
selected
>
{{ idc.name }}
</option>
{% else %}
<option
value=
"{{idc.name}}"
>
{{ idc.name }}
</option>
{% endifequal %}
{% endfor %}
</select>
</label>
<label>
<select
name=
"group"
class=
"form-control m-b input-sm"
onchange=
"change_info()"
>
<option
value=
""
>
主机组
</option>
{% for asset_group in asset_group_all %}
{% ifequal asset_group.name group_name %}
<option
value=
"{{ asset_group.name }}"
selected
>
{{ asset_group.name }}
</option>
{% else %}
<option
value=
"{{ asset_group.name }}"
>
{{ asset_group.name }}
</option>
{% endifequal %}
{% endfor %}
</select>
</label>
<label>
<select
name=
"asset_type"
class=
"form-control m-b input-sm"
onchange=
"change_info()"
>
<option
value=
""
>
资产类型
</option>
{% for type in asset_types %}
{% ifequal type.0|int2str asset_type %}
<option
value=
"{{ type.0 }}"
selected
>
{{ type.1 }}
</option>
{% else %}
<option
value=
"{{ type.0 }}"
>
{{ type.1 }}
</option>
{% endifequal %}
{% endfor %}
</select>
</label>
<label>
<select
name=
"status"
class=
"form-control m-b input-sm"
onchange=
"change_info()"
>
<option
value=
""
>
资产状态
</option>
{% for s in asset_status %}
{% ifequal s.0|int2str status %}
<option
value=
"{{ s.0 }}"
selected
>
{{ s.1 }}
</option>
{% else %}
<option
value=
"{{ s.0 }}"
>
{{ s.1 }}
</option>
{% endifequal %}
{% endfor %}
</select>
</label>
</div>
<div
class=
"col-sm-4"
style=
"padding-right: 0"
>
<div
class=
"col-sm-4 col-sm-offset-8"
style=
"padding-right: 0"
>
<div
class=
"input-group inline-group"
>
<input
type=
"text"
class=
"form-control m-b input-sm"
id=
"search_input"
name=
"keyword"
value=
"{{ keyword }}"
placeholder=
"Search"
>
<input
type=
"text"
style=
"display: none"
>
...
...
templates/jasset/asset_list.html
View file @
e117cd00
...
...
@@ -301,7 +301,7 @@
return
false
;
}
var
url
=
$
(
this
).
attr
(
"value"
)
+
'?asset_id_all='
+
asset_id_all
;
layer
.
open
({
parent
.
layer
.
open
({
type
:
2
,
title
:
'JumpServer - 批量修改主机'
,
maxmin
:
true
,
...
...
templates/jasset/asset_update_status.html
0 → 100644
View file @
e117cd00
<html>
<head>
<link
href=
"/static/css/bootstrap.min.css"
rel=
"stylesheet"
>
<link
href=
"/static/font-awesome/css/font-awesome.css"
rel=
"stylesheet"
>
<link
href=
"/static/css/plugins/iCheck/custom.css"
rel=
"stylesheet"
>
<link
href=
"/static/css/animate.css"
rel=
"stylesheet"
>
<link
href=
"/static/css/style.css"
rel=
"stylesheet"
>
<script
src=
"/static/js/jquery-2.1.1.js"
></script>
<style>
body
{
background
:
#ffffff
;}
</style>
</head>
{% load bootstrap %}
{% block content %}
<body
onload=
"closeWindow();"
>
<div>
<div
class=
"row"
>
<div
class=
"col-lg-10"
>
<div
class=
"ibox-content"
>
<h2
id=
"jumpTo"
class=
"text-center text-info"
></h2>
</div>
</div>
</div>
</div>
<script
type=
"text/javascript"
>
var
time
=
2
;
function
closeWindow
(){
window
.
setTimeout
(
'closeWindow()'
,
1000
);
if
(
time
>
0
){
document
.
getElementById
(
"jumpTo"
).
innerHTML
=
"修改成功, <font color=red>"
+
time
+
"</font>秒后关闭当前窗口"
;
time
--
;
}
else
{
window
.
parent
.
location
.
reload
();
var
index
=
parent
.
layer
.
getFrameIndex
(
window
.
name
);
parent
.
layer
.
close
(
index
);
}
}
</script>
{% endblock content %}
</body>
</html>
\ No newline at end of file
templates/jperm/perm_rule_detail.html
View file @
e117cd00
...
...
@@ -93,12 +93,15 @@
</tr>
</thead>
<tbody>
{% for user in users %}
<tr
class=
"gradeX"
>
{% for user in users %}
<td
class=
"text-center"
>
{{ user.name }}
</td>
<td
class=
"text-center"
>
{{ user | user_which_groups:"group" }}
</td>
{% endfor %}
{% for group in user_groups %}
<td
class=
"text-center"
>
{{ group.name }}
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
...
...
@@ -139,12 +142,14 @@
</tr>
</thead>
<tbody>
{% for asset in assets %}
<tr
class=
"gradeX"
>
{% for asset in assets %}
<td
class=
"text-center"
>
{{ asset.ip }}
</td>
<td
class=
"text-center"
>
{{ asset | asset_which_groups:"group" }}
</td>
{% endfor %}
{% for group in asset_groups %}
<td
class=
"text-center"
>
{{ group.name }}
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
...
...
templates/jperm/role_sudo.j2
View file @
e117cd00
...
...
@@ -4,6 +4,9 @@
real_file
=
/etc/sudoers
tmp_file
=
$(
mktemp
/tmp/XXXXXXX
)
# Backup sudoers file
cp
${
sudo_file
}
${
sudo_file_bak
}
# Add Command Aliases
add_cmd_alias
()
{
sudo_file
=
$1
...
...
@@ -17,6 +20,7 @@ add_cmd_alias() {
}
# Add Command Aliases to role
add_role_chosen
()
{
sudo_file
=
$1
{
%
for
user,
alias
in
sudo_user.items %
}
...
...
@@ -28,6 +32,7 @@ add_role_chosen() {
{
% endfor %
}
}
check_syntax
(){
visudo
-c
-f
$1
}
...
...
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