Refactor package naming scheme and line endings (CRLF)

This commit is contained in:
Chord 2016-05-03 03:58:58 -04:00
parent 14e48d47ae
commit df1d222df8
31 changed files with 404 additions and 385 deletions

View file

@ -1,5 +1,5 @@
lazy val commonSettings = Seq( lazy val commonSettings = Seq(
organization := "net.psforever", organization := "net.net.psforever",
version := "1.0", version := "1.0",
scalaVersion := "2.11.7", scalaVersion := "2.11.7",
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8"), scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8"),

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever package net.psforever
class ObjectFinalizedException(msg : String) extends Exception(msg) class ObjectFinalizedException(msg : String) extends Exception(msg)

View file

@ -1,7 +1,7 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.crypto package net.psforever.crypto
import psforever.IFinalizable import net.psforever.IFinalizable
import sna.Library import sna.Library
import com.sun.jna.Pointer import com.sun.jna.Pointer
import scodec.bits.ByteVector import scodec.bits.ByteVector
@ -63,6 +63,7 @@ object CryptoInterface {
/** /**
* Checks if two MAC values are the same in constant time, preventing a timing attack for MAC forgery * Checks if two MAC values are the same in constant time, preventing a timing attack for MAC forgery
*
* @param mac1 * @param mac1
* @param mac2 * @param mac2
*/ */
@ -218,6 +219,7 @@ object CryptoInterface {
val encryptionMACKey : ByteVector) extends CryptoState(decryptionKey, encryptionKey) { val encryptionMACKey : ByteVector) extends CryptoState(decryptionKey, encryptionKey) {
/** /**
* Performs a MAC operation over the message. Used when encrypting packets * Performs a MAC operation over the message. Used when encrypting packets
*
* @param message * @param message
* @return ByteVector * @return ByteVector
*/ */
@ -227,6 +229,7 @@ object CryptoInterface {
/** /**
* Performs a MAC operation over the message. Used when verifying decrypted packets * Performs a MAC operation over the message. Used when verifying decrypted packets
*
* @param message * @param message
* @return ByteVector * @return ByteVector
*/ */
@ -237,6 +240,7 @@ object CryptoInterface {
/** /**
* MACs the plaintext message, encrypts it, and then returns the encrypted message with the * MACs the plaintext message, encrypts it, and then returns the encrypted message with the
* MAC appended to the end. * MAC appended to the end.
*
* @param message Arbitrary set of bytes * @param message Arbitrary set of bytes
* @return ByteVector * @return ByteVector
*/ */

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.Codec import scodec.Codec
import scodec.codecs._ import scodec.codecs._

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.Codec import scodec.Codec
import scodec.codecs._ import scodec.codecs._

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.BitVector import scodec.bits.BitVector
import scodec.{Err, DecodeResult, Attempt, Codec} import scodec.{Err, DecodeResult, Attempt, Codec}
@ -50,14 +50,18 @@ object ControlPacketOpcode extends Enumeration {
Unknown30 Unknown30
= Value = Value
def getPacketDecoder(opcode : ControlPacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideControlPacket]] = opcode match { def getPacketDecoder(opcode : ControlPacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideControlPacket]] = {
case HandleGamePacket => psforever.net.HandleGamePacket.decode import net.psforever
case ServerStart => psforever.net.ServerStart.decode
case ClientStart => psforever.net.ClientStart.decode opcode match {
case MultiPacket => psforever.net.MultiPacket.decode case HandleGamePacket => psforever.packet.HandleGamePacket.decode
case SlottedMetaPacket0 => psforever.net.SlottedMetaPacket.decode case ServerStart => psforever.packet.ServerStart.decode
case ConnectionClose => psforever.net.ConnectionClose.decode case ClientStart => psforever.packet.ClientStart.decode
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for control packet ${opcode}")) case MultiPacket => psforever.packet.MultiPacket.decode
case SlottedMetaPacket0 => psforever.packet.SlottedMetaPacket.decode
case ConnectionClose => psforever.packet.ConnectionClose.decode
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for control packet ${opcode}"))
}
} }
implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L) implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L)

View file

@ -0,0 +1,25 @@
// Copyright (c) 2016 PSForever.net to present
package net.psforever.packet
import scodec.bits.BitVector
import scodec.{Err, DecodeResult, Attempt}
// this isnt actually used as an opcode (i.e not serialized)
object CryptoPacketOpcode extends Enumeration {
type Type = Value
val Ignore, ClientChallengeXchg, ServerChallengeXchg,
ClientFinished, ServerFinished = Value
def getPacketDecoder(opcode : CryptoPacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideCryptoPacket]] = {
import net.psforever
opcode match {
case ClientChallengeXchg => psforever.packet.ClientChallengeXchg.decode
case ServerChallengeXchg => psforever.packet.ServerChallengeXchg.decode
case ServerFinished => psforever.packet.ServerFinished.decode
case ClientFinished => psforever.packet.ClientFinished.decode
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for crypto packet ${opcode}")
.pushContext("get_marshaller"))
}
}
}

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.{Err, DecodeResult, Attempt, Codec} import scodec.{Err, DecodeResult, Attempt, Codec}
import scodec.bits.BitVector import scodec.bits.BitVector
@ -31,11 +31,15 @@ object GamePacketOpcode extends Enumeration {
DismountVehicleMsg DismountVehicleMsg
= Value = Value
def getPacketDecoder(opcode : GamePacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideGamePacket]] = opcode match { def getPacketDecoder(opcode : GamePacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideGamePacket]] = {
case LoginMessage => psforever.net.LoginMessage.decode import net.psforever
case LoginRespMessage => psforever.net.LoginRespMessage.decode
case VNLWorldStatusMessage => psforever.net.VNLWorldStatusMessage.decode opcode match {
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for game packet ${opcode}")) case LoginMessage => psforever.packet.LoginMessage.decode
case LoginRespMessage => psforever.packet.LoginRespMessage.decode
case VNLWorldStatusMessage => psforever.packet.VNLWorldStatusMessage.decode
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for game packet ${opcode}"))
}
} }
implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L) implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L)

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.Codec import scodec.Codec
import scodec.codecs._ import scodec.codecs._

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import java.nio.charset.Charset import java.nio.charset.Charset

