Example #1
0
	def sendData(self, tpl, dataRaw=None, optionsRaw=None):
		"""
		Send telnet data

		@param tpl: telnet
		@type tpl: templatelayer

		@param dataRaw: telnet data (default=None)
		@type dataRaw: string/none
		
		@param optionsRaw: telnet options (default=None)
		@type optionsRaw: string/none

		@return: telnet layer encapsulate in ip
		@rtype: templatemessage		
		"""
		if not self.tcp.connected:
			#raise Exception( 'tcp not connected' )
			raise TestAdapterLib.AdapterException(TestAdapterLib.caller(),  "tcp not connected" )
				
		try:
			if dataRaw is not None or optionsRaw is not None:
				tpl = templates.telnet(data=dataRaw, cmds=optionsRaw)
			# encode template
			try:
				(encodedData, summary) = self.telnetCodec.encode(telnet_tpl=tpl)
			except Exception as e:
				raise Exception("Cannot encode Telnet message: %s" % str(e))	
					
			try:
				lower = self.tcp.sendData( data=encodedData )
			except Exception as e:
				raise Exception("telnet failed: %s" % str(e))	
			
			# add sip layer to the lower layer
			tpl.addRaw( encodedData )
			lower.addLayer( tpl )
			
			# Log event
			if self.logEventSent:
				self.logSentEvent( shortEvt = summary, tplEvt = lower ) 
		except Exception as e:
			raise Exception('Unable to send telnet data: %s' % str(e))
			
		return lower	
Example #2
0
	def sendOptions(self, opts):
		"""
		opts = list of tuple of integer
		"""
		nb_cmd = 0
		tpl_cmds = TestTemplatesLib.TemplateLayer(name='')
		for i in xrange(len(opts)):
			cmd, opt = opts[i]
			cmds_str = ''
			if cmd in codec.TELNET_COMMANDS:
				cmds_str = '%s' % codec.TELNET_COMMANDS[cmd]
			if opt in codec.TELNET_OPTIONS:
				cmds_str += ' %s' % codec.TELNET_OPTIONS[opt]
			tpl_cmds.addKey(name="%s" % nb_cmd, data=cmds_str)
			nb_cmd += 1
			
		tpl = templates.telnet(cmds=tpl_cmds)
		self.sendData(tpl=tpl)
Example #3
0
	def sendSubOption(self, optName, subopts):
		"""
		subopts = list of tuple
		"""
		nb_cmd = 0
		
		optNameFinal = ''
		if optName in codec.TELNET_OPTIONS:
			optNameFinal = codec.TELNET_OPTIONS[optName]
		

		tpl_sub = TestTemplatesLib.TemplateLayer(name='')
		for (optDescr,optValue) in subopts:
			tpl_sub.addKey(name=optDescr, data=optValue)

		tpl_subs = TestTemplatesLib.TemplateLayer(name='')	
		tpl_subs.addKey( optNameFinal,tpl_sub )
		
		tpl = templates.telnet(subs=tpl_subs)
		self.sendData(tpl=tpl)
Example #4
0
	def hasReceivedData(self, timeout=1.0, dataExpected=None):
		"""
		Waits to receive "data" event until the end of the timeout
		
		@param timeout: time max to wait to receive event in second (default=1s)
		@type timeout: float	

		@param dataExpected: data expected (default=None)
		@type dataExpected:	string/operators/none			
		
		@return: an event matching with the template or None otherwise
		@rtype: templatemessage
		"""
		if not ( isinstance(timeout, int) or isinstance(timeout, float) ) or isinstance(timeout,bool): 
			raise TestAdapterLib.ValueException(TestAdapterLib.caller(), "timeout argument is not a float or integer (%s)" % type(timeout) )
		
		layer_ip = AdapterIP.ip() 		
		layer_tcp = AdapterTCP.tcp()
		
		tpl = TestTemplatesLib.TemplateMessage()

		if self.cfg['agent-support']:
			layer_agent= TestTemplatesLib.TemplateLayer('AGENT')
			layer_agent.addKey(name='name', data=self.cfg['agent']['name'] )
			layer_agent.addKey(name='type', data=self.cfg['agent']['type'] )
			tpl.addLayer( layer_agent )
			
		tpl.addLayer(layer=layer_ip)
		tpl.addLayer(layer=layer_tcp)
		
		if self.tcp.cfg['proxy-enabled']:
			layer_sock = AdapterSOCKS.socks(more=AdapterSOCKS.received())
			tpl.addLayer(layer=layer_sock)
				
		layer_telnet = templates.telnet()
		if dataExpected is not None:
			layer_telnet.addKey( name='data', data=dataExpected )
		tpl.addLayer(layer=layer_telnet)
		evt = self.received( expected = tpl, timeout = timeout )
		return evt
Example #5
0
	def sendOptions(self, opts):
		"""
		opts = list of tuple of integer
		"""
		nb_cmd = 0
		tpl_cmds = TestTemplatesLib.TemplateLayer(name='')
		for i in xrange(len(opts)):
			cmd, opt = opts[i]
			cmds_str = ''
			if cmd in codec.TELNET_COMMANDS:
				cmds_str = '%s' % codec.TELNET_COMMANDS[cmd]
			else:
				self.warning("telnet command not supported: %s" % cmd)
			if opt in codec.TELNET_OPTIONS:
				cmds_str += ' %s' % codec.TELNET_OPTIONS[opt]
			else:
				self.warning("telnet option not supported: %s" % opt)
				cmd_str += ' Unsupported'
			tpl_cmds.addKey(name="%s" % nb_cmd, data=cmds_str)
			nb_cmd += 1
			
		tpl = templates.telnet(cmds=tpl_cmds)
		self.sendData(tpl=tpl)