def auth(self, username, password): ret = Authentificator.auth(self, username, password) if ret != "": return ret cur = None con = None try: con = sqlite3.connect(config.get("sql_auth", "users")) con.text_factory = str cur = con.cursor() cur.execute( """select username, password from users where username=(?)""", (username, )) result = cur.fetchone() # если пользователь найден, то сравниваем хэш # переданного пароля с хэшем пароля, хранящимся в бд if result: if (result[1] == crypt(password, result[1][:5])): return "" else: return "(sql_auth) Invalid password" else: return "(sql_auth) User not found" except (sqlite3.OperationalError) as e: error("(sql_auth)", str(e)) return str(e) finally: if cur is not None: cur.close() if con is not None: con.close() return ""
def auth(self, username, password): ret = Authentificator.auth(self, username, password) if ret != "": return ret cur = None con = None try: con = sqlite3.connect(config.get("sql_auth", "users")) con.text_factory = str cur = con.cursor() cur.execute("""select username, password from users where username=(?)""", (username, )) result = cur.fetchone() # если пользователь найден, то сравниваем хэш # переданного пароля с хэшем пароля, хранящимся в бд if result: if (result[1] == crypt(password, result[1][:5])): return "" else: return "(sql_auth) Invalid password" else: return "(sql_auth) User not found" except(sqlite3.OperationalError) as e: error("(sql_auth)", str(e)) return str(e) finally: if cur is not None: cur.close() if con is not None: con.close() return ""
def main(): global con, cur try: config = configparser.ConfigParser() config.readfp(open(conffile)) con = sqlite3.connect(config.get("sql_auth", "users")) cur = con.cursor() try: cur.execute(""" create table users ( username varchar(32) NOT NULL primary key collate nocase, password varchar(100) NOT NULL )""") con.commit() print("Database \"users\" successfully created") except sqlite3.OperationalError: print("Database \"users\" is already created") cur.close() con.close() con = sqlite3.connect(config.get("sql", "session_db")) cur = con.cursor() try: cur.execute(""" create table addresses ( ip varchar(15) NOT NULL, user varchar(32) NOT NULL, start_time uint(11) NOT NULL, end_time uint(11) NOT NULL )""") cur.execute(""" create table log ( ip varchar(15) NOT NULL, user varchar(32) NOT NULL, start_time uint(11) NOT NULL )""") con.commit() print("Database \"session_db\" successfully created") except sqlite3.OperationalError: print("Database \"session_db\" is already created") except IOError as e: error("Cannot open config file:", str(e)) except sqlite3.OperationalError as e: error("(Sql)", str(e)) finally: # закрываем бд if cur is not None: cur.close() if con is not None: con.close()
def add(user, password): global con, cur password = crypt(password, "".join(["$6$", getsalt()])) try: cur.execute("""INSERT INTO users (`username`, `password`) VALUES (?, ?)""", (user, password)) con.commit() except sqlite3.IntegrityError as e: error(str(e))
def add(user, password): global con, cur password = crypt(password, "".join(["$6$", getsalt()])) try: cur.execute( """INSERT INTO users (`username`, `password`) VALUES (?, ?)""", (user, password)) con.commit() except sqlite3.IntegrityError as e: error(str(e))
def main(): global con, cur, encoding try: config = configparser.ConfigParser() config.readfp(open(conffile)) # коннектимся к бд, создаем таблицу, если её не существует # timeout 10 sec con = sqlite3.connect(config.get("sql_auth", "users"), 10) con.text_factory = str cur = con.cursor() parser = argparse.ArgumentParser() parser.add_argument("-p", "--password", action="store") parser.add_argument("-u", "--user", action="store") group = parser.add_mutually_exclusive_group() group.add_argument("-a", "--add", action='store_true', help="Add user") group.add_argument("-l", "--list", action='store_true', help="List users (default)") group.add_argument("-d", "--delete", action='store_true', help="Delete user") args = parser.parse_args() if args.add: if (args.user is not None) and (args.password is not None): add(args.user.lower(), args.password) else: error("need username and password") sys.exit(2) elif args.delete: if (args.user is not None): delete(args.user.lower()) else: error("need username") sys.exit(2) else: list_users() except IOError as e: error("Cannot open config file:", str(e)) except sqlite3.OperationalError as e: error(str(e)) except ImportError: pass finally: # закрываем бд if cur is not None: cur.close() if cur is not None: con.close()
def auth(self, username, password): ret = Authentificator.auth(self, username, password) if ret: return ret # аутентифицирует пользователя через ldap-сервер try: l = ldap.open(config.get("ldap", "server")) login_dn = config.get("ldap", "login_dn") % username error(login_dn) login_pass = password l.simple_bind_s(login_dn, login_pass) except(ldap.INVALID_CREDENTIALS): return "(ldap) INVALID LOGIN/PASSWORD" except(ldap.SERVER_DOWN): return "(ldap) Server is down" except: return "(ldap) Unknown error" return ""
def auth(self, username, password): ret = Authentificator.auth(self, username, password) if ret: return ret # аутентифицирует пользователя через ldap-сервер try: l = ldap.open(config.get("ldap", "server")) login_dn = config.get("ldap", "login_dn") % username error(login_dn) login_pass = password l.simple_bind_s(login_dn, login_pass) except (ldap.INVALID_CREDENTIALS): return "(ldap) INVALID LOGIN/PASSWORD" except (ldap.SERVER_DOWN): return "(ldap) Server is down" except: return "(ldap) Unknown error" return ""
except ImportError: from pysqlite2 import dbapi2 as sqlite3 import time # for time.sleep and time conversion functions import datetime from tsqauth import error, template, ispy3 # functions from tsqauth import conffile, encoding config = None try: config = configparser.ConfigParser() config.readfp(open(conffile)) except IOError as e: error(str(e)) class Authentificator: def __init__(self): pass # общая функция аутентификации, вызывает auth_ldap или auth_sql # в зависимости от значения переменной "method" def auth(self, username, password): # если логин или пароль пустой, то выводим ошибку if not (username and password): return "Enter login and password" else: return ""