Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,82 @@
|
|||
import mysql.connector
|
||||
import hashlib
|
||||
|
||||
import sys
|
||||
import random
|
||||
|
||||
DB_HOST = "localhost"
|
||||
DB_USER = "devel"
|
||||
DB_PASS = "devel"
|
||||
DB_NAME = "test"
|
||||
|
||||
def connect_db():
|
||||
''' Try to connect DB and return DB instance, if not, return False '''
|
||||
try:
|
||||
return mysql.connector.connect(host=DB_HOST, user=DB_USER, passwd=DB_PASS, db=DB_NAME)
|
||||
except:
|
||||
return False
|
||||
|
||||
def create_user(username, passwd):
|
||||
''' if user was successfully created, returns its ID; returns None on error '''
|
||||
db = connect_db()
|
||||
if not db:
|
||||
print "Can't connect MySQL!"
|
||||
return None
|
||||
|
||||
cursor = db.cursor()
|
||||
|
||||
salt = randomValue(16)
|
||||
passwd_md5 = hashlib.md5(salt+passwd).hexdigest()
|
||||
|
||||
# If username already taken, inform it
|
||||
try:
|
||||
cursor.execute("INSERT INTO users (`username`, `pass_salt`, `pass_md5`) VALUES (%s, %s, %s)", (username, salt, passwd_md5))
|
||||
cursor.execute("SELECT userid FROM users WHERE username=%s", (username,) )
|
||||
id = cursor.fetchone()
|
||||
db.commit()
|
||||
cursor.close()
|
||||
db.close()
|
||||
return id[0]
|
||||
except:
|
||||
print 'Username was already taken. Please select another'
|
||||
return None
|
||||
|
||||
def authenticate_user(username, passwd):
|
||||
db = connect_db()
|
||||
if not db:
|
||||
print "Can't connect MySQL!"
|
||||
return False
|
||||
|
||||
cursor = db.cursor()
|
||||
|
||||
cursor.execute("SELECT pass_salt, pass_md5 FROM users WHERE username=%s", (username,))
|
||||
|
||||
row = cursor.fetchone()
|
||||
cursor.close()
|
||||
db.close()
|
||||
if row is None: # username not found
|
||||
return False
|
||||
salt = row[0]
|
||||
correct_md5 = row[1]
|
||||
tried_md5 = hashlib.md5(salt+passwd).hexdigest()
|
||||
return correct_md5 == tried_md5
|
||||
|
||||
def randomValue(length):
|
||||
''' Creates random value with given length'''
|
||||
salt_chars = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||
|
||||
return ''.join(random.choice(salt_chars) for x in range(length))
|
||||
|
||||
if __name__ == '__main__':
|
||||
user = randomValue(10)
|
||||
passwd = randomValue(16)
|
||||
|
||||
new_user_id = create_user(user, passwd)
|
||||
if new_user_id is None:
|
||||
print 'Failed to create user %s' % user
|
||||
sys.exit(1)
|
||||
auth = authenticate_user(user, passwd)
|
||||
if auth:
|
||||
print 'User %s authenticated successfully' % user
|
||||
else:
|
||||
print 'User %s failed' % user
|
||||
Loading…
Add table
Add a link
Reference in a new issue