Пример #1
0
def main():
  listener = Listener()
  listener.start()
  while True:
    recv_queue_data = listener.queue.get()
    recv_data = recv_queue_data.msgtype
    distance = recv_queue_data.msg
    if recv_data == 0x05: # Follower to move forward
      totalMoves(distance)
      print ("Received Follower move forward")
    elif recv_data == 0x06: # Follower to move backward
      totalMoves(distance)
      print ("Received Follower move backward")
    elif recv_data == 0x07: # Follower to move left
      totalMoves(distance)
      print ("Received Follower move left")
    elif recv_data == 0x09: # Follower to move right
      totalMoves(distance)
      print ("Received Follower move right")
    elif recv_data == 0x13: # Follower reports found token
      followerTokenFND()
    elif recv_data == 0x15: # Scanning Follower Servo
      print ("Received Scanning Beginning")
    elif recv_data == 0x16: # Scan returned Lead Found
      scanServo()
    elif recv_data == 0x17: # Scan returned Object Found
      scanServo()
    else:
      # Something unexpected happened
      print("Received unexpected data %d" % recv_data)
  try:
    cmdInput(listener.queue)
  except KeyboardInterrupt:
    pass
  listener.close()
Пример #2
0
def main():
  listener = Listener()
  #incoming_message_Thread = Thread(target=incoming_message_handle, args=[listener.clientList], daemon=True)
  listener.start()
  #incoming_message_Thread.start()
  while True:
    try:
      recv_queue_data = listener.queue.get(timeout=1)
      print("Message : ", recv_queue_data)
    except Empty:
      print("empty")
      pass
  try:
      recv_data = recv_queue_data.msgtype
      message_pack_recv = recv_queue_data.msg
      if recv_data == "Rover Move": # Follower to move FORWARD
        if message_pack_recv == ROVER_FORWARD:
          #totalMoves(distance)
          print ("Received Follower move forward")
        elif message_pack_recv == ROVER_BACKWARD: # Follower to move BACKWARD
          #totalMoves(distance)
          print ("Received Follower move backward")
        elif message_pack_recv == ROVER_LEFT: # Follower to move LEFT
          #totalMoves(distance)
          print ("Received Follower move left")
        elif message_pack_recv == ROVER_RIGHT: # Follower to move RIGHT
          #totalMoves(distance)
          print ("Received Follower move right")
        elif message_pack_recv == ROVER_STOP: # Follower to STOP
          #totalMoves(distance)
          print ("Received Follower STOP")
      elif recv_data == "Follower Distance": # Follower reports distance traveled
        totalMoves(message_pack_recv)
        print ("Received Follower Distance: ", message_pack_recv)
      elif recv_data == "Follower Token Found": # Follower reports found token
        followerTokenFND()
      elif recv_data == "Scanning Follower Servo": # Scanning Follower Servo
        if message_pack_recv == SCAN_STARTED: # Servo Scan Started
          print ("Received Scanning Beginning")
        elif message_pack_recv == LEAD_FOUND: # Scan returned Lead Found
          scanServo()
        elif message_pack_recv == OBJECT_FOUND: # Scan returned Object Found
          scanServo()
      elif recv_data == "Follower Distance To Lead": # Follower reports found token
        print ("Received Follower Distance To Lead: ", message_pack_recv)
      else:
        # Something unexpected happened
        print("Received unexpected data %d" % recv_data)
  except KeyboardInterrupt:
    print("CTRL C Detected")
    return
  listener.close()
Пример #3
0
    elif msgstring == "start":
      try:
        testcase = int(input("Select Test Case:"))
        assert testcase in range(1, 8)
      except (TypeError, AssertionError):
        print("Test case does not exist")
        continue
      listener.queue.put(InternalMessage(ROUTER, START_GAME, bytes([testcase])))

    elif msgstring == "end":
      listener.queue.put(InternalMessage(ROUTER, END_GAME, bytes([0])))

    else:
      msgstring = msgstring.encode()
      while msgstring:
        msg = InternalMessage(ROUTER, DEBUG_MSG, msgstring[:INTERNAL_MSG_SIZE + 1])
        listener.queue.put(msg)
        msgstring = msgstring[INTERNAL_MSG_SIZE + 1:]

if __name__ == "__main__":
  listener = Listener()
  outWorker = OutboundWorker(listener.queue, listener.clientList, listener.clientDict)
  listener.start()
  outWorker.start()
  try:
    cmdInput(listener)
  except KeyboardInterrupt:
    pass
  listener.close()

Пример #4
0
class VpnServer(object):

    def __init__(self, port, shared_key, connected_callback, broken_conn_callback, 
                 debug_continue, debug, app):
        self.port = port
        self.shared_key = shared_key
        self.connected_callback = connected_callback
        self.broken_conn_callback = broken_conn_callback
        self.send_queue = Queue()
        self.receive_queue = Queue()
        self.authenticated = False
        self.debug_continue = debug_continue
        self.debug = debug
        self.waiting = True
        self.sender = None
        self.receiver = None
        self.is_server = True
        self.sessionkey=''
        self.app = app

    def setup(self):
        try:
            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        except socket.error:
            return (-1, "Could not create socket")

        try:
            self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            self.socket.bind(('', self.port))
            Logger.log("Listening for connections...", self.is_server)
            self.socket.listen(1) 
        except socket.error:
            return (-1, "Could not bind socket to port " + str(self.port))

        return (0, "VPN server set to listen on port " + str(self.port))

    def send(self, msg):
        if (self.authenticated):
            Logger.log("sessionkey: " +self.sessionkey, self.is_server)
            emsg = self.auth.encrypt_message(msg, self.auth.get_sessionkey())
            self.send_queue.put(emsg)
            Logger.log("Put message on send queue: "+ msg, self.is_server)
        else:
            self.send_queue.put(msg)
            Logger.log("Put message on send queue: "+ msg, self.is_server)
    
    def receive(self):
        if not self.receive_queue.empty():
            msg = self.receive_queue.get()
            if (self.authenticated):
                msg, valid = self.auth.decrypt_message(msg, self.auth.get_sessionkey())

                if valid is False:
                    return None

                Logger.log("Decrypted msg: "+ msg, self.is_server)
            return msg
        else:
            return None

    def start(self, callback=None):
        self.listener = Listener(self.socket, self.shared_key, self, self.connected_callback, self.app)
        self.listener.start()

    def bind(self, client_socket):
        self.debug_continue.disabled = self.debug
        self.sender = Sender(client_socket, self.send_queue, self)
        self.receiver = Receiver(client_socket, self.receive_queue, self)
        self.sender.start()
        self.receiver.start()
    
    def clear_queues(self):
        self.receive_queue.queue.clear()
        self.send_queue.queue.clear()

    def broken_conn(self):
        Logger.log("Broken connection", self.is_server)
        self.send_queue.queue.clear()
        self.receive_queue.queue.clear()
        self.sender.close()
        self.receiver.close()
        self.waiting = True
        self.authenticated = False
        if (self.listener):
            self.listener.broken_conn()

    def close(self):
        Logger.log("Connection closing", self.is_server)
        self.send_queue.queue.clear()
        self.receive_queue.queue.clear()
        self.listener.close()
        self.socket.close()
        self.authenticated = False
        if self.sender:
            self.sender.close()
        if self.receiver:
            self.receiver.close()