method to send raw hexadecimal packet code, whether or not that packet code is valid

This commit is contained in:
Jason_DiDonato@yahoo.com 2021-07-21 09:36:36 -04:00
parent abf7135e64
commit aa7bc8d789

View file

@ -22,7 +22,7 @@ import net.psforever.objects.Default
import net.psforever.packet._
import net.psforever.packet.control._
import net.psforever.packet.crypto.{ClientChallengeXchg, ClientFinished, ServerChallengeXchg, ServerFinished}
import net.psforever.packet.game.{ChangeFireModeMessage, CharacterInfoMessage, KeepAliveMessage, PingMsg}
import net.psforever.packet.game._
import net.psforever.packet.PacketCoding.CryptoCoding
import net.psforever.util.{Config, DiffieHellman, Md5Mac}
@ -89,6 +89,16 @@ object MiddlewareActor {
/** Send outgoing packet */
final case class Send(msg: PlanetSidePacket) extends Command
/** Send outgoing packet as its hexadecimal directly */
final case class Raw(msg: BitVector, exclusive: Boolean) extends Command
object Raw {
def apply(msg: BitVector): Raw = Raw(msg, exclusive = false)
def apply(msg: ByteVector): Raw = Raw(msg.toBitVector, exclusive = false)
def apply(msg: ByteVector, exclusive: Boolean): Raw = Raw(msg, exclusive)
}
/** Teardown connection */
final case class Teardown() extends Command
@ -442,6 +452,14 @@ class MiddlewareActor(
out(packet)
Behaviors.same
case Raw(msg, exclusive) =>
if (exclusive) {
outQueue.enqueue((KeepAliveMessage(), msg)) //caught by bundling isolation filter
} else {
outQueue.enqueue((ActionResultMessage.Pass, msg))
}
Behaviors.same
case ProcessQueue() =>
processQueue()
Behaviors.same