From dc547de5929a2bedf7cb70971a12b926606426ec Mon Sep 17 00:00:00 2001
From: ibuler
Date: Tue, 17 Nov 2015 10:27:41 +0800
Subject: [PATCH 02/31] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=87=E4=BB=B6?=
=?UTF-8?q?=E7=9B=AE=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/requirements.txt | 5 +++--
logs/README.md | 1 +
playbook/user_perm.yaml | 17 -----------------
version | 1 -
4 files changed, 4 insertions(+), 20 deletions(-)
create mode 100644 logs/README.md
delete mode 100644 playbook/user_perm.yaml
delete mode 100644 version
diff --git a/docs/requirements.txt b/docs/requirements.txt
index ea56ab0c6..d32aff3a4 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,6 +1,5 @@
sphinx-me==0.3
django==1.6
-python-ldap==2.4.19
pycrypto==2.6.1
paramiko==1.15.2
ecdsa==0.13
@@ -9,4 +8,6 @@ django-uuidfield==0.5.0
psutil==2.2.1
xlsxwriter==0.7.7
xlrd==0.9.4
-django-bootstrap-form
\ No newline at end of file
+django-bootstrap-form
+tornado
+ansible
\ No newline at end of file
diff --git a/logs/README.md b/logs/README.md
new file mode 100644
index 000000000..309d1a147
--- /dev/null
+++ b/logs/README.md
@@ -0,0 +1 @@
+永远年轻,永远热泪盈眶
diff --git a/playbook/user_perm.yaml b/playbook/user_perm.yaml
deleted file mode 100644
index 4bcfd72e6..000000000
--- a/playbook/user_perm.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-- hosts: the_del_group
- tasks:
- - name: del user
- user: name={{ item }} state=absent remove=yes
- with_items: [ the_del_users ]
-
-- hosts: the_new_group
- tasks:
- - name: add user
- user: name={{ item }} state=present
- with_items: [ the_new_users ]
- - name: .ssh direcotory
- file: name=/home/{{ item }}/.ssh mode=700 owner={{ item }} group={{ item }} state=directory
- with_items: [ the_new_users ]
- - name: set authorizied_file
- copy: src=KEY_DIR/{{ item }}.pub dest=/home/{{ item }}/.ssh/authorizied_keys owner={{ item }} group={{ item }} mode=600
- with_items: [ the_new_users ]
diff --git a/version b/version
deleted file mode 100644
index b123147e2..000000000
--- a/version
+++ /dev/null
@@ -1 +0,0 @@
-1.1
\ No newline at end of file
From d58ba82388500b613422b651a6ad857410f0e21e Mon Sep 17 00:00:00 2001
From: ibuler
Date: Tue, 17 Nov 2015 10:48:18 +0800
Subject: [PATCH 03/31] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ignore?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gitignore b/.gitignore
index 2c3064f75..983fedd49 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,7 @@ nosetests.xml
.mr.developer.cfg
.project
.pydevproject
+*.log
logs/*
keys/*
jumpserver.conf
From 11f6939b85a5de7e4d80c0f86728605c385520cc Mon Sep 17 00:00:00 2001
From: yumaojun <719118794@qq.com>
Date: Tue, 17 Nov 2015 13:48:19 +0800
Subject: [PATCH 04/31] 1. update role and update rule complete.
---
jperm/models.py | 4 +-
jperm/views.py | 76 +++++++++++++++++++++++++----
templates/jperm/perm_role_edit.html | 7 +++
templates/jperm/perm_rule_add.html | 30 +-----------
templates/jperm/perm_rule_edit.html | 30 +-----------
templates/jperm/perm_rule_list.html | 10 ++--
6 files changed, 83 insertions(+), 74 deletions(-)
diff --git a/jperm/models.py b/jperm/models.py
index 2bcea14e3..d9553a00c 100644
--- a/jperm/models.py
+++ b/jperm/models.py
@@ -32,14 +32,14 @@ class PermRole(models.Model):
class PermRule(models.Model):
date_added = models.DateTimeField(auto_now=True)
- name = models.CharField(max_length=100)
+ name = models.CharField(max_length=100, unique=True)
comment = models.CharField(max_length=100)
asset = models.ManyToManyField(Asset, related_name='perm_rule')
asset_group = models.ManyToManyField(AssetGroup, related_name='perm_rule')
user = models.ManyToManyField(User, related_name='perm_rule')
user_group = models.ManyToManyField(UserGroup, related_name='perm_rule')
role = models.ManyToManyField(PermRole, related_name='perm_rule')
- ssh_type = models.BooleanField()
+ is_secret_key = models.BooleanField()
def __unicode__(self):
return self.name
\ No newline at end of file
diff --git a/jperm/views.py b/jperm/views.py
index 21204aea5..f41a03ed6 100644
--- a/jperm/views.py
+++ b/jperm/views.py
@@ -89,7 +89,8 @@ def perm_rule_add(request):
asset_groups_select = request.POST.getlist('assetgroup', [])
roles_select = request.POST.getlist('role', [])
rule_name = request.POST.get('rulename')
- rule_comment = request.POST.get('comment')
+ rule_comment = request.POST.get('rule_comment')
+ rule_ssh_key = request.POST.get("use_publicKey")
# 获取需要授权的主机列表
assets_obj = [Asset.objects.get(ip=asset) for asset in assets_select]
@@ -114,7 +115,9 @@ def perm_rule_add(request):
rule.asset = assets_obj
rule.asset_group = asset_groups_obj
rule.role = roles_obj
+ rule.is_secret_key = bool(rule_ssh_key)
rule.save()
+
return HttpResponse(u"添加授权规则:%s" % rule.name)
@@ -130,8 +133,10 @@ def perm_rule_edit(request):
rule_id = request.GET.get("id")
rule = PermRule.objects.get(id=rule_id)
+
if request.method == 'GET' and rule_id:
# 渲染数据, 获取所有的rule对象
+ rule_comment = rule.comment
users = rule.user.all()
user_groups = rule.user_group.all()
assets = rule.asset.all()
@@ -141,7 +146,44 @@ def perm_rule_edit(request):
return my_render('jperm/perm_rule_edit.html', locals(), request)
elif request.method == 'POST' and rule_id:
- return HttpResponse("uncompleted")
+ # 获取用户选择的 用户,用户组,资产,资产组,用户角色
+ rule_name = request.POST.get('rule_name')
+ rule_comment = request.POST.get("rule_comment")
+ users_select = request.POST.getlist('user', [])
+ user_groups_select = request.POST.getlist('usergroup', [])
+ assets_select = request.POST.getlist('asset', [])
+ asset_groups_select = request.POST.getlist('assetgroup', [])
+ roles_select = request.POST.getlist('role', [])
+
+ # 获取需要授权的主机列表
+ assets_obj = [Asset.objects.get(ip=asset) for asset in assets_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]]
+ calc_assets = set(group_assets_obj) | set(assets_obj)
+
+ # 获取需要授权的用户列表
+ users_obj = [User.objects.get(name=user) for user in users_select]
+ user_groups_obj = [UserGroup.objects.get(name=group) for group in user_groups_select]
+ 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)
+
+ # 获取授予的角色列表
+ roles_obj = [PermRole.objects.get(name=role) for role in roles_select]
+
+ # 仅授权成功的,写回数据库(授权规则,用户,用户组,资产,资产组,用户角色)
+ rule.user = users_obj
+ rule.usergroup = user_groups_obj
+ rule.asset = assets_obj
+ rule.asset_group = asset_groups_obj
+ rule.role = roles_obj
+ rule.name = rule_name
+ rule.comment = rule.comment
+
+ print rule, rule.name
+ rule.save()
+ return HttpResponse(u"更新授权规则:%s" % rule.name)
+
+
@require_role('admin')
@@ -252,8 +294,12 @@ def perm_role_detail(request):
role_info = get_role_info(role_id)
# 渲染数据
- for key, value in role_info.iteritems():
- key = value
+ rules = role_info.get("rules")
+ assets = role_info.get("assets")
+ asset_groups = role_info.get("asset_groups")
+ users = role_info.get("users")
+ user_groups = role_info.get("user_groups")
+
return my_render('jperm/perm_role_detail.html', locals(), request)
@@ -265,15 +311,27 @@ def perm_role_edit(request):
# 渲染数据
header_title, path1, path2 = "系统角色", "角色管理", "角色编辑"
+ # 渲染数据
+ role_id = request.GET.get("id")
+ role = PermRole.objects.get(id=role_id)
if request.method == "GET":
- role_id = request.GET.get("id")
- # 渲染数据
- role = PermRole.objects.get(id=role_id)
-
return my_render('jperm/perm_role_edit.html', locals(), request)
if request.method == "POST":
- return HttpResponse(u"未实现")
+ # 获取 POST 数据
+ role_name = request.POST.get("role_name")
+ role_password = request.POST.get("role_password")
+ role_comment = request.POST.get("role_comment")
+
+ # 写入数据库
+ role.name = role_name
+ role.password = role_password
+ role.comment = role_comment
+
+ role.save()
+ return HttpResponse(u"更新系统角色: %s" % role.name)
+
+
@require_role('admin')
diff --git a/templates/jperm/perm_role_edit.html b/templates/jperm/perm_role_edit.html
index 23c7e7617..81d56d4b4 100644
--- a/templates/jperm/perm_role_edit.html
+++ b/templates/jperm/perm_role_edit.html
@@ -40,6 +40,13 @@
diff --git a/templates/jperm/perm_rule_list.html b/templates/jperm/perm_rule_list.html
index 270431c61..e08b8f7f4 100644
--- a/templates/jperm/perm_rule_list.html
+++ b/templates/jperm/perm_rule_list.html
@@ -55,19 +55,19 @@
{{ rule.name }} |
- {{ rule | rule_member_count:"user" }}
+ {{ rule | rule_member_count:"user" }}
|
- {{ rule | rule_member_count:"user_group" }}
+ {{ rule | rule_member_count:"user_group" }}
|
- {{ rule | rule_member_count:"asset" }}
+ {{ rule | rule_member_count:"asset" }}
|
- {{ rule | rule_member_count:"asset_group" }}
+ {{ rule | rule_member_count:"asset_group" }}
|
- {{ rule | rule_member_count:"role" }}
+ {{ rule | rule_member_count:"role" }}
|
详情
From 8d941dc028a8f3c100856284f532db634a6379a0 Mon Sep 17 00:00:00 2001
From: yumaojun <719118794@qq.com>
Date: Tue, 17 Nov 2015 13:55:13 +0800
Subject: [PATCH 05/31] update role edit and rule edit
---
jperm/views.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/jperm/views.py b/jperm/views.py
index f41a03ed6..fd4b9a756 100644
--- a/jperm/views.py
+++ b/jperm/views.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
-
from django.db.models import Q
from jperm.perm_api import *
from jperm.models import PermLog as Log
From e5c1071073b8610bbad7500fce41c5b45ad2a295 Mon Sep 17 00:00:00 2001
From: yumaojun <719118794@qq.com>
Date: Tue, 17 Nov 2015 14:10:46 +0800
Subject: [PATCH 06/31] Merge branch 'dev' into map_perm
---
jasset/views.py | 2 +-
jperm/models.py | 4 +-
jperm/views.py | 88 ++++++++++++++++++++++++-----
jumpserver.conf | 2 +-
templates/jperm/perm_role_edit.html | 7 +++
templates/jperm/perm_role_push.html | 10 ----
templates/jperm/perm_rule_add.html | 30 +---------
templates/jperm/perm_rule_edit.html | 30 +---------
templates/jperm/perm_rule_list.html | 10 ++--
9 files changed, 92 insertions(+), 91 deletions(-)
diff --git a/jasset/views.py b/jasset/views.py
index 8427f9f67..b0d616d92 100644
--- a/jasset/views.py
+++ b/jasset/views.py
@@ -160,7 +160,7 @@ def asset_add(request):
asset_save = af_post.save(commit=False)
if not use_default_auth:
password = request.POST.get('password', '')
- password_encode = CRYPTOR.encrypt(password)
+ password_encode = password
asset_save.password = password_encode
asset_save.is_active = True if is_active else False
asset_save.save()
diff --git a/jperm/models.py b/jperm/models.py
index 2bcea14e3..d9553a00c 100644
--- a/jperm/models.py
+++ b/jperm/models.py
@@ -32,14 +32,14 @@ class PermRole(models.Model):
class PermRule(models.Model):
date_added = models.DateTimeField(auto_now=True)
- name = models.CharField(max_length=100)
+ name = models.CharField(max_length=100, unique=True)
comment = models.CharField(max_length=100)
asset = models.ManyToManyField(Asset, related_name='perm_rule')
asset_group = models.ManyToManyField(AssetGroup, related_name='perm_rule')
user = models.ManyToManyField(User, related_name='perm_rule')
user_group = models.ManyToManyField(UserGroup, related_name='perm_rule')
role = models.ManyToManyField(PermRole, related_name='perm_rule')
- ssh_type = models.BooleanField()
+ is_secret_key = models.BooleanField()
def __unicode__(self):
return self.name
\ No newline at end of file
diff --git a/jperm/views.py b/jperm/views.py
index 2685d6bd6..fd4b9a756 100644
--- a/jperm/views.py
+++ b/jperm/views.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
-
from django.db.models import Q
from jperm.perm_api import *
from jperm.models import PermLog as Log
@@ -89,7 +88,8 @@ def perm_rule_add(request):
asset_groups_select = request.POST.getlist('assetgroup', [])
roles_select = request.POST.getlist('role', [])
rule_name = request.POST.get('rulename')
- rule_comment = request.POST.get('comment')
+ rule_comment = request.POST.get('rule_comment')
+ rule_ssh_key = request.POST.get("use_publicKey")
# 获取需要授权的主机列表
assets_obj = [Asset.objects.get(ip=asset) for asset in assets_select]
@@ -114,7 +114,9 @@ def perm_rule_add(request):
rule.asset = assets_obj
rule.asset_group = asset_groups_obj
rule.role = roles_obj
+ rule.is_secret_key = bool(rule_ssh_key)
rule.save()
+
return HttpResponse(u"添加授权规则:%s" % rule.name)
@@ -130,8 +132,10 @@ def perm_rule_edit(request):
rule_id = request.GET.get("id")
rule = PermRule.objects.get(id=rule_id)
+
if request.method == 'GET' and rule_id:
# 渲染数据, 获取所有的rule对象
+ rule_comment = rule.comment
users = rule.user.all()
user_groups = rule.user_group.all()
assets = rule.asset.all()
@@ -141,7 +145,44 @@ def perm_rule_edit(request):
return my_render('jperm/perm_rule_edit.html', locals(), request)
elif request.method == 'POST' and rule_id:
- return HttpResponse("uncompleted")
+ # 获取用户选择的 用户,用户组,资产,资产组,用户角色
+ rule_name = request.POST.get('rule_name')
+ rule_comment = request.POST.get("rule_comment")
+ users_select = request.POST.getlist('user', [])
+ user_groups_select = request.POST.getlist('usergroup', [])
+ assets_select = request.POST.getlist('asset', [])
+ asset_groups_select = request.POST.getlist('assetgroup', [])
+ roles_select = request.POST.getlist('role', [])
+
+ # 获取需要授权的主机列表
+ assets_obj = [Asset.objects.get(ip=asset) for asset in assets_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]]
+ calc_assets = set(group_assets_obj) | set(assets_obj)
+
+ # 获取需要授权的用户列表
+ users_obj = [User.objects.get(name=user) for user in users_select]
+ user_groups_obj = [UserGroup.objects.get(name=group) for group in user_groups_select]
+ 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)
+
+ # 获取授予的角色列表
+ roles_obj = [PermRole.objects.get(name=role) for role in roles_select]
+
+ # 仅授权成功的,写回数据库(授权规则,用户,用户组,资产,资产组,用户角色)
+ rule.user = users_obj
+ rule.usergroup = user_groups_obj
+ rule.asset = assets_obj
+ rule.asset_group = asset_groups_obj
+ rule.role = roles_obj
+ rule.name = rule_name
+ rule.comment = rule.comment
+
+ print rule, rule.name
+ rule.save()
+ return HttpResponse(u"更新授权规则:%s" % rule.name)
+
+
@require_role('admin')
@@ -252,8 +293,12 @@ def perm_role_detail(request):
role_info = get_role_info(role_id)
# 渲染数据
- for key, value in role_info.iteritems():
- key = value
+ rules = role_info.get("rules")
+ assets = role_info.get("assets")
+ asset_groups = role_info.get("asset_groups")
+ users = role_info.get("users")
+ user_groups = role_info.get("user_groups")
+
return my_render('jperm/perm_role_detail.html', locals(), request)
@@ -265,15 +310,27 @@ def perm_role_edit(request):
# 渲染数据
header_title, path1, path2 = "系统角色", "角色管理", "角色编辑"
+ # 渲染数据
+ role_id = request.GET.get("id")
+ role = PermRole.objects.get(id=role_id)
if request.method == "GET":
- role_id = request.GET.get("id")
- # 渲染数据
- role = PermRole.objects.get(id=role_id)
-
return my_render('jperm/perm_role_edit.html', locals(), request)
if request.method == "POST":
- return HttpResponse(u"未实现")
+ # 获取 POST 数据
+ role_name = request.POST.get("role_name")
+ role_password = request.POST.get("role_password")
+ role_comment = request.POST.get("role_comment")
+
+ # 写入数据库
+ role.name = role_name
+ role.password = role_password
+ role.comment = role_comment
+
+ role.save()
+ return HttpResponse(u"更新系统角色: %s" % role.name)
+
+
@require_role('admin')
@@ -326,10 +383,13 @@ def perm_role_push(request):
task = Tasks(push_resource)
ret = {}
ret_failed = []
- if password_push:
- ret["password_push"] = task.add_multi_user(**role_pass)
- if ret["password_push"].get("status") != "success":
- ret_failed.append(1)
+
+ # 因为要先建立用户,所以password 是必选项,
+ # 而push key是在 password也完成的情况下的 可选项
+ ret["password_push"] = task.add_multi_user(**role_pass)
+ if ret["password_push"].get("status") != "success":
+ ret_failed.append(1)
+
if key_push:
ret["key_push"] = task.push_multi_key(**role_key)
if ret["key_push"].get("status") != "success":
diff --git a/jumpserver.conf b/jumpserver.conf
index 6297ab00a..ac9506672 100644
--- a/jumpserver.conf
+++ b/jumpserver.conf
@@ -9,7 +9,7 @@ log = debug
host = 127.0.0.1
port = 3306
user = jumpserver
-password = mysql234
+password = mysql1234
database = jumpserver
[websocket]
diff --git a/templates/jperm/perm_role_edit.html b/templates/jperm/perm_role_edit.html
index 23c7e7617..81d56d4b4 100644
--- a/templates/jperm/perm_role_edit.html
+++ b/templates/jperm/perm_role_edit.html
@@ -40,6 +40,13 @@
+
+
|