示例#1
0
    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()
示例#2
0
	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()
示例#3
0
                        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 = {}
示例#4
0
				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]}