- working with sqlalchemy 0.3.10
- remove duplicate foreign key definitions from tables.py - use _saltchars in passwordutils.py git-svn-id: file:///home/www/usr01/svn/gnuviechadmin/gnuviech.info/gnuviechadmin/trunk@240 a67ec6bc-e5d5-0310-a910-815c51eb3124
This commit is contained in:
		
							parent
							
								
									aaa23c9c5f
								
							
						
					
					
						commit
						f24de13a6f
					
				
					 8 changed files with 63 additions and 47 deletions
				
			
		
							
								
								
									
										0
									
								
								data/templates/home/README
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								data/templates/home/README
									
										
									
									
									
										Normal file
									
								
							|  | @ -1,4 +1,4 @@ | |||
| # -*- coding: UTF-8 -*- | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # Copyright (C) 2007 by Jan Dittberner. | ||||
| # | ||||
|  | @ -64,6 +64,23 @@ class BackendEntity(object): | |||
|             self.logger.info("%s: %s", toexec, sts[1]) | ||||
|         return sts[1] | ||||
| 
 | ||||
|     def supipe(self, cmdlines): | ||||
|         """Executes multiple commands as root and pipes the output of | ||||
|         the commands to the input of the next commands.""" | ||||
|         self.logger.debug("supipe called: %s", " | ".join(cmdlines)) | ||||
|         suwrapper = config.get('common', 'suwrapper') | ||||
|         predecessor = None | ||||
|         for cmdline in cmdlines: | ||||
|             toexec = "%s %s" % (suwrapper, cmdline) | ||||
|             if predecessor is None: | ||||
|                p = Popen(toexec, shell = True, stdout = PIPE) | ||||
|             else: | ||||
|                p = Popen(toexec, shell = True, stdin = predecessor.stdout, | ||||
|                          stdout = PIPE) | ||||
|             predecessor = p | ||||
|         output = predecessor.communicate()[0] | ||||
|         return predecessor.wait() | ||||
| 
 | ||||
|     def send_mail(self, subject, text): | ||||
|         """This method sends a mail with the given text and subject | ||||
|         and signs it usign GnuPG. If a public key of the recipient is | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| # -*- coding: UTF-8 -*- | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # Copyright (C) 2007 by Jan Dittberner. | ||||
| # Copyright (C) 2007, 2008 by Jan Dittberner. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| # -*- coding: UTF-8 -*- | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # Copyright (C) 2007 by Jan Dittberner. | ||||
| # Copyright (C) 2007, 2008 by Jan Dittberner. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| # -*- coding: UTF-8 -*- | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # Copyright (C) 2007 by Jan Dittberner. | ||||
| # Copyright (C) 2007, 2008 by Jan Dittberner. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
|  | @ -25,6 +25,7 @@ from settings import config | |||
| from BackendTo import * | ||||
| from BackendEntity import * | ||||
| from BackendEntityHandler import * | ||||
| import os | ||||
| 
 | ||||
| class SysuserEntity(BackendEntity): | ||||
|     """Entity class for system users.""" | ||||
|  | @ -52,8 +53,9 @@ class SysuserEntity(BackendEntity): | |||
|         usernames = [user.username for user in \ | ||||
|                      getenttools.find_user_by_prefix(prefix)] | ||||
|         maxid = max([int(username[len(prefix):]) for username in usernames]) | ||||
|         for num in range(1, maxid + 1): | ||||
|             username = "%s%02d" % (prefix, num) | ||||
|         maxid += 2 | ||||
|         for number in range(1, maxid): | ||||
|             username = "%s%02d" % (prefix, number) | ||||
|             if not username in usernames: | ||||
|                 return username | ||||
| 
 | ||||
|  | @ -79,15 +81,15 @@ class SysuserEntity(BackendEntity): | |||
| 
 | ||||
|     def _populate_home(self): | ||||
|         templatedir = get_template_dir(config.get('sysuser', 'hometemplate')) | ||||
|         cmdline = 'cp -R "%(template)s" "%(home)s"' % { | ||||
|             'template' : templatedir, | ||||
|             'home'     : self.delegateto.home } | ||||
|         self.sucommand(cmdline) | ||||
|         cmdline = 'chown -R "%(username)s":"%(group)s" %(home)s' % { | ||||
|         olddir = os.getcwd() | ||||
|         os.chdir(templatedir) | ||||
|         cmd1 = 'find . -depth \! -regex ".*\.svn.*" \! -name "*~" -print0' | ||||
|         cmd2 = 'cpio --pass-through --owner=%(username)s.%(group)s --null --make-directories %(home)s' % { | ||||
|             'username' : self.delegateto.username, | ||||
|             'group'    : config.get('sysuser', 'defaultgroup'), | ||||
|             'home'     : self.delegateto.home } | ||||
|         self.sucommand(cmdline) | ||||
|             'home'     : self.delegateto.home}         | ||||
|         self.supipe((cmd1, cmd2)) | ||||
|         os.chdir(olddir) | ||||
| 
 | ||||
|     def _mail_sysuser(self): | ||||
|         template = get_template(config.get('common', 'mailtemplates'), | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| # -*- coding: UTF-8 -*- | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # Copyright (C) 2007 by Jan Dittberner. | ||||
| # Copyright (C) 2007, 2008 by Jan Dittberner. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU General Public License as published by | ||||
|  | @ -43,30 +43,15 @@ except exceptions.NoSuchTableError, nste: | |||
| 
 | ||||
| meta = BoundMetaData(config.get('database', 'uri')) | ||||
| #meta.engine.echo = True | ||||
| client_table = Table( | ||||
|     'client', meta, schema = dbschema, autoload = True) | ||||
| sysuser_table = Table( | ||||
|     'sysuser', meta, ForeignKeyConstraint(['clientid'], ['client.clientid']), | ||||
|     schema = dbschema, autoload = True) | ||||
| domain_table = Table( | ||||
|     'domain', meta, ForeignKeyConstraint(['sysuserid'], ['sysuser.sysuserid']), | ||||
|     schema = dbschema, autoload = True) | ||||
| record_table = Table( | ||||
|     'record', meta, ForeignKeyConstraint(['domainid'], ['domain.domainid']), | ||||
|     schema = dbschema, autoload = True) | ||||
| supermaster_table = Table( | ||||
|     'supermaster', meta, | ||||
|     ForeignKeyConstraint(['account'], ['sysuser.sysuserid']), | ||||
|     schema = dbschema, autoload = True) | ||||
| mailaccount_table = Table( | ||||
|     'mailaccount', meta, | ||||
|     ForeignKeyConstraint(['domainid'], ['domain.domainid']), | ||||
|     schema = dbschema, autoload = True) | ||||
| mailaddress_table = Table( | ||||
|     'mailaddress', meta, | ||||
|     ForeignKeyConstraint(['domainid'], ['domain.domainid']), | ||||
|     schema = dbschema, autoload = True) | ||||
| mailtarget_table = Table( | ||||
|     'mailtarget', meta, | ||||
|     ForeignKeyConstraint(['mailaddressid'], ['mailaddress.mailaddressid']), | ||||
|     schema = dbschema, autoload = True) | ||||
| client_table = Table('client', meta, schema = dbschema, autoload = True) | ||||
| sysuser_table = Table('sysuser', meta, schema = dbschema, autoload = True) | ||||
| domain_table = Table('domain', meta, schema = dbschema, autoload = True) | ||||
| record_table = Table('record', meta, schema = dbschema, autoload = True) | ||||
| supermaster_table = Table('supermaster', meta, schema = dbschema, | ||||
|                           autoload = True) | ||||
| mailaccount_table = Table('mailaccount', meta, schema = dbschema, | ||||
|                           autoload = True) | ||||
| mailaddress_table = Table('mailaddress', meta, schema = dbschema, | ||||
|                           autoload = True) | ||||
| mailtarget_table = Table('mailtarget', meta, schema = dbschema, | ||||
|                          autoload = True) | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| # -*- coding: UTF-8 -*- | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # Copyright (C) 2007 by Jan Dittberner. | ||||
| # | ||||
|  | @ -24,6 +24,7 @@ import crypt, crack, random | |||
| _pwchars = [] | ||||
| for pair in (('0', '9'), ('A', 'Z'), ('a', 'z')): | ||||
|     _pwchars.extend(range(ord(pair[0]), ord(pair[1]))) | ||||
| _saltchars = [char for char in _pwchars] | ||||
| for char in "-+/*_@": | ||||
|     _pwchars.append(ord(char)) | ||||
| 
 | ||||
|  | @ -46,7 +47,7 @@ def checkpassword(password): | |||
| def md5_crypt_password(password): | ||||
|     """Hashes the given password with MD5 and a random salt value.""" | ||||
|     salt = "".join([chr(letter) for letter in \ | ||||
|                     random.sample(_pwchars, 8)]) | ||||
|                     random.sample(_saltchars, 8)]) | ||||
|     return crypt.crypt(password, '$1$' + salt) | ||||
| 
 | ||||
| def get_pw_tuple(password = None): | ||||
|  |  | |||
							
								
								
									
										11
									
								
								gnuviechadmin/util/stmtcreator.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								gnuviechadmin/util/stmtcreator.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| from passwordutils import * | ||||
| import sys | ||||
| 
 | ||||
| for line in sys.stdin.read().splitlines(): | ||||
|   parts = line.split() | ||||
|   (email, domain) = parts[0].split("@") | ||||
|   username = parts[1][0:5] | ||||
|   pwtuple = get_pw_tuple() | ||||
|   print "INSERT INTO mailpassword (id, clearpass, cryptpass, uid, gid, home, spamcheck) VALUES ('%s', '%s', '%s', %d, %d, '/home/mail/%s/%s', 'false');" % (parts[1], pwtuple[0], pwtuple[1], int(parts[2]), 119, username, parts[1]) | ||||
|   print "INSERT INTO mailaddress (domainid, email, target) VALUES (%d, '%s', '%s');" % (int(parts[3]), email, parts[1]) | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue