Skip to content

Commit

Permalink
Merge pull request #30 from LandSandBoat/v1.1.3
Browse files Browse the repository at this point in the history
V1.1.3, hint to windows are are DPI aware, better logging, better detect when to use autologin
  • Loading branch information
zach2good authored Dec 16, 2024
2 parents d02e7a2 + 390b228 commit 76b82d6
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 14 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ add_executable(xiloader
src/network.h
src/polcore.h
${CMAKE_CURRENT_BINARY_DIR}/src/xiloader.rc
xiloader.manifest
)

set_target_properties(xiloader PROPERTIES LINK_FLAGS "/LARGEADDRESSAWARE")
Expand Down
13 changes: 12 additions & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ namespace globals
std::string g_Password = ""; // The password being logged in with.
char g_SessionHash[16] = {}; // Session hash sent from auth
std::string g_Email = ""; // Email, currently unused
std::string g_VersionNumber = "1.1.2"; // xiloader version number sent to auth server. Must be x.x.x with single characters for 'x'. Remember to also change in xiloader.rc.in
std::string g_VersionNumber = "1.1.3"; // xiloader version number sent to auth server. Must be x.x.x with single characters for 'x'. Remember to also change in xiloader.rc.in
bool g_FirstLogin = false; // set to true when --user --pass are both set to allow for autologin

char* g_CharacterList = NULL; // Pointer to the character list data being sent from the server.
bool g_IsRunning = false; // Flag to determine if the network threads should hault.
Expand Down Expand Up @@ -430,6 +431,11 @@ int __cdecl main(int argc, char* argv[])
globals::g_Password = args.is_used("--pass") ? args.get<std::string>("--pass") : globals::g_Password;
globals::g_Email = args.is_used("--email") ? args.get<std::string>("--email") : globals::g_Email;

if (args.is_used("--user") && args.is_used("--pass"))
{
globals::g_FirstLogin = true;
}

if (args.is_used("--lang"))
{
std::string language = args.get<std::string>("--lang");
Expand Down Expand Up @@ -522,10 +528,15 @@ int __cdecl main(int argc, char* argv[])

/* Attempt to resolve the server address.. */
ULONG ulAddress = 0;

xiloader::console::output(xiloader::color::info, "Resolving '%s' ...", globals::g_ServerAddress.c_str());

if (xiloader::network::ResolveHostname(globals::g_ServerAddress.c_str(), &ulAddress))
{
globals::g_ServerAddress = inet_ntoa(*((struct in_addr*)&ulAddress));

xiloader::console::output(xiloader::color::info, "Resolved server address to '%s:%s'", globals::g_ServerAddress.c_str(), globals::g_LoginAuthPort.c_str());

/* Attempt to create socket to server..*/
xiloader::datasocket sock;
if (xiloader::network::CreateAuthConnection(&sock, globals::g_LoginAuthPort.c_str()))
Expand Down
24 changes: 12 additions & 12 deletions src/network.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ namespace globals
extern std::string g_LoginAuthPort;
extern char* g_CharacterList;
extern bool g_IsRunning;
extern bool g_FirstLogin;
}

// mbed tls state
Expand Down Expand Up @@ -152,15 +153,18 @@ namespace xiloader
return 0;
}

if ((mbedtls_net_connect(&sslState::server_fd, globals::g_ServerAddress.c_str(), port, MBEDTLS_NET_PROTO_TCP)) != 0)
int ret = 0;

ret = mbedtls_net_connect(&sslState::server_fd, globals::g_ServerAddress.c_str(), port, MBEDTLS_NET_PROTO_TCP);
if (ret != 0)
{
xiloader::console::output(xiloader::color::error, "mbedtls_net_connect failed.");
xiloader::console::output(xiloader::color::error, "mbedtls_net_connect failed, (%s)", mbedtls_low_level_strerr(ret));
return 0;
}

if (mbedtls_ssl_config_defaults(&sslState::conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT) != 0)
if ((ret = mbedtls_ssl_config_defaults(&sslState::conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT)) != 0)
{
xiloader::console::output(xiloader::color::error, "mbedtls_ssl_config_defaults failed.");
xiloader::console::output(xiloader::color::error, "mbedtls_ssl_config_defaults failed, (%s)", mbedtls_low_level_strerr(ret));
return 0;
}

Expand All @@ -169,11 +173,9 @@ namespace xiloader
mbedtls_ssl_conf_ca_chain(&sslState::conf, sslState::ca_chain.get(), NULL);
mbedtls_ssl_conf_rng(&sslState::conf, mbedtls_ctr_drbg_random, &sslState::ctr_drbg);

int ret = 0;

if ((ret = mbedtls_ssl_setup(&sslState::ssl, &sslState::conf)) != 0)
{
xiloader::console::output(xiloader::color::error, "mbedtls_ssl_setup returned %d", ret);
xiloader::console::output(xiloader::color::error, "mbedtls_ssl_setup failed, (%s)", mbedtls_low_level_strerr(ret));
return 0;
}

Expand Down Expand Up @@ -334,8 +336,6 @@ namespace xiloader
*/
bool network::VerifyAccount(datasocket* sock)
{
static bool bFirstLogin = true;

unsigned char recvBuffer[1024] = { 0 };
unsigned char sendBuffer[1024] = { 0 };
std::string new_password = "";
Expand All @@ -349,7 +349,7 @@ namespace xiloader
}*/

/* Determine if we should auto-login.. */
bool bUseAutoLogin = !globals::g_Username.empty() && !globals::g_Password.empty() && bFirstLogin;
bool bUseAutoLogin = !globals::g_Username.empty() && !globals::g_Password.empty() && globals::g_FirstLogin;
if (bUseAutoLogin)
xiloader::console::output(xiloader::color::lightgreen, "Autologin activated!");

Expand Down Expand Up @@ -455,8 +455,8 @@ namespace xiloader
else
{
/* User has auto-login enabled.. */
sendBuffer[0x39] = 0x10;
bFirstLogin = false;
sendBuffer[0x39] = 0x10;
globals::g_FirstLogin = false;
}

sendBuffer[0] = 0xFF; // Magic for new xiloader bits
Expand Down
2 changes: 1 addition & 1 deletion src/xiloader.rc.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ BEGIN
BEGIN
BLOCK "081604b0"
BEGIN
VALUE "FileVersion", "1.1.2"
VALUE "FileVersion", "1.1.3"
END
END
END
11 changes: 11 additions & 0 deletions xiloader.manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<!-- https://stackoverflow.com/a/44009779, set PerMonitorV2 -->
<!-- https://learn.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process -->
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- fallback for Windows 7 and 8 -->
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness> <!-- adding v1 as fallback would result in v2 not being applied to dialogs on capable systems -->
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

0 comments on commit 76b82d6

Please sign in to comment.