Ejemplo n.º 1
0
  def lineReceived(self, line):
    try:
      packet = Packet.load(line)
      debug(f"RecvFrom(self.address) - {packet}")
    except JSONDecodeError as e:
      error(f"Unserialization error: {line}")
      exception(e)
      return

    if not self.transport.TLS:
      if packet.isType(PacketType.IDENTITY):
        self._handleIdentity(packet)
      else:
        warning(f"Device {self.name} not identified, ignoring non encrypted packet {packet.getType()}")
    else:
      if packet.isType(PacketType.PAIR):
        self._handlePairing(packet)
      elif self.isTrusted():
        if packet.isType(PacketType.REQUEST):
          self._handleNotify(packet)
        elif packet.isType(PacketType.PING):
          self.sendPing()
        else:
          warning(f"Discarding unsupported packet {packet.getType()} for {self.name}")
      else:
        warning(f"Device {self.name} not paired, ignoring packet {packet.getType()}")
        self.status = InternalStatus.NOT_PAIRED
        pair = Packet.createPair(False)
        self._sendPacket(pair)
Ejemplo n.º 2
0
  def datagramReceived(self, datagram, addr):
    try:
      packet = Packet.load(datagram)
      debug(f"RecvFrom({addr[0]}:{addr[1]}) - {packet}")
    except JSONDecodeError as e:
      error(f"Unserialization error: {datagram}")
      exception(e)
      return

    if not packet.isType(PacketType.IDENTITY):
      info(f"Received a UDP packet of wrong type {packet.getType()}")
    elif packet.get("deviceId") == self.identifier:
      debug("Ignoring my own broadcast")
    else:
      debug(f"Received UDP identity packet from {addr[0]}, trying reverse connection")
      self.announceIdentity(addr[0])