Skip to content

Commit

Permalink
Added server connection continuation after update
Browse files Browse the repository at this point in the history
  • Loading branch information
ccw808 committed Aug 1, 2015
1 parent b771d42 commit cfd95d9
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 10 deletions.
20 changes: 12 additions & 8 deletions MTA10/core/CVersionUpdater.cpp
Expand Up @@ -146,7 +146,6 @@ class CVersionUpdater : public CVersionUpdaterInterface

SString m_strSidegradeVersion;
SString m_strSidegradeHost;
ushort m_usSidegradePort;
SString m_strSidegradeName;
SString m_strSidegradePassword;
SString m_strSidegradePath;
Expand Down Expand Up @@ -657,16 +656,14 @@ void CVersionUpdater::InitiateManualCheck ( void )
//
//
///////////////////////////////////////////////////////////////
void CVersionUpdater::InitiateSidegradeLaunch ( const SString& strVersion, const SString& strHost, ushort usPort, const SString& strName, const SString& strPassword )
void CVersionUpdater::InitiateSidegradeLaunch ( const SString& strVersion, const SString& strIp, ushort usPort, const SString& strName, const SString& strPassword )
{
RunProgram ( EUpdaterProgramType::SidegradeLaunch );

m_strSidegradeVersion = strVersion;
m_strSidegradeHost = strHost;
m_usSidegradePort = usPort;
m_strSidegradeHost = SString ( "%s:%d", *strIp, usPort );
m_strSidegradeName = strName;
m_strSidegradePassword = strPassword;

RunProgram ( EUpdaterProgramType::SidegradeLaunch );
m_strServerSaysHost = SString ( "%s:%d", *strHost, usPort );
}


Expand Down Expand Up @@ -785,6 +782,11 @@ void CVersionUpdater::ResetEverything ()
m_strServerSaysType = "";
m_strServerSaysData = "";
m_strServerSaysHost = "";
m_strSidegradeVersion = "";
m_strSidegradeHost = "";
m_strSidegradeName = "";
m_strSidegradePassword = "";

GetQuestionBox ().Reset ();
shared.m_bQuitCurrentProgram = false;
}
Expand Down Expand Up @@ -1495,7 +1497,7 @@ void CVersionUpdater::_CheckSidegradeRequirements ( void )
///////////////////////////////////////////////////////////////
void CVersionUpdater::_DoSidegradeLaunch ( void )
{
SString strURL ( "mtasa://%s:%s@%s:%d", *m_strSidegradeName, *m_strSidegradePassword, *m_strSidegradeHost, m_usSidegradePort );
SString strURL ( "mtasa://%s:%s@%s", *m_strSidegradeName, *m_strSidegradePassword, *m_strSidegradeHost );
SetOnQuitCommand ( "open", m_strSidegradePath, strURL );
_ExitGame();
}
Expand Down Expand Up @@ -1942,6 +1944,7 @@ void CVersionUpdater::_DialogUpdateResult(void)
SetOnQuitCommand ( "restart" );
SetOnRestartCommand ( "files", m_JobInfo.strSaveLocation );
_PollAnyButton();
SetPostUpdateConnect( m_strServerSaysHost );
_ExitGame();
}
else
Expand Down Expand Up @@ -3160,6 +3163,7 @@ int CVersionUpdater::DoSendDownloadRequestToNextServer ( void )
strQueryURL = strQueryURL.Replace ( "_TYPE_", m_strServerSaysType );
strQueryURL = strQueryURL.Replace ( "_DATA_", m_strServerSaysData );
strQueryURL = strQueryURL.Replace ( "_REFER_", m_strServerSaysHost );
strQueryURL = strQueryURL.Replace ( "_REFERSG_", m_strSidegradeHost );
strQueryURL = strQueryURL.Replace ( "_WANTVER_", m_strSidegradeVersion );
strQueryURL = strQueryURL.Replace ( "_LASTNEWS_", m_VarConfig.news_lastNewsDate );
strQueryURL = strQueryURL.Replace ( "_FILE_", m_JobInfo.strPostFilename );
Expand Down
2 changes: 1 addition & 1 deletion MTA10/core/CVersionUpdater.h
Expand Up @@ -26,7 +26,7 @@ class CVersionUpdaterInterface
virtual void InitiateDataFilesFix ( void ) = 0;
virtual void InitiateManualCheck ( void ) = 0;
virtual void GetAseServerList ( std::vector < SString >& outResult ) = 0;
virtual void InitiateSidegradeLaunch ( const SString& strVersion, const SString& strHost, ushort usPort, const SString& strName, const SString& strPassword ) = 0;
virtual void InitiateSidegradeLaunch ( const SString& strVersion, const SString& strIp, ushort usPort, const SString& strName, const SString& strPassword ) = 0;
virtual void GetBrowseVersionMaps ( std::map < SString, int >& outBlockedVersionMap, std::map < SString, int >& outAllowedVersionMap ) = 0;
virtual void GetNewsSettings ( SString& strOutOldestPost, uint& uiOutMaxHistoryLength ) = 0;
virtual const SString& GetDebugFilterString ( void ) = 0;
Expand Down
6 changes: 6 additions & 0 deletions MTA10/loader/MainFunctions.cpp
Expand Up @@ -878,6 +878,12 @@ int LaunchGame ( SString strCmdLine )
// Extract 'done-admin' flag from command line
bool bDoneAdmin = strCmdLine.Contains ( "/done-admin" );
strCmdLine = strCmdLine.Replace ( " /done-admin", "" );

