- headless server will only give network status info to the locahost now and not on any other ip (for security purposes)

This commit is contained in:
Mark Vejvoda 2012-03-27 05:39:02 +00:00
parent c0f3658faa
commit 9e1001fac7
3 changed files with 13 additions and 1 deletions

View File

@ -73,9 +73,12 @@ ServerInterface::ServerInterface(bool publishEnabled) :GameNetworkInterface() {
lastGlobalLagCheckTime = 0;
masterserverAdminRequestLaunch = false;
// This is an admin port listening only on the localhost intended to
// give current connection status info
serverSocketAdmin = new ServerSocket(true);
serverSocketAdmin->setBlock(false);
serverSocketAdmin->setBindPort(Config::getInstance().getInt("ServerAdminPort", intToStr(GameConstants::serverAdminPort).c_str()));
serverSocketAdmin->setBindSpecificAddress("127.0.0.1");
serverSocketAdmin->listen(5);
maxFrameCountLagAllowed = Config::getInstance().getInt("MaxFrameCountLagAllowed", intToStr(maxFrameCountLagAllowed).c_str());

View File

@ -234,6 +234,7 @@ protected:
bool portBound;
int boundPort;
string bindSpecificAddress;
static int externalPort;
static int ftpServerPort;
@ -269,6 +270,8 @@ public:
int getBindPort() const { return boundPort; }
bool isPortBound() const { return portBound; }
void setBindSpecificAddress(string value) { bindSpecificAddress = value;}
static void setExternalPort(int port) { externalPort = port; }
static int getExternalPort() { return externalPort; }

View File

@ -2046,6 +2046,7 @@ ServerSocket::ServerSocket(bool basicMode) : Socket() {
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] basicMode = %d\n",__FILE__,__FUNCTION__,__LINE__,basicMode);
this->basicMode = basicMode;
this->bindSpecificAddress = "";
//printf("SERVER SOCKET CONSTRUCTOR\n");
//MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
//ServerSocket::upnpdiscoverThread = NULL;
@ -2178,7 +2179,12 @@ void ServerSocket::bind(int port) {
//sockaddr structure
sockaddr_in addr;
addr.sin_family= AF_INET;
addr.sin_addr.s_addr= INADDR_ANY;
if(this->bindSpecificAddress != "") {
addr.sin_addr.s_addr= inet_addr(this->bindSpecificAddress.c_str());
}
else {
addr.sin_addr.s_addr= INADDR_ANY;
}
addr.sin_port= htons(port);
int val = 1;