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
c8444ef7
Commit
c8444ef7
authored
Oct 03, 2014
by
guanghongwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加分组
parent
7c5f2d21
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
273 additions
and
57 deletions
+273
-57
urls.py
webroot/AutoSa/AutoSa/urls.py
+2
-0
views.py
webroot/AutoSa/AutoSa/views.py
+107
-51
addGroup.html
webroot/AutoSa/templates/addGroup.html
+31
-0
base.html
webroot/AutoSa/templates/base.html
+3
-0
chgGroup.html
webroot/AutoSa/templates/chgGroup.html
+42
-0
chgPass.html
webroot/AutoSa/templates/chgPass.html
+6
-4
chgUser.html
webroot/AutoSa/templates/chgUser.html
+1
-1
error.html
webroot/AutoSa/templates/error.html
+1
-1
info.html
webroot/AutoSa/templates/info.html
+47
-0
showGroup.html
webroot/AutoSa/templates/showGroup.html
+33
-0
No files found.
webroot/AutoSa/AutoSa/urls.py
View file @
c8444ef7
...
...
@@ -17,6 +17,8 @@ urlpatterns = patterns('',
(
r'^showUser/$'
,
views
.
showUser
),
(
r'^addUser/$'
,
views
.
addUser
),
(
r'^chgUser/$'
,
views
.
chgUser
),
(
r'^showGroup/$'
,
views
.
showGroup
),
(
r'^addGroup/$'
,
views
.
addGroup
),
(
r'^showAssets/$'
,
views
.
showAssets
),
(
r'^addAssets/$'
,
views
.
addAssets
),
(
r'^showPerm/$'
,
views
.
showPerm
),
...
...
webroot/AutoSa/AutoSa/views.py
View file @
c8444ef7
...
...
@@ -218,10 +218,11 @@ def is_super_user(request):
def
install
(
request
):
user
=
User
.
objects
.
filter
(
username
=
'admin'
)
if
user
:
return
HttpResponseRedirect
(
'/login/'
)
error
=
'已经安装,请出重复安装.'
return
render_to_response
(
'info.html'
,
{
'error'
:
error
})
else
:
u
=
User
(
id
=
7
00
,
id
=
8
00
,
username
=
'admin'
,
password
=
md5_crypt
(
'admin'
),
key_pass
=
md5_crypt
(
'admin'
),
...
...
@@ -230,7 +231,8 @@ def install(request):
is_superuser
=
True
,
ldap_password
=
md5_crypt
(
'admin'
))
u
.
save
()
return
HttpResponse
(
'Install successfully, please refresh this page.'
)
msg
=
'安装成功'
return
render_to_response
(
'info.html'
,
{
'msg'
:
msg
})
def
login
(
request
):
...
...
@@ -466,7 +468,6 @@ def chgUser(request):
"""修改用户信息"""
error
=
''
msg
=
''
jm
=
PyCrypt
(
key
)
if
request
.
method
==
"GET"
:
username
=
request
.
GET
.
get
(
'username'
)
...
...
@@ -489,11 +490,6 @@ def chgUser(request):
group_post
=
request
.
REQUEST
.
getlist
(
'group'
)
groups
=
[]
user
=
User
.
objects
.
get
(
username
=
username
)
all_groups
=
Group
.
objects
.
all
()
# 获得原来的,然设为初始值
ori_is_admin
=
"checked"
if
user
.
is_admin
else
''
ori_is_superuser
=
'checked'
if
user
.
is_superuser
else
''
# 属组的获取
for
group_name
in
group_post
:
...
...
@@ -511,10 +507,7 @@ def chgUser(request):
error
=
u'带*内容不能为空'
if
error
:
return
render_to_response
(
'chgUser.html'
,
{
'user'
:
user
,
'user_menu'
:
'active'
,
'is_admin'
:
ori_is_admin
,
'is_superuser'
:
ori_is_superuser
,
'groups'
:
all_groups
,
'error'
:
error
},
context_instance
=
RequestContext
(
request
))
return
render_to_response
(
'info.html'
,
{
'error'
:
error
})
u
=
User
.
objects
.
get
(
username
=
username
)
u
.
name
=
name
...
...
@@ -524,10 +517,63 @@ def chgUser(request):
u
.
save
()
msg
=
u'修改用户信息成功'
return
render_to_response
(
'chgUser.html'
,
{
'user'
:
user
,
'user_menu'
:
'active'
,
'is_admin'
:
is_admin
,
'is_superuser'
:
is_superuser
,
'groups'
:
all_groups
,
'msg'
:
msg
},
context_instance
=
RequestContext
(
request
))
return
render_to_response
(
'info.html'
,
{
'msg'
:
msg
})
@superuser_required
def
addGroup
(
request
):
error
=
''
msg
=
''
if
request
.
method
==
'POST'
:
group_name
=
request
.
POST
.
get
(
'name'
)
if
not
group_name
:
group
=
Group
(
name
=
group_name
)
group
.
save
()
msg
=
u'
%
s 属组添加成功'
%
group_name
else
:
error
=
u'不能为空'
return
render_to_response
(
'addGroup.html'
,
{
'error'
:
error
,
'msg'
:
msg
},
context_instance
=
RequestContext
(
request
))
@superuser_required
def
showGroup
(
request
):
groups
=
Group
.
objects
.
all
()
if
request
.
method
==
'POST'
:
selected_group
=
request
.
REQUEST
.
getlist
(
'selected'
)
if
selected_group
:
for
group_id
in
selected_group
:
group
=
Group
.
objects
.
get
(
id
=
group_id
)
group
.
delete
()
msg
=
'删除成功'
else
:
error
=
'请选择删除的组'
return
render_to_response
(
'showGroup.html'
,
{
'error'
:
error
,
'msg'
:
msg
},
context_instance
=
RequestContext
(
request
))
@superuser_required
def
chgGroup
(
request
):
error
=
''
msg
=
''
if
request
.
method
==
'GET'
:
group_id
=
request
.
GET
.
get
(
id
)
group
=
Group
.
objects
.
get
(
id
=
group_id
)
else
:
group_id
=
request
.
POST
.
get
(
id
)
group_name
=
request
.
POST
.
get
(
name
)
if
not
group_name
:
error
=
u'不能为空'
else
:
group
=
Group
.
objects
.
get
(
id
=
group_id
)
group
[
'name'
]
=
group_name
group
.
save
()
msg
=
u'修改成功'
return
render_to_response
(
'chgGroup.html'
,
{
'group'
:
group
,
'error'
:
error
,
'msg'
:
msg
},
context_instance
=
RequestContext
(
request
))
@admin_required
...
...
@@ -600,8 +646,8 @@ def showPerm(request):
elif
request
.
method
==
'GET'
:
if
request
.
GET
.
get
(
'username'
):
username
=
request
.
GET
.
get
(
'username'
)
user
=
User
.
objects
.
filter
(
username
=
username
)[
0
]
assets_user
=
AssetsUser
.
objects
.
filter
(
uid
=
user
.
id
)
user
=
User
.
objects
.
get
(
username
=
username
)
assets_user
=
AssetsUser
.
objects
.
filter
(
uid
=
user
.
id
)
.
order_by
()
return
render_to_response
(
'perms.html'
,
{
'user'
:
user
,
'assets'
:
assets_user
,
'perm_menu'
:
'active'
},
context_instance
=
RequestContext
(
request
))
...
...
@@ -655,28 +701,42 @@ def addPerm(request):
@login_required
def
chgPass
(
request
):
"""修改登录
系统的
密码"""
"""修改登录密码"""
error
=
''
msg
=
''
if
request
.
method
==
'POST'
:
username
=
request
.
session
.
get
(
'username'
)
oldpass
=
request
.
POST
.
get
(
'oldpass'
)
is_self
=
False
if
request
.
method
==
'GET'
:
if
is_admin_user
(
request
):
username
=
request
.
GET
.
get
(
'username'
)
else
:
username
=
request
.
session
.
get
(
'username'
)
is_self
=
True
return
render_to_response
(
'chgKey.html'
,
{
'username'
:
username
,
'is_self'
:
is_self
},
context_instance
=
RequestContext
(
request
))
else
:
username
=
request
.
POST
.
get
(
'username'
)
user
=
User
.
objects
.
get
(
username
=
username
)
password
=
request
.
POST
.
get
(
'password'
)
password_confirm
=
request
.
POST
.
get
(
'password_confirm'
)
user
=
User
.
objects
.
get
(
username
)
if
''
in
[
oldpass
,
password
,
password_confirm
]:
error
=
'带*内容不能为空'
elif
md5_crypt
(
oldpass
)
!=
user
.
password
:
error
=
'密码不正确'
elif
password
!=
password_confirm
:
error
=
'两次密码不匹配'
password_again
=
request
.
POST
.
get
(
'password_again'
)
if
not
error
:
user
.
password
=
md5_crypt
(
password
)
user
.
save
()
if
not
is_admin_user
(
request
):
oldpass
=
request
.
POST
.
get
(
'oldpass'
)
if
oldpass
!=
user
.
password
:
error
=
'原来密码不正确'
return
render_to_response
(
'chgPass.html'
,
{
'msg'
:
msg
,
'error'
:
error
,
'pass_menu'
:
'active'
},
context_instance
=
RequestContext
(
request
))
if
password
!=
password_again
:
error
=
'密码不匹配'
if
error
:
return
render_to_response
(
'info.html'
,
{
'error'
:
error
})
user
[
'password'
]
=
password
user
.
save
()
return
render_to_response
(
'info.html'
,
{
'msg'
:
'修改密码成功'
})
@login_required
...
...
@@ -687,8 +747,9 @@ def chgKey(request):
is_self
=
False
if
request
.
method
==
'GET'
:
username
=
request
.
GET
.
get
(
'username'
)
if
not
username
:
if
is_admin_user
(
request
):
username
=
request
.
GET
.
get
(
'username'
)
else
:
username
=
request
.
session
.
get
(
'username'
)
is_self
=
True
...
...
@@ -696,35 +757,30 @@ def chgKey(request):
{
'username'
:
username
,
'is_self'
:
is_self
},
context_instance
=
RequestContext
(
request
))
else
:
try
:
oldpass
=
request
.
POST
.
get
(
'oldpass'
)
except
KeyError
:
pass
else
:
username
=
request
.
POST
.
get
(
'username'
)
user
=
User
.
objects
.
get
(
username
=
username
)
if
oldpass
!=
user
.
key_pass
:
error
=
'原来密码不正确'
username
=
request
.
POST
.
get
(
'username'
)
user
=
User
.
objects
.
get
(
username
=
username
)
password
=
request
.
POST
.
get
(
'password'
)
password_again
=
request
.
POST
.
get
(
'password_again'
)
if
not
is_admin_user
(
request
):
oldpass
=
request
.
POST
.
get
(
'oldpass'
)
if
oldpass
!=
user
.
key_pass
:
error
=
'原来密码不正确'
if
password
!=
password_again
:
error
=
'密码不匹配'
if
error
:
return
HttpResponse
(
error
)
return
render_to_response
(
'info.html'
,
{
'error'
:
error
}
)
keyfile
=
'
%
s/keys/
%
s'
%
(
base_dir
,
username
)
jm
=
PyCrypt
(
key
)
ret
=
bash
(
'ssh-keygen -p -P
%
s -N
%
s -f
%
s'
%
(
jm
.
decrypt
(
user
.
key_pass
),
password
,
keyfile
))
if
ret
!=
0
:
error
=
'更改私钥密码错误'
return
HttpResponse
(
error
)
return
render_to_response
(
'info.hmtl'
,
{
'error'
:
error
}
)
user
[
'keypass'
]
=
password
user
.
save
()
return
HttpResponse
(
'修改密码成功'
)
return
render_to_response
(
'info.html'
,
{
'msg'
:
'修改密码成功'
}
)
webroot/AutoSa/templates/addGroup.html
0 → 100644
View file @
c8444ef7
{% extends 'base.html' %}
{% block content %}
<form
class=
"form-horizontal"
role=
"form"
method=
"post"
action=
""
>
<fieldset
>
<legend>
添加属组
</legend>
{% if error %}
<div
class=
"alert alert-danger"
>
{{ error }}
</div>
{% endif %}
{% if msg %}
<div
class=
"alert alert-success"
>
{{ msg }}
</div>
{% endif %}
<div
class=
"form-group"
>
<label
for=
"name"
class=
"col-sm-2 control-label"
>
属组
<span
style=
"color: red"
>
*
</span></label>
<div
class=
"col-sm-4"
>
<input
type=
"text"
class=
"form-control"
id=
"name"
name=
"name"
placeholder=
"属组"
>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-2 col-sm-4"
>
<button
class=
"btn btn-primary"
>
添加
</button>
</div>
</div>
</fieldset>
</form>
{% endblock %}
\ No newline at end of file
webroot/AutoSa/templates/base.html
View file @
c8444ef7
...
...
@@ -90,6 +90,9 @@
<ul
id=
"userMenu"
class=
"nav nav-list navbar-collapse.in menu-second"
>
<li><a
href=
"/showUser/"
><i
class=
"glyphicon glyphicon-send"
></i>
查看用户
</a></li>
<li><a
href=
"/addUser/"
><i
class=
"glyphicon glyphicon-send"
></i>
添加用户
</a></li>
<li><a
href=
"/showGroup/"
><i
class=
"glyphicon glyphicon-send"
></i>
查看属组
</a></li>
<li><a
href=
"/addGroup/"
><i
class=
"glyphicon glyphicon-send"
></i>
添加属组
</a></li>
<li><a
href=
"/addUser/"
><i
class=
"glyphicon glyphicon-send"
></i>
Sudo管理
</a></li>
</ul>
<!--<div class="menu-first" ><a href="#monitorMenu" data-toggle="collapse"><i class="glyphicon glyphicon-th"></i> 执行命令</a></div>
<ul id="monitorMenu" class="nav nav-list navbar-collapse.in menu-second">
...
...
webroot/AutoSa/templates/chgGroup.html
0 → 100644
View file @
c8444ef7
{% extends 'base.html' %}
{% block content %}
<form
class=
"form-horizontal"
role=
"form"
method=
"post"
action=
"/chgGroup/"
>
<fieldset
>
<legend>
修改用户信息
</legend>
{% if error %}
<div
class=
"alert alert-danger"
>
{{ error }}
</div>
{% endif %}
{% if msg %}
<div
class=
"alert alert-success"
>
{{ msg }}
</div>
{% endif %}
<div
class=
"form-group"
>
<div
class=
"col-sm-4"
>
<input
type=
"text"
id=
"oldname"
name=
"oldname"
class=
"form-control"
value=
"{{ group.id }}"
hidden=
"hidden"
>
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"oldname"
class=
"col-sm-2 control-label"
>
原来属组
<span
style=
"color: red"
>
*
</span></label>
<div
class=
"col-sm-4"
>
<input
type=
"text"
id=
"oldname"
name=
"oldname"
class=
"form-control"
value=
"{{ group.name }}"
readOnly=
"readOnly"
>
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"name"
class=
"col-sm-2 control-label"
>
属组
<span
style=
"color: red"
>
*
</span></label>
<div
class=
"col-sm-4"
>
<input
type=
"text"
id=
"name"
name=
"name"
class=
"form-control"
placeholder=
"属组"
>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-2 col-sm-4"
>
<button
class=
"btn btn-primary"
>
修改
</button>
</div>
</div>
</fieldset>
</form>
{% endblock %}
\ No newline at end of file
webroot/AutoSa/templates/chgPass.html
View file @
c8444ef7
...
...
@@ -13,12 +13,14 @@
{{ msg }}
</div>
{% endif %}
{% if is_self %}
<div
class=
"form-group"
>
<label
for=
"oldpass"
class=
"col-sm-2 control-label"
>
原来密码
<span
style=
"color: red"
>
*
</span></label>
<label
for=
"oldpass"
class=
"col-sm-2 control-label"
>
原来
的
密码
<span
style=
"color: red"
>
*
</span></label>
<div
class=
"col-sm-4"
>
<input
type=
"password"
class=
"form-control"
id=
"oldpass"
name=
"oldpass"
placeholder=
"
用户名
"
>
<input
type=
"password"
class=
"form-control"
id=
"oldpass"
name=
"oldpass"
placeholder=
"
原来密码
"
>
</div>
</div>
{% endif %}
<div
class=
"form-group"
>
<label
for=
"password"
class=
"col-sm-2 control-label"
>
新密码
<span
style=
"color: red"
>
*
</span></label>
<div
class=
"col-sm-4"
>
...
...
@@ -26,9 +28,9 @@
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"password_
confirm
"
class=
"col-sm-2 control-label"
>
确认密码
<span
style=
"color: red"
>
*
</span></label>
<label
for=
"password_
again
"
class=
"col-sm-2 control-label"
>
确认密码
<span
style=
"color: red"
>
*
</span></label>
<div
class=
"col-sm-4"
>
<input
type=
"password"
class=
"form-control"
id=
"password_
confirm"
name=
"password_confirm
"
placeholder=
"确认密码"
>
<input
type=
"password"
class=
"form-control"
id=
"password_
again"
name=
"password_again
"
placeholder=
"确认密码"
>
</div>
</div>
<div
class=
"form-group"
>
...
...
webroot/AutoSa/templates/chgUser.html
View file @
c8444ef7
...
...
@@ -34,7 +34,7 @@
</div>
<div
class=
"form-group"
>
<label
for=
"key_pass"
class=
"col-sm-2 control-label"
>
密钥密码
<span
style=
"color: red"
>
*
</span></label>
<a
href=
"/chgKey/?username={{ user.username }}"
>
修改密
钥密
码
</a>
<a
href=
"/chgKey/?username={{ user.username }}"
>
修改密码
</a>
</div>
<div
class=
"form-group"
>
<label
for=
"name"
class=
"col-sm-2 control-label"
>
姓名
<span
style=
"color: red"
>
*
</span></label>
...
...
webroot/AutoSa/templates/error.html
View file @
c8444ef7
...
...
@@ -3,7 +3,7 @@
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>
错误页面
</title>
<title>
通知
</title>
<style
type=
"text/css"
>
body
{
...
...
webroot/AutoSa/templates/info.html
0 → 100644
View file @
c8444ef7
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>
信息
</title>
<style
type=
"text/css"
>
body
{
font-family
:
"Hiragino Sans GB W3"
,
"微软雅黑"
,
"Helvetica Neue"
,
Helvetica
,
Arial
,
"宋体"
,
sans-serif
;
color
:
#575757
;
background
:
#444
url(/static/images/bg-login.gif)
}
</style>
<script
language=
"javascript"
>
var
i
=
2
;
window
.
setInterval
(
"settime()"
,
1000
);
window
.
setTimeout
(
"toload()"
,
5000
);
function
settime
(){
var
divinner
=
document
.
getElementById
(
"settime"
);
divinner
.
innerText
=
i
;
i
--
;
}
function
toload
(){
history
.
go
(
-
1
);
}
</script>
</head>
<body>
{% if msg %}
<div
class=
"alert alert-success"
><b>
成功:
</b>
{{ msg }}
</div>
{% endif %}
{% if error %}
<div
class=
"alert alert-danger"
><b>
错误:
</b>
{{ error }}
</div>
{% endif %}
</body>
</html>
webroot/AutoSa/templates/showGroup.html
0 → 100644
View file @
c8444ef7
{% extends 'base.html' %}
{% block content %}
<form
method=
"post"
action=
""
>
{% if info %}
<p
class=
"alert alert-success"
>
{{ info }}
</p>
{% endif %}
<table
class=
"table table-striped table-hover table-condensed"
>
<thead>
<tr>
<th><input
onclick=
"selectAll()"
type=
"checkbox"
name=
"select_all"
style=
"select_all"
id=
"select_all"
/></th>
<th>
ID
</th>
<th>
属组
</th>
<th>
修改
</th>
</tr>
</thead>
<tbody>
{% for group in groups %}
<tr>
<td><input
type=
"checkbox"
name=
"selected"
value=
"{{ group.id }}"
></td>
<td>
{{ group.id }}
</td>
<td>
{{ group.name }}
</td>
<td><a
href=
"/chgGroup/?id={{ group.id }}"
>
修改
</a></td>
</tr>
{% endfor %}
</tbody>
</form>
</table>
<button
class=
"btn btn-primary"
>
删除
</button>
</form>
{% endblock %}
\ No newline at end of file
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