Commit cde3185a authored by ibuler's avatar ibuler

Merge branch 'dev'

parents 9efd42d4 40ae57d7
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import random
import os.path import os.path
import shutil import shutil
from paramiko import SSHException from paramiko import SSHException
...@@ -8,9 +7,9 @@ from paramiko.rsakey import RSAKey ...@@ -8,9 +7,9 @@ from paramiko.rsakey import RSAKey
from jumpserver.api import mkdir from jumpserver.api import mkdir
from uuid import uuid4 from uuid import uuid4
from jumpserver.api import CRYPTOR from jumpserver.api import CRYPTOR
from os import makedirs
from tempfile import NamedTemporaryFile from jumpserver.api import logger
from jumpserver.settings import KEY_DIR from jumpserver.settings import KEY_DIR
...@@ -55,9 +54,9 @@ def gen_keys(key="", key_path_dir=""): ...@@ -55,9 +54,9 @@ def gen_keys(key="", key_path_dir=""):
with open(key_file) as f: with open(key_file) as f:
try: try:
key = RSAKey.from_private_key(f) key = RSAKey.from_private_key(f)
except SSHException: except SSHException, e:
shutil.rmtree(key_path_dir, ignore_errors=True) shutil.rmtree(key_path_dir, ignore_errors=True)
raise SSHException raise SSHException(e)
os.chmod(private_key, 0644) os.chmod(private_key, 0644)
with open(public_key, 'w') as content_file: with open(public_key, 'w') as content_file:
......
...@@ -294,7 +294,10 @@ def perm_role_add(request): ...@@ -294,7 +294,10 @@ def perm_role_add(request):
# 生成随机密码,生成秘钥对 # 生成随机密码,生成秘钥对
sudos_obj = [get_object(PermSudo, id=sudo_id) for sudo_id in sudo_ids] sudos_obj = [get_object(PermSudo, id=sudo_id) for sudo_id in sudo_ids]
if key_content: if key_content:
try:
key_path = gen_keys(key=key_content) key_path = gen_keys(key=key_content)
except SSHException, e:
raise ServerError(e)
else: else:
key_path = gen_keys() key_path = gen_keys()
logger.debug('generate role key: %s' % key_path) logger.debug('generate role key: %s' % key_path)
...@@ -305,7 +308,6 @@ def perm_role_add(request): ...@@ -305,7 +308,6 @@ def perm_role_add(request):
return HttpResponseRedirect(reverse('role_list')) return HttpResponseRedirect(reverse('role_list'))
except ServerError, e: except ServerError, e:
error = e error = e
return my_render('jperm/perm_role_add.html', locals(), request) return my_render('jperm/perm_role_add.html', locals(), request)
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<div class="form-group"> <div class="form-group">
<label for="role_key" class="col-sm-2 control-label">用户密钥</label> <label for="role_key" class="col-sm-2 control-label">用户密钥</label>
<div class="col-sm-8"> <div class="col-sm-8">
<textarea class="form-control" name="role_key" placeholder="请复制粘贴私钥" rows="10" style="font-size: 9px;"></textarea> <textarea id='role_key' class="form-control" name="role_key" placeholder="请复制粘贴私钥" rows="10" style="font-size: 9px;"></textarea>
<span class="help-block m-b-none">如果不添加密钥,会自动生成 </span> <span class="help-block m-b-none">如果不添加密钥,会自动生成 </span>
</div> </div>
</div> </div>
...@@ -93,6 +93,7 @@ $('#roleForm').validator({ ...@@ -93,6 +93,7 @@ $('#roleForm').validator({
theme: "yellow_right_effect", theme: "yellow_right_effect",
rules: { rules: {
check_name: [/^\w{2,20}$/, '大小写字母数字和下划线,2-20位'], check_name: [/^\w{2,20}$/, '大小写字母数字和下划线,2-20位'],
check_begin: [/^[\-]+BEGIN RSA PRIVATE KEY[\-]+/gm, '请填写正确的RSA Key'],
{# either: function(){#} {# either: function(){#}
{# return $('#role_password').val() == ''#} {# return $('#role_password').val() == ''#}
{# }#} {# }#}
...@@ -105,6 +106,10 @@ $('#roleForm').validator({ ...@@ -105,6 +106,10 @@ $('#roleForm').validator({
ok: "", ok: "",
msg: {required: "系统用户名称必填"} msg: {required: "系统用户名称必填"}
}, },
"role_key": {
rule: "required;check_begin",
tip: "请输入正确格式的RSA私钥"
},
{# "role_key": {#} {# "role_key": {#}
{# rule: "required(either)",#} {# rule: "required(either)",#}
{# tip: "输入密钥",#} {# tip: "输入密钥",#}
...@@ -129,6 +134,8 @@ for (var selector in config) { ...@@ -129,6 +134,8 @@ for (var selector in config) {
$(selector).chosen(config[selector]); $(selector).chosen(config[selector]);
} }
</script> </script>
<script src="/static/js/cropper/cropper.min.js"></script> <script src="/static/js/cropper/cropper.min.js"></script>
<script src="/static/js/datapicker/bootstrap-datepicker.js"></script> <script src="/static/js/datapicker/bootstrap-datepicker.js"></script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment