def register(self, e, cmd): nick = e.source.nick c = self.connection cmdSplit = cmd.split(" ") passwd = cmdSplit[1] if len(cmdSplit) > 1: if login.isUserRegistred(nick): c.privmsg(nick, "The user '" + nick + "' already exists!") else: login.register(nick, passwd) c.privmsg(nick, "Done! Now you can use 'identify'") else: c.privmsg(nick, "Your command is incorrect, use: register <pass>")
def welcome(): print("*" * 30) print("Quiz Game".center(30, "*")) print("*" * 30) print(" 1. Login and Play".center(30, "*")) print(" 2. Register ".center(30, "*")) print(" 3. Leaderboard ".center(30, "*")) print(" 4. Exit".center(30, "*")) print("*" * 30) n = int(input("Enter a number >>")) if n == 1: players = login.login() if n == 2: login.register() welcome() if n == 3: return leaderboard() if n == 4: return exit() if players: game(players[0], players[1]) else: welcome()
def register(): if request.method == "GET": return render_template("register.html") else: usern = request.form["Username"].encode('ascii', 'ignore') passw = request.form["Password required"].encode('ascii', 'ignore') cpassw = request.form["Confirm Password"].encode('ascii', 'ignore') if cpassw == passw: if lawgin.register(usern, passw): return redirect("/login") else: return redirect("/error") else: return redirect("/error")
def register(): if request.method == "GET": return render_template ("register.html") else: usern = request.form["Username"].encode('ascii','ignore') passw = request.form["Password required"].encode('ascii','ignore') cpassw = request.form["Confirm Password"].encode('ascii','ignore') if cpassw == passw: if lawgin.register(usern,passw): return redirect ("/login") else: return redirect ("/error") else: return redirect ("/error")
def app_loop(self): Exit = False print( '''Hello, Welcome to JavinDrive.\nFor assistance please type help into the command''' ) while not Exit: user_input = input('JavinDrive: ') if user_input == 'help': print('help,quit,login,register,logout') if user_input == 'quit': Exit = True if user_input == 'login': if self.user != None: print(self.user + ' is logged on already.') else: try: self.user, self.name = login.logScreen( self.conn, self.cursor) except: pass if user_input == 'register': if self.user == None: try: self.user, self.name = login.register( self.conn, self.cursor) except: pass else: print(self.user + ' is logged on already.') if user_input == 'logout': self.user = None self.name = None print('Logged out') if user_input == 'menu': self.menu.showMenu() if user_input == 'offer ride': rides.offerRide(self.user, self.conn, self.cursor) if user_input == 'search ride': rides.searchRide(self.user, self.conn, self.cursor) if user_input == 'post request': requests.postRequest(self.user, self.conn, self.cursor) if user_input == 'delete request': requests.deleteRequest(self.user, self.conn, self.cursor) if user_input == 'take request': requests.searchRequest(self.user, self.conn, self.cursor) if user_input == 'book member': bookings.bookMembers(self.user, self.conn, self.cursor) if user_input == 'cancel booking': bookings.cancelBook(self.user, self.conn, self.cursor)
def register_process(): if request.method == 'POST': user = json.loads(request.data) username = user['login'] password = user['password'] user_id = login.register(username, password) if user_id: login.login(username, password) session['username'] = username session['logged_in'] = True session['user_id'] = user_id return json.dumps({'success': True}) else: return json.dumps({'success': 'in_use'})
def register(self, user_name, passwd): p = self.do_find_same(user_name, passwd) if p: return False # 加密处理 hash = hashlib.md5((user_name + "the-salt").encode()) hash.update(passwd.encode()) try: sql = login.register(self.table, user_name, hash.hexdigest()) self.cur.execute(sql) self.db.commit() return True except Exception as e: self.db.rollback() print('Failed:', e) return False pass
def register(): #To be improved session.pop('user', None) if request.method == 'GET': return render_template('register.html') else: username = request.form['username'] password = request.form['password'] state = login.register(connHolder.conn, username, password) if state is True: #state is either 'True' or a string with error message session['user'] = username return flask.redirect('/dashboard') else: return flask.redirect( url_for('.custom', message="Error: " + str(state), type="register"))
def register(): if request.method == "POST": if request.form['b'] == "Logout": return logout() user = request.form["username"] pword = request.form["password"] pword2 = request.form["confirm_password"] name = request.form["name"] msg = login.register(user,pword,pword2,name) if msg == "Successfully registered.": return redirect(url_for("home")) else: return render_template("register.html",message=msg) else: if "user" in session: return render_template("textwithlogout.html",message="You are already logged in.") return render_template("register.html")
def main_account_screen(): global main_screen main_screen = Tk() main_screen.geometry("300x250") main_screen.title("Okno logowania") Label(text="Wybierz logowanie albo rejestracja", bg="#49A", width="300", height="2", font=("Arial", 13)).pack() Label(text="").pack() Button(text="Logowanie", height="2", width="30", command=lambda: login.login(main_screen)).pack() Label(text="").pack() Button(text="Rejestracja", height="2", width="30", command=lambda: login.register(main_screen)).pack() main_screen.mainloop()
def rsubmit(): if request.method == "POST": rname = request.form["rname"] rpass = request.form["rpass"] remail = request.form["remail"] print(rname, rpass, remail) if rname == "" or rpass == "" or remail == "": flash("Fill out all fields!") return redirect(url_for("mainPage")) reg = login.register(rname, rpass) if reg == "user_exists": flash("User already exists!", "info") return redirect(url_for("mainPage")) with open("users.json", "r") as ur: cf = json.load(ur) cf[list(cf)[0]].append(remail) with open("users.json", "w") as uf: json.dump(cf, uf) session["current_page"] = "home" return redirect(url_for("mainPage"))
print('\t' + "╔" + "═" * 62 + "╗") print('\t' + "║" + " " * 62 + "║") print('\t' + "║" + " " * 24 + "GoodUniversity" + " " * 24 + "║") print('\t' + "║" + " " * 62 + "║") print('\t' + "╠" + "═" * 62 + "╣") print('\t' + "║" + " " * 2 + listGenrator.lenFit(str(getTime.persianDate() + " | " + getTime.time()), 60) + "║") print('\t' + "╠" + "═" * 62 + "╣") print('\t' + "║" + " Please choose from the menu:" + " " * 32 + "║") print('\t' + "║" + " " * 62 + "║") print('\t' + "║" + " L : Login" + " " * 49 + "║") print('\t' + "║" + " R : Register" + " " * 46 + "║") print('\t' + "║" + " E : Exit" + " " * 50 + "║") print('\t' + "║" + " " * 62 + "║") print('\t' + "╚" + "═" * 62 + "╝") request = str(input(" Your request:")) if request == 'R' or request == 'r': typeof = str(input(" Your type:")) username = str(input(" Your username:"******" Your password:"******" Username:"******" Password:"******"005"))
def run(self): inputs = [self.sock] outputs = [] msgQueues = {} while self.runFlag: readable,writable,exceptional=select.select(inputs,outputs,inputs,0.1) for s in readable: if s is self.sock: conn,cli_addr = s.accept() conn.setblocking(0) print "connection from",cli_addr inputs.append(conn) msgQueues[conn]=Queue.Queue() else:#connection is created data = s.recv(1024) if data: #print "received ",data," from ", s.getpeername() #print data a,b,c,d = struct.unpack(DGRAM_FORMAT,data) a = a.strip("\x00") #注册新用户 if a=='SIGN_IN': user_no = login.register(b.strip("\x00"),c.strip("\x00"),d.strip("\x00")) print u"随机生成一个OC号:",user_no user_no = "%i" %user_no msgQueues[s].put(user_no) friends.addFriend(user_no,user_no) #登录验证 elif a=='LOGIN': uno = b.strip("\x00") reply = login.loginCheck(uno,c.strip("\x00")) msgQueues[s].put(reply) if reply!="LOGIN FAIL":#登录成功 self.onlineUser.append(uno) sdata = struct.pack("50s50s50s","UP",uno,"") for kno in self.cmd_sock: if self.cmd_sock[kno] in msgQueues: msgQueues[self.cmd_sock[kno]].put(sdata) #客户端下线通知 elif a =='DOWN': uno = b.strip("\x00") print u"%s下线通知" %uno if uno in self.onlineUser: self.onlineUser.remove(uno) if uno in self.sessions: for fno in self.sessions[uno]: usock = self.sessions[uno][fno] if usock: usock.close() self.sessions.pop(uno) sdata = struct.pack("50s50s50s","DOWN",uno,"") for kno in self.cmd_sock: if self.cmd_sock[kno] in msgQueues: msgQueues[self.cmd_sock[kno]].put(sdata) #每个客户端一个cmd socket elif a=='CMD_SOCKET': uno = b.strip('\x00') self.cmd_sock[uno]=s #查找好友列表,返回user_no, nickname elif a=='GET_FRIENDS': reply = friends.getFriends(b.strip("\x00")) msgQueues[s].put(reply) #获取当前在线的所账号 elif a=='GET_ONLINE': reply = "OK"+self.getOnline() msgQueues[s].put(reply) #查找好友 elif a=='FIND_FRIEND': reply = friends.findFriend(b.strip("\x00")) msgQueues[s].put(reply) #添加好友,双向添加,默认不提示被动添加的一方 elif a=='ADD_FRIEND': uno = b.strip("\x00") fno = c.strip("\x00") reply = friends.addFriend(fno,uno) reply = friends.addFriend(uno,fno) if reply == 'ADD_SUCCESS': ret = friends.findFriend(fno) fnick=ret.split('[')[1].split(']')[0] state = "OFFLINE" if fno in self.onlineUser: state = 'ONLINE' reply = u"%s|%s|%s" %(fno,fnick,state) msgQueues[s].put(reply) #查找离线消息,返回send_user_no, msg elif a=='OFFLINE_MSG': uno = b.strip('\x00') sdata = message.getOfflineMsg(uno) print u"离线消息:%s" %sdata msgQueues[s].put(sdata) #建立会话、或接收会话 elif a=='NEW_SESSION': #or a=='ACC_SESSION': user_no = b.strip("\x00") friend_no = c.strip("\x00") if user_no not in self.sessions.keys(): self.sessions[user_no]={} self.sessions[user_no][friend_no] = s print "new session between %s and %s" %(user_no,friend_no) #转发消息 elif a=='MESG': user_no = b.strip("\x00") friend_no = c.strip("\x00") msg = d.strip('\x00') print u"to %s: %s" %(friend_no,msg) if friend_no not in self.onlineUser: #写入离线消息文件,并提示 message.saveOfflineMsg(user_no,friend_no,msg) msg = u"%s处于离线状态!" %friend_no msgQueues[self.sessions[user_no][friend_no]].put(msg) else: #如果friend_no和user_no还没有建立会话,那么先建立socket if friend_no not in self.sessions.keys() or \ user_no not in self.sessions[friend_no].keys(): fsock = self.cmd_sock[friend_no] print "... cmd socket ",friend_no,fsock.getpeername() sdata = struct.pack("50s50s50s","NEW_SESSION",str(user_no),msg) msgQueues[fsock].put(sdata) print "MESG....deubg" else: msgQueues[self.sessions[friend_no][user_no]].put(msg) message.write2file(user_no,friend_no,msg) #上传文件 elif a=='UPLOAD': b = b.strip('\x00') if len(b)==6: sno = b.strip('\x00') rno = c.strip('\x00') fname = d.strip('\x00') #print fname msgQueues[self.sessions[sno][rno]].put(u"正在上传...") msgQueues[s].put("RECV_NOTICE") files.recordFileInfo(sno,rno,fname) else: dlen = string.atoi(b) fname = c.strip('\x00') cont = d files.write2file(fname,cont[0:dlen]) msgQueues[s].put("RECV_OK") #上传完成 elif a=='UPLOAD_FINISH': sno = b.strip('\x00') rno = c.strip('\x00') fname = d.strip('\x00') if rno in self.sessions and sno in self.sessions[rno]: sdata = u"FILE\r\n%s|%s" %(sno,fname) msgQueues[self.sessions[rno][sno]].put(sdata) elif rno in self.onlineUser: fsock = self.cmd_sock[rno] print "... cmd socket ",rno,fsock.getpeername() msg = u"%s正在向你传送文件:%s" %(sno,fname) sdata = struct.pack("50s50s50s","NEW_SESSION",str(sno),str(msg)) msgQueues[fsock].put(sdata) print "FILE....deubg" #可以下载的离线文件 elif a=='DOWN_FILE_NAME': fnames = files.getFileLists(b.strip("\x00"),c.strip("\x00")) msgQueues[s].put(fnames) elif a=='DOWNLOAD': fname = b.strip('\x00') recvd_bytes = string.atoi(d.strip('\x00')) if c.strip('\x00')=="RECV_OK": rdata = files.getFileContent(fname,recvd_bytes,1024) if len(rdata)<1: rdata = 'FILE_END\r\n' msgQueues[s].put(rdata) if s not in outputs: outputs.append(s) else: print u"关闭socket: ", s.getpeername() if s in outputs: outputs.remove(s) for k1 in self.sessions.keys(): for k2 in self.sessions[k1].keys(): if self.sessions[k1][k2]==s: self.sessions[k1].pop(k2) break inputs.remove(s) s.close() del msgQueues[s] for s in writable: if s not in msgQueues: continue try: nextMsg = msgQueues[s].get_nowait() #print u"sending %s to %s" %(nextMsg,s.getpeername()) s.send(nextMsg) except Queue.Empty: pass for s in exceptional: print "exceptional condition on ",s.getpeername() inputs.remove(s) if s in outputs: outputs.remove(s) s.close() del msgQueues[s]
while True: populate() ANS1 = ['1', '2'] ans = None print('\nHi visitor!') while ans not in ANS1: print(f'possible actions:') ans = input('1. Register \n2. Sign in\nplease choose :') if ans == '1': active_user = register() else: active_user = sign_in() ans = None if active_user.role == 'user': ANS2 = ['1', '2'] while ans not in ANS2 and ans != '2': print(f'possible actions:') ans = input('1. Add post \n2. Sign out\nplease choose :') if ans == '1': name = active_user.u_name title = input('type your post title: ')
def run(self): self.sock = self.newSocket() inputs = [self.sock] outputs = [] msgQueues = {} while self.runFlag: readable, writable, exceptional = \ select.select(inputs, outputs, inputs, 0.1) for s in readable: if s is self.sock: conn, cli_addr = s.accept() conn.setblocking(0) logger.info('connection from {}'.format(cli_addr)) inputs.append(conn) msgQueues[conn] = Queue.Queue() else: # connection is created data = s.recv(1024) if data: raw_fields = struct.unpack(DGRAM_FORMAT, data) fields = [e.strip('\x00') for e in raw_fields] a, b, c, d = fields logger.debug('recv {} from {}'.format('#'.join(fields), s.getpeername())) # 注册新用户 if a == 'SIGN_IN': uid = login.register(b, c, d) logger.info(u'随机生成一个OC号: {}'.format(uid)) msgQueues[s].put(uid) friends.addFriend(uid, uid) # 登录验证 elif a == 'LOGIN': uid, pwd = b, c reply = login.loginCheck(uid, pwd) msgQueues[s].put(reply) if reply != 'LOGIN FAIL': # 登录成功 self.onlineUser.append(uid) msg = struct.pack(CMD_FORMAT, 'UP', uid, '') for kno in self.cmd_sock: if self.cmd_sock[kno] in msgQueues: msgQueues[self.cmd_sock[kno]].put(msg) # 客户端下线通知 elif a == 'DOWN': uid = b logger.info(u'{} 下线通知'.format(uid)) if uid in self.onlineUser: self.onlineUser.remove(uid) if uid in self.sessions: for fid in self.sessions[uid]: usock = self.sessions[uid][fid] if usock: usock.close() self.sessions.pop(uid) sdata = struct.pack(CMD_FORMAT, 'DOWN', uid, '') for kno in self.cmd_sock: if self.cmd_sock[kno] in msgQueues: msgQueues[self.cmd_sock[kno]].put(sdata) # 每个客户端一个cmd socket elif a == 'CMD_SOCKET': uid = b self.cmd_sock[uid] = s # 查找好友列表,返回uid, nickname elif a == 'GET_FRIENDS': reply = friends.getFriends(b) msgQueues[s].put(reply) # 获取当前在线的所账号 elif a == 'GET_ONLINE': ou = '|'.join(self.onlineUser) reply = 'OK|' + ou msgQueues[s].put(reply) # 查找好友 elif a == 'FIND_FRIEND': reply = friends.findFriend(b) msgQueues[s].put(reply) # 添加好友,双向添加,默认不提示被动添加的一方 elif a == 'ADD_FRIEND': uid, fid = b, c reply = friends.addFriend(uid, fid) if reply == 'ADD_SUCCESS': reply = friends.addFriend(fid, uid) ret = friends.findFriend(fid) fnick = ret.split('[')[1].split(']')[0] state = 'OFFLINE' if fid in self.onlineUser: state = 'ONLINE' reply = u'{}|{}|{}'.format(fid, fnick, state) msgQueues[s].put(reply) else: msgQueues[s].put(reply) # 查找离线消息,返回send_uid, msg elif a == 'OFFLINE_MSG': uid = b sdata = message.getOfflineMsg(uid) logger.info(u'离线消息:{}'.format(sdata)) msgQueues[s].put(sdata) # 建立会话、或接收会话 elif a == 'NEW_SESSION': uid, fid = b, c if uid not in self.sessions.keys(): self.sessions[uid] = {} self.sessions[uid][fid] = s logger.info('new session between {} and {}'.format(uid, fid)) # 转发消息 elif a == 'MESG': uid, fid, msg = b, c, d logger.info(u'to {}: {}'.format(fid, msg)) if fid not in self.onlineUser: # 写入离线消息文件,并提示 message.saveOfflineMsg(uid, fid, msg) msg = u'{}处于离线状态!'.format(fid) msgQueues[self.sessions[uid][fid]].put(msg) else: # 如果fid和uid还没有建立会话,那么先建立socket if fid not in self.sessions.keys() or \ uid not in self.sessions[fid].keys(): fsock = self.cmd_sock[fid] logger.info('... cmd socket {} {}'.format( fid, fsock.getpeername())) sdata = struct.pack(CMD_FORMAT, 'NEW_SESSION', str(uid), msg) msgQueues[fsock].put(sdata) logger.debug('MESG....deubg') else: msgQueues[self.sessions[fid][uid]].put(msg) message.write2file(uid, fid, msg) # 上传文件 elif a == 'UPLOAD': if len(b) == 6 and len(c) == 6: # todo: 区分upload cmd和data send_uid, recv_uid, filename = b, c, d msgQueues[self.sessions[send_uid][recv_uid]].\ put(u'正在上传...') msgQueues[s].put('RECV_NOTICE') files.recordFileInfo(send_uid, recv_uid, filename) else: datalen = string.atoi(b) filename, content = c, raw_fields[-1] files.write2file(filename, content[0:datalen]) msgQueues[s].put('RECV_OK') # 上传完成 elif a == 'UPLOAD_FINISH': send_uid, recv_uid, filename = b, c, d if recv_uid in self.sessions and \ send_uid in self.sessions[recv_uid]: sdata = u'FILE\r\n{}|{}'.format(send_uid, filename) msgQueues[self.sessions[recv_uid][send_uid]].put(sdata) elif recv_uid in self.onlineUser: fsock = self.cmd_sock[recv_uid] logger.info('... cmd socket {} {}'.format( recv_uid, fsock.getpeername())) msg = u'{}正在向你传送文件:{}'.format(send_uid, filename) sdata = struct.pack(CMD_FORMAT, 'NEW_SESSION', send_uid, str(msg)) msgQueues[fsock].put(sdata) logger.debug('FILE....deubg') # 可以下载的离线文件 elif a == 'DOWN_FILE_NAME': fs = files.getFileLists(b, c) msgQueues[s].put(fs) elif a == 'DOWNLOAD': filename, status, size = b, c, d recvd_bytes = string.atoi(size) if status == 'RECV_OK': rdata = files.getFileContent(filename, recvd_bytes, 1024) if len(rdata) < 1: rdata = 'FILE_END\r\n' msgQueues[s].put(rdata) if s not in outputs: outputs.append(s) else: # data is None logger.info(u'关闭socket: {}'.format(s.getpeername())) if s in outputs: outputs.remove(s) for k1 in self.sessions.keys(): for k2 in self.sessions[k1].keys(): if self.sessions[k1][k2] == s: self.sessions[k1].pop(k2) break inputs.remove(s) s.close() del msgQueues[s] for s in writable: if s not in msgQueues: continue try: nextMsg = msgQueues[s].get_nowait() s.send(nextMsg) except Queue.Empty: pass for s in exceptional: logger.error('exceptional condition on {}'.format(s.getpeername())) inputs.remove(s) if s in outputs: outputs.remove(s) s.close() del msgQueues[s]
def run(self): self.sock = self.newSocket() inputs = [self.sock] outputs = [] msgQueues = {} while self.runFlag: readable, writable, exceptional = \ select.select(inputs, outputs, inputs, 0.1) for s in readable: if s is self.sock: conn, cli_addr = s.accept() conn.setblocking(0) logger.info('connection from {}'.format(cli_addr)) inputs.append(conn) msgQueues[conn] = Queue.Queue() else: # connection is created data = s.recv(1024) if data: raw_fields = struct.unpack(DGRAM_FORMAT, data) fields = [e.strip('\x00') for e in raw_fields] a, b, c, d = fields logger.debug('recv {} from {}'.format( '#'.join(fields), s.getpeername())) # 注册新用户 if a == 'SIGN_IN': uid = login.register(b, c, d) logger.info(u'随机生成一个OC号: {}'.format(uid)) msgQueues[s].put(uid) friends.addFriend(uid, uid) # 登录验证 elif a == 'LOGIN': uid, pwd = b, c reply = login.loginCheck(uid, pwd) msgQueues[s].put(reply) if reply != 'LOGIN FAIL': # 登录成功 self.onlineUser.append(uid) msg = struct.pack(CMD_FORMAT, 'UP', uid, '') for kno in self.cmd_sock: if self.cmd_sock[kno] in msgQueues: msgQueues[self.cmd_sock[kno]].put(msg) # 客户端下线通知 elif a == 'DOWN': uid = b logger.info(u'{} 下线通知'.format(uid)) if uid in self.onlineUser: self.onlineUser.remove(uid) if uid in self.sessions: for fid in self.sessions[uid]: usock = self.sessions[uid][fid] if usock: usock.close() self.sessions.pop(uid) sdata = struct.pack(CMD_FORMAT, 'DOWN', uid, '') for kno in self.cmd_sock: if self.cmd_sock[kno] in msgQueues: msgQueues[self.cmd_sock[kno]].put(sdata) # 每个客户端一个cmd socket elif a == 'CMD_SOCKET': uid = b self.cmd_sock[uid] = s # 查找好友列表,返回uid, nickname elif a == 'GET_FRIENDS': reply = friends.getFriends(b) msgQueues[s].put(reply) # 获取当前在线的所账号 elif a == 'GET_ONLINE': ou = '|'.join(self.onlineUser) reply = 'OK|' + ou msgQueues[s].put(reply) # 查找好友 elif a == 'FIND_FRIEND': reply = friends.findFriend(b) msgQueues[s].put(reply) # 添加好友,双向添加,默认不提示被动添加的一方 elif a == 'ADD_FRIEND': uid, fid = b, c reply = friends.addFriend(uid, fid) if reply == 'ADD_SUCCESS': reply = friends.addFriend(fid, uid) ret = friends.findFriend(fid) fnick = ret.split('[')[1].split(']')[0] state = 'OFFLINE' if fid in self.onlineUser: state = 'ONLINE' reply = u'{}|{}|{}'.format(fid, fnick, state) msgQueues[s].put(reply) else: msgQueues[s].put(reply) # 查找离线消息,返回send_uid, msg elif a == 'OFFLINE_MSG': uid = b sdata = message.getOfflineMsg(uid) logger.info(u'离线消息:{}'.format(sdata)) msgQueues[s].put(sdata) # 建立会话、或接收会话 elif a == 'NEW_SESSION': uid, fid = b, c if uid not in self.sessions.keys(): self.sessions[uid] = {} self.sessions[uid][fid] = s logger.info('new session between {} and {}'.format( uid, fid)) # 转发消息 elif a == 'MESG': uid, fid, msg = b, c, d logger.info(u'to {}: {}'.format(fid, msg)) if fid not in self.onlineUser: # 写入离线消息文件,并提示 message.saveOfflineMsg(uid, fid, msg) msg = u'{}处于离线状态!'.format(fid) msgQueues[self.sessions[uid][fid]].put(msg) else: # 如果fid和uid还没有建立会话,那么先建立socket if fid not in self.sessions.keys() or \ uid not in self.sessions[fid].keys(): fsock = self.cmd_sock[fid] logger.info('... cmd socket {} {}'.format( fid, fsock.getpeername())) sdata = struct.pack( CMD_FORMAT, 'NEW_SESSION', str(uid), msg) msgQueues[fsock].put(sdata) logger.debug('MESG....deubg') else: msgQueues[self.sessions[fid][uid]].put(msg) message.write2file(uid, fid, msg) # 上传文件 elif a == 'UPLOAD': if len(b) == 6 and len( c) == 6: # todo: 区分upload cmd和data send_uid, recv_uid, filename = b, c, d msgQueues[self.sessions[send_uid][recv_uid]].\ put(u'正在上传...') msgQueues[s].put('RECV_NOTICE') files.recordFileInfo(send_uid, recv_uid, filename) else: datalen = string.atoi(b) filename, content = c, raw_fields[-1] files.write2file(filename, content[0:datalen]) msgQueues[s].put('RECV_OK') # 上传完成 elif a == 'UPLOAD_FINISH': send_uid, recv_uid, filename = b, c, d if recv_uid in self.sessions and \ send_uid in self.sessions[recv_uid]: sdata = u'FILE\r\n{}|{}'.format( send_uid, filename) msgQueues[self.sessions[recv_uid] [send_uid]].put(sdata) elif recv_uid in self.onlineUser: fsock = self.cmd_sock[recv_uid] logger.info('... cmd socket {} {}'.format( recv_uid, fsock.getpeername())) msg = u'{}正在向你传送文件:{}'.format( send_uid, filename) sdata = struct.pack(CMD_FORMAT, 'NEW_SESSION', send_uid, str(msg)) msgQueues[fsock].put(sdata) logger.debug('FILE....deubg') # 可以下载的离线文件 elif a == 'DOWN_FILE_NAME': fs = files.getFileLists(b, c) msgQueues[s].put(fs) elif a == 'DOWNLOAD': filename, status, size = b, c, d recvd_bytes = string.atoi(size) if status == 'RECV_OK': rdata = files.getFileContent( filename, recvd_bytes, 1024) if len(rdata) < 1: rdata = 'FILE_END\r\n' msgQueues[s].put(rdata) if s not in outputs: outputs.append(s) else: # data is None logger.info(u'关闭socket: {}'.format(s.getpeername())) if s in outputs: outputs.remove(s) for k1 in self.sessions.keys(): for k2 in self.sessions[k1].keys(): if self.sessions[k1][k2] == s: self.sessions[k1].pop(k2) break inputs.remove(s) s.close() del msgQueues[s] for s in writable: if s not in msgQueues: continue try: nextMsg = msgQueues[s].get_nowait() s.send(nextMsg) except Queue.Empty: pass for s in exceptional: logger.error('exceptional condition on {}'.format( s.getpeername())) inputs.remove(s) if s in outputs: outputs.remove(s) s.close() del msgQueues[s]