Browse Source

Add console commands to set the server keys and addresses

Michael Hansen 13 years ago
parent
commit
ff5d7ca63a
  1. 2
      Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommands.cpp
  2. 257
      Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp
  3. 6
      Sources/Plasma/NucleusLib/pnNetBase/CMakeLists.txt
  4. 1
      Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAllIncludes.h
  5. 49
      Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.cpp
  6. 55
      Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.h
  7. 25
      Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp
  8. 6
      Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.h

2
Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommands.cpp

@ -81,7 +81,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "plAvatar/plAvatarMgr.h"
#include "plAvatar/plAvatarTasks.h"
#include "plAvatar/plAvBrainGeneric.h"
//#include "../plHavok1/plSimulationMgr.h"
//#include "plHavok1/plSimulationMgr.h"
#include "plMessage/plConsoleMsg.h"
#include "plMessage/plAnimCmdMsg.h"

257
Sources/Plasma/FeatureLib/pfConsole/pfConsoleCommandsNet.cpp

@ -1055,3 +1055,260 @@ PF_CONSOLE_CMD(
#endif
///////////////////////////////////////
/*****************************************************************************
*
* Server
*
***/
//============================================================================
// Server group
PF_CONSOLE_GROUP(Server)
//============================================================================
PF_CONSOLE_CMD(
Server,
Url,
"string url",
"Set the displayable server URL"
) {
wchar_t *wurl = NULL;
hsStringToWString(wurl, (const char *)params[0]);
SetServerUrl(wurl);
delete [] wurl;
}
//============================================================================
PF_CONSOLE_CMD(
Server,
DispName,
"string name",
"Set the displayable server name"
) {
wchar_t *wname = NULL;
hsStringToWString(wname, (const char *)params[0]);
SetServerDisplayName(wname);
delete [] wname;
}
//============================================================================
// Server.File group
PF_CONSOLE_SUBGROUP(Server, File)
//============================================================================
PF_CONSOLE_CMD(
Server_File,
Host,
"string address",
"Set the File Server address"
) {
wchar_t *wHost = NULL;
hsStringToWString(wHost, (const char *)params[0]);
SetFileSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
// Server.Auth group
PF_CONSOLE_SUBGROUP(Server, Auth)
//============================================================================
PF_CONSOLE_CMD(
Server_Auth,
Host,
"string address",
"Set the Auth Server address"
) {
wchar_t *wHost = NULL;
hsStringToWString(wHost, (const char *)params[0]);
SetAuthSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
PF_CONSOLE_CMD(
Server_Auth,
N,
"string base64Key",
"Set the Auth Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kAuthDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Auth,
X,
"string base64Key",
"Set the Auth Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kAuthDhXData);
}
//============================================================================
// Server.Csr group
PF_CONSOLE_SUBGROUP(Server, Csr)
//============================================================================
PF_CONSOLE_CMD(
Server_Csr,
Host,
"string address",
"Set the Csr Server address"
) {
wchar_t *wHost = NULL;
hsStringToWString(wHost, (const char *)params[0]);
SetCsrSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
PF_CONSOLE_CMD(
Server_Csr,
N,
"string base64Key",
"Set the Csr Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kCsrDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Csr,
X,
"string base64Key",
"Set the Csr Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kCsrDhXData);
}
//============================================================================
// Server.Game group
PF_CONSOLE_SUBGROUP(Server, Game)
//============================================================================
PF_CONSOLE_CMD(
Server_Game,
N,
"string base64Key",
"Set the Game Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGameDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Game,
X,
"string base64Key",
"Set the Game Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGameDhXData);
}
//============================================================================
// Server.Gate group
PF_CONSOLE_SUBGROUP(Server, Gate)
//============================================================================
PF_CONSOLE_CMD(
Server_Gate,
Host,
"string address",
"Set the GateKeeper Server address"
) {
wchar_t *wHost = NULL;
hsStringToWString(wHost, (const char *)params[0]);
SetGateKeeperSrvHostname(wHost);
delete [] wHost;
}
//============================================================================
PF_CONSOLE_CMD(
Server_Gate,
N,
"string base64Key",
"Set the GateKeeper Server N key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGateKeeperDhNData);
}
//============================================================================
PF_CONSOLE_CMD(
Server_Gate,
X,
"string base64Key",
"Set the GateKeeper Server X key"
) {
int baseLength = hsStrlen((const char *)params[0]);
if ((kNetDiffieHellmanKeyBits / 8) != Base64DecodeSize(baseLength)) {
PrintStringF(PrintString, "Invalid key: should be exactly %u bytes",
kNetDiffieHellmanKeyBits / 8);
return;
}
Base64Decode(hsStrlen((const char *)params[0]), (const char *)params[0],
kNetDiffieHellmanKeyBits / 8, kGateKeeperDhXData);
}

6
Sources/Plasma/NucleusLib/pnNetBase/CMakeLists.txt

@ -4,11 +4,7 @@ include_directories("../../NucleusLib")
set(pnNetBase_HEADERS
Intern.h
Pch.h
pnNbAuthKey.hpp
pnNbCsrKey.hpp
pnNbConst.h
pnNbGameKey.hpp
pnNbGateKeeperKey.hpp
pnNetBase.h
)
@ -21,6 +17,8 @@ set(pnNetBase_PRIVATE
Private/pnNbProtocol.cpp
Private/pnNbSrvs.h
Private/pnNbSrvs.cpp
Private/pnNbKeys.h
Private/pnNbKeys.cpp
)
add_library(pnNetBase STATIC ${pnNetBase_HEADERS} ${pnNetBase_PRIVATE})

1
Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbAllIncludes.h

@ -37,6 +37,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include "pnNbConst.h"
#include "pnNbError.h"
#include "pnNbKeys.h"
#include "pnNbProtocol.h"
#include "pnNbSrvs.h"

49
Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.cpp

@ -0,0 +1,49 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
/*****************************************************************************
*
* $/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.cpp
*
***/
#include "../Pch.h"
#pragma hdrstop
// Auth Server
byte kAuthDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
byte kAuthDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
// CSR Server
byte kCsrDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
byte kCsrDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
// Game Server
byte kGameDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
byte kGameDhXData[kNetDiffieHellmanKeyBits / 8] = {0};
// GateKeeper Server
byte kGateKeeperDhNData[kNetDiffieHellmanKeyBits / 8] = {0};
byte kGateKeeperDhXData[kNetDiffieHellmanKeyBits / 8] = {0};

55
Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.h

@ -0,0 +1,55 @@
/*==LICENSE==*
CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can contact Cyan Worlds, Inc. by email legal@cyan.com
or by snail mail at:
Cyan Worlds, Inc.
14617 N Newport Hwy
Mead, WA 99021
*==LICENSE==*/
/*****************************************************************************
*
* $/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.h
*
***/
#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETBASE_PRIVATE_PNNBKEYS_H
#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbKeys.h included more than once"
#endif
#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNNETBASE_PRIVATE_PNNBKEYS_H
// Auth Server
static const unsigned kAuthDhGValue = 41;
extern byte kAuthDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kAuthDhXData[kNetDiffieHellmanKeyBits / 8];
// CSR Server
static const unsigned kCsrDhGValue = 97;
extern byte kCsrDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kCsrDhXData[kNetDiffieHellmanKeyBits / 8];
// Game Server
static const unsigned kGameDhGValue = 73;
extern byte kGameDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kGameDhXData[kNetDiffieHellmanKeyBits / 8];
// GateKeeper Server
static const unsigned kGateKeeperDhGValue = 4;
extern byte kGateKeeperDhNData[kNetDiffieHellmanKeyBits / 8];
extern byte kGateKeeperDhXData[kNetDiffieHellmanKeyBits / 8];

25
Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp

@ -260,3 +260,28 @@ bool GateKeeperSrvHostnameOverride () {
return s_gateKeeperAddrCmdLine[0];
}
//============================================================================
// User-visible Server
//============================================================================
static wchar s_serverUrl[256];
static wchar s_serverName[256];
const wchar *GetServerUrl () {
return s_serverUrl;
}
//============================================================================
void SetServerUrl (const wchar url[]) {
StrCopy(s_serverUrl, url, arrsize(s_serverUrl));
}
//============================================================================
const wchar *GetServerDisplayName () {
return s_serverName;
}
//============================================================================
void SetServerDisplayName (const wchar name[]) {
StrCopy(s_serverName, name, arrsize(s_serverName));
}

6
Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.h

@ -88,3 +88,9 @@ bool CsrSrvHostnameOverride ();
unsigned GetGateKeeperSrvHostnames (const wchar *** addrs); // returns addrCount
void SetGateKeeperSrvHostname (const wchar addr[]);
bool GateKeeperSrvHostnameOverride ();
const wchar *GetServerUrl ();
void SetServerUrl (const wchar url[]);
const wchar *GetServerDisplayName ();
void SetServerDisplayName (const wchar name[]);

Loading…
Cancel
Save