+++ /dev/null
-#!/usr/bin/python
-from sender import Sender
-import sys
-import socket
-
-GASTPORT = 1203
-
-if __name__ == "__main__":
- serverPort = 10000
- if len(sys.argv) > 1:
- serverPort = int(sys.argv[1])
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.bind(('', GASTPORT))
- s.listen(1)
- print 'Listening on port {} for Gast'.format(GASTPORT)
- conn, addr = s.accept()
- print 'Connected by Gast at {}'.format(addr)
- print 'Initiating connection to EchoServer at port {}...'.format(serverPort)
- sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0)
- seqnr = 0
- response = ''
- data = ''
- while True:
- ch = conn.recv(1)
- if not ch:
- break
-
- if ch != ' ':
- data = data+ch
- continue
-
- data = conn.recv(int(data))
- print "INPUT: "+data
-
- if data == 'SUT-RESET':
- print 'resetting the SUT...'
- sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0)
- data = ''
- continue
- elif data == 'SYN':
- seqnr = 100
- print 'S: {}'.format(seqnr)
- response = sender.sendInput('S', seqnr, seqnr)
- elif data == 'ACK':
- response = 'Timeout'
- if sender.lastSeqReceived != None:
- seqnr += 1
- print 'A: {}'.format(seqnr)
- response = sender.sendInput('A', seqnr, sender.lastSeqReceived + 1)
- elif data == 'DATA':
- response = 'Timeout'
- if sender.lastSeqReceived != None:
- seqnr += 1
- print 'DAT: {} sending: a'.format(seqnr)
- response = sender.sendInput('PA', seqnr, sender.lastSeqReceived + 1, 'a')
- elif data == 'RST':
- response = 'Timeout'
- if sender.lastSeqReceived != None:
- seqnr += 1
- print 'RP: {}'.format(seqnr)
- response = sender.sendInput("RP", seqnr, 0)
- sender.sendReset()
- elif data == 'FIN':
- response = 'Timeout'
- if sender.lastSeqReceived != None:
- seqnr += 1
- print 'F: {}'.format(seqnr)
- response = sender.sendInput("FA", seqnr, sender.lastSeqReceived + 1)
- else:
- print 'INVALID INPUT!'
- break
-
- if response == 'Timeout':
- data = 'TO'
- elif response[0] == 'A':
- data = 'ACK'
- elif response[0] == 'PA':
- data = 'DATA'
- elif response[0] == 'R':
- data = 'RST'
- elif response[0] == 'SA':
- data = 'SYN-ACK'
- else:
- data = 'ERR'
-
- print 'RESPONSE: '+data
- conn.send('{} {}'.format(len(data), data));
-
- data = ''
- continue
-
- if not data:
- break
- data = data.strip()
- if data == 'Listen?':
- sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0)
- response = ''
- if data == 'SYN?':
- seqnr = 100
- print 'S: {}'.format(seqnr)
- response = sender.sendInput('S', seqnr, seqnr)
- if data == 'ACK?':
- seqnr += 1
- print 'A: {}'.format(seqnr)
- response = sender.sendInput('A', seqnr, sender.lastSeqReceived + 1)
- if data == 'FINACK?':
- seqnr += 1
- print 'FA: {}'.format(seqnr)
- response = sender.sendInput("FA", seqnr, sender.lastSeqReceived + 1)
- if data == 'FIN?':
- seqnr += 1
- print 'F: {}'.format(seqnr)
- response = sender.sendInput("F", seqnr, sender.lastSeqReceived + 1)
- if data == 'RST?':
- seqnr += 1
- print 'RP: {}'.format(seqnr)
- response = sender.sendInput("RP", seqnr, 0)
- sender.sendReset()
- if response:
- if response == 'Timeout':
- print 'data: {} - TIMEOUT!'.format(data)
- conn.send('TIMEOUT!\n')
- elif response[0] == 'A':
- print 'data: {} - ACK!'.format(data)
- conn.send('ACK!\n')
- elif response[0] == 'R':
- print 'data: {} - RST!'.format(data)
- conn.send('RST!\n')
- elif response[0] == 'SA':
- print 'data: {} - SYNACK!'.format(data)
- conn.send('SYNACK!\n')
- else:
- print 'data: {}'.format(data)
-
- print 'closed'
- conn.close()
- exit()