mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-10-22 00:09:14 +00:00
merge
This commit is contained in:
@@ -9,8 +9,6 @@ from jasset.models import Asset, AssetGroup
|
||||
class UserGroup(models.Model):
|
||||
name = models.CharField(max_length=80, unique=True)
|
||||
comment = models.CharField(max_length=160, blank=True, null=True)
|
||||
asset = models.ManyToManyField(Asset)
|
||||
asset_group = models.ManyToManyField(AssetGroup)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
@@ -27,6 +25,9 @@ class User(AbstractUser):
|
||||
role = models.CharField(max_length=2, choices=USER_ROLE_CHOICES, default='CU')
|
||||
group = models.ManyToManyField(UserGroup)
|
||||
ssh_key_pwd = models.CharField(max_length=200)
|
||||
# is_active = models.BooleanField(default=True)
|
||||
# last_login = models.DateTimeField(null=True)
|
||||
# date_joined = models.DateTimeField(null=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.username
|
||||
|
@@ -121,7 +121,9 @@ def db_del_user(username):
|
||||
|
||||
|
||||
def gen_ssh_key(username, password='',
|
||||
key_dir=os.path.join(BASE_DIR, 'keys/user/'),
|
||||
|
||||
key_dir=os.path.join(BASE_DIR, 'role_keys/user/'),
|
||||
|
||||
authorized_keys=True, home="/home", length=2048):
|
||||
"""
|
||||
generate a user ssh key in a property dir
|
||||
@@ -134,7 +136,7 @@ def gen_ssh_key(username, password='',
|
||||
|
||||
if authorized_keys:
|
||||
auth_key_dir = os.path.join(home, username, '.ssh')
|
||||
is_dir(auth_key_dir, username, mode=0700)
|
||||
mkdir(auth_key_dir, username, mode=0700)
|
||||
authorized_key_file = os.path.join(auth_key_dir, 'authorized_keys')
|
||||
with open(private_key_file+'.pub') as pub_f:
|
||||
with open(authorized_key_file, 'w') as auth_f:
|
||||
@@ -205,49 +207,3 @@ def get_display_msg(user, password, ssh_key_pwd, ssh_key_login_need, send_mail_n
|
||||
|
||||
return msg
|
||||
|
||||
# def ldap_add_user(username, ldap_pwd):
|
||||
# """
|
||||
# add a user in ldap database
|
||||
# 在LDAP中添加用户
|
||||
# """
|
||||
# user_dn = "uid=%s,ou=People,%s" % (username, LDAP_BASE_DN)
|
||||
# password_sha512 = PyCrypt.gen_sha512(PyCrypt.random_pass(6), ldap_pwd)
|
||||
# user = get_object(User, username=username)
|
||||
# if not user:
|
||||
# raise ServerError(u'用户 %s 不存在' % username)
|
||||
#
|
||||
# user_attr = {'uid': [str(username)],
|
||||
# 'cn': [str(username)],
|
||||
# 'objectClass': ['account', 'posixAccount', 'top', 'shadowAccount'],
|
||||
# 'userPassword': ['{crypt}%s' % password_sha512],
|
||||
# 'shadowLastChange': ['16328'],
|
||||
# 'shadowMin': ['0'],
|
||||
# 'shadowMax': ['99999'],
|
||||
# 'shadowWarning': ['7'],
|
||||
# 'loginShell': ['/bin/bash'],
|
||||
# 'uidNumber': [str(user.id)],
|
||||
# 'gidNumber': [str(user.id)],
|
||||
# 'homeDirectory': [str('/home/%s' % username)]}
|
||||
#
|
||||
# group_dn = "cn=%s,ou=Group,%s" % (username, LDAP_BASE_DN)
|
||||
# group_attr = {'objectClass': ['posixGroup', 'top'],
|
||||
# 'cn': [str(username)],
|
||||
# 'userPassword': ['{crypt}x'],
|
||||
# 'gidNumber': [str(user.id)]}
|
||||
#
|
||||
# ldap_conn.add(user_dn, user_attr)
|
||||
# ldap_conn.add(group_dn, group_attr)
|
||||
|
||||
|
||||
# def ldap_del_user(username):
|
||||
# """
|
||||
# delete a user in ldap database
|
||||
# 在ldap中删除某用户
|
||||
# """
|
||||
# user_dn = "uid=%s,ou=People,%s" % (username, LDAP_BASE_DN)
|
||||
# group_dn = "cn=%s,ou=Group,%s" % (username, LDAP_BASE_DN)
|
||||
# sudo_dn = 'cn=%s,ou=Sudoers,%s' % (username, LDAP_BASE_DN)
|
||||
#
|
||||
# ldap_conn.delete(user_dn)
|
||||
# ldap_conn.delete(group_dn)
|
||||
# ldap_conn.delete(sudo_dn)
|
@@ -201,14 +201,14 @@ def user_add(request):
|
||||
|
||||
if request.method == 'POST':
|
||||
username = request.POST.get('username', '')
|
||||
password = PyCrypt.random_pass(16)
|
||||
password = PyCrypt.gen_rand_pass(16)
|
||||
name = request.POST.get('name', '')
|
||||
email = request.POST.get('email', '')
|
||||
groups = request.POST.getlist('groups', [])
|
||||
admin_groups = request.POST.getlist('admin_groups', [])
|
||||
role = request.POST.get('role', 'CU')
|
||||
uuid = uuid_r.uuid1()
|
||||
ssh_key_pwd = PyCrypt.random_pass(16)
|
||||
ssh_key_pwd = PyCrypt.gen_rand_pass(16)
|
||||
extra = request.POST.getlist('extra', [])
|
||||
is_active = True if '0' in extra else False
|
||||
ssh_key_login_need = True if '1' in extra else False
|
||||
@@ -241,14 +241,11 @@ def user_add(request):
|
||||
for user_group_id in groups:
|
||||
user_groups.extend(UserGroup.objects.filter(id=user_group_id))
|
||||
print user_groups
|
||||
results = _public_perm_api({'type': 'new_user', 'user': user, 'group': user_groups})
|
||||
print results
|
||||
except IndexError, e:
|
||||
error = u'添加用户 %s 失败 %s ' % (username, e)
|
||||
try:
|
||||
db_del_user(username)
|
||||
server_del_user(username)
|
||||
_public_perm_api({'type': 'del_user', 'user': user, 'group': user_groups})
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
@@ -512,7 +509,7 @@ def regen_ssh_key(request):
|
||||
return HttpResponse('没有该用户')
|
||||
|
||||
username = user.username
|
||||
ssh_key_pass = PyCrypt.random_pass(16)
|
||||
ssh_key_pass = PyCrypt.gen_rand_pass(16)
|
||||
gen_ssh_key(username, ssh_key_pass)
|
||||
return HttpResponse('ssh密钥已生成,密码为 %s, 请到下载页面下载' % ssh_key_pass)
|
||||
|
||||
@@ -530,7 +527,7 @@ def down_key(request):
|
||||
user = get_object(User, id=user_id)
|
||||
if user:
|
||||
username = user.username
|
||||
private_key_file = os.path.join(BASE_DIR, 'keys/jumpserver', username+".pem")
|
||||
private_key_file = os.path.join(BASE_DIR, 'role_keys/jumpserver', username + ".pem")
|
||||
if os.path.isfile(private_key_file):
|
||||
f = open(private_key_file)
|
||||
data = f.read()
|
||||
|
Reference in New Issue
Block a user