Add input argument for listen address

This commit is contained in:
Chord 2016-07-25 20:18:05 -04:00
parent 3fca8b1a95
commit 3ccb31f961
4 changed files with 25 additions and 5 deletions

View file

@ -0,0 +1,6 @@
// Copyright (c) 2016 PSForever.net to present
import java.net.InetAddress
object LoginConfig {
var serverIpAddress : InetAddress = InetAddress.getLoopbackAddress
}

View file

@ -89,8 +89,9 @@ class LoginSessionActor extends Actor with MDCContextAware {
}
}
// TODO: move to global configuration or database lookup
val serverName = "PSForever"
val serverAddress = new InetSocketAddress(InetAddress.getLocalHost.getHostAddress, 51001)
val serverAddress = new InetSocketAddress(LoginConfig.serverIpAddress.getHostAddress, 51001)
def handleGamePkt(pkt : PlanetSideGamePacket) = pkt match {
case LoginMessage(majorVersion, minorVersion, buildDate, username,

View file

@ -84,12 +84,22 @@ object PsLogin {
}
}
def parseArgs(args : Array[String]) : Unit = {
if(args.length == 1) {
LoginConfig.serverIpAddress = InetAddress.getByName(args{0})
}
else {
LoginConfig.serverIpAddress = InetAddress.getLocalHost
}
}
def main(args : Array[String]) : Unit = {
// Early start up
banner()
println(systemInformation)
initializeLogging("logback.xml")
parseArgs(args)
/** Initialize the PSCrypto native library
*
@ -149,11 +159,11 @@ object PsLogin {
/** Create two actors for handling the login and world server endpoints */
val listener = system.actorOf(Props(new UdpListener(Props(new SessionRouter(loginTemplate)), "login-session-router",
InetAddress.getLocalHost, loginServerPort)), "login-udp-endpoint")
LoginConfig.serverIpAddress, loginServerPort)), "login-udp-endpoint")
val worldListener = system.actorOf(Props(new UdpListener(Props(new SessionRouter(worldTemplate)), "world-session-router",
InetAddress.getLocalHost, worldServerPort)), "world-udp-endpoint")
LoginConfig.serverIpAddress, worldServerPort)), "world-udp-endpoint")
logger.info(s"NOTE: Set client.ini to point to ${InetAddress.getLocalHost.getHostAddress}:$loginServerPort")
logger.info(s"NOTE: Set client.ini to point to ${LoginConfig.serverIpAddress.getHostAddress}:$loginServerPort")
// Wait forever until the actor system shuts down
Await.result(system.whenTerminated, Duration.Inf)

View file

@ -1,7 +1,7 @@
// Copyright (c) 2016 PSForever.net to present
import java.net.{InetAddress, InetSocketAddress}
import akka.actor.SupervisorStrategy.{Restart, Stop}
import akka.actor.SupervisorStrategy.Stop
import akka.actor.{Actor, ActorRef, OneForOneStrategy, Props, Terminated}
import akka.io._
import scodec.bits._
@ -34,6 +34,9 @@ class UdpListener(nextActorProps : Props, nextActorName : String, address : Inet
createNextActor()
context.become(ready(sender()))
case Udp.CommandFailed(Udp.Bind(_, address, _)) =>
log.error("Failed to bind to the network interface: " + address)
context.system.terminate()
case default =>
log.error(s"Unexpected message $default")
}