BOOL Server1 = FALSE, Server2 = FALSE, Server3 = FALSE, Server4 = FALSE;
BYTE VPS1[4] = { 0, 0, 0, 0 }; //1
BYTE VPS2[4] = { 0, 0, 0, 0}; //
BYTE VPS3[4] = { 0, 0, 0, 0 };
BYTE VPS4[4] = { 0, 0, 0, 0 };
WORD PORT1 = { 2500 }; //1st VPS
WORD PORT2 = { 2000 }; //2nd VPS
WORD PORT3 = { 2001 }; //3rd VPS
WORD PORT4 = { 2003 }; //4th VPS
BOOL Connect()
{
start:
WSADATA WsaData = { 0 };
if (NetDll_WSAStartupEx(XNCALLER_SYSAPP, WINSOCK_VERSION, &WsaData, WINSOCK_VERSION) != 0)
{
xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
goto start;
}
if ((Socket = NetDll_socket(XNCALLER_SYSAPP, AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET)
{
xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
goto start;
}
BOOL SockOpt = TRUE;
if (NetDll_setsockopt(XNCALLER_SYSAPP, Socket, SOL_SOCKET, SO_MARKINSECURE, (CONST PCHAR) & SockOpt, sizeof(BOOL)) != 0)
{
xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
lastSocketError = WSAGetLastError();
xbox::utilities::DbgOut("[SIlent] setsockopt error %d", lastSocketError);
goto start;
}
DWORD MaxPacketSize = 0x800;
if (NetDll_setsockopt(XNCALLER_SYSAPP, Socket, SOL_SOCKET, SO_SNDBUF, (CONST PCHAR)&MaxPacketSize, sizeof(DWORD)) != 0)
{
xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
lastSocketError = WSAGetLastError();
xbox::utilities::DbgOut("[SIlent] setsockopt error %d", lastSocketError);
goto start;
}
if (NetDll_setsockopt(XNCALLER_SYSAPP, Socket, SOL_SOCKET, SO_RCVBUF, (CONST PCHAR)&MaxPacketSize, sizeof(DWORD)) != 0)
{
xbox::utilities::DbgOut("[SIlent] #9989 unable to create socket\n");
lastSocketError = WSAGetLastError();
xbox::utilities::DbgOut("[SIlent] setsockopt error %d\n", lastSocketError);
goto start;
}
if (!Server1) {
sockaddr_in sockAddr = { 0 };
sockAddr.sin_family = AF_INET;
sockAddr.sin_addr.S_un.S_addr = *(PDWORD)VPS1;
sockAddr.sin_port = htons(PORT1);
if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr, sizeof(sockAddr)) == SOCKET_ERROR)
{
//xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 1\n");
Server1 = TRUE;
goto start;
}
}
else if (!Server2)
{
sockaddr_in sockAddr2 = { 0 };
sockAddr2.sin_family = AF_INET;
sockAddr2.sin_addr.S_un.S_addr = *(PDWORD)VPS2;
sockAddr2.sin_port = htons(PORT2);
if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr2, sizeof(sockAddr2)) == SOCKET_ERROR)
{
Sleep(5000);
//xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 2\n");
Server2 = TRUE;
goto start;
}
}
else if (!Server3)
{
sockaddr_in sockAddr3 = { 0 };
sockAddr3.sin_family = AF_INET;
sockAddr3.sin_addr.S_un.S_addr = *(PDWORD)VPS3;
sockAddr3.sin_port = htons(PORT3);
if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr3, sizeof(sockAddr3)) == SOCKET_ERROR)
{
//xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 3\n");
Server3 = TRUE;
goto start;
}
}
else if (!Server4)
{
sockaddr_in sockAddr4 = { 0 };
sockAddr4.sin_family = AF_INET;
sockAddr4.sin_addr.S_un.S_addr = *(PDWORD)VPS4;
sockAddr4.sin_port = htons(PORT4);
if (NetDll_connect(XNCALLER_SYSAPP, Socket, (struct sockaddr*)&sockAddr4, sizeof(sockAddr4)) == SOCKET_ERROR)
{
Sleep(5000);
xbox::utilities::DbgOut("[SIlent] #9989 cannot connect to the server please check ethernet cable or wireless card\n");
lastSocketError = WSAGetLastError();
xbox::utilities::DbgOut("[SIlent] setsockopt error %d\n", lastSocketError);
//xbox::utilities::DbgOut("[SIlent] #Failed to Connect Server 4\n");
Server4 = TRUE;
goto start;
}
}
else {
xbox::utilities::DbgOut("[SIlent] #No Active Connections\n");
xbox::utilities::XNotify("SIlent - Not Connected to Network!");
Connected = FALSE;
goto start;
}
return Connected = TRUE;
}