#!/usr/bin/python from string import split from string import strip from string import lower import bcrypt import sqlite3 class EPasswd: def __init__(self): self.data = {} def set_data(self, no, email, passwd): lc_id = lower(no) self.data[lc_id] = {} self.data[lc_id]["id"] = no self.data[lc_id]["email"] = email self.data[lc_id]["passwd"] = passwd def load_database(self, file): conn = sqlite3.connect(file) c = conn.cursor() for row in c.execute('SELECT `no`, `email`, `password` FROM `faction`'): (no, email, passwd) = row self.set_data(no, email, passwd) conn.close() def load_file(self, file): try: fp = open(file,"r") except: fp = None if fp != None: while True: line = fp.readline() if not line: break line = strip(line) [id, email, passwd] = split(line, ":")[0:3] self.set_data(id, email, passwd) fp.close() def check(self, id, passwd): pw = self.get_passwd(id) if pw[0:4]=='$2a$' or pw[0:4]=='$2y$': try: uhash = pw.encode('utf8') upass = passwd.encode('utf8') return bcrypt.checkpw(upass, uhash) except: return False return pw == passwd def get_passwd(self, id): return self.data[lower(id)]["passwd"] def get_email(self, id): return self.data[lower(id)]["email"] def get_canon_id(self, id): return self.data[lower(id)]["id"] def fac_exists(self, id): return self.data.has_key(lower(id))