View file

@ -1,8 +1,8 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import psforever.crypto.CryptoInterface import net.psforever.crypto.CryptoInterface
import psforever.crypto.CryptoInterface._ import net.psforever.crypto.CryptoInterface._
import scodec.Attempt.{Successful, Failure} import scodec.Attempt.{Successful, Failure}
import scodec.bits._ import scodec.bits._
import scodec.{DecodeResult, Err, Attempt, Codec} import scodec.{DecodeResult, Err, Attempt, Codec}
@ -38,6 +38,7 @@ object PacketCoding {
* decode it given an optional header and required payload. This function does all of the * decode it given an optional header and required payload. This function does all of the
* hard work of making decisions along the way in order to decode a planetside packet to * hard work of making decisions along the way in order to decode a planetside packet to
* completion. * completion.
*
* @param msg the raw packet * @param msg the raw packet
* @param cryptoState the current state of the connection's crypto. This is only used when decoding * @param cryptoState the current state of the connection's crypto. This is only used when decoding
* crypto packets as they do not have opcodes * crypto packets as they do not have opcodes
@ -60,6 +61,7 @@ object PacketCoding {
/** /**
* Helper function to decode a packet without specifying a crypto packet state. * Helper function to decode a packet without specifying a crypto packet state.
* Mostly used when there is no crypto state available, such as tests. * Mostly used when there is no crypto state available, such as tests.
*
* @param msg packet data bytes * @param msg packet data bytes
* @return PlanetSidePacketContainer * @return PlanetSidePacketContainer
*/ */
@ -70,6 +72,7 @@ object PacketCoding {
/** /**
* Similar to UnmarshalPacket, but does not process any packet header and does not support * Similar to UnmarshalPacket, but does not process any packet header and does not support
* decoding of crypto packets. Mostly used in tests. * decoding of crypto packets. Mostly used in tests.
*
* @param msg raw, unencrypted packet * @param msg raw, unencrypted packet
* @return PlanetSidePacket * @return PlanetSidePacket
*/ */

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.Codec import scodec.Codec
import scodec.codecs._ import scodec.codecs._

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import scodec.bits.ByteVector import scodec.bits.ByteVector
import scodec.Codec import scodec.Codec

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.net package net.psforever.packet
import java.net.{InetAddress, InetSocketAddress} import java.net.{InetAddress, InetSocketAddress}

View file

@ -1,21 +0,0 @@
// Copyright (c) 2016 PSForever.net to present
package psforever.net
import scodec.bits.BitVector
import scodec.{Err, DecodeResult, Attempt}
// this isnt actually used as an opcode (i.e not serialized)
object CryptoPacketOpcode extends Enumeration {
type Type = Value
val Ignore, ClientChallengeXchg, ServerChallengeXchg,
ClientFinished, ServerFinished = Value
def getPacketDecoder(opcode : CryptoPacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideCryptoPacket]] = opcode match {
case ClientChallengeXchg => psforever.net.ClientChallengeXchg.decode
case ServerChallengeXchg => psforever.net.ServerChallengeXchg.decode
case ServerFinished => psforever.net.ServerFinished.decode
case ClientFinished => psforever.net.ClientFinished.decode
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for crypto packet ${opcode}")
.pushContext("get_marshaller"))
}
}

View file

@ -1,8 +1,8 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
import org.specs2.mutable._ import org.specs2.mutable._
import psforever.crypto.CryptoInterface import net.psforever.crypto.CryptoInterface
import psforever.crypto.CryptoInterface.CryptoDHState import net.psforever.crypto.CryptoInterface.CryptoDHState
import scodec.bits._ import scodec.bits._
class CryptoInterfaceTest extends Specification { class CryptoInterfaceTest extends Specification {

View file

@ -1,6 +1,6 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
import org.specs2.mutable._ import org.specs2.mutable._
import psforever.net._ import net.psforever.packet._
import scodec.Codec import scodec.Codec
import scodec.bits._ import scodec.bits._

View file

@ -2,7 +2,7 @@
import java.net.{InetAddress, InetSocketAddress} import java.net.{InetAddress, InetSocketAddress}
import org.specs2.mutable._ import org.specs2.mutable._
import psforever.net._ import net.psforever.packet._
import scodec.bits._ import scodec.bits._
class GamePacketTest extends Specification { class GamePacketTest extends Specification {

View file

@ -1,6 +1,6 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
import org.specs2.mutable._ import org.specs2.mutable._
import psforever.net._ import net.psforever.packet._
import scodec.bits._ import scodec.bits._
class PacketCodingTest extends Specification { class PacketCodingTest extends Specification {

View file

@ -2,9 +2,9 @@
import java.net.{InetAddress, InetSocketAddress} import java.net.{InetAddress, InetSocketAddress}
import akka.actor.{Actor, ActorLogging, ActorRef, DiagnosticActorLogging, Identify, MDCContextAware} import akka.actor.{Actor, ActorLogging, ActorRef, DiagnosticActorLogging, Identify, MDCContextAware}
import psforever.crypto.CryptoInterface.{CryptoState, CryptoStateWithMAC} import net.psforever.crypto.CryptoInterface.{CryptoState, CryptoStateWithMAC}
import psforever.crypto.CryptoInterface import net.psforever.crypto.CryptoInterface
import psforever.net._ import net.psforever.packet._
import scodec.Attempt.{Failure, Successful} import scodec.Attempt.{Failure, Successful}
import scodec.bits._ import scodec.bits._
import scodec.{Attempt, Codec, Err} import scodec.{Attempt, Codec, Err}

View file

@ -2,7 +2,7 @@
import java.net.{InetAddress, InetSocketAddress} import java.net.{InetAddress, InetSocketAddress}
import akka.actor.{Actor, ActorLogging, ActorRef, Identify, MDCContextAware} import akka.actor.{Actor, ActorLogging, ActorRef, Identify, MDCContextAware}
import psforever.net._ import net.psforever.packet._
import scodec.Attempt.{Failure, Successful} import scodec.Attempt.{Failure, Successful}
import scodec.bits._ import scodec.bits._

View file

@ -4,7 +4,7 @@ import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.core.status._ import ch.qos.logback.core.status._
import ch.qos.logback.core.util.StatusPrinter import ch.qos.logback.core.util.StatusPrinter
import com.typesafe.config.ConfigFactory import com.typesafe.config.ConfigFactory
import psforever.crypto.CryptoInterface import net.psforever.crypto.CryptoInterface
import org.slf4j import org.slf4j
import org.fusesource.jansi.Ansi._ import org.fusesource.jansi.Ansi._
import org.fusesource.jansi.Ansi.Color._ import org.fusesource.jansi.Ansi.Color._

View file

@ -1,5 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
package psforever.crypto package net.psforever.crypto
import akka.actor.{Actor, ActorLogging, FSM} import akka.actor.{Actor, ActorLogging, FSM}
import akka.util.ByteString import akka.util.ByteString
@ -22,7 +22,7 @@ class CryptoStateManager extends Actor with ActorLogging with FSM[CryptoState, C
when(ClientStart()) { when(ClientStart()) {
/*case Event(RawPacket(msg), _) => { /*case Event(RawPacket(msg), _) => {
val decoded = Codec.decode[psforever.net.ClientStart](msg.bits) val decoded = Codec.decode[net.psforever.net.ClientStart](msg.bits)
try { try {
val packet = decoded.require.value val packet = decoded.require.value
println("Got cNonce: " + packet.clientNonce) println("Got cNonce: " + packet.clientNonce)