예제 #1
0
파일: mail.py 프로젝트: jmcfarlane/chula
    def send(self):
        """
        Send the requested mail using smtplib
        """

        if not regex.match(regex.EMAIL, str(self.reply_to_addy)):
            self.reply_to_addy = self.from_addy

        self._validate_encoding()

        headers = []
        headers.append('From: %s' % self.from_addy)
        headers.append('Reply-To: %s' % self.reply_to_addy)
        headers.append('To: %s' % ','.join(self.to_addy.split()))
        headers.append('Subject: %s' % self.subject)
        headers.append('\n')

        try:
            server = smtplib.SMTP(self.server)
            server.set_debuglevel(0)
            server.sendmail(self.from_addy,
                            self.to_addy.split(),
                            '\n'.join(headers) + self.body)
            server.quit()
        except socket.gaierror:
            raise
예제 #2
0
파일: passwd.py 프로젝트: jbloetz/chula
def hash(password, salt=None, pattern=regex.PASSWD):
    """
    Generate a password hash

    @param password: User's password
    @type password: String
    @param salt: Salt for use with generating an existing hash
    @type salt: String
    @param pattern: Regex used to validate the password
    @type pattern: String (valid regex)
    @return: String 

    >>> from chula import passwd
    >>> hashed = passwd.hash('mypassword')
    >>> len(hashed) == 46
    True
    """

    if not regex.match(pattern, password):
        raise error.MalformedPasswordError
       
    if salt is None:
        def generate_salt():
            for i in xrange(SALT_LENGTH):
                yield chr(randrange(65, 122))

        salt = ''.join(generate_salt())

    return salt + hashlib.sha1(salt + password + lock).hexdigest()