// Add server connection after update to command line
SString strPostUpdateConnect = GetPostUpdateConnect();
if ( !strPostUpdateConnect.empty() && strCmdLine.empty() )
strCmdLine = SString( "mtasa://%s", *strPostUpdateConnect );

WString wstrCmdLine = FromUTF8( strCmdLine );

// Start GTA
Expand Down
2 changes: 1 addition & 1 deletion MTA10/mods/deathmatch/logic/CPacketHandler.cpp
Expand Up @@ -5107,7 +5107,7 @@ void CPacketHandler::Packet_UpdateInfo ( NetBitStreamInterface& bitStream )
if ( BitStreamReadUsString( bitStream, strType ) &&
BitStreamReadUsString( bitStream, strData ) )
{
g_pCore->InitiateUpdate ( strType, strData, g_pNet->GetConnectedServer () );
g_pCore->InitiateUpdate ( strType, strData, g_pNet->GetConnectedServer ( true ) );
}
}

Expand Down
6 changes: 6 additions & 0 deletions Shared/sdk/SharedUtil.Misc.h
Expand Up @@ -79,6 +79,12 @@ namespace SharedUtil
void SetOnRestartCommand ( const SString& strOperation, const SString& strFile = "", const SString& strParameters = "", const SString& strDirectory = "", const SString& strShowCmd = "" );
bool GetOnRestartCommand ( SString& strOperation, SString& strFile, SString& strParameters, SString& strDirectory, SString& strShowCmd );

//
// What server to connect to after update
//
void SetPostUpdateConnect ( const SString& strHost );
SString GetPostUpdateConnect ( void );

//
// For tracking results of new features
//
Expand Down
36 changes: 36 additions & 0 deletions Shared/sdk/SharedUtil.Misc.hpp
Expand Up @@ -15,6 +15,7 @@
#include "UTF8.h"
#include "UTF8Detect.cpp"
#ifdef WIN32
#include <ctime>
#include <direct.h>
#include <shellapi.h>
#include <TlHelp32.h>
Expand Down Expand Up @@ -314,6 +315,41 @@ bool SharedUtil::GetOnRestartCommand ( SString& strOperation, SString& strFile,
}
return false;
}


//
// What server to connect to after update
//
void SharedUtil::SetPostUpdateConnect( const SString& strHost )
{
CArgMap argMap;
argMap.Set( "host", strHost );
argMap.Set( "time", SString( PRId64, (int64)time( NULL ) ) );
SetRegistryValue( "", "PostUpdateConnect", argMap.ToString() );
}


//
// What server to connect to after update
//
SString SharedUtil::GetPostUpdateConnect( void )
{
SString strPostUpdateConnect = GetRegistryValue( "", "PostUpdateConnect" );
SetPostUpdateConnect( "" );

CArgMap argMap;
argMap.SetFromString( strPostUpdateConnect );
SString strHost = argMap.Get( "host" );
time_t timeThen = (time_t)atoi64( argMap.Get( "time" ) );

// Expire after 5 mins
double seconds = difftime( time( NULL ), timeThen );
if ( seconds < 0 || seconds > 60 * 5 )
strHost == "";

return strHost;
}

#endif


Expand Down

2 comments on commit cfd95d9

@jte
Copy link
Contributor

@jte jte commented on cfd95d9 Aug 2, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You've got typo at Shared/sdk/SharedUtil.Misc.hpp:348; should be assignment.

@ccw808
Copy link
Member Author

@ccw808 ccw808 commented on cfd95d9 Aug 2, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

Please sign in to comment.