Re: Script CGI

トップ ページ

このメッセージに返信
著者: Jérôme Kieffer
日付:  
To: guilde
題目: Re: Script CGI
On Thu, 7 Jul 2005 23:06:26 +0200
Frédéric <frederic.mantegazza@???> wrote:

> On Jeudi 07 Juillet 2005 21:40, Jérôme Kieffer wrote:
>
> > par contre cela se fait super bien en python-cgi avec un hasheur md5
> > ou sha1. j'en ai un si il te faut en python.
>
> Je prend ! Tu peux me l'envoyer ?


exemple de code .... pas pas du CGI mais plutot du bon cron.

Il faut bien avouer que j'ai copié le code de authlib .... mais j'ai le
droit : c'est de la LGPL.

la bibliotheque authlib se trouve dans ce package :
http://www.terre-adelie.org/sesame/sesame-0.5.tar.gz

#!/usr/bin/python

import string,whrandom,smtplib,authlib,os,tempfile,shutil


shadow="/etc/shadow"
tmpdir="/tmp"
user=""
fromadd="root@localhost"
toadd="root@localhost"



def generatePassword(minlen=7, maxlen=10):
        chars = string.letters + string.digits
        passwd = ""
# determine password size (randomly, but between the given range)
        passwd_size = whrandom.randint(minlen, maxlen)
        for x in range(passwd_size):
# choose a random alpha-numeric character
                passwd += whrandom.choice(chars)
        return passwd


def sendpass(password):
        msg=("From: %s\r\nTo: %s\r\nSubject: Changement de mot de
passe\r\n\r\n" % (fromadd, toadd)) 
        msg=msg+"Serveur :  \nAdresse : \nProtocol : ftp\nPort :
21\nCompte :  \nMot de passe : "+password
        server=smtplib.SMTP('localhost')
        #server.set_debuglevel(1)
        server.sendmail(fromadd,toadd,msg)
        server.quit()


def set_passwd(user, passwd):
    cyptpass=authlib.passcrypt(Pass, method='md5') 
    shadowfile=open(shadow,"r")
    fd,tmpfile=tempfile.mkstemp(".tmp","shadow",tmpdir)


    for  ligne in shadowfile.readlines():
                mots=string.split(ligne,":",2)
                if mots[0]!=user:
                        os.write(fd,ligne)
                        continue
                mots[1]=cyptpass
                ligne=string.join(mots,":")
                os.write(fd,ligne)
    os.close(fd)
    shutil.move(tmpfile,shadow)



if __name__ == '__main__':
    Pass=generatePassword()
    set_passwd(user,Pass)
    sendpass(Pass)




A++

--
Jérôme Kieffer