diff --git a/modules/corelib/ui/uimessagebox.lua b/modules/corelib/ui/uimessagebox.lua index 9e68709a..a778943c 100644 --- a/modules/corelib/ui/uimessagebox.lua +++ b/modules/corelib/ui/uimessagebox.lua @@ -35,7 +35,7 @@ function UIMessageBox.display(title, message, flags) connect(messagebox, { onEscape = function(self) self:cancel() end }) end - messagebox:setWidth(messageLabel:getWidth() + messagebox:getPaddingLeft() + messagebox:getPaddingRight()) + messagebox:setWidth(math.max(messageLabel:getWidth(), messagebox:getTextSize().width) + messagebox:getPaddingLeft() + messagebox:getPaddingRight()) messagebox:setHeight(messageLabel:getHeight() + messagebox:getPaddingTop() + messagebox:getPaddingBottom() + buttonRight:getHeight() + 10) --messagebox:lock() diff --git a/src/framework/luafunctions.cpp b/src/framework/luafunctions.cpp index 01f6f622..948c4e1b 100644 --- a/src/framework/luafunctions.cpp +++ b/src/framework/luafunctions.cpp @@ -63,7 +63,7 @@ void Application::registerLuaFunctions() g_lua.bindGlobalFunction("sizetostring", [](const Size& v) { return stdext::to_string(v); }); g_lua.bindGlobalFunction("iptostring", [](int v) { return stdext::ip_to_string(v); }); g_lua.bindGlobalFunction("stringtoip", [](const std::string& v) { return stdext::string_to_ip(v); }); - g_lua.bindGlobalFunction("listSubnetAddresses", [](const std::string& v) { return stdext::listSubnetAddresses(v); }); + g_lua.bindGlobalFunction("listSubnetAddresses", [](uint32 a, uint8 b) { return stdext::listSubnetAddresses(a, b); }); // Application g_lua.registerSingletonClass("g_app"); diff --git a/src/framework/stdext/net.cpp b/src/framework/stdext/net.cpp index 8827c24a..1f2186f6 100644 --- a/src/framework/stdext/net.cpp +++ b/src/framework/stdext/net.cpp @@ -23,41 +23,37 @@ #include "net.h" #include #include -#include +#include namespace stdext { std::string ip_to_string(uint32 ip) { - char host[INET_ADDRSTRLEN]; - inet_ntop(AF_INET, &ip, host, INET_ADDRSTRLEN); - return std::string(host); + ip = boost::asio::detail::socket_ops::network_to_host_long(ip); + boost::asio::ip::address_v4 address_v4 = boost::asio::ip::address_v4(ip); + return address_v4.to_string(); } uint32 string_to_ip(const std::string& string) { - uint32 ip = 0; - inet_pton(AF_INET, string.c_str(), &ip); - return ip; + boost::asio::ip::address_v4 address_v4 = boost::asio::ip::address_v4::from_string(string); + return boost::asio::detail::socket_ops::host_to_network_long(address_v4.to_ulong()); } -std::vector listSubnetAddresses(const std::string& subnet) +std::vector listSubnetAddresses(uint32 address, uint8 mask) { std::vector list; - std::vector strVec; - boost::split(strVec, subnet, boost::is_any_of("/")); - uint32 address = string_to_ip(strVec[0]); - if(address != INADDR_NONE && strVec.size() == 2) { - uint32 mask = boost::lexical_cast(strVec[1]); - if(mask <= 32) { - for(uint32 i=0; i <= (0xFFFFFFFF >> mask); i++) { - uint32 ip = htonl((htonl(address) & (~(0xFFFFFFFF >> mask))) | i); - if((ip >> 24) != 0 && (ip >> 24) != 0xFF) { - list.push_back(ip); - } - } + if(mask < 32) { + uint32 bitmask = (0xFFFFFFFF >> mask); + for(uint32 i = 0; i <= bitmask; i++) { + uint32 ip = boost::asio::detail::socket_ops::host_to_network_long((boost::asio::detail::socket_ops::network_to_host_long(address) & (~bitmask)) | i); + if((ip >> 24) != 0 && (ip >> 24) != 0xFF) + list.push_back(ip); } } + else + list.push_back(address); + return list; } diff --git a/src/framework/stdext/net.h b/src/framework/stdext/net.h index 4cfedc13..3679257c 100644 --- a/src/framework/stdext/net.h +++ b/src/framework/stdext/net.h @@ -30,7 +30,7 @@ namespace stdext { std::string ip_to_string(uint32 ip); uint32 string_to_ip(const std::string& string); - std::vector listSubnetAddresses(const std::string& subnet); + std::vector listSubnetAddresses(uint32 address, uint8 mask); } #endif diff --git a/src/main.cpp b/src/main.cpp index 14a3e85f..c3162f42 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,9 +25,6 @@ #include #include -#include "otclient/item.h" -#include "otclient/tile.h" - int main(int argc, const char* argv[]) { std::vector args(argv, argv + argc);