Merge with develop
This commit is contained in:
commit
b2e7b71b1f
25 changed files with 376 additions and 109 deletions
|
@ -324,13 +324,19 @@ IF(WITH_QT5)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
# freetype is needed since Qt 5.5
|
# freetype is needed since Qt 5.5
|
||||||
IF(UNIX)
|
FIND_PACKAGE(FreeType)
|
||||||
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/libqtfreetype.a")
|
|
||||||
ELSEIF(WIN32)
|
IF(FREETYPE_FOUND)
|
||||||
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/qtfreetype.lib")
|
SET(QT_LIBRARIES ${QT_LIBRARIES} ${FREETYPE_LIBRARIES})
|
||||||
ENDIF()
|
ELSE()
|
||||||
IF(EXISTS ${FREETYPE_LIB})
|
IF(UNIX)
|
||||||
SET(QT_LIBRARIES ${QT_LIBRARIES} ${FREETYPE_LIB})
|
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/libqtfreetype.a")
|
||||||
|
ELSEIF(WIN32)
|
||||||
|
SET(FREETYPE_LIB "${QT_LIBRARY_DIR}/qtfreetype.lib")
|
||||||
|
ENDIF()
|
||||||
|
IF(EXISTS ${FREETYPE_LIB})
|
||||||
|
SET(QT_LIBRARIES ${QT_LIBRARIES} ${FREETYPE_LIB})
|
||||||
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
ADD_QT_PLUGIN(accessible qtaccessiblewidgets)
|
ADD_QT_PLUGIN(accessible qtaccessiblewidgets)
|
||||||
|
@ -344,7 +350,8 @@ IF(WITH_QT5)
|
||||||
IF(WIN32)
|
IF(WIN32)
|
||||||
SET(QT_LIBRARIES ${QT_LIBRARIES}
|
SET(QT_LIBRARIES ${QT_LIBRARIES}
|
||||||
${WINSDK_LIBRARY_DIR}/Crypt32.lib
|
${WINSDK_LIBRARY_DIR}/Crypt32.lib
|
||||||
${WINSDK_LIBRARY_DIR}/WS2_32.Lib)
|
${WINSDK_LIBRARY_DIR}/WS2_32.Lib
|
||||||
|
${WINSDK_LIBRARY_DIR}/IPHlpApi.Lib)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
# Core
|
# Core
|
||||||
|
|
|
@ -124,7 +124,7 @@ IF(WITH_LUA51)
|
||||||
IF(WITH_STLPORT)
|
IF(WITH_STLPORT)
|
||||||
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua51)
|
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua51)
|
||||||
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua51d)
|
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua51d)
|
||||||
ENDIF(WITH_STLPORT)
|
ENDIF()
|
||||||
|
|
||||||
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua51)
|
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua51)
|
||||||
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua51d)
|
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua51d)
|
||||||
|
@ -134,7 +134,7 @@ IF(WITH_LUA50)
|
||||||
IF(WITH_STLPORT)
|
IF(WITH_STLPORT)
|
||||||
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua50)
|
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua50)
|
||||||
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua50d)
|
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua50d)
|
||||||
ENDIF(WITH_STLPORT)
|
ENDIF()
|
||||||
|
|
||||||
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua50)
|
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua50)
|
||||||
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua50d)
|
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua50d)
|
||||||
|
@ -195,7 +195,7 @@ IF(LUABIND_INCLUDE_DIR AND Boost_INCLUDE_DIR)
|
||||||
SET(LUABIND_FOUND TRUE)
|
SET(LUABIND_FOUND TRUE)
|
||||||
SET(LUABIND_LIBRARIES ${LUABIND_LIBRARY_DEBUG})
|
SET(LUABIND_LIBRARIES ${LUABIND_LIBRARY_DEBUG})
|
||||||
ENDIF(LUABIND_LIBRARY_RELEASE AND LUABIND_LIBRARY_DEBUG)
|
ENDIF(LUABIND_LIBRARY_RELEASE AND LUABIND_LIBRARY_DEBUG)
|
||||||
ENDIF(LUABIND_INCLUDE_DIR AND Boost_INCLUDE_DIR)
|
ENDIF()
|
||||||
|
|
||||||
IF(LUABIND_FOUND)
|
IF(LUABIND_FOUND)
|
||||||
SET(LUABIND_INCLUDE_DIR ${LUABIND_INCLUDE_DIR} ${Boost_INCLUDE_DIR})
|
SET(LUABIND_INCLUDE_DIR ${LUABIND_INCLUDE_DIR} ${Boost_INCLUDE_DIR})
|
||||||
|
@ -203,17 +203,17 @@ IF(LUABIND_FOUND)
|
||||||
FIND_FILE(LUABIND_VERSION_FILE luabind/version.hpp PATHS ${LUABIND_INCLUDE_DIR})
|
FIND_FILE(LUABIND_VERSION_FILE luabind/version.hpp PATHS ${LUABIND_INCLUDE_DIR})
|
||||||
IF(LUABIND_VERSION_FILE)
|
IF(LUABIND_VERSION_FILE)
|
||||||
SET(LUABIND_DEFINITIONS "-DHAVE_LUABIND_VERSION")
|
SET(LUABIND_DEFINITIONS "-DHAVE_LUABIND_VERSION")
|
||||||
ENDIF(LUABIND_VERSION_FILE)
|
ENDIF()
|
||||||
|
|
||||||
FIND_CORRECT_LUA_VERSION()
|
FIND_CORRECT_LUA_VERSION()
|
||||||
|
|
||||||
IF(NOT Luabind_FIND_QUIETLY)
|
IF(NOT Luabind_FIND_QUIETLY)
|
||||||
MESSAGE(STATUS "Found Luabind: ${LUABIND_LIBRARIES}")
|
MESSAGE(STATUS "Found Luabind: ${LUABIND_LIBRARIES}")
|
||||||
ENDIF(NOT Luabind_FIND_QUIETLY)
|
ENDIF(NOT Luabind_FIND_QUIETLY)
|
||||||
ELSE(LUABIND_FOUND)
|
ELSE()
|
||||||
IF(NOT Luabind_FIND_QUIETLY)
|
IF(NOT Luabind_FIND_QUIETLY)
|
||||||
MESSAGE(STATUS "Warning: Unable to find Luabind!")
|
MESSAGE(STATUS "Warning: Unable to find Luabind!")
|
||||||
ENDIF(NOT Luabind_FIND_QUIETLY)
|
ENDIF()
|
||||||
ENDIF(LUABIND_FOUND)
|
ENDIF(LUABIND_FOUND)
|
||||||
|
|
||||||
MARK_AS_ADVANCED(LUABIND_LIBRARY_RELEASE LUABIND_LIBRARY_DEBUG Boost_LIB_DIAGNOSTIC_DEFINITIONS)
|
MARK_AS_ADVANCED(LUABIND_LIBRARY_RELEASE LUABIND_LIBRARY_DEBUG Boost_LIB_DIAGNOSTIC_DEFINITIONS)
|
||||||
|
|
|
@ -533,31 +533,31 @@ MACRO(NL_SETUP_BUILD)
|
||||||
# without inlining it's unusable, use custom optimizations again
|
# without inlining it's unusable, use custom optimizations again
|
||||||
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
||||||
ELSEIF(MSVC12)
|
ELSEIF(MSVC12)
|
||||||
ADD_PLATFORM_FLAGS("/Gy- /MP")
|
ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
|
||||||
# /Ox is working with VC++ 2013, but custom optimizations don't exist
|
# /Ox is working with VC++ 2013, but custom optimizations don't exist
|
||||||
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
||||||
# without inlining it's unusable, use custom optimizations again
|
# without inlining it's unusable, use custom optimizations again
|
||||||
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
||||||
ELSEIF(MSVC11)
|
ELSEIF(MSVC11)
|
||||||
ADD_PLATFORM_FLAGS("/Gy- /MP")
|
ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
|
||||||
# /Ox is working with VC++ 2012, but custom optimizations don't exist
|
# /Ox is working with VC++ 2012, but custom optimizations don't exist
|
||||||
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
||||||
# without inlining it's unusable, use custom optimizations again
|
# without inlining it's unusable, use custom optimizations again
|
||||||
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
||||||
ELSEIF(MSVC10)
|
ELSEIF(MSVC10)
|
||||||
ADD_PLATFORM_FLAGS("/Gy- /MP")
|
ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
|
||||||
# /Ox is working with VC++ 2010, but custom optimizations don't exist
|
# /Ox is working with VC++ 2010, but custom optimizations don't exist
|
||||||
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
||||||
# without inlining it's unusable, use custom optimizations again
|
# without inlining it's unusable, use custom optimizations again
|
||||||
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
SET(DEBUG_CFLAGS "/Od /Ob1 /GF- ${DEBUG_CFLAGS}")
|
||||||
ELSEIF(MSVC90)
|
ELSEIF(MSVC90)
|
||||||
ADD_PLATFORM_FLAGS("/Gy- /MP")
|
ADD_PLATFORM_FLAGS("/Gy- /MP /Zm1000")
|
||||||
# don't use a /O[012x] flag if you want custom optimizations
|
# don't use a /O[012x] flag if you want custom optimizations
|
||||||
SET(RELEASE_CFLAGS "/Ob2 /Oi /Ot /Oy /GT /GF /GS- ${RELEASE_CFLAGS}")
|
SET(RELEASE_CFLAGS "/Ob2 /Oi /Ot /Oy /GT /GF /GS- ${RELEASE_CFLAGS}")
|
||||||
# without inlining it's unusable, use custom optimizations again
|
# without inlining it's unusable, use custom optimizations again
|
||||||
SET(DEBUG_CFLAGS "/Ob1 /GF- ${DEBUG_CFLAGS}")
|
SET(DEBUG_CFLAGS "/Ob1 /GF- ${DEBUG_CFLAGS}")
|
||||||
ELSEIF(MSVC80)
|
ELSEIF(MSVC80)
|
||||||
ADD_PLATFORM_FLAGS("/Gy- /Wp64")
|
ADD_PLATFORM_FLAGS("/Gy- /Wp64 /Zm1000")
|
||||||
# don't use a /O[012x] flag if you want custom optimizations
|
# don't use a /O[012x] flag if you want custom optimizations
|
||||||
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
SET(RELEASE_CFLAGS "/Ox /GF /GS- ${RELEASE_CFLAGS}")
|
||||||
# without inlining it's unusable, use custom optimizations again
|
# without inlining it's unusable, use custom optimizations again
|
||||||
|
@ -566,7 +566,7 @@ MACRO(NL_SETUP_BUILD)
|
||||||
MESSAGE(FATAL_ERROR "Can't determine compiler version ${MSVC_VERSION}")
|
MESSAGE(FATAL_ERROR "Can't determine compiler version ${MSVC_VERSION}")
|
||||||
ENDIF(MSVC14)
|
ENDIF(MSVC14)
|
||||||
|
|
||||||
ADD_PLATFORM_FLAGS("/D_CRT_SECURE_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /Zm1000 /wd4250")
|
ADD_PLATFORM_FLAGS("/D_CRT_SECURE_NO_DEPRECATE /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /DWIN32 /D_WINDOWS /wd4250")
|
||||||
|
|
||||||
IF(TARGET_X64)
|
IF(TARGET_X64)
|
||||||
# Fix a bug with Intellisense
|
# Fix a bug with Intellisense
|
||||||
|
|
|
@ -125,7 +125,7 @@ uint8 *CVBDrvInfosD3D::lock (uint begin, uint end, bool readOnly)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nlinfo("Buffer %s at %x is Locked", (*it)->VertexBufferPtr->getName().c_str(), (int) *it);
|
nlinfo("Buffer %s at %p is Locked", (*it)->VertexBufferPtr->getName().c_str(), *it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,8 +50,8 @@ using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
|
||||||
|
|
||||||
// Default timeout to connect a server
|
// Default maximum time the request is allowed to take
|
||||||
#define DEFAULT_RYZOM_CONNECTION_TIMEOUT (30.0)
|
#define DEFAULT_RYZOM_CONNECTION_TIMEOUT (300.0)
|
||||||
// Allow up to 10 redirects, then give up
|
// Allow up to 10 redirects, then give up
|
||||||
#define DEFAULT_RYZOM_REDIRECT_LIMIT (10)
|
#define DEFAULT_RYZOM_REDIRECT_LIMIT (10)
|
||||||
//
|
//
|
||||||
|
@ -1166,7 +1166,7 @@ namespace NLGUI
|
||||||
|
|
||||||
pos = toLower(content).find("url=");
|
pos = toLower(content).find("url=");
|
||||||
if (pos != string::npos)
|
if (pos != string::npos)
|
||||||
_RefreshUrl = content.substr(pos + 4);
|
_RefreshUrl = getAbsoluteUrl(content.substr(pos + 4));
|
||||||
}
|
}
|
||||||
|
|
||||||
_NextRefreshTime += timeSec;
|
_NextRefreshTime += timeSec;
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace NLGUI
|
||||||
pos = uri.find("?");
|
pos = uri.find("?");
|
||||||
if (pos != npos)
|
if (pos != npos)
|
||||||
{
|
{
|
||||||
query = uri.substr(pos + 1);
|
query = uri.substr(pos);
|
||||||
uri = uri.substr(0, pos);
|
uri = uri.substr(0, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +210,9 @@ namespace NLGUI
|
||||||
result += path;
|
result += path;
|
||||||
|
|
||||||
if (!query.empty())
|
if (!query.empty())
|
||||||
result += "?" + query;
|
if (query.find_first_of("?") != 0)
|
||||||
|
result += "?";
|
||||||
|
result += query;
|
||||||
|
|
||||||
if (!hash.empty())
|
if (!hash.empty())
|
||||||
result += "#" + hash;
|
result += "#" + hash;
|
||||||
|
|
|
@ -1258,7 +1258,7 @@ namespace NLGUI
|
||||||
getWindowForActiveMasterGroup(newCtrl->getContextHelpWindowName());
|
getWindowForActiveMasterGroup(newCtrl->getContextHelpWindowName());
|
||||||
|
|
||||||
uint32 _ScreenH, _ScreenW;
|
uint32 _ScreenH, _ScreenW;
|
||||||
CViewRenderer::getInstance()->getScreenSize( _ScreenH, _ScreenW );
|
CViewRenderer::getInstance()->getScreenSize( _ScreenW, _ScreenH );
|
||||||
|
|
||||||
if(ttPosRef==Hotspot_TTAuto || ttParentRef==Hotspot_TTAuto)
|
if(ttPosRef==Hotspot_TTAuto || ttParentRef==Hotspot_TTAuto)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
#include "stdlogic.h"
|
||||||
#include "nel/logic/logic_state.h"
|
#include "nel/logic/logic_state.h"
|
||||||
#include "nel/logic/logic_state_machine.h"
|
#include "nel/logic/logic_state_machine.h"
|
||||||
|
|
||||||
|
|
|
@ -220,6 +220,11 @@ bool CCmdArgs::parse(int argc, char **argv)
|
||||||
|
|
||||||
for(sint i = 0; i < argc; ++i)
|
for(sint i = 0; i < argc; ++i)
|
||||||
{
|
{
|
||||||
|
#ifdef NL_OS_MAC
|
||||||
|
// get rid of -psn_* arguments under OS X
|
||||||
|
if (strncmp(argv[i], "-psn_", 5) == 0) continue;
|
||||||
|
#endif
|
||||||
|
|
||||||
args.push_back(argv[i]);
|
args.push_back(argv[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +250,7 @@ bool CCmdArgs::parse(const std::vector<std::string> &argv)
|
||||||
uint argc = argv.size();
|
uint argc = argv.size();
|
||||||
|
|
||||||
// process each argument
|
// process each argument
|
||||||
for (sint i = 1; i < argc; i++)
|
for (uint i = 1; i < argc; i++)
|
||||||
{
|
{
|
||||||
std::string name = argv[i];
|
std::string name = argv[i];
|
||||||
|
|
||||||
|
|
|
@ -363,7 +363,7 @@ CSound* CSoundBank::getSound(const NLMISC::CSheetId &sheetId)
|
||||||
if (sheetId.getShortId() >= _Sounds.size())
|
if (sheetId.getShortId() >= _Sounds.size())
|
||||||
{
|
{
|
||||||
std::string sheetName = sheetId.toString();
|
std::string sheetName = sheetId.toString();
|
||||||
nlwarning("NLSOUND: Sound sheet id '%s' exceeds loaded sound sheets", sheetName.c_str());
|
nldebug("NLSOUND: Sound sheet id '%s' exceeds loaded sound sheets", sheetName.c_str());
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,6 @@
|
||||||
background_bitmap_view=""
|
background_bitmap_view=""
|
||||||
home=""
|
home=""
|
||||||
browse_next_time="false"
|
browse_next_time="false"
|
||||||
timeout="5"
|
|
||||||
form_text_area_group="edit_box_widget_multiline">
|
form_text_area_group="edit_box_widget_multiline">
|
||||||
<group id="black"
|
<group id="black"
|
||||||
posref="BR BR"
|
posref="BR BR"
|
||||||
|
|
|
@ -27,6 +27,15 @@
|
||||||
<!-- Yoyo: prefer show an empty list when clicking -->
|
<!-- Yoyo: prefer show an empty list when clicking -->
|
||||||
<!-- <action handler="leave_modal" cond="eq(getprop('ui:interface:bag_choose:list:nbelt'),0)" /> -->
|
<!-- <action handler="leave_modal" cond="eq(getprop('ui:interface:bag_choose:list:nbelt'),0)" /> -->
|
||||||
</proc>
|
</proc>
|
||||||
|
<proc id="select_special_items">
|
||||||
|
<action handler="set" params="target_property=ui:interface:inventory:content:bag:iil:active|value=0" />
|
||||||
|
<action handler="set" params="target_property=ui:interface:inventory:content:bag:webitems:active|value=1" />
|
||||||
|
<action handler="browse_home" params="name=ui:interface:inventory:content:bag:webitems:html" />
|
||||||
|
</proc>
|
||||||
|
<proc id="select_bag_items">
|
||||||
|
<action handler="set" params="target_property=ui:interface:inventory:content:bag:iil:active|value=1" />
|
||||||
|
<action handler="set" params="target_property=ui:interface:inventory:content:bag:webitems:active|value=0" />
|
||||||
|
</proc>
|
||||||
<!-- ************* -->
|
<!-- ************* -->
|
||||||
<!-- * EQUIPMENT * -->
|
<!-- * EQUIPMENT * -->
|
||||||
<!-- ************* -->
|
<!-- ************* -->
|
||||||
|
@ -44,6 +53,83 @@
|
||||||
onclick_l="proc"
|
onclick_l="proc"
|
||||||
params_l="inv_left_click_on_slot"
|
params_l="inv_left_click_on_slot"
|
||||||
auto_grayed="false" />
|
auto_grayed="false" />
|
||||||
|
|
||||||
|
<template name="img_button"
|
||||||
|
id="image_button"
|
||||||
|
ok_text="uittOK"
|
||||||
|
tx_over="blank.tga"
|
||||||
|
cancel_text="uittCancel"
|
||||||
|
posparent="parent"
|
||||||
|
posref="BM TM"
|
||||||
|
onclick_ok=""
|
||||||
|
onclick_ok_param=""
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
keep="true"
|
||||||
|
tooltip_ok=""
|
||||||
|
avoid_resize_parent="false">
|
||||||
|
<group id="#id"
|
||||||
|
posparent="#posparent"
|
||||||
|
posref="#posref"
|
||||||
|
child_resize_w="true"
|
||||||
|
child_resize_h="true"
|
||||||
|
x="#x"
|
||||||
|
y="#y"
|
||||||
|
avoid_resize_parent="#avoid_resize_parent">
|
||||||
|
<ctrl style="button_ok"
|
||||||
|
id="bb"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
posref="TL TL"
|
||||||
|
text_y="-2"
|
||||||
|
onclick_l="#onclick_ok"
|
||||||
|
params_l="#onclick_ok_param"
|
||||||
|
hardtext="#ok_text"
|
||||||
|
tooltip="#tooltip_ok" />
|
||||||
|
<ctrl type="button"
|
||||||
|
id="button"
|
||||||
|
button_type="push_button"
|
||||||
|
posref="TL TL"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
scale="false"
|
||||||
|
tx_over="#tx_over"
|
||||||
|
color="255 255 255 255"
|
||||||
|
col_pushed="255 255 255 255"
|
||||||
|
col_over="255 255 255 0"
|
||||||
|
onclick_l="#onclick_ok"
|
||||||
|
params_l="#onclick_ok_param" />
|
||||||
|
</group>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="image_button"
|
||||||
|
tx_over="blank.tga"
|
||||||
|
onclick_l=""
|
||||||
|
params_l="" >
|
||||||
|
<group id="#id"
|
||||||
|
posref="TL TL"
|
||||||
|
x="0"
|
||||||
|
y="0"
|
||||||
|
sizeref="wh"
|
||||||
|
w="0"
|
||||||
|
h="0">
|
||||||
|
<ctrl type="button"
|
||||||
|
id=""
|
||||||
|
button_type="push_button"
|
||||||
|
posref=""
|
||||||
|
posparent=""
|
||||||
|
x=""
|
||||||
|
y=""
|
||||||
|
scale="false"
|
||||||
|
tx_over="#tx_over"
|
||||||
|
color="255 255 255 255"
|
||||||
|
col_pushed="255 255 255 255"
|
||||||
|
col_over="255 255 255 0"
|
||||||
|
onclick_l="#onclick_l"
|
||||||
|
params_l="#params_l" />
|
||||||
|
</group>
|
||||||
|
</template>
|
||||||
|
|
||||||
<!-- For the moment we use a template because we have to make the fake container -->
|
<!-- For the moment we use a template because we have to make the fake container -->
|
||||||
<template name="tinv_equip">
|
<template name="tinv_equip">
|
||||||
<group id="equip"
|
<group id="equip"
|
||||||
|
@ -481,6 +567,7 @@
|
||||||
posref="TL TL"
|
posref="TL TL"
|
||||||
group_onclick_r="active_menu"
|
group_onclick_r="active_menu"
|
||||||
group_params_r="menu=ui:interface:base_menu_with_color">
|
group_params_r="menu=ui:interface:base_menu_with_color">
|
||||||
|
|
||||||
<group type="tab"
|
<group type="tab"
|
||||||
id="inv_select"
|
id="inv_select"
|
||||||
child_resize_w="true"
|
child_resize_w="true"
|
||||||
|
@ -624,6 +711,99 @@
|
||||||
sizeref="wh"
|
sizeref="wh"
|
||||||
w="0"
|
w="0"
|
||||||
h="0">
|
h="0">
|
||||||
|
<!-- Special Items -->
|
||||||
|
<ctrl style="text_button_16"
|
||||||
|
id="bag_items"
|
||||||
|
posref="TL TL"
|
||||||
|
y="-2"
|
||||||
|
x="10"
|
||||||
|
wmargin="8"
|
||||||
|
hardtext="uitabInvBag"
|
||||||
|
tooltip="uitabInvBag"
|
||||||
|
onclick_l="proc"
|
||||||
|
params_l="select_bag_items" />
|
||||||
|
<ctrl style="text_button_16"
|
||||||
|
id="special_items"
|
||||||
|
posref="TR TL"
|
||||||
|
posparent="bag_items"
|
||||||
|
y="0"
|
||||||
|
x="2"
|
||||||
|
wmargin="8"
|
||||||
|
hardtext="uiSpecialLabo"
|
||||||
|
tooltip="uiSpecialLabo"
|
||||||
|
onclick_l="proc"
|
||||||
|
params_l="select_special_items" />
|
||||||
|
<!-- Keys
|
||||||
|
<ctrl style="text_button_16"
|
||||||
|
id="keys"
|
||||||
|
posref="TR TL"
|
||||||
|
posparent="special_items"
|
||||||
|
y="0"
|
||||||
|
x="2"
|
||||||
|
wmargin="8"
|
||||||
|
hardtext="Keys"
|
||||||
|
tooltip="uiSpecialLabo"
|
||||||
|
onclick_l="open_title_help"
|
||||||
|
params_l="from=user" />-->
|
||||||
|
|
||||||
|
<group id="webitems" posref="TL TL" sizeref="wh" h="-40" w="0" x="0" y="-18" active="0">
|
||||||
|
<group type="webig_html"
|
||||||
|
id="html"
|
||||||
|
url="http://app.ryzom.com/app_arcc/index.php?action=mItem_DisplayUserItems"
|
||||||
|
title_prefix=""
|
||||||
|
sizeref="wh"
|
||||||
|
x="10"
|
||||||
|
y="0"
|
||||||
|
w="0"
|
||||||
|
h="0"
|
||||||
|
background_color="0 0 0 255"
|
||||||
|
error_color="255 240 48 255"
|
||||||
|
link_color="240 155 100 255"
|
||||||
|
text_color="210 210 210 255"
|
||||||
|
h1_color="255 255 255 255"
|
||||||
|
h2_color="255 255 255 255"
|
||||||
|
h3_color="255 255 255 255"
|
||||||
|
h4_color="255 255 255 255"
|
||||||
|
h5_color="255 255 255 255"
|
||||||
|
h6_color="100 255 100 255"
|
||||||
|
text_font_size="10"
|
||||||
|
h1_font_size="20"
|
||||||
|
h2_font_size="18"
|
||||||
|
h3_font_size="16"
|
||||||
|
h4_font_size="14"
|
||||||
|
h5_font_size="12"
|
||||||
|
h6_font_size="10"
|
||||||
|
paragraph_begin_space="1"
|
||||||
|
multi_line_space_factor="0.25"
|
||||||
|
td_begin_space="16"
|
||||||
|
li_begin_space="4"
|
||||||
|
ul_begin_space="12"
|
||||||
|
li_indent="0"
|
||||||
|
ul_indent="30"
|
||||||
|
checkbox_bitmap_normal="w_slot_on.tga"
|
||||||
|
checkbox_bitmap_pushed="w_opacity_on.tga"
|
||||||
|
checkbox_bitmap_over=""
|
||||||
|
background_bitmap_view="black2"
|
||||||
|
home="http://app.ryzom.com/app_arcc/index.php?action=mItem_DisplayUserItems"
|
||||||
|
browse_next_time="true"
|
||||||
|
form_text_area_group="edit_box_widget_multiline">
|
||||||
|
<group type="list"
|
||||||
|
id="text_list"
|
||||||
|
fontsize="9"
|
||||||
|
posref="TL TL"
|
||||||
|
posparent="black"
|
||||||
|
x="9"
|
||||||
|
y="-2"
|
||||||
|
space="0"
|
||||||
|
sizeref="hw"
|
||||||
|
w="-4"
|
||||||
|
h="-4"
|
||||||
|
maxelements="2000" />
|
||||||
|
<ctrl style="skin_scroll"
|
||||||
|
id="scroll_bar" />
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
|
||||||
<instance template="tinv_nbslots_bulk_weight"
|
<instance template="tinv_nbslots_bulk_weight"
|
||||||
id="ibw"
|
id="ibw"
|
||||||
x="0"
|
x="0"
|
||||||
|
@ -632,7 +812,7 @@
|
||||||
<instance template="tinv_item_list"
|
<instance template="tinv_item_list"
|
||||||
id="iil"
|
id="iil"
|
||||||
inv_branch_nb="%max_bag_invslot"
|
inv_branch_nb="%max_bag_invslot"
|
||||||
y="-16"
|
y="-18"
|
||||||
sizeref="wh"
|
sizeref="wh"
|
||||||
h="-16"
|
h="-16"
|
||||||
inv_branch="%bag"
|
inv_branch="%bag"
|
||||||
|
|
|
@ -176,7 +176,7 @@ function webig:doRemoveDbSheetQuantity(sheet_list, ctrl)
|
||||||
if new_quantity >= current_quantity then
|
if new_quantity >= current_quantity then
|
||||||
webig:deleteItem(db..":"..ctrl)
|
webig:deleteItem(db..":"..ctrl)
|
||||||
else
|
else
|
||||||
addDbProp(db..":"..ctrl..":QUANTITY", current_quantity-new_quantity)
|
addDbProp(db..":"..ctrl..":QUANTITY", new_quantity)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -6977,8 +6977,7 @@
|
||||||
form_text_area_group="edit_box_widget_multiline"
|
form_text_area_group="edit_box_widget_multiline"
|
||||||
browse_refresh="#browse_refresh"
|
browse_refresh="#browse_refresh"
|
||||||
browse_undo="#browse_undo"
|
browse_undo="#browse_undo"
|
||||||
browse_redo="#browse_redo"
|
browse_redo="#browse_redo">
|
||||||
timeout="10">
|
|
||||||
<group id="black"
|
<group id="black"
|
||||||
posref="BR BR"
|
posref="BR BR"
|
||||||
sizeref="hw"
|
sizeref="hw"
|
||||||
|
|
|
@ -5798,3 +5798,11 @@ NLMISC_COMMAND(time, "Shows information about the current time", "")
|
||||||
CInterfaceManager::getInstance()->displaySystemInfo(msg, "AROUND");
|
CInterfaceManager::getInstance()->displaySystemInfo(msg, "AROUND");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NLMISC_COMMAND(playedTime, "Display character played time", "")
|
||||||
|
{
|
||||||
|
ucstring msg = CI18N::get("uiPlayedTime");
|
||||||
|
strFindReplace(msg, "%time", NLMISC::secondsToHumanReadable(CharPlayedTime));
|
||||||
|
CInterfaceManager::getInstance()->displaySystemInfo(msg, "AROUND");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -569,7 +569,7 @@ void CLoginStateMachine::run()
|
||||||
break;
|
break;
|
||||||
case st_disconnect:
|
case st_disconnect:
|
||||||
// Far TP part 2: disconnect from the FS and unload shard-specific data (called from farTPmainLoop())
|
// Far TP part 2: disconnect from the FS and unload shard-specific data (called from farTPmainLoop())
|
||||||
FarTP.disconnectFromPreviousShard();
|
// FarTP.disconnectFromPreviousShard();
|
||||||
|
|
||||||
SM_BEGIN_EVENT_TABLE
|
SM_BEGIN_EVENT_TABLE
|
||||||
SM_EVENT(ev_connect, st_reconnect_fs);
|
SM_EVENT(ev_connect, st_reconnect_fs);
|
||||||
|
@ -1406,6 +1406,9 @@ void CFarTP::farTPmainLoop()
|
||||||
{
|
{
|
||||||
ConnectionReadySent = false;
|
ConnectionReadySent = false;
|
||||||
LoginSM.pushEvent(CLoginStateMachine::ev_far_tp_main_loop_entered);
|
LoginSM.pushEvent(CLoginStateMachine::ev_far_tp_main_loop_entered);
|
||||||
|
|
||||||
|
disconnectFromPreviousShard();
|
||||||
|
|
||||||
uint nbRecoSelectCharReceived = 0;
|
uint nbRecoSelectCharReceived = 0;
|
||||||
|
|
||||||
bool welcomeWindow = true;
|
bool welcomeWindow = true;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
using namespace NLNET;
|
using namespace NLNET;
|
||||||
|
@ -62,11 +63,11 @@ bool CCurlHttpClient::authenticate(const std::string &user, const std::string &p
|
||||||
const char *CAFilename = "ssl_ca_cert.pem"; // this is the certificate "Thawte Server CA"
|
const char *CAFilename = "ssl_ca_cert.pem"; // this is the certificate "Thawte Server CA"
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
|
static CURLcode sslctx_function(CURL * /* curl */, void *sslctx, void * /* parm */)
|
||||||
{
|
{
|
||||||
// look for certificate in search paths
|
// look for certificate in search paths
|
||||||
string path = CPath::lookup(CAFilename);
|
string path = CPath::lookup(CAFilename);
|
||||||
nldebug("Cert path '%s'", path.c_str());
|
nlinfo("Cert path '%s'", path.c_str());
|
||||||
|
|
||||||
if (path.empty())
|
if (path.empty())
|
||||||
{
|
{
|
||||||
|
@ -92,6 +93,8 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
|
||||||
// get a BIO
|
// get a BIO
|
||||||
BIO *bio = BIO_new_mem_buf(&buffer[0], file.getFileSize());
|
BIO *bio = BIO_new_mem_buf(&buffer[0], file.getFileSize());
|
||||||
|
|
||||||
|
char errorBuffer[1024];
|
||||||
|
|
||||||
if (bio)
|
if (bio)
|
||||||
{
|
{
|
||||||
// get a pointer to the X509 certificate store (which may be empty!)
|
// get a pointer to the X509 certificate store (which may be empty!)
|
||||||
|
@ -108,13 +111,24 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
|
||||||
{
|
{
|
||||||
X509_INFO *itmp = sk_X509_INFO_value(info, i);
|
X509_INFO *itmp = sk_X509_INFO_value(info, i);
|
||||||
|
|
||||||
if (itmp->x509)
|
if (itmp && itmp->x509)
|
||||||
{
|
{
|
||||||
// add our certificate to this store
|
// add our certificate to this store
|
||||||
if (X509_STORE_add_cert(store, itmp->x509) == 0)
|
if (X509_STORE_add_cert(store, itmp->x509) == 0)
|
||||||
{
|
{
|
||||||
nlwarning("Error adding certificate");
|
uint errCode = ERR_get_error();
|
||||||
res = CURLE_SSL_CACERT;
|
|
||||||
|
// ignore already in hash table errors
|
||||||
|
if (ERR_GET_LIB(errCode) != ERR_LIB_X509 || ERR_GET_REASON(errCode) != X509_R_CERT_ALREADY_IN_HASH_TABLE)
|
||||||
|
{
|
||||||
|
ERR_error_string_n(errCode, errorBuffer, 1024);
|
||||||
|
nlwarning("Error adding certificate %s: %s", itmp->x509->name, errorBuffer);
|
||||||
|
res = CURLE_SSL_CACERT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nlinfo("Added certificate %s", itmp->x509->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,7 +189,7 @@ bool CCurlHttpClient::sendRequest(const std::string& methodWB, const std::string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set POST params
|
// Set POST params
|
||||||
if ((methodWB == "POST ") && (!postParams.empty()))
|
if ((methodWB == "POST") && (!postParams.empty()))
|
||||||
{
|
{
|
||||||
curl_easy_setopt(_Curl, CURLOPT_POSTFIELDS, postParams.c_str());
|
curl_easy_setopt(_Curl, CURLOPT_POSTFIELDS, postParams.c_str());
|
||||||
}
|
}
|
||||||
|
@ -221,25 +235,25 @@ void CCurlHttpClient::pushReceivedData(uint8 *buffer, uint size)
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CCurlHttpClient::sendGet(const string &url, const string& params, bool verbose)
|
bool CCurlHttpClient::sendGet(const string &url, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("GET ", url + (params.empty() ? "" : ("?" + params)), string(), string(), string(), verbose);
|
return sendRequest("GET", url + (params.empty() ? "" : ("?" + params)), string(), string(), string(), verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CCurlHttpClient::sendGetWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
bool CCurlHttpClient::sendGetWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("GET ", url + (params.empty() ? "" : ("?" + params)), name, value, string(), verbose);
|
return sendRequest("GET", url + (params.empty() ? "" : ("?" + params)), name, value, string(), verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CCurlHttpClient::sendPost(const string &url, const string& params, bool verbose)
|
bool CCurlHttpClient::sendPost(const string &url, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("POST ", url, string(), string(), params, verbose);
|
return sendRequest("POST", url, string(), string(), params, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CCurlHttpClient::sendPostWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
bool CCurlHttpClient::sendPostWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("POST ", url, name, value, params, verbose);
|
return sendRequest("POST", url, name, value, params, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
@ -247,11 +261,11 @@ bool CCurlHttpClient::receive(string &res, bool verbose)
|
||||||
{
|
{
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
nldebug("Receiving %u bytes", _ReceiveBuffer.size());
|
nldebug("Receiving %u bytes", (uint)_ReceiveBuffer.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
res.clear();
|
res.clear();
|
||||||
if (_ReceiveBuffer.size())
|
if (!_ReceiveBuffer.empty())
|
||||||
res.assign((const char*)&(*(_ReceiveBuffer.begin())), _ReceiveBuffer.size());
|
res.assign((const char*)&(*(_ReceiveBuffer.begin())), _ReceiveBuffer.size());
|
||||||
_ReceiveBuffer.clear();
|
_ReceiveBuffer.clear();
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1826,7 +1826,8 @@ bool CInterfaceManager::saveConfig (const string &filename)
|
||||||
|
|
||||||
COFile f;
|
COFile f;
|
||||||
|
|
||||||
if (!f.open(filename)) return false;
|
// using temporary file, so no f.close() unless its a success
|
||||||
|
if (!f.open(filename, false, false, true)) return false;
|
||||||
|
|
||||||
CInterfaceConfig ic;
|
CInterfaceConfig ic;
|
||||||
|
|
||||||
|
@ -1873,7 +1874,6 @@ bool CInterfaceManager::saveConfig (const string &filename)
|
||||||
{
|
{
|
||||||
nlwarning("Config saving failed");
|
nlwarning("Config saving failed");
|
||||||
// couldn't save result so do not continue
|
// couldn't save result so do not continue
|
||||||
f.close();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1929,14 +1929,14 @@ bool CInterfaceManager::saveConfig (const string &filename)
|
||||||
nlwarning("Bad user dyn chat saving");
|
nlwarning("Bad user dyn chat saving");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
f.close();
|
||||||
}
|
}
|
||||||
catch(const NLMISC::EStream &)
|
catch(const NLMISC::EStream &)
|
||||||
{
|
{
|
||||||
f.close();
|
|
||||||
nlwarning("Config saving failed.");
|
nlwarning("Config saving failed.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
f.close();
|
|
||||||
|
|
||||||
ContinentMngr.serialFOWMaps();
|
ContinentMngr.serialFOWMaps();
|
||||||
|
|
||||||
|
@ -2645,7 +2645,8 @@ bool CInterfaceManager::saveKeys(const std::string &filename)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
COFile file;
|
COFile file;
|
||||||
if (file.open (filename))
|
// using temporary file, so no file.close() unless its a success
|
||||||
|
if (file.open (filename, false, false, true))
|
||||||
{
|
{
|
||||||
COXml xmlStream;
|
COXml xmlStream;
|
||||||
xmlStream.init (&file);
|
xmlStream.init (&file);
|
||||||
|
@ -2675,8 +2676,7 @@ bool CInterfaceManager::saveKeys(const std::string &filename)
|
||||||
}
|
}
|
||||||
catch (const Exception &e)
|
catch (const Exception &e)
|
||||||
{
|
{
|
||||||
nlwarning ("Error while writing the file %s : %s. Remove it.", filename.c_str(), e.what ());
|
nlwarning ("Error while writing the file %s : %s.", filename.c_str(), e.what ());
|
||||||
CFile::deleteFile(filename);
|
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2719,8 +2719,10 @@ string checkLogin(const string &login, const string &password, const string &cli
|
||||||
|
|
||||||
string res;
|
string res;
|
||||||
|
|
||||||
|
std::string url = ClientCfg.ConfigFile.getVar("StartupHost").asString() + ClientCfg.ConfigFile.getVar("StartupPage").asString();
|
||||||
|
|
||||||
// ask server for salt
|
// ask server for salt
|
||||||
if(!HttpClient.sendGet(ClientCfg.ConfigFile.getVar("StartupPage").asString()+"?cmd=ask&login="+login+"&lg="+ClientCfg.LanguageCode, "", pPM->isVerboseLog()))
|
if(!HttpClient.sendGet(url + "?cmd=ask&cp=2&login=" + login + "&lg=" + ClientCfg.LanguageCode, "", pPM->isVerboseLog()))
|
||||||
return "Can't send (error code 60)";
|
return "Can't send (error code 60)";
|
||||||
|
|
||||||
if(pPM->isVerboseLog()) nlinfo("Sent request for password salt");
|
if(pPM->isVerboseLog()) nlinfo("Sent request for password salt");
|
||||||
|
@ -2750,7 +2752,7 @@ string checkLogin(const string &login, const string &password, const string &cli
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
// send login + crypted password + client app and cp=1 (as crypted password)
|
// send login + crypted password + client app and cp=2 (as crypted password)
|
||||||
if(!HttpClient.connectToLogin())
|
if(!HttpClient.connectToLogin())
|
||||||
return "Can't connect (error code 63)";
|
return "Can't connect (error code 63)";
|
||||||
|
|
||||||
|
@ -2760,7 +2762,8 @@ string checkLogin(const string &login, const string &password, const string &cli
|
||||||
{
|
{
|
||||||
// R2 login sequence
|
// R2 login sequence
|
||||||
std::string cryptedPassword = CCrypt::crypt(password, Salt);
|
std::string cryptedPassword = CCrypt::crypt(password, Salt);
|
||||||
if(!HttpClient.sendGet(ClientCfg.ConfigFile.getVar("StartupPage").asString()+"?cmd=login&login="+login+"&password="+cryptedPassword+"&clientApplication="+clientApp+"&cp=1"+"&lg="+ClientCfg.LanguageCode))
|
|
||||||
|
if(!HttpClient.sendGet(url + "?cmd=login&login=" + login + "&password=" + cryptedPassword + "&clientApplication=" + clientApp + "&cp=2" + "&lg=" + ClientCfg.LanguageCode))
|
||||||
return "Can't send (error code 2)";
|
return "Can't send (error code 2)";
|
||||||
|
|
||||||
// the response should contains the result code and the cookie value
|
// the response should contains the result code and the cookie value
|
||||||
|
@ -2839,7 +2842,8 @@ string checkLogin(const string &login, const string &password, const string &cli
|
||||||
{
|
{
|
||||||
// standard ryzom login sequence
|
// standard ryzom login sequence
|
||||||
std::string cryptedPassword = CCrypt::crypt(password, Salt);
|
std::string cryptedPassword = CCrypt::crypt(password, Salt);
|
||||||
if(!HttpClient.sendGet(ClientCfg.ConfigFile.getVar("StartupPage").asString()+"?login="+login+"&password="+cryptedPassword+"&clientApplication="+clientApp+"&cp=1"))
|
|
||||||
|
if(!HttpClient.sendGet(url + "?login=" + login + "&password=" + cryptedPassword + "&clientApplication=" + clientApp + "&cp=2"))
|
||||||
return "Can't send (error code 2)";
|
return "Can't send (error code 2)";
|
||||||
/*
|
/*
|
||||||
if(!send(ClientCfg.ConfigFile.getVar("StartupPage").asString()+"?login="+login+"&password="+password+"&clientApplication="+clientApp))
|
if(!send(ClientCfg.ConfigFile.getVar("StartupPage").asString()+"?login="+login+"&password="+password+"&clientApplication="+clientApp))
|
||||||
|
@ -2934,7 +2938,8 @@ string checkLogin(const string &login, const string &password, const string &cli
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
string selectShard(uint32 shardId, string &cookie, string &addr)
|
string selectShard(uint32 shardId, string &cookie, string &addr)
|
||||||
{
|
{
|
||||||
cookie = addr = "";
|
cookie.clear();
|
||||||
|
addr.clear();
|
||||||
|
|
||||||
if(!HttpClient.connectToLogin()) return "Can't connect (error code 7)";
|
if(!HttpClient.connectToLogin()) return "Can't connect (error code 7)";
|
||||||
|
|
||||||
|
@ -2942,9 +2947,12 @@ string selectShard(uint32 shardId, string &cookie, string &addr)
|
||||||
if(LoginPassword.empty()) return "Empty Password (error code 9)";
|
if(LoginPassword.empty()) return "Empty Password (error code 9)";
|
||||||
if(ClientApp.empty()) return "Empty Client Application (error code 10)";
|
if(ClientApp.empty()) return "Empty Client Application (error code 10)";
|
||||||
|
|
||||||
// send login + crypted password + client app and cp=1 (as crypted password)
|
// send login + crypted password + client app and cp=2 (as crypted password)
|
||||||
std::string cryptedPassword = CCrypt::crypt(LoginPassword, Salt);
|
std::string cryptedPassword = CCrypt::crypt(LoginPassword, Salt);
|
||||||
if(!HttpClient.sendGet(ClientCfg.ConfigFile.getVar("StartupPage").asString()+"?cmd=login&shardid="+toString(shardId)+"&login="+LoginLogin+"&password="+cryptedPassword+"&clientApplication="+ClientApp+"&cp=1"))
|
|
||||||
|
std::string url = ClientCfg.ConfigFile.getVar("StartupHost").asString() + ClientCfg.ConfigFile.getVar("StartupPage").asString();
|
||||||
|
|
||||||
|
if(!HttpClient.sendGet(url + "?cmd=login&shardid=" + toString(shardId) + "&login=" + LoginLogin + "&password=" + cryptedPassword + "&clientApplication=" + ClientApp + "&cp=2"))
|
||||||
return "Can't send (error code 11)";
|
return "Can't send (error code 11)";
|
||||||
|
|
||||||
string res;
|
string res;
|
||||||
|
|
|
@ -1040,6 +1040,13 @@ void CPatchManager::executeBatchFile()
|
||||||
arguments.push_back(startupPath);
|
arguments.push_back(startupPath);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// log parameters passed to Ryzom client
|
||||||
|
nlinfo("Restarting Ryzom...");
|
||||||
|
nlinfo("RyzomFilename = %s", RyzomFilename.c_str());
|
||||||
|
nlinfo("ClientPatchPath = %s", ClientPatchPath.c_str());
|
||||||
|
nlinfo("ClientRootPath = %s", ClientRootPath.c_str());
|
||||||
|
nlinfo("StartupPath = %s", startupPath.c_str());
|
||||||
|
|
||||||
batchFilename += UpdateBatchFilename;
|
batchFilename += UpdateBatchFilename;
|
||||||
|
|
||||||
// make script executable
|
// make script executable
|
||||||
|
|
|
@ -98,52 +98,81 @@ bool CHttpClient::send(const std::string& buffer, bool verbose)
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CHttpClient::sendRequest(const std::string& methodWB, const std::string &url, const std::string &cookieName, const std::string &cookieValue, const std::string& postParams, bool verbose)
|
bool CHttpClient::sendRequest(const std::string& methodWB, const std::string &url, const std::string &cookieName, const std::string &cookieValue, const std::string& postParams, bool verbose)
|
||||||
{
|
{
|
||||||
// Remove the host from the URL
|
std::string path, host;
|
||||||
string path;
|
|
||||||
|
// Remove the protocol from the URL
|
||||||
if (url.substr(0, 7) == "http://")
|
if (url.substr(0, 7) == "http://")
|
||||||
path = url.substr(7);
|
path = url.substr(7);
|
||||||
else
|
else
|
||||||
path = url;
|
path = url;
|
||||||
path = path.substr(path.find( "/" ));
|
|
||||||
|
std::string::size_type pos = path.find("/");
|
||||||
|
|
||||||
|
// Remove the host from the URL
|
||||||
|
if (pos != std::string::npos)
|
||||||
|
{
|
||||||
|
host = path.substr(0, pos);
|
||||||
|
path = path.substr(pos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
host = path;
|
||||||
|
path.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
// build HTTP request
|
||||||
|
std::string request;
|
||||||
|
request += methodWB + " " + path + " HTTP/1.1\r\n";
|
||||||
|
request += "Host: " + host + "\r\n";
|
||||||
|
|
||||||
// Send
|
// Send
|
||||||
if (cookieName.empty() && postParams.empty())
|
if (cookieName.empty() && postParams.empty())
|
||||||
{
|
{
|
||||||
return send(methodWB + path + "\r\n", verbose);
|
request += "\r\n";
|
||||||
|
|
||||||
|
return send(request, verbose);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string cookieStr, postStr;
|
|
||||||
if (!cookieName.empty())
|
if (!cookieName.empty())
|
||||||
cookieStr = "Cookie: " + cookieName + "=" + cookieValue + "\r\n";
|
request += "Cookie: " + cookieName + "=" + cookieValue + "\r\n";
|
||||||
|
|
||||||
if (!postParams.empty())
|
if (!postParams.empty())
|
||||||
postStr = "Content-Type: application/x-www-form-urlencoded\r\nContent-Length: " + toString(postParams.size()) + "\r\n\r\n" + postParams;
|
{
|
||||||
return send(methodWB + path + " HTTP/1.0\r\n" + cookieStr + postStr + "\r\n", verbose);
|
request += "Content-Type: application/x-www-form-urlencoded\r\n";
|
||||||
|
request += "Content-Length: " + toString(postParams.size()) + "\r\n";
|
||||||
|
request += "\r\n";
|
||||||
|
request += postParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
request += "\r\n";
|
||||||
|
|
||||||
|
return send(request, verbose);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CHttpClient::sendGet(const string &url, const string& params, bool verbose)
|
bool CHttpClient::sendGet(const string &url, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("GET ", url + (params.empty() ? "" : ("?" + params)), string(), string(), string(), verbose);
|
return sendRequest("GET", url + (params.empty() ? "" : ("?" + params)), string(), string(), string(), verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CHttpClient::sendGetWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
bool CHttpClient::sendGetWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("GET ", url + (params.empty() ? "" : ("?" + params)), name, value, string(), verbose);
|
return sendRequest("GET", url + (params.empty() ? "" : ("?" + params)), name, value, string(), verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CHttpClient::sendPost(const string &url, const string& params, bool verbose)
|
bool CHttpClient::sendPost(const string &url, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("POST ", url, string(), string(), params, verbose);
|
return sendRequest("POST", url, string(), string(), params, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CHttpClient::sendPostWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
bool CHttpClient::sendPostWithCookie(const string &url, const string &name, const string &value, const string& params, bool verbose)
|
||||||
{
|
{
|
||||||
return sendRequest("POST ", url, name, value, params, verbose);
|
return sendRequest("POST", url, name, value, params, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
@ -152,7 +181,7 @@ bool CHttpClient::receive(string &res, bool verbose)
|
||||||
nlassert(_Sock.connected());
|
nlassert(_Sock.connected());
|
||||||
|
|
||||||
uint32 size;
|
uint32 size;
|
||||||
res = "";
|
res.clear();
|
||||||
|
|
||||||
uint8 buf[1024];
|
uint8 buf[1024];
|
||||||
|
|
||||||
|
@ -164,21 +193,31 @@ bool CHttpClient::receive(string &res, bool verbose)
|
||||||
|
|
||||||
if (_Sock.receive((uint8*)buf, size, false) == CSock::Ok)
|
if (_Sock.receive((uint8*)buf, size, false) == CSock::Ok)
|
||||||
{
|
{
|
||||||
if(verbose) nlinfo("Received OK %d bytes", size);
|
if (verbose) nlinfo("Received OK %u bytes", size);
|
||||||
buf[1023] = '\0';
|
buf[1023] = '\0';
|
||||||
res += (char*)buf;
|
res += (char*)buf;
|
||||||
//nlinfo("block received '%s'", buf);
|
//nlinfo("block received '%s'", buf);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(verbose) nlinfo("Received CLOSE %d bytes", size);
|
if (verbose) nlinfo("Received CLOSE %u bytes", size);
|
||||||
buf[size] = '\0';
|
buf[size] = '\0';
|
||||||
res += (char*)buf;
|
res += (char*)buf;
|
||||||
//nlwarning ("server connection closed");
|
//nlwarning ("server connection closed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//nlinfo("all received '%s'", res.c_str());
|
//nlinfo("all received '%s'", res.c_str());
|
||||||
|
|
||||||
|
// only keep content (delimited by two \r\n) and discard server headers
|
||||||
|
std::string::size_type pos = res.find("\r\n\r\n");
|
||||||
|
|
||||||
|
if (pos != std::string::npos)
|
||||||
|
{
|
||||||
|
res = res.substr(pos + 4);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -488,7 +488,7 @@ void CChatManager::chat( const TDataSetRow& sender, const ucstring& ucstr )
|
||||||
{
|
{
|
||||||
// if( itCl->second->isMuted() )
|
// if( itCl->second->isMuted() )
|
||||||
CEntityId eid = TheDataset.getEntityId(sender);
|
CEntityId eid = TheDataset.getEntityId(sender);
|
||||||
if(_MutedUniverseUsers.find( eid ) != _MutedUniverseUsers.end())
|
if(_MutedUsers.find( eid ) != _MutedUsers.end())
|
||||||
{
|
{
|
||||||
nldebug("IOSCM: chat The player %s:%x is universe muted",
|
nldebug("IOSCM: chat The player %s:%x is universe muted",
|
||||||
TheDataset.getEntityId(sender).toString().c_str(),
|
TheDataset.getEntityId(sender).toString().c_str(),
|
||||||
|
@ -650,7 +650,7 @@ void CChatManager::chat( const TDataSetRow& sender, const ucstring& ucstr )
|
||||||
// If universal channel check if player muted
|
// If universal channel check if player muted
|
||||||
if (session->getChan()->UniversalChannel)
|
if (session->getChan()->UniversalChannel)
|
||||||
{
|
{
|
||||||
if(_MutedUsers.find( eid ) != _MutedUsers.end())
|
if(_MutedUniverseUsers.find( eid ) != _MutedUniverseUsers.end())
|
||||||
{
|
{
|
||||||
nldebug("IOSCM: chat The player %s:%x is muted",
|
nldebug("IOSCM: chat The player %s:%x is muted",
|
||||||
TheDataset.getEntityId(sender).toString().c_str(),
|
TheDataset.getEntityId(sender).toString().c_str(),
|
||||||
|
|
|
@ -225,7 +225,7 @@ namespace CHATUNI
|
||||||
{
|
{
|
||||||
// no IOS for the hosting shard !
|
// no IOS for the hosting shard !
|
||||||
cucSender.recvFarTellFail(this, senderCharId, destName, TFailInfo::fi_no_ios_module);
|
cucSender.recvFarTellFail(this, senderCharId, destName, TFailInfo::fi_no_ios_module);
|
||||||
nldebug("sendFatTell : no module proxy for shard %u", hostShardId);
|
nldebug("sendFatTell : no module proxy for shard %u", hostShardId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ nldebug("sendFatTell : no module proxy for shard %u", hostShardId);
|
||||||
{
|
{
|
||||||
// no character synchronizer to retrieve sender name !
|
// no character synchronizer to retrieve sender name !
|
||||||
cucSender.recvFarTellFail(this, senderCharId, destName, TFailInfo::fi_no_char_sync);
|
cucSender.recvFarTellFail(this, senderCharId, destName, TFailInfo::fi_no_char_sync);
|
||||||
nldebug("sendFarTell : can't finc character sync singleton");
|
nldebug("sendFarTell : can't finc character sync singleton");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ nldebug("sendFarTell : can't finc character sync singleton");
|
||||||
{
|
{
|
||||||
// no character synchronizer to retrieve sender name !
|
// no character synchronizer to retrieve sender name !
|
||||||
cucSender.recvFarTellFail(this, senderCharId, destName, TFailInfo::fi_sender_char_unknown);
|
cucSender.recvFarTellFail(this, senderCharId, destName, TFailInfo::fi_sender_char_unknown);
|
||||||
nldebug("sendFarTell : can't get character name from sender char id %s", senderCharId.toString().c_str());
|
nldebug("sendFarTell : can't get character name from sender char id %s", senderCharId.toString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -336,36 +336,31 @@ class Users{
|
||||||
public static function createPermissions($pvalues) {
|
public static function createPermissions($pvalues) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$values = array('username' => $pvalues[0]);
|
// bind to the shard database (guess so :p)
|
||||||
$dbs = new DBLayer("shard");
|
$dbs = new DBLayer("shard");
|
||||||
$sth = $dbs->selectWithParameter("UId", "user", $values, "Login= :username");
|
|
||||||
$result = $sth->fetchAll();
|
|
||||||
$dbl = new DBLayer("lib");
|
|
||||||
|
|
||||||
|
// retrieve the user UId
|
||||||
|
$values = array('username' => $pvalues[0]);
|
||||||
|
$statement = $dbs->selectWithParameter("UId", "user", $values, "Login= :username");
|
||||||
|
$result = $statement->fetchAll();
|
||||||
$UId = $result['0']['UId'];
|
$UId = $result['0']['UId'];
|
||||||
|
|
||||||
$statement = $dbl->execute("SELECT * FROM `settings` WHERE `Setting` = :setting", Array('setting' => 'Domain_Auto_Add'));
|
// retrieve the default access privileges (don't understand what exactly is done)
|
||||||
$json = $statement->fetch();
|
$dbl = new DBLayer("lib");
|
||||||
$json = json_decode($json['Value'],true);
|
$statement = $dbl->execute("SELECT Value FROM `settings` WHERE `Setting` = :setting", Array('setting' => 'Domain_Auto_Add'));
|
||||||
|
//$statement = $dbl->execute("SELECT * FROM `settings` WHERE `Setting` = :setting", Array('setting' => 'Domain_Auto_Add'));
|
||||||
|
$json = $statement->fetch();
|
||||||
|
$accessPriv = $json['Value'];
|
||||||
|
//$accessPriv = json_decode($json['Value'],true);
|
||||||
|
|
||||||
$db = new DBLayer( 'shard' );
|
// get all shardIds and domain_ids
|
||||||
|
$statement = $dbs -> executeWithoutParams( "SELECT ShardId, domain_id FROM shard" );
|
||||||
|
$shardIds = $statement -> fetchAll();
|
||||||
|
|
||||||
// get all domains
|
foreach($shardIds as $shardId) { // add default access privileges to the user for each shard
|
||||||
$statement = $db -> executeWithoutParams( "SELECT * FROM domain" );
|
$ins_values = array('UId' => $UId, 'DomainId' => $shardId['domain_id'], 'ShardId' => $shardId['ShardId'], 'AccessPrivilege' => $accessPriv);
|
||||||
$rows = $statement -> fetchAll();
|
$dbs->insert("permission", $ins_values);
|
||||||
|
}
|
||||||
//error_log(print_r($rows,true));
|
|
||||||
//error_log(print_r($result,true));
|
|
||||||
//error_log(print_r($json,true));
|
|
||||||
if ($json) foreach ($json as $key => $value) {
|
|
||||||
//error_log(print_r($key,true));
|
|
||||||
//error_log(print_r($value,true));
|
|
||||||
|
|
||||||
$ins_values = array('UId' => $UId, 'DomainId' => $key, 'AccessPrivilege' => $value['1']);
|
|
||||||
error_log(print_r($ins_values,true));
|
|
||||||
$dbs = new DBLayer("shard");
|
|
||||||
$dbs->insert("permission", $ins_values);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (PDOException $e) {
|
catch (PDOException $e) {
|
||||||
//oh noooz, the shard is offline! Put it in query queue at ams_lib db!
|
//oh noooz, the shard is offline! Put it in query queue at ams_lib db!
|
||||||
|
|
|
@ -156,7 +156,7 @@ function domain_management_hook_return_global()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function api_key_management_hook_activate()
|
function domain_management_hook_activate()
|
||||||
{
|
{
|
||||||
$dbl = new DBLayer( "lib" );
|
$dbl = new DBLayer( "lib" );
|
||||||
$sql = "INSERT INTO `settings` (Setting)
|
$sql = "INSERT INTO `settings` (Setting)
|
||||||
|
|
Loading…
Reference in a new issue