def run(self): """Listen to sockets and put received packets in raw data queue for later operations. Input: none Output: none """ # since this method is assigned to thread we have to catch all exceptions # by ourselves try: info('--- Started Listen thread ---') # poll packets and put them onto rawpacket sync queue while self.threadMayRun: for (socknum, event) in self.server.pollobj.poll(1000): if event != select.POLLIN: logger.addUnrestrictedThread() error("unexpected event!") logger.rmUnrestrictedThread() continue # receive packet (sock, socktype) = self.server.fdmap[socknum] (data, addr) = sock.recvfrom(MAXPACKETSZ) # process the raw packet if addr[0] in self.server.hosts and self.server.hosts[ addr[0]].enableLogging: logger.addUnrestrictedThread() self.ProcessPacket(data, addr, sock, socktype) logger.rmUnrestrictedThread() except: logger.addUnrestrictedThread() misc.printException() error('Error in listen thread') logger.rmUnrestrictedThread()
def run(self): """Listen to sockets and put received packets in raw data queue for later operations. Input: none Output: none """ # since this method is assigned to thread we have to catch all exceptions # by ourselves try: info ('--- Started Listen thread ---') # poll packets and put them onto rawpacket sync queue while self.threadMayRun: for (socknum, event) in self.server.pollobj.poll(1000): if event != select.POLLIN: logger.addUnrestrictedThread() error ("unexpected event!") logger.rmUnrestrictedThread() continue # receive packet (sock, socktype) = self.server.fdmap[socknum] (data, addr) = sock.recvfrom(MAXPACKETSZ) # process the raw packet if addr[0] in self.server.hosts and self.server.hosts[addr[0]].enableLogging: logger.addUnrestrictedThread() self.ProcessPacket(data, addr, sock, socktype) logger.rmUnrestrictedThread() except: logger.addUnrestrictedThread() misc.printException() error ('Error in listen thread') logger.rmUnrestrictedThread()
misc.printException() continue # send accounting reply if processing packet was ok # send acct response to client only after processing the packet if acctResult is True and not main_config['SERVER'][ 'fast_accounting']: self.sendAcctResponse(pkt) else: error('Wrong packet received: ', pkt) info('%s\n\n' % ('=' * 62)) # remove this thread from non-restricted thread list logger.rmUnrestrictedThread() except: logger.addUnrestrictedThread() misc.printException() error('Error in working thread') logger.rmUnrestrictedThread() def ProcessAuthPacket(self, pkt): # decrypt crypted attributes pkt.decryptAttributes() #debug (pkt) received = dict(pkt) # don't use packet instance any more check = {'Auth-Type': [None]} reply = {}
elif isinstance(pkt, packet.AcctPacket): try: self.ProcessAcctPacket(pkt) except AcctFailure, err: error ("acct failure: ", err) continue except: misc.printException() continue else: error('Wrong packet received: ', pkt) info ('%s\n\n' % ('=' * 62)) # remove this thread from non-restricted thread list logger.rmUnrestrictedThread() except: logger.addUnrestrictedThread() misc.printException() error ('Error in working thread') logger.rmUnrestrictedThread() def ProcessAuthPacket(self, pkt): # decrypt crypted attributes pkt.decryptAttributes() #debug (pkt) received = dict(pkt) # don't use packet instance any more check = {'Auth-Type': [None]}