def index_login(): import getpass from logbuff import Logbuff as logbuff print( """ ******************************************************************************* * Welcome to Psh&Imagine shell ! * * Please Enter your username and password ! Press CTRL_C to abort ! * ******************************************************************************* """ ) time = 0 while time < 3: user = input("User:"******" ": password = getpass.getpass("Password:"******" ": level = checklevel(user, password) if level == "usererror" or level == "pwderror": print("Authentication failure !") time += 1 continue else: print("Welcome %s ! %s" % (user, datetime.datetime.now())) l = logbuff(logname=user + TIME + ".log", logger=user) l.logbuff.info(user + " login!") ins = db(host=HOST, port=PORT, user=USER, password=PASSWORD, db=DB) conn = ins.isconnect() if conn == "error": print("exit now! ") exit(0) try: with conn.cursor() as cur: update_online = "update `im_sys_privileges` set `online`=1 where `user`=%s" cur.execute(update_online, user) cur.close() except: print("ERROR!login:index_login:131") finally: conn.commit() conn.close() return level, user break else: time += 1 continue else: time += 1 continue
def checklevel(local_user, local_password): l_user = local_user l_pwd = local_password ins = db(host=HOST, port=PORT, user=USER, password=PASSWORD, db=DB) conn = ins.isconnect() if conn == "error": print("exit now! ") exit(0) loginflag = "flase" try: with conn.cursor() as cur: checkuser = "******" checkpwd = "select `passwd` from im_sys_privileges where `user`=%s" res = cur.execute(checkuser, (l_user)) if res != 0: loginflag = "true" exres = cur.fetchone() level = exres[1] online = exres[2] if online == 1: print("Max login limit!") if loginflag == "true" and online == 0: cur.execute(key, (l_pwd)) t_key = cur.fetchone() t_key = t_key[0] cur.execute(checkpwd, (l_user)) r_pwd = cur.fetchone() r_pwd = r_pwd[0] if t_key == r_pwd: # print ("auth ok") return level cur.close() conn.close() else: # print ("password failed") loginflag = "pwderror" return loginflag cur.close() conn.close() else: loginflag = "usererror" return loginflag else: loginflag = "usererror" # print (loginflag) return loginflag except: print("Error!login.checklevel:88,未知错误") finally: conn.close()
def logout(local_user): l_user=local_user ins=db(host=HOST,port=PORT,user=USER,password=PASSWORD,db=DB) conn=ins.isconnect() if conn == 'error': print ("exit now! ") exit(0) try: with conn.cursor() as cur: logout_online="update im_sys_privileges set `online`=0 where `user`=%s" if cur.execute(logout_online,(l_user)): cur.close() return 'ok' except: print ("Error!login.checklevel:88,未知错误") finally: conn.commit() conn.close()
def init(): config=configparser.ConfigParser() conf=config.read(pshconf.imagineconf) ins=db(host=config.get('db','host'),port=config.getint('db','port'),user=config.get('db','user'),password=config.get('db','password'),db=config.get('db','db')) conn=ins.isconnect() try: with conn.cursor() as cur: create_db="CREATE DATABASE `psh_imagine` DEFAULT CHARACTER SET utf8" create_table="CREATE TABLE `psh_imagine`.`im_sys_privileges` (`id` int(11) NOT NULL AUTO_INCREMENT, `user` varchar(60) NOT NULL, `passwd` varchar(255) NOT NULL,`level` int(11) NOT NULL,`regtime` datetime NOT NULL,`full_name` varchar(255) DEFAULT NULL,`sa` varchar(30) NOT NULL,`na` varchar(30) NOT NULL,`dba` varchar(30) NOT NULL,`online` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 " insert_data="insert into `psh_imagine`.`im_sys_privileges` values ('','admin',md5(password('admin')),3,now(),'admin',1,1,1,0)" if cur.execute(create_db): print ("create db ok! 创建数据库,成功! ") res_create_table=cur.execute(create_table) res_insert_data=cur.execute(insert_data) if res_insert_data == 1: print("initialization ok! 初始化数据,成功!") except: print ("initialization failure! 初始化失败! ") finally: conn.commit() conn.close()