Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b40ad445b | ||
|
|
8f3e4006e3 | ||
|
|
20252a02e0 |
+5
-1
@@ -18,4 +18,8 @@ uics/
|
|||||||
make.sh
|
make.sh
|
||||||
gitpush_serverstuff_stable
|
gitpush_serverstuff_stable
|
||||||
pokerth_server
|
pokerth_server
|
||||||
.vscode/
|
.vscode
|
||||||
|
.qmake.stash
|
||||||
|
pokerth.ap*
|
||||||
|
*.DS_STORE
|
||||||
|
.gitignore.save
|
||||||
|
|||||||
@@ -1,36 +1 @@
|
|||||||
Requirements
|
see https://github.com/pokerth/pokerth/wiki/Building-PokerTH
|
||||||
============
|
|
||||||
|
|
||||||
To compile PokerTH you need following libs:
|
|
||||||
|
|
||||||
Linux:
|
|
||||||
- Qt version >= 4.4.3, 4.8.x recommended --> http://qtsoftware.com/
|
|
||||||
- zlib version >= 1.2.3 --> http://www.zlib.net/
|
|
||||||
- libcurl version >= 7.16 --> http://curl.haxx.se/
|
|
||||||
- libgcrypt (e.g. version 1.4.6) --> http://www.gnu.org/software/libgcrypt/
|
|
||||||
- libgsasl version >= 1.4 --> http://www.gnu.org/software/gsasl/
|
|
||||||
- libboost_thread, libboost_filesystem, libboost_datetime, libboost_program_options,
|
|
||||||
libboost_iostreams, libboost_asio, libboost_regex, libboost_random, libboost_uuid
|
|
||||||
(version >= 1.49, latest always recommended) --> http://www.boost.org/
|
|
||||||
- libSDL_mixer, libSDL --> http://www.libsdl.org/
|
|
||||||
- libSQLite3 --> http://sqlite.org/
|
|
||||||
- libtinyxml > 2.0 --> http://www.sourceforge.net/projects/tinyxml
|
|
||||||
- protoc >= 2.3.0 (during build), libprotobuf >= 2.3.0 -> https://github.com/google/protobuf
|
|
||||||
- For the server: libircclient 1.3 --> http://www.sourceforge.net/projects/libircclient/
|
|
||||||
|
|
||||||
Windows:
|
|
||||||
see docs/build_mingw_windows.txt
|
|
||||||
|
|
||||||
|
|
||||||
Basic Installation
|
|
||||||
==================
|
|
||||||
|
|
||||||
Linux:
|
|
||||||
|
|
||||||
1. Type "cd path/to/the/sources". Then do for example "/usr/qt/4/bin/qmake pokerth.pro" to configure the makefile for your system.
|
|
||||||
Pay attention that the QTDIR environment variable points to Qt4 not Qt3. For example QTDIR=/usr/qt/4.
|
|
||||||
You can set this variable typing: "export QTDIR=/usr/qt/4"
|
|
||||||
|
|
||||||
2. Type "make" to compile the package.
|
|
||||||
|
|
||||||
3. Become root (typing "su") and type "make install" to install the program binary.
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
# QMake pro-file for the PokerTH dedicated server
|
|
||||||
|
|
||||||
isEmpty( PREFIX ){
|
|
||||||
PREFIX =/usr
|
|
||||||
}
|
|
||||||
|
|
||||||
TEMPLATE = app
|
|
||||||
CODECFORSRC = UTF-8
|
|
||||||
|
|
||||||
CONFIG += thread console embed_manifest_exe exceptions rtti stl warn_on
|
|
||||||
|
|
||||||
UI_DIR = uics
|
|
||||||
TARGET = bin/dealer_random_test
|
|
||||||
MOC_DIR = mocs
|
|
||||||
OBJECTS_DIR = obj
|
|
||||||
DEFINES += PREFIX=\"$${PREFIX}\"
|
|
||||||
QT -= core gui
|
|
||||||
#PRECOMPILED_HEADER = src/pch_lib.h
|
|
||||||
|
|
||||||
INCLUDEPATH += . \
|
|
||||||
src
|
|
||||||
DEPENDPATH += . \
|
|
||||||
src
|
|
||||||
|
|
||||||
# Input
|
|
||||||
SOURCES += \
|
|
||||||
src/dealer_random_test.cpp
|
|
||||||
|
|
||||||
unix : !mac {
|
|
||||||
|
|
||||||
##### My release static build options
|
|
||||||
#QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections
|
|
||||||
#QMAKE_LFLAGS += -Wl,--gc-sections
|
|
||||||
|
|
||||||
QMAKE_LIBDIR += lib $${PREFIX}/lib /opt/gsasl/lib
|
|
||||||
INCLUDEPATH += $${PREFIX}/include
|
|
||||||
LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system($$QMAKE_QMAKE -query QT_INSTALL_LIBS)
|
|
||||||
BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt
|
|
||||||
BOOST_SYS = boost_system boost_system-mt
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# searching in $PREFIX/lib, $PREFIX/lib64 and $$system($$QMAKE_QMAKE -query QT_INSTALL_LIBS)
|
|
||||||
# to override the default '/usr' pass PREFIX
|
|
||||||
# variable to qmake.
|
|
||||||
#
|
|
||||||
for(dir, LIB_DIRS){
|
|
||||||
exists($$dir){
|
|
||||||
for(lib, BOOST_PROGRAM_OPTIONS):exists($${dir}/lib$${lib}.so*) {
|
|
||||||
message("Found $$lib")
|
|
||||||
BOOST_PROGRAM_OPTIONS = -l$$lib
|
|
||||||
}
|
|
||||||
for(lib, BOOST_PROGRAM_OPTIONS):exists($${dir}/lib$${lib}.a) {
|
|
||||||
message("Found $$lib")
|
|
||||||
BOOST_PROGRAM_OPTIONS = -l$$lib
|
|
||||||
}
|
|
||||||
for(lib, BOOST_SYS):exists($${dir}/lib$${lib}.so*) {
|
|
||||||
message("Found $$lib")
|
|
||||||
BOOST_SYS = -l$$lib
|
|
||||||
}
|
|
||||||
for(lib, BOOST_SYS):exists($${dir}/lib$${lib}.a) {
|
|
||||||
message("Found $$lib")
|
|
||||||
BOOST_SYS = -l$$lib
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BOOST_LIBS = $$BOOST_PROGRAM_OPTIONS $$BOOST_SYS
|
|
||||||
!count(BOOST_LIBS, 2){
|
|
||||||
error("Unable to find boost libraries in PREFIX=$${PREFIX}")
|
|
||||||
}
|
|
||||||
|
|
||||||
UNAME = $$system(uname -s)
|
|
||||||
BSD = $$find(UNAME, "BSD")
|
|
||||||
kFreeBSD = $$find(UNAME, "kFreeBSD")
|
|
||||||
|
|
||||||
LIBS += $$BOOST_LIBS
|
|
||||||
LIBS += -lprotobuf -lgsasl -lgcrypt -lidn -lboost_thread -lboost_system -lboost_random
|
|
||||||
|
|
||||||
#### INSTALL ####
|
|
||||||
|
|
||||||
binary.path += $${PREFIX}/bin/
|
|
||||||
binary.files += dealer_random_test
|
|
||||||
|
|
||||||
INSTALLS += binary
|
|
||||||
}
|
|
||||||
|
|
||||||
+63
-5
@@ -9,12 +9,13 @@
|
|||||||
# of binary-size if you leave Qt out.
|
# of binary-size if you leave Qt out.
|
||||||
# (see http://trolltech.com/developer/downloads/qt/mac)
|
# (see http://trolltech.com/developer/downloads/qt/mac)
|
||||||
|
|
||||||
QT_FW_PATH="/Users/$USER/Qt/5.9/clang_64/lib"
|
QT_FW_PATH="/usr/local/Cellar/qt/5.13.0/lib"
|
||||||
QT_PLUGIN_PATH="/Users/$USER/Qt/5.9/clang_64/plugins"
|
QT_PLUGIN_PATH="/usr/local/Cellar/qt/5.13.0/plugins"
|
||||||
SDL_FW_PATH="/Library/Frameworks"
|
SDL_FW_PATH="/Library/Frameworks"
|
||||||
APPLICATION="./pokerth.app"
|
APPLICATION="./pokerth.app"
|
||||||
BINARY="$APPLICATION/Contents/MacOs/pokerth"
|
BINARY="$APPLICATION/Contents/MacOs/pokerth"
|
||||||
RESOURCES="$APPLICATION/Contents/Resources"
|
RESOURCES="$APPLICATION/Contents/Resources"
|
||||||
|
DYLIB_PATH="$APPLICATION/Contents/MacOs/dylibs"
|
||||||
|
|
||||||
# strip binary
|
# strip binary
|
||||||
strip $BINARY
|
strip $BINARY
|
||||||
@@ -23,18 +24,56 @@ cp -R ./data $RESOURCES/
|
|||||||
find $RESOURCES/data -name ".svn" | xargs rm -Rf
|
find $RESOURCES/data -name ".svn" | xargs rm -Rf
|
||||||
# create framework-path
|
# create framework-path
|
||||||
BINARY_FW_PATH="$APPLICATION/Contents/Frameworks"
|
BINARY_FW_PATH="$APPLICATION/Contents/Frameworks"
|
||||||
mkdir $BINARY_FW_PATH
|
|
||||||
BINARY_PLUGIN_PATH="$APPLICATION/Contents/plugins"
|
BINARY_PLUGIN_PATH="$APPLICATION/Contents/plugins"
|
||||||
|
|
||||||
|
rm -rf $BINARY_FW_PATH
|
||||||
|
rm -rf $BINARY_PLUGIN_PATH
|
||||||
|
rm -rf $DYLIB_PATH
|
||||||
|
|
||||||
|
mkdir $BINARY_FW_PATH
|
||||||
mkdir -p $BINARY_PLUGIN_PATH/imageformats
|
mkdir -p $BINARY_PLUGIN_PATH/imageformats
|
||||||
mkdir -p $BINARY_PLUGIN_PATH/sqldrivers
|
mkdir -p $BINARY_PLUGIN_PATH/sqldrivers
|
||||||
mkdir -p $BINARY_PLUGIN_PATH/platforms
|
mkdir -p $BINARY_PLUGIN_PATH/platforms
|
||||||
|
mkdir -p $DYLIB_PATH
|
||||||
|
|
||||||
# integrate SDL-frameworks into binary
|
# integrate SDL-frameworks into binary
|
||||||
cp -R $SDL_FW_PATH/SDL.framework $BINARY_FW_PATH
|
cp -R $SDL_FW_PATH/SDL.framework $BINARY_FW_PATH
|
||||||
cp -R $SDL_FW_PATH/SDL_mixer.framework $BINARY_FW_PATH
|
cp -R $SDL_FW_PATH/SDL_mixer.framework $BINARY_FW_PATH
|
||||||
|
|
||||||
# integrate Qt-frameworks into binary
|
# integrate dylibs
|
||||||
|
cp /usr/lib/libcurl.4.dylib $DYLIB_PATH/.
|
||||||
|
cp /usr/local/Cellar/openssl/1.0.2s/lib/libcrypto.1.0.0.dylib $DYLIB_PATH/.
|
||||||
|
cp /usr/local/opt/openssl/lib/libssl.1.0.0.dylib $DYLIB_PATH/.
|
||||||
|
cp /usr/lib/libsqlite3.dylib $DYLIB_PATH/.
|
||||||
|
cp /usr/local/opt/tinyxml/lib/libtinyxml.dylib $DYLIB_PATH/.
|
||||||
|
cp /usr/local/opt/protobuf/lib/libprotobuf.18.dylib $DYLIB_PATH/.
|
||||||
|
cp /usr/lib/libz.1.dylib $DYLIB_PATH/.
|
||||||
|
|
||||||
|
chmod -R +w $DYLIB_PATH;
|
||||||
|
|
||||||
|
LIBCURL_LINK=$(otool -L $BINARY | grep libcurl | cut -d"(" -f1 | cut -f2)
|
||||||
|
LIBCRYPTO_LINK=$(otool -L $BINARY | grep libcrypto | cut -d"(" -f1 | cut -f2)
|
||||||
|
LIBSSL_LINK=$(otool -L $BINARY | grep libssl | cut -d"(" -f1 | cut -f2)
|
||||||
|
LIBTINYXML_LINK=$(otool -L $BINARY | grep libtinyxml | cut -d"(" -f1 | cut -f2)
|
||||||
|
LIBSQLITE_LINK=$(otool -L $BINARY | grep libsqlite | cut -d"(" -f1 | cut -f2)
|
||||||
|
LIBPROTOBUF_LINK=$(otool -L $BINARY | grep libprotobuf | cut -d"(" -f1 | cut -f2)
|
||||||
|
LIBZ_LINK=$(otool -L $BINARY | grep libz | cut -d"(" -f1 | cut -f2)
|
||||||
|
|
||||||
|
install_name_tool -change $LIBCURL_LINK @loader_path/dylibs/libcurl.4.dylib $BINARY
|
||||||
|
install_name_tool -change $LIBCRYPTO_LINK @loader_path/dylibs/libcrypto.1.0.0.dylib $BINARY
|
||||||
|
install_name_tool -change $LIBSSL_LINK @loader_path/dylibs/libssl.1.0.0.dylib $BINARY
|
||||||
|
install_name_tool -change $LIBTINYXML_LINK @loader_path/dylibs/libtinyxml.dylib $BINARY
|
||||||
|
install_name_tool -change $LIBSQLITE_LINK @loader_path/dylibs/libsqlite3.dylib $BINARY
|
||||||
|
install_name_tool -change $LIBPROTOBUF_LINK @loader_path/dylibs/libprotobuf.18.dylib $BINARY
|
||||||
|
install_name_tool -change $LIBSQLITE_LINK @loader_path/dylibs/libsqlite3.dylib $BINARY
|
||||||
|
install_name_tool -change $LIBZ_LINK @loader_path/dylibs/libz.1.dylib $BINARY
|
||||||
|
|
||||||
|
LIBCRYPTO_LINK=$(otool -L $DYLIB_PATH/libssl.1.0.0.dylib | grep libcrypto | cut -d"(" -f1 | cut -f2)
|
||||||
|
LIBSSL_LINK=$(otool -L $DYLIB_PATH/libssl.1.0.0.dylib | grep libssl | cut -d"(" -f1 | cut -f2)
|
||||||
|
install_name_tool -change $LIBCRYPTO_LINK @executable_path/dylibs/libcrypto.1.0.0.dylib $DYLIB_PATH/libssl.1.0.0.dylib
|
||||||
|
install_name_tool -change /usr/local/opt/openssl/lib/libssl.1.0.0.dylib @executable_path/dylibs/libssl.1.0.0.dylib $DYLIB_PATH/libssl.1.0.0.dylib
|
||||||
|
|
||||||
|
# integrate Qt-frameworks into binary
|
||||||
if [ "$1" != "--without-qt" ] ; then
|
if [ "$1" != "--without-qt" ] ; then
|
||||||
cp $QT_PLUGIN_PATH/imageformats/libqgif.dylib $BINARY_PLUGIN_PATH/imageformats
|
cp $QT_PLUGIN_PATH/imageformats/libqgif.dylib $BINARY_PLUGIN_PATH/imageformats
|
||||||
cp $QT_PLUGIN_PATH/imageformats/libqjpeg.dylib $BINARY_PLUGIN_PATH/imageformats
|
cp $QT_PLUGIN_PATH/imageformats/libqjpeg.dylib $BINARY_PLUGIN_PATH/imageformats
|
||||||
@@ -46,6 +85,8 @@ if [ "$1" != "--without-qt" ] ; then
|
|||||||
cp -R $QT_FW_PATH/QtSql.framework $BINARY_FW_PATH
|
cp -R $QT_FW_PATH/QtSql.framework $BINARY_FW_PATH
|
||||||
cp -R $QT_FW_PATH/QtNetwork.framework $BINARY_FW_PATH
|
cp -R $QT_FW_PATH/QtNetwork.framework $BINARY_FW_PATH
|
||||||
cp -R $QT_FW_PATH/QtPrintSupport.framework $BINARY_FW_PATH
|
cp -R $QT_FW_PATH/QtPrintSupport.framework $BINARY_FW_PATH
|
||||||
|
cp -R /usr/local/Cellar/qt/5.13.0/lib/QtDBus.framework $BINARY_FW_PATH
|
||||||
|
chmod -R 775 $BINARY_FW_PATH
|
||||||
# remove debug versions
|
# remove debug versions
|
||||||
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug
|
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug
|
||||||
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.prl
|
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.prl
|
||||||
@@ -65,6 +106,9 @@ if [ "$1" != "--without-qt" ] ; then
|
|||||||
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug
|
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug
|
||||||
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug.prl
|
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug.prl
|
||||||
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport_debug
|
rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport_debug
|
||||||
|
rm -f $APPLICATION/Contents/Frameworks/QtDBus.framework/QtDBus_debug
|
||||||
|
rm -f $APPLICATION/Contents/Frameworks/QtDBus.framework/QtDBus_debug.prl
|
||||||
|
rm -f $APPLICATION/Contents/Frameworks/QtDBus.framework/Versions/5/QtDBus_debug
|
||||||
|
|
||||||
# redirect binary to use integrated frameworks
|
# redirect binary to use integrated frameworks
|
||||||
QTCORE="QtCore.framework/Versions/5/QtCore"
|
QTCORE="QtCore.framework/Versions/5/QtCore"
|
||||||
@@ -73,18 +117,20 @@ if [ "$1" != "--without-qt" ] ; then
|
|||||||
QTSQL="QtSql.framework/Versions/5/QtSql"
|
QTSQL="QtSql.framework/Versions/5/QtSql"
|
||||||
QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork"
|
QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork"
|
||||||
QTPRINT="QtPrintSupport.framework/Versions/5/QtPrintSupport"
|
QTPRINT="QtPrintSupport.framework/Versions/5/QtPrintSupport"
|
||||||
|
QTDBUS="QtDBus.framework/Versions/5/QtDBus"
|
||||||
install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE
|
install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE
|
||||||
install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI
|
install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI
|
||||||
install_name_tool -id @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTWIDGETS
|
install_name_tool -id @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTWIDGETS
|
||||||
install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTSQL
|
install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTSQL
|
||||||
install_name_tool -id @executable_path/../Frameworks/$QTNETWORK $BINARY_FW_PATH/$QTNETWORK
|
install_name_tool -id @executable_path/../Frameworks/$QTNETWORK $BINARY_FW_PATH/$QTNETWORK
|
||||||
install_name_tool -id @executable_path/../Frameworks/$QTPRINT $BINARY_FW_PATH/$QTPRINT
|
install_name_tool -id @executable_path/../Frameworks/$QTPRINT $BINARY_FW_PATH/$QTPRINT
|
||||||
|
install_name_tool -id @executable_path/../Frameworks/$QDBUS $BINARY_FW_PATH/$QTDBUS
|
||||||
QTCORE_LINK=$(otool -L $BINARY | grep QtCore | cut -d"(" -f1 | cut -f2)
|
QTCORE_LINK=$(otool -L $BINARY | grep QtCore | cut -d"(" -f1 | cut -f2)
|
||||||
QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2)
|
QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2)
|
||||||
QTWIDGETS_LINK=$(otool -L $BINARY | grep QtWidgets | cut -d"(" -f1 | cut -f2)
|
QTWIDGETS_LINK=$(otool -L $BINARY | grep QtWidgets | cut -d"(" -f1 | cut -f2)
|
||||||
QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2)
|
QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2)
|
||||||
QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2)
|
QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2)
|
||||||
QTPRINT_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtPrintSupport | cut -d"(" -f1 | cut -f2)
|
|
||||||
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY
|
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY
|
||||||
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY
|
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY
|
||||||
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY
|
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY
|
||||||
@@ -98,10 +144,22 @@ if [ "$1" != "--without-qt" ] ; then
|
|||||||
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib
|
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib
|
||||||
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib
|
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib
|
||||||
install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib
|
install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib
|
||||||
|
|
||||||
|
QTDBUS_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtDBus | cut -d"(" -f1 | cut -f2)
|
||||||
|
QTPRINT_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtPrintSupport | cut -d"(" -f1 | cut -f2)
|
||||||
|
QTZ_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep libz | cut -d"(" -f1 | cut -f2)
|
||||||
|
QTCORE_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtCore | cut -d"(" -f1 | cut -f2)
|
||||||
|
QTGUI_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtGui | cut -d"(" -f1 | cut -f2)
|
||||||
|
QTWIDGETS_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtWidgets | cut -d"(" -f1 | cut -f2)
|
||||||
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
||||||
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
||||||
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
||||||
install_name_tool -change $QTPRINT_LINK @executable_path/../Frameworks/$QTPRINT $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
install_name_tool -change $QTPRINT_LINK @executable_path/../Frameworks/$QTPRINT $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
||||||
|
install_name_tool -change $QTDBUS_LINK @executable_path/../Frameworks/$QTDBUS $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
||||||
|
install_name_tool -change $QTZ_LINK @loader_path/dylibs/libz.1.dylib $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib
|
||||||
|
|
||||||
|
QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTDBUS | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2)
|
||||||
|
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTDBUS
|
||||||
|
|
||||||
QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTGUI | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2)
|
QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTGUI | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2)
|
||||||
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTGUI
|
install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTGUI
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ mac{
|
|||||||
CONFIG += x86_64
|
CONFIG += x86_64
|
||||||
CONFIG -= x86
|
CONFIG -= x86
|
||||||
CONFIG -= ppc
|
CONFIG -= ppc
|
||||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||||
|
|
||||||
# for universal-compilation on PPC-Mac uncomment the following line
|
# for universal-compilation on PPC-Mac uncomment the following line
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ HEADERS += src/dbofficial/asyncdbauth.h \
|
|||||||
src/dbofficial/asyncdbavatarblacklist.h \
|
src/dbofficial/asyncdbavatarblacklist.h \
|
||||||
src/dbofficial/asyncdbadminplayers.h \
|
src/dbofficial/asyncdbadminplayers.h \
|
||||||
src/dbofficial/asyncdbblockplayer.h \
|
src/dbofficial/asyncdbblockplayer.h \
|
||||||
src/dbofficial/asyncdbplayerlastgames.h \
|
|
||||||
src/dbofficial/dbidmanager.h
|
src/dbofficial/dbidmanager.h
|
||||||
SOURCES += src/dbofficial/asyncdbauth.cpp \
|
SOURCES += src/dbofficial/asyncdbauth.cpp \
|
||||||
src/dbofficial/asyncdbcreategame.cpp \
|
src/dbofficial/asyncdbcreategame.cpp \
|
||||||
@@ -61,7 +60,6 @@ SOURCES += src/dbofficial/asyncdbauth.cpp \
|
|||||||
src/dbofficial/asyncdbavatarblacklist.cpp \
|
src/dbofficial/asyncdbavatarblacklist.cpp \
|
||||||
src/dbofficial/asyncdbadminplayers.cpp \
|
src/dbofficial/asyncdbadminplayers.cpp \
|
||||||
src/dbofficial/asyncdbblockplayer.cpp \
|
src/dbofficial/asyncdbblockplayer.cpp \
|
||||||
src/dbofficial/asyncdbplayerlastgames.cpp \
|
|
||||||
src/dbofficial/dbidmanager.cpp
|
src/dbofficial/dbidmanager.cpp
|
||||||
win32 {
|
win32 {
|
||||||
DEFINES += _WIN32_WINNT=0x0501
|
DEFINES += _WIN32_WINNT=0x0501
|
||||||
|
|||||||
+6
-5
@@ -576,7 +576,7 @@ mac {
|
|||||||
CONFIG += x86_64
|
CONFIG += x86_64
|
||||||
CONFIG -= x86
|
CONFIG -= x86
|
||||||
CONFIG -= ppc
|
CONFIG -= ppc
|
||||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||||
|
|
||||||
# workaround for problems with boost_filesystem exceptions
|
# workaround for problems with boost_filesystem exceptions
|
||||||
@@ -587,12 +587,13 @@ mac {
|
|||||||
# QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk/
|
# QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk/
|
||||||
LIBPATH += lib
|
LIBPATH += lib
|
||||||
|
|
||||||
|
|
||||||
# QT dynamic linked framework (see also mac_post_make.sh)
|
# QT dynamic linked framework (see also mac_post_make.sh)
|
||||||
LIBS += -F /Library/Frameworks
|
LIBS += -F /Library/Frameworks
|
||||||
LIBS += -framework \
|
# LIBS += -framework \
|
||||||
QtCore
|
# QtCore
|
||||||
LIBS += -framework \
|
# LIBS += -framework \
|
||||||
QtGui
|
# QtGui
|
||||||
LIBS += -framework \
|
LIBS += -framework \
|
||||||
SDL
|
SDL
|
||||||
LIBS += -framework \
|
LIBS += -framework \
|
||||||
|
|||||||
+1
-1
@@ -294,7 +294,7 @@ mac{
|
|||||||
CONFIG += x86_64
|
CONFIG += x86_64
|
||||||
CONFIG -= x86
|
CONFIG -= x86
|
||||||
CONFIG -= ppc
|
CONFIG -= ppc
|
||||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||||
|
|
||||||
# for universal-compilation on PPC-Mac uncomment the following line
|
# for universal-compilation on PPC-Mac uncomment the following line
|
||||||
|
|||||||
@@ -56,7 +56,10 @@ mac {
|
|||||||
CONFIG += x86_64
|
CONFIG += x86_64
|
||||||
CONFIG -= x86
|
CONFIG -= x86
|
||||||
CONFIG -= ppc
|
CONFIG -= ppc
|
||||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||||
|
system(protoc pokerth.proto --cpp_out=src/third_party/protobuf)
|
||||||
|
system(protoc chatcleaner.proto --cpp_out=src/third_party/protobuf)
|
||||||
|
system(protoc pokerth.proto --java_out=tests/src)
|
||||||
|
|
||||||
# for universal-compilation on PPC-Mac uncomment the following line
|
# for universal-compilation on PPC-Mac uncomment the following line
|
||||||
# on Intel-Mac you have to comment this line out or build will fail.
|
# on Intel-Mac you have to comment this line out or build will fail.
|
||||||
|
|||||||
+1
-1
@@ -310,7 +310,7 @@ mac {
|
|||||||
CONFIG += x86_64
|
CONFIG += x86_64
|
||||||
CONFIG -= x86
|
CONFIG -= x86
|
||||||
CONFIG -= ppc
|
CONFIG -= ppc
|
||||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||||
|
|
||||||
# workaround for problems with boost_filesystem exceptions
|
# workaround for problems with boost_filesystem exceptions
|
||||||
|
|||||||
@@ -312,8 +312,6 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly)
|
|||||||
configList.push_back(ConfigInfo("DBServerEncryptionKey", CONFIG_TYPE_STRING, ""));
|
configList.push_back(ConfigInfo("DBServerEncryptionKey", CONFIG_TYPE_STRING, ""));
|
||||||
configList.push_back(ConfigInfo("GameNameBadWordList", CONFIG_TYPE_STRING_LIST, "Regex"));
|
configList.push_back(ConfigInfo("GameNameBadWordList", CONFIG_TYPE_STRING_LIST, "Regex"));
|
||||||
configList.push_back(ConfigInfo("ServerRestrictGuestLogin", CONFIG_TYPE_INT, "0"));
|
configList.push_back(ConfigInfo("ServerRestrictGuestLogin", CONFIG_TYPE_INT, "0"));
|
||||||
configList.push_back(ConfigInfo("ServerLimitRankNum", CONFIG_TYPE_INT, "4"));
|
|
||||||
configList.push_back(ConfigInfo("ServerLimitRankPeriod", CONFIG_TYPE_INT, "60"));
|
|
||||||
|
|
||||||
//fill tempList firstTime
|
//fill tempList firstTime
|
||||||
configBufferList = configList;
|
configBufferList = configList;
|
||||||
|
|||||||
@@ -93,11 +93,6 @@ ServerDBGeneric::SetGamePlayerPlace(unsigned /*requestId*/, DB_id /*playerId*/,
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ServerDBGeneric::SetPlayerLastGames(unsigned /*requestId*/, DB_id /*playerId*/, std::vector<long> /*last_games*/, std::string /*playerIp*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ServerDBGeneric::EndGame(unsigned /*requestId*/)
|
ServerDBGeneric::EndGame(unsigned /*requestId*/)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,7 +35,6 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
typedef unsigned DB_id;
|
typedef unsigned DB_id;
|
||||||
#define DB_ID_INVALID 0
|
#define DB_ID_INVALID 0
|
||||||
@@ -46,8 +45,6 @@ struct DBPlayerData {
|
|||||||
std::string secret;
|
std::string secret;
|
||||||
std::string country;
|
std::string country;
|
||||||
std::string last_login;
|
std::string last_login;
|
||||||
std::string last_games;
|
|
||||||
std::string last_ip;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ public:
|
|||||||
|
|
||||||
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName);
|
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName);
|
||||||
virtual void SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned place);
|
virtual void SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned place);
|
||||||
virtual void SetPlayerLastGames(unsigned requestId, DB_id playerId, std::vector<long> last_games, std::string playerIp);
|
|
||||||
virtual void EndGame(unsigned requestId);
|
virtual void EndGame(unsigned requestId);
|
||||||
|
|
||||||
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, const std::string &avatarType, DB_id *byPlayerId);
|
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, const std::string &avatarType, DB_id *byPlayerId);
|
||||||
|
|||||||
@@ -36,7 +36,6 @@
|
|||||||
#include <db/serverdbcallback.h>
|
#include <db/serverdbcallback.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
typedef std::list<DB_id> db_list;
|
typedef std::list<DB_id> db_list;
|
||||||
|
|
||||||
@@ -58,7 +57,6 @@ public:
|
|||||||
|
|
||||||
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName) = 0;
|
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName) = 0;
|
||||||
virtual void SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned place) = 0;
|
virtual void SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned place) = 0;
|
||||||
virtual void SetPlayerLastGames(unsigned requestId, DB_id playerId, std::vector<long> last_games, std::string playerIp) = 0;
|
|
||||||
virtual void EndGame(unsigned requestId) = 0;
|
virtual void EndGame(unsigned requestId) = 0;
|
||||||
|
|
||||||
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, const std::string &avatarType, DB_id *byPlayerId) = 0;
|
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, const std::string &avatarType, DB_id *byPlayerId) = 0;
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ public:
|
|||||||
|
|
||||||
virtual void AsyncCreateGame(unsigned /*requestId*/, const std::string &/*gameName*/) {}
|
virtual void AsyncCreateGame(unsigned /*requestId*/, const std::string &/*gameName*/) {}
|
||||||
virtual void SetGamePlayerPlace(unsigned /*requestId*/, DB_id /*playerId*/, unsigned /*place*/) {}
|
virtual void SetGamePlayerPlace(unsigned /*requestId*/, DB_id /*playerId*/, unsigned /*place*/) {}
|
||||||
virtual void SetPlayerLastGames(unsigned /*requestId*/, DB_id /*playerId*/, std::vector<long> /*last_games*/, std::string /*playerIp*/) {}
|
|
||||||
virtual void EndGame(unsigned /*requestId*/) {}
|
virtual void EndGame(unsigned /*requestId*/) {}
|
||||||
|
|
||||||
virtual void AsyncReportAvatar(unsigned /*requestId*/, unsigned /*replyId*/, DB_id /*reportedPlayerId*/, const std::string &/*avatarHash*/, const std::string &/*avatarType*/, DB_id * /*byPlayerId*/) {}
|
virtual void AsyncReportAvatar(unsigned /*requestId*/, unsigned /*replyId*/, DB_id /*reportedPlayerId*/, const std::string &/*avatarHash*/, const std::string &/*avatarType*/, DB_id * /*byPlayerId*/) {}
|
||||||
|
|||||||
@@ -52,25 +52,19 @@ AsyncDBAuth::HandleResult(mysqlpp::Query &/*query*/, DBIdManager& /*idManager*/,
|
|||||||
service.post(boost::bind(&ServerDBCallback::PlayerLoginFailed, &cb, GetId()));
|
service.post(boost::bind(&ServerDBCallback::PlayerLoginFailed, &cb, GetId()));
|
||||||
} else {
|
} else {
|
||||||
int blocked = result[0][2];
|
int blocked = result[0][2];
|
||||||
int active = result[0][7];
|
int active = result[0][5];
|
||||||
if ((active != 1) || (blocked != 0)) {
|
if ((active != 1) || (blocked != 0)) {
|
||||||
service.post(boost::bind(&ServerDBCallback::PlayerLoginBlocked, &cb, GetId()));
|
service.post(boost::bind(&ServerDBCallback::PlayerLoginBlocked, &cb, GetId()));
|
||||||
} else {
|
} else {
|
||||||
mysqlpp::String secret(result[0][1]);
|
mysqlpp::String secret(result[0][1]);
|
||||||
mysqlpp::String country(result[0][3]);
|
mysqlpp::String country(result[0][3]);
|
||||||
mysqlpp::String last_login(result[0][4]);
|
mysqlpp::String last_login(result[0][4]);
|
||||||
mysqlpp::String last_games(result[0][5]);
|
|
||||||
mysqlpp::String last_ip(result[0][6]);
|
|
||||||
boost::shared_ptr<DBPlayerData> tmpData(new DBPlayerData);
|
boost::shared_ptr<DBPlayerData> tmpData(new DBPlayerData);
|
||||||
tmpData->id = result[0][0];
|
tmpData->id = result[0][0];
|
||||||
secret.to_string(tmpData->secret);
|
secret.to_string(tmpData->secret);
|
||||||
if (!country.is_null())
|
if (!country.is_null())
|
||||||
country.to_string(tmpData->country);
|
country.to_string(tmpData->country);
|
||||||
last_login.to_string(tmpData->last_login);
|
last_login.to_string(tmpData->last_login);
|
||||||
if (!last_games.is_null())
|
|
||||||
last_games.to_string(tmpData->last_games);
|
|
||||||
if (!last_ip.is_null())
|
|
||||||
last_ip.to_string(tmpData->last_ip);
|
|
||||||
|
|
||||||
service.post(boost::bind(&ServerDBCallback::PlayerLoginSuccess, &cb, GetId(), tmpData));
|
service.post(boost::bind(&ServerDBCallback::PlayerLoginSuccess, &cb, GetId(), tmpData));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* PokerTH - The open source texas holdem engine *
|
|
||||||
* Copyright (C) 2006-2016 Felix Hammer, Florian Thauer, Lothar May *
|
|
||||||
* *
|
|
||||||
* This program is free software: you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU Affero General Public License as *
|
|
||||||
* published by the Free Software Foundation, either version 3 of the *
|
|
||||||
* License, or (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU Affero General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU Affero General Public License *
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* Additional permission under GNU AGPL version 3 section 7 *
|
|
||||||
* *
|
|
||||||
* If you modify this program, or any covered work, by linking or *
|
|
||||||
* combining it with the OpenSSL project's OpenSSL library (or a *
|
|
||||||
* modified version of that library), containing parts covered by the *
|
|
||||||
* terms of the OpenSSL or SSLeay licenses, the authors of PokerTH *
|
|
||||||
* (Felix Hammer, Florian Thauer, Lothar May) grant you additional *
|
|
||||||
* permission to convey the resulting work. *
|
|
||||||
* Corresponding Source for a non-source form of such a combination *
|
|
||||||
* shall include the source code for the parts of OpenSSL used as well *
|
|
||||||
* as that of the covered work. *
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#include <dbofficial/asyncdbplayerlastgames.h>
|
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
AsyncDBPlayerLastGames::AsyncDBPlayerLastGames(unsigned queryId, const string &preparedName, const list<string> ¶ms)
|
|
||||||
: SingleAsyncDBQuery(queryId, preparedName, params)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
AsyncDBPlayerLastGames::~AsyncDBPlayerLastGames()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
AsyncDBPlayerLastGames::HandleResult(mysqlpp::Query &/*query*/, DBIdManager &/*idManager*/, mysqlpp::StoreQueryResult &/*result*/, boost::asio::io_service &service, ServerDBCallback &cb)
|
|
||||||
{
|
|
||||||
// This query does not produce a result.
|
|
||||||
HandleError(service, cb);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
AsyncDBPlayerLastGames::HandleNoResult(mysqlpp::Query &/*query*/, DBIdManager& /*idManager*/, boost::asio::io_service &/*service*/, ServerDBCallback &/*cb*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
AsyncDBPlayerLastGames::HandleError(boost::asio::io_service &service, ServerDBCallback &cb)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* PokerTH - The open source texas holdem engine *
|
|
||||||
* Copyright (C) 2006-2016 Felix Hammer, Florian Thauer, Lothar May *
|
|
||||||
* *
|
|
||||||
* This program is free software: you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU Affero General Public License as *
|
|
||||||
* published by the Free Software Foundation, either version 3 of the *
|
|
||||||
* License, or (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU Affero General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU Affero General Public License *
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* Additional permission under GNU AGPL version 3 section 7 *
|
|
||||||
* *
|
|
||||||
* If you modify this program, or any covered work, by linking or *
|
|
||||||
* combining it with the OpenSSL project's OpenSSL library (or a *
|
|
||||||
* modified version of that library), containing parts covered by the *
|
|
||||||
* terms of the OpenSSL or SSLeay licenses, the authors of PokerTH *
|
|
||||||
* (Felix Hammer, Florian Thauer, Lothar May) grant you additional *
|
|
||||||
* permission to convey the resulting work. *
|
|
||||||
* Corresponding Source for a non-source form of such a combination *
|
|
||||||
* shall include the source code for the parts of OpenSSL used as well *
|
|
||||||
* as that of the covered work. *
|
|
||||||
*****************************************************************************/
|
|
||||||
/* Async database update to block a player. */
|
|
||||||
|
|
||||||
#ifndef _ASYNCDBPLAYERLASTGAMES_H_
|
|
||||||
#define _ASYNCDBPLAYERLASTGAMES_H_
|
|
||||||
|
|
||||||
#include <dbofficial/singleasyncdbquery.h>
|
|
||||||
|
|
||||||
|
|
||||||
class AsyncDBPlayerLastGames : public SingleAsyncDBQuery
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
AsyncDBPlayerLastGames(unsigned queryId, const std::string &preparedName, const std::list<std::string> ¶ms);
|
|
||||||
virtual ~AsyncDBPlayerLastGames();
|
|
||||||
|
|
||||||
virtual void Init(DBIdManager& /*idManager*/) {}
|
|
||||||
|
|
||||||
virtual void HandleResult(mysqlpp::Query &query, DBIdManager& idManager, mysqlpp::StoreQueryResult& result, boost::asio::io_service &service, ServerDBCallback &cb);
|
|
||||||
virtual void HandleNoResult(mysqlpp::Query &query, DBIdManager& idManager, boost::asio::io_service &service, ServerDBCallback &cb);
|
|
||||||
virtual void HandleError(boost::asio::io_service &service, ServerDBCallback &cb);
|
|
||||||
|
|
||||||
virtual bool RequiresResultSet() const
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -42,8 +42,6 @@
|
|||||||
#define DB_TABLE_PLAYER_COL_ACTIVE "active"
|
#define DB_TABLE_PLAYER_COL_ACTIVE "active"
|
||||||
#define DB_TABLE_PLAYER_COL_AVATARHASH "avatar_hash"
|
#define DB_TABLE_PLAYER_COL_AVATARHASH "avatar_hash"
|
||||||
#define DB_TABLE_PLAYER_COL_AVATARTYPE "avatar_mime"
|
#define DB_TABLE_PLAYER_COL_AVATARTYPE "avatar_mime"
|
||||||
#define DB_TABLE_PLAYER_COL_LASTGAMES "last_games"
|
|
||||||
#define DB_TABLE_PLAYER_COL_LASTIP "last_ip"
|
|
||||||
|
|
||||||
#define DB_TABLE_GAME "game"
|
#define DB_TABLE_GAME "game"
|
||||||
#define DB_TABLE_GAME_COL_ID "idgame"
|
#define DB_TABLE_GAME_COL_ID "idgame"
|
||||||
|
|||||||
@@ -41,15 +41,12 @@
|
|||||||
#include <dbofficial/asyncdbreportgame.h>
|
#include <dbofficial/asyncdbreportgame.h>
|
||||||
#include <dbofficial/asyncdbadminplayers.h>
|
#include <dbofficial/asyncdbadminplayers.h>
|
||||||
#include <dbofficial/asyncdbblockplayer.h>
|
#include <dbofficial/asyncdbblockplayer.h>
|
||||||
#include <dbofficial/asyncdbplayerlastgames.h>
|
|
||||||
#include <dbofficial/compositeasyncdbquery.h>
|
#include <dbofficial/compositeasyncdbquery.h>
|
||||||
#include <dbofficial/db_table_defs.h>
|
#include <dbofficial/db_table_defs.h>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <mysql++.h>
|
#include <mysql++.h>
|
||||||
|
|
||||||
#include <core/loghelper.h> // @TODO: remove in productive
|
|
||||||
|
|
||||||
#define QUERY_NICK_PREPARE "nick_template"
|
#define QUERY_NICK_PREPARE "nick_template"
|
||||||
#define QUERY_LOGIN_PREPARE "login_template"
|
#define QUERY_LOGIN_PREPARE "login_template"
|
||||||
#define QUERY_AVATAR_BLACKLIST_PREPARE "avatar_blacklist_template"
|
#define QUERY_AVATAR_BLACKLIST_PREPARE "avatar_blacklist_template"
|
||||||
@@ -61,7 +58,6 @@
|
|||||||
#define QUERY_REPORT_GAME_PREPARE "report_game_template"
|
#define QUERY_REPORT_GAME_PREPARE "report_game_template"
|
||||||
#define QUERY_ADMIN_PLAYER_PREPARE "admin_player_template"
|
#define QUERY_ADMIN_PLAYER_PREPARE "admin_player_template"
|
||||||
#define QUERY_BLOCK_PLAYER_PREPARE "block_player_template"
|
#define QUERY_BLOCK_PLAYER_PREPARE "block_player_template"
|
||||||
#define QUERY_PLAYER_LASTGAMES_PREPARE "player_lastgames_template"
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -234,33 +230,6 @@ ServerDBThread::SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned
|
|||||||
m_semaphore.post();
|
m_semaphore.post();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ServerDBThread::SetPlayerLastGames(unsigned requestId, DB_id playerId, std::vector<long> last_games, std::string playerIp)
|
|
||||||
{
|
|
||||||
LOG_ERROR("ServerDBThread::SetPlayerLastGames() entered.");
|
|
||||||
|
|
||||||
std::ostringstream oss;
|
|
||||||
std::copy(last_games.begin(), last_games.end(), std::ostream_iterator<int>(oss, ","));
|
|
||||||
std::string last_gamesFieldValue( oss.str() );
|
|
||||||
list<string> params;
|
|
||||||
ostringstream paramStream;
|
|
||||||
params.push_back(last_gamesFieldValue);
|
|
||||||
params.push_back(playerIp);
|
|
||||||
paramStream << playerId;
|
|
||||||
params.push_back(paramStream.str());
|
|
||||||
boost::shared_ptr<AsyncDBQuery> asyncQuery(
|
|
||||||
new AsyncDBPlayerLastGames(
|
|
||||||
requestId,
|
|
||||||
QUERY_PLAYER_LASTGAMES_PREPARE,
|
|
||||||
params));
|
|
||||||
{
|
|
||||||
boost::mutex::scoped_lock lock(m_asyncQueueMutex);
|
|
||||||
m_asyncQueue.push(asyncQuery);
|
|
||||||
}
|
|
||||||
LOG_ERROR("Query posted.");
|
|
||||||
m_semaphore.post();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ServerDBThread::EndGame(unsigned requestId)
|
ServerDBThread::EndGame(unsigned requestId)
|
||||||
{
|
{
|
||||||
@@ -463,7 +432,7 @@ ServerDBThread::EstablishDBConnection()
|
|||||||
*/
|
*/
|
||||||
prepareNick
|
prepareNick
|
||||||
<< "PREPARE " QUERY_NICK_PREPARE " FROM " << mysqlpp::quote
|
<< "PREPARE " QUERY_NICK_PREPARE " FROM " << mysqlpp::quote
|
||||||
<< "SELECT " DB_TABLE_PLAYER_COL_ID ", AES_DECRYPT(" DB_TABLE_PLAYER_COL_PASSWORD ", ?), " DB_TABLE_PLAYER_COL_VALID ", TRIM(" DB_TABLE_PLAYER_COL_COUNTRY "), " DB_TABLE_PLAYER_COL_LASTLOGIN ", " DB_TABLE_PLAYER_COL_LASTGAMES ", " DB_TABLE_PLAYER_COL_LASTIP ", " DB_TABLE_PLAYER_COL_ACTIVE " FROM " DB_TABLE_PLAYER " WHERE " DB_TABLE_PLAYER_COL_USERNAME " = ?";
|
<< "SELECT " DB_TABLE_PLAYER_COL_ID ", AES_DECRYPT(" DB_TABLE_PLAYER_COL_PASSWORD ", ?), " DB_TABLE_PLAYER_COL_VALID ", TRIM(" DB_TABLE_PLAYER_COL_COUNTRY "), " DB_TABLE_PLAYER_COL_LASTLOGIN ", " DB_TABLE_PLAYER_COL_ACTIVE " FROM " DB_TABLE_PLAYER " WHERE " DB_TABLE_PLAYER_COL_USERNAME " = ?";
|
||||||
|
|
||||||
mysqlpp::Query prepareAvatarBlacklist = m_connData->conn.query();
|
mysqlpp::Query prepareAvatarBlacklist = m_connData->conn.query();
|
||||||
prepareAvatarBlacklist
|
prepareAvatarBlacklist
|
||||||
@@ -510,16 +479,12 @@ ServerDBThread::EstablishDBConnection()
|
|||||||
prepareBlockPlayer
|
prepareBlockPlayer
|
||||||
<< "PREPARE " QUERY_BLOCK_PLAYER_PREPARE " FROM " << mysqlpp::quote
|
<< "PREPARE " QUERY_BLOCK_PLAYER_PREPARE " FROM " << mysqlpp::quote
|
||||||
<< "UPDATE " DB_TABLE_PLAYER " SET " DB_TABLE_PLAYER_COL_VALID " = ?, " DB_TABLE_PLAYER_COL_ACTIVE " = ? WHERE " DB_TABLE_PLAYER_COL_ID " = ?";
|
<< "UPDATE " DB_TABLE_PLAYER " SET " DB_TABLE_PLAYER_COL_VALID " = ?, " DB_TABLE_PLAYER_COL_ACTIVE " = ? WHERE " DB_TABLE_PLAYER_COL_ID " = ?";
|
||||||
mysqlpp::Query preparePlayerLastGames = m_connData->conn.query();
|
|
||||||
preparePlayerLastGames
|
|
||||||
<< "PREPARE " QUERY_PLAYER_LASTGAMES_PREPARE " FROM " << mysqlpp::quote
|
|
||||||
<< "UPDATE " DB_TABLE_PLAYER " SET " DB_TABLE_PLAYER_COL_LASTGAMES " = ?, " DB_TABLE_PLAYER_COL_LASTIP " = ? WHERE " DB_TABLE_PLAYER_COL_ID " = ?";
|
|
||||||
if (!prepareNick.exec() || !prepareAvatarBlacklist.exec() || !prepareLogin.exec() || !prepareCreateGame.exec()
|
if (!prepareNick.exec() || !prepareAvatarBlacklist.exec() || !prepareLogin.exec() || !prepareCreateGame.exec()
|
||||||
|| !prepareEndGame.exec() || !prepareRelation.exec() || !prepareScore.exec() || !prepareReportAvatar.exec()
|
|| !prepareEndGame.exec() || !prepareRelation.exec() || !prepareScore.exec() || !prepareReportAvatar.exec()
|
||||||
|| !prepareReportGame.exec() || !prepareAdminPlayer.exec() || !prepareBlockPlayer.exec() || !preparePlayerLastGames.exec()) {
|
|| !prepareReportGame.exec() || !prepareAdminPlayer.exec() || !prepareBlockPlayer.exec()) {
|
||||||
string tmpError = string(prepareNick.error()) + prepareAvatarBlacklist.error() + prepareLogin.error() + prepareCreateGame.error() +
|
string tmpError = string(prepareNick.error()) + prepareAvatarBlacklist.error() + prepareLogin.error() + prepareCreateGame.error() +
|
||||||
prepareEndGame.error() + prepareRelation.error() + prepareScore.error() + prepareReportAvatar.error() +
|
prepareEndGame.error() + prepareRelation.error() + prepareScore.error() + prepareReportAvatar.error() +
|
||||||
prepareReportGame.error() + prepareAdminPlayer.error() + prepareBlockPlayer.error() + preparePlayerLastGames.error();
|
prepareReportGame.error() + prepareAdminPlayer.error() + prepareBlockPlayer.error();
|
||||||
m_connData->conn.disconnect();
|
m_connData->conn.disconnect();
|
||||||
m_ioService->post(boost::bind(&ServerDBCallback::ConnectFailed, &m_callback, tmpError));
|
m_ioService->post(boost::bind(&ServerDBCallback::ConnectFailed, &m_callback, tmpError));
|
||||||
m_permanentError = true;
|
m_permanentError = true;
|
||||||
|
|||||||
@@ -42,7 +42,6 @@
|
|||||||
#include <dbofficial/dbidmanager.h>
|
#include <dbofficial/dbidmanager.h>
|
||||||
#include <core/thread.h>
|
#include <core/thread.h>
|
||||||
|
|
||||||
|
|
||||||
struct DBConnectionData;
|
struct DBConnectionData;
|
||||||
class AsyncDBQuery;
|
class AsyncDBQuery;
|
||||||
|
|
||||||
@@ -67,7 +66,6 @@ public:
|
|||||||
|
|
||||||
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName);
|
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName);
|
||||||
virtual void SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned place);
|
virtual void SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned place);
|
||||||
virtual void SetPlayerLastGames(unsigned requestId, DB_id playerId, std::vector<long> last_games, std::string playerIp);
|
|
||||||
virtual void EndGame(unsigned requestId);
|
virtual void EndGame(unsigned requestId);
|
||||||
|
|
||||||
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, const std::string &avatarType, DB_id *byPlayerId);
|
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, const std::string &avatarType, DB_id *byPlayerId);
|
||||||
|
|||||||
@@ -1,115 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* PokerTH - The open source texas holdem engine *
|
|
||||||
* Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May *
|
|
||||||
* *
|
|
||||||
* This program is free software: you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU Affero General Public License as *
|
|
||||||
* published by the Free Software Foundation, either version 3 of the *
|
|
||||||
* License, or (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU Affero General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU Affero General Public License *
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
||||||
* *
|
|
||||||
* *
|
|
||||||
* Additional permission under GNU AGPL version 3 section 7 *
|
|
||||||
* *
|
|
||||||
* If you modify this program, or any covered work, by linking or *
|
|
||||||
* combining it with the OpenSSL project's OpenSSL library (or a *
|
|
||||||
* modified version of that library), containing parts covered by the *
|
|
||||||
* terms of the OpenSSL or SSLeay licenses, the authors of PokerTH *
|
|
||||||
* (Felix Hammer, Florian Thauer, Lothar May) grant you additional *
|
|
||||||
* permission to convey the resulting work. *
|
|
||||||
* Corresponding Source for a non-source form of such a combination *
|
|
||||||
* shall include the source code for the parts of OpenSSL used as well *
|
|
||||||
* as that of the covered work. *
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
// Connectivity test program for PokerTH
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
#include <boost/program_options.hpp>
|
|
||||||
#include <boost/thread.hpp>
|
|
||||||
#include <boost/nondet_random.hpp>
|
|
||||||
#include <boost/random/uniform_int.hpp>
|
|
||||||
#include <boost/random/variate_generator.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
namespace po = boost::program_options;
|
|
||||||
boost::thread_specific_ptr<boost::random_device> g_rand_state;
|
|
||||||
|
|
||||||
struct nondet_rng : std::unary_function<unsigned, unsigned> {
|
|
||||||
boost::random_device &_state;
|
|
||||||
unsigned operator()(unsigned i)
|
|
||||||
{
|
|
||||||
boost::uniform_int<> rng(0, i - 1);
|
|
||||||
return rng(_state);
|
|
||||||
}
|
|
||||||
nondet_rng(boost::random_device &state) : _state(state) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
// Check command line options.
|
|
||||||
po::options_description desc("Allowed options");
|
|
||||||
desc.add_options()
|
|
||||||
("help,h", "produce help message")
|
|
||||||
("num,n", po::value<int>(), "set num of deals")
|
|
||||||
;
|
|
||||||
|
|
||||||
po::variables_map vm;
|
|
||||||
po::store(po::parse_command_line(argc, argv, desc), vm);
|
|
||||||
po::notify(vm);
|
|
||||||
|
|
||||||
if (vm.count("help")) {
|
|
||||||
cout << desc << endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if (!vm.count("num")) {
|
|
||||||
cout << "Missing option!" << endl << desc << endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int num = vm["num"].as<int>();
|
|
||||||
const int NumCards = 52;
|
|
||||||
|
|
||||||
for(int i=0; i<num;i++){
|
|
||||||
// shuffle cards
|
|
||||||
int cardsArray[NumCards] = {
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
|
||||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
|
||||||
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
|
||||||
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
|
|
||||||
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
|
|
||||||
50, 51
|
|
||||||
};
|
|
||||||
if (!g_rand_state.get()) {
|
|
||||||
g_rand_state.reset(new boost::random_device);
|
|
||||||
}
|
|
||||||
nondet_rng rand(*g_rand_state);
|
|
||||||
random_shuffle(&cardsArray[0], &cardsArray[NumCards], rand);
|
|
||||||
|
|
||||||
ostringstream oss("");
|
|
||||||
for (int temp = 0; temp < NumCards; temp++){
|
|
||||||
if(temp > 0) cout << ",";
|
|
||||||
cout << cardsArray[temp];
|
|
||||||
}
|
|
||||||
cout << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (...) {
|
|
||||||
cout << "Exception caught" << endl;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2222,13 +2222,13 @@ p, li { white-space: pre-wrap; }
|
|||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>600</width>
|
<width>600</width>
|
||||||
<height>114</height>
|
<height>94</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>600</width>
|
<width>600</width>
|
||||||
<height>114</height>
|
<height>94</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
@@ -2631,13 +2631,6 @@ p, li { white-space: pre-wrap; }
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0" colspan="5">
|
|
||||||
<widget class="QLabel" name="label_WinningCombination">
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -2530,7 +2530,6 @@ void gameTableImpl::postRiverRunAnimation2()
|
|||||||
|
|
||||||
if(nonfoldPlayersCounter!=1) {
|
if(nonfoldPlayersCounter!=1) {
|
||||||
|
|
||||||
label_WinningCombination->setText(CardsValue::determineHandName(currentGame->getCurrentHand()->getCurrentBeRo()->getHighestCardsValue(), activePlayerList).c_str());
|
|
||||||
if(!flipHolecardsAllInAlreadyDone) {
|
if(!flipHolecardsAllInAlreadyDone) {
|
||||||
|
|
||||||
for (it_c=activePlayerList->begin(); it_c!=activePlayerList->end(); ++it_c) {
|
for (it_c=activePlayerList->begin(); it_c!=activePlayerList->end(); ++it_c) {
|
||||||
@@ -3018,8 +3017,6 @@ void gameTableImpl::nextRoundCleanGui()
|
|||||||
resetMyButtonsCheckStateMemory();
|
resetMyButtonsCheckStateMemory();
|
||||||
clearMyButtons();
|
clearMyButtons();
|
||||||
pushButton_showMyCards->hide();
|
pushButton_showMyCards->hide();
|
||||||
label_WinningCombination->clear();
|
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gameTableImpl::stopTimer()
|
void gameTableImpl::stopTimer()
|
||||||
@@ -4120,7 +4117,6 @@ void gameTableImpl::refreshGameTableStyle()
|
|||||||
myGameTableStyle->setBigFontBoardStyle(textLabel_handLabel);
|
myGameTableStyle->setBigFontBoardStyle(textLabel_handLabel);
|
||||||
myGameTableStyle->setBigFontBoardStyle(label_Pot);
|
myGameTableStyle->setBigFontBoardStyle(label_Pot);
|
||||||
#endif
|
#endif
|
||||||
myGameTableStyle->setBigFontBoardStyle(label_WinningCombination);
|
|
||||||
myGameTableStyle->setCardHolderStyle(label_CardHolder0,0);
|
myGameTableStyle->setCardHolderStyle(label_CardHolder0,0);
|
||||||
myGameTableStyle->setCardHolderStyle(label_CardHolder1,0);
|
myGameTableStyle->setCardHolderStyle(label_CardHolder1,0);
|
||||||
myGameTableStyle->setCardHolderStyle(label_CardHolder2,0);
|
myGameTableStyle->setCardHolderStyle(label_CardHolder2,0);
|
||||||
|
|||||||
@@ -2745,13 +2745,13 @@ p, li { white-space: pre-wrap; }
|
|||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>390</width>
|
<width>390</width>
|
||||||
<height>102</height>
|
<height>82</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>390</width>
|
<width>390</width>
|
||||||
<height>102</height>
|
<height>82</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
@@ -3039,13 +3039,6 @@ p, li { white-space: pre-wrap; }
|
|||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_WinningCombination">
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -293,13 +293,11 @@ ServerGame::TimerVoteKick(const boost::system::error_code &ec)
|
|||||||
PlayerDataList
|
PlayerDataList
|
||||||
ServerGame::InternalStartGame()
|
ServerGame::InternalStartGame()
|
||||||
{
|
{
|
||||||
LOG_ERROR("InternalStartGame() entered.");
|
|
||||||
// Initialize the game.
|
// Initialize the game.
|
||||||
PlayerDataList playerData(GetFullPlayerDataList());
|
PlayerDataList playerData(GetFullPlayerDataList());
|
||||||
|
|
||||||
if (playerData.size() >= 2) {
|
if (playerData.size() >= 2) {
|
||||||
// Set DB Backend.
|
// Set DB Backend.
|
||||||
// @TODO: check for wec or bbc game with bbcbot as creator
|
|
||||||
if (GetGameData().gameType == GAME_TYPE_RANKING)
|
if (GetGameData().gameType == GAME_TYPE_RANKING)
|
||||||
m_database = GetLobbyThread().GetDatabase();
|
m_database = GetLobbyThread().GetDatabase();
|
||||||
else
|
else
|
||||||
@@ -348,12 +346,6 @@ ServerGame::InternalStartGame()
|
|||||||
|
|
||||||
GetDatabase().AsyncCreateGame(GetId(), GetName());
|
GetDatabase().AsyncCreateGame(GetId(), GetName());
|
||||||
InitRankingMap(playerData);
|
InitRankingMap(playerData);
|
||||||
|
|
||||||
// @TODO: here to save last_games with mysql per player
|
|
||||||
|
|
||||||
if (GetGameData().gameType == GAME_TYPE_RANKING)
|
|
||||||
StoreLastGames(playerData);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return playerData;
|
return playerData;
|
||||||
}
|
}
|
||||||
@@ -450,26 +442,6 @@ ServerGame::StoreAndResetRanking()
|
|||||||
m_rankingMap.clear();
|
m_rankingMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ServerGame::StoreLastGames(const PlayerDataList &playerDataList)
|
|
||||||
{
|
|
||||||
// Store players lastgames in database.
|
|
||||||
PlayerDataList::const_iterator i = playerDataList.begin();
|
|
||||||
PlayerDataList::const_iterator end = playerDataList.end();
|
|
||||||
while (i != end) {
|
|
||||||
boost::shared_ptr<PlayerData> tmpPlayer(*i);
|
|
||||||
// tmpPlayer->GetUniqueId()
|
|
||||||
tmpPlayer->AddPlayerLastGame((long)time(NULL));
|
|
||||||
LOG_ERROR("TimeStamp stored: " << tmpPlayer->GetPlayerLastGames().back());
|
|
||||||
std::vector<long> last_games = tmpPlayer->GetPlayerLastGames();
|
|
||||||
LOG_ERROR("Ready for storing vector for player " << tmpPlayer->GetDBId() << " - lastGameTs " << last_games.back());
|
|
||||||
if(tmpPlayer->GetDBId() != DB_ID_INVALID){
|
|
||||||
GetDatabase().SetPlayerLastGames(GetId(), tmpPlayer->GetDBId(), last_games, GetSessionManager().GetSessionByUniquePlayerId(tmpPlayer->GetUniqueId())->GetClientAddr());
|
|
||||||
}
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ServerGame::RemoveAutoLeavePlayers()
|
ServerGame::RemoveAutoLeavePlayers()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -62,7 +62,6 @@
|
|||||||
#include <boost/uuid/uuid.hpp>
|
#include <boost/uuid/uuid.hpp>
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <gsasl.h>
|
#include <gsasl.h>
|
||||||
#include <ctime>
|
|
||||||
|
|
||||||
#define SERVER_MAX_NUM_LOBBY_SESSIONS 512 // Maximum number of idle users in lobby.
|
#define SERVER_MAX_NUM_LOBBY_SESSIONS 512 // Maximum number of idle users in lobby.
|
||||||
#define SERVER_MAX_NUM_TOTAL_SESSIONS 2000 // Total maximum of sessions, fitting a 2048 handle limit
|
#define SERVER_MAX_NUM_TOTAL_SESSIONS 2000 // Total maximum of sessions, fitting a 2048 handle limit
|
||||||
@@ -305,7 +304,6 @@ ServerLobbyThread::AddConnection(boost::shared_ptr<SessionData> sessionData)
|
|||||||
m_sessionManager.AddSession(sessionData);
|
m_sessionManager.AddSession(sessionData);
|
||||||
|
|
||||||
LOG_VERBOSE("Accepted connection - session #" << sessionData->GetId() << ".");
|
LOG_VERBOSE("Accepted connection - session #" << sessionData->GetId() << ".");
|
||||||
LOG_ERROR("Accepted connection - session #" << sessionData->GetId() << ".");
|
|
||||||
|
|
||||||
sessionData->StartTimerInitTimeout(SERVER_INIT_SESSION_TIMEOUT_SEC);
|
sessionData->StartTimerInitTimeout(SERVER_INIT_SESSION_TIMEOUT_SEC);
|
||||||
sessionData->StartTimerGlobalTimeout(SERVER_SESSION_FORCED_TIMEOUT_SEC);
|
sessionData->StartTimerGlobalTimeout(SERVER_SESSION_FORCED_TIMEOUT_SEC);
|
||||||
@@ -1349,7 +1347,7 @@ ServerLobbyThread::HandleNetPacketRetrieveAvatar(boost::shared_ptr<SessionData>
|
|||||||
void
|
void
|
||||||
ServerLobbyThread::HandleNetPacketCreateGame(boost::shared_ptr<SessionData> session, const JoinNewGameMessage &newGame)
|
ServerLobbyThread::HandleNetPacketCreateGame(boost::shared_ptr<SessionData> session, const JoinNewGameMessage &newGame)
|
||||||
{
|
{
|
||||||
LOG_ERROR("Creating new game, initiated by session #" << session->GetId() << ".");
|
LOG_VERBOSE("Creating new game, initiated by session #" << session->GetId() << ".");
|
||||||
|
|
||||||
string password;
|
string password;
|
||||||
if (newGame.has_password())
|
if (newGame.has_password())
|
||||||
@@ -1379,10 +1377,6 @@ ServerLobbyThread::HandleNetPacketCreateGame(boost::shared_ptr<SessionData> sess
|
|||||||
SendJoinGameFailed(session, gameId, NTF_NET_JOIN_GUEST_FORBIDDEN);
|
SendJoinGameFailed(session, gameId, NTF_NET_JOIN_GUEST_FORBIDDEN);
|
||||||
} else if (!ServerGame::CheckSettings(tmpData, password, GetServerMode())) {
|
} else if (!ServerGame::CheckSettings(tmpData, password, GetServerMode())) {
|
||||||
SendJoinGameFailed(session, gameId, NTF_NET_JOIN_INVALID_SETTINGS);
|
SendJoinGameFailed(session, gameId, NTF_NET_JOIN_INVALID_SETTINGS);
|
||||||
} else if (!session->GetPlayerData()->IsPlayerAllowedToJoinCreateLimitRank(m_serverConfig.readConfigString("ServerLimitRankNum"), m_serverConfig.readConfigString("ServerLimitRankPeriod"))
|
|
||||||
&& tmpData.gameType == GAME_TYPE_RANKING ) {
|
|
||||||
LOG_ERROR("not allowed due to ranklimit");
|
|
||||||
SendJoinGameFailed(session, gameId, NTF_NET_JOIN_IP_BLOCKED);
|
|
||||||
} else {
|
} else {
|
||||||
boost::shared_ptr<ServerGame> game(
|
boost::shared_ptr<ServerGame> game(
|
||||||
new ServerGame(
|
new ServerGame(
|
||||||
@@ -1424,7 +1418,6 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr<SessionData> sessio
|
|||||||
MoveSessionToGame(game, session, joinGame.autoleave(), true);
|
MoveSessionToGame(game, session, joinGame.autoleave(), true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LOG_ERROR("JoinGame pre validation");
|
|
||||||
// As guest, you are only allowed to join normal games.
|
// As guest, you are only allowed to join normal games.
|
||||||
if (session->GetPlayerData()->GetRights() == PLAYER_RIGHTS_GUEST
|
if (session->GetPlayerData()->GetRights() == PLAYER_RIGHTS_GUEST
|
||||||
&& tmpData.gameType != GAME_TYPE_NORMAL) {
|
&& tmpData.gameType != GAME_TYPE_NORMAL) {
|
||||||
@@ -1434,14 +1427,14 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr<SessionData> sessio
|
|||||||
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_NOT_INVITED);
|
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_NOT_INVITED);
|
||||||
} else if (!game->CheckPassword(password)) {
|
} else if (!game->CheckPassword(password)) {
|
||||||
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_INVALID_PASSWORD);
|
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_INVALID_PASSWORD);
|
||||||
} else if (tmpData.gameType == GAME_TYPE_RANKING && !session->GetPlayerData()->IsPlayerAllowedToJoinCreateLimitRank(m_serverConfig.readConfigString("ServerLimitRankNum"), m_serverConfig.readConfigString("ServerLimitRankPeriod"))) {
|
} else if (tmpData.gameType == GAME_TYPE_RANKING
|
||||||
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
|
&& !joinGame.spectateonly()
|
||||||
} else if (tmpData.gameType == GAME_TYPE_RANKING && !joinGame.spectateonly()
|
|
||||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR
|
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR
|
||||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6
|
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6
|
||||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4
|
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4
|
||||||
&& game->IsClientAddressConnected(session->GetClientAddr())) {
|
&& game->IsClientAddressConnected(session->GetClientAddr())) {
|
||||||
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
|
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
MoveSessionToGame(game, session, joinGame.autoleave(), false);
|
MoveSessionToGame(game, session, joinGame.autoleave(), false);
|
||||||
}
|
}
|
||||||
@@ -1810,18 +1803,6 @@ ServerLobbyThread::UserValid(unsigned playerId, const DBPlayerData &dbPlayerData
|
|||||||
if (tmpSession && tmpSession->GetPlayerData()) {
|
if (tmpSession && tmpSession->GetPlayerData()) {
|
||||||
tmpSession->GetPlayerData()->SetDBId(dbPlayerData.id);
|
tmpSession->GetPlayerData()->SetDBId(dbPlayerData.id);
|
||||||
tmpSession->GetPlayerData()->SetCountry(dbPlayerData.country);
|
tmpSession->GetPlayerData()->SetCountry(dbPlayerData.country);
|
||||||
if(dbPlayerData.last_games.length() > 0){
|
|
||||||
LOG_ERROR("last_games from db = " << dbPlayerData.last_games);
|
|
||||||
vector<string> last_games;
|
|
||||||
boost::split(last_games, dbPlayerData.last_games, boost::is_any_of(","));
|
|
||||||
for (unsigned int i = 0; i < last_games.size(); i++){
|
|
||||||
if(last_games[i].length() > 0)
|
|
||||||
tmpSession->GetPlayerData()->AddPlayerLastGame(stol(last_games[i]));
|
|
||||||
}
|
|
||||||
LOG_ERROR("last_games last from vector after db = " << tmpSession->GetPlayerData()->GetPlayerLastGames().back());
|
|
||||||
}else{
|
|
||||||
LOG_ERROR("no lastGames from db");
|
|
||||||
}
|
|
||||||
this->AuthChallenge(tmpSession, dbPlayerData.secret);
|
this->AuthChallenge(tmpSession, dbPlayerData.secret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,8 +34,6 @@
|
|||||||
#include <net/serverexception.h>
|
#include <net/serverexception.h>
|
||||||
#include <net/socket_msg.h>
|
#include <net/socket_msg.h>
|
||||||
|
|
||||||
#include <ctime>
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#define SERVER_MAX_GUEST_USERS_LOBBY 50 // LG: Maximum number of guests users in lobby allowed
|
#define SERVER_MAX_GUEST_USERS_LOBBY 50 // LG: Maximum number of guests users in lobby allowed
|
||||||
|
|||||||
@@ -148,7 +148,6 @@ protected:
|
|||||||
void SetPlayerPlace(unsigned playerId, int place);
|
void SetPlayerPlace(unsigned playerId, int place);
|
||||||
void ReplaceRankingPlayer(unsigned oldPlayerId, unsigned newPlayerId);
|
void ReplaceRankingPlayer(unsigned oldPlayerId, unsigned newPlayerId);
|
||||||
void StoreAndResetRanking();
|
void StoreAndResetRanking();
|
||||||
void StoreLastGames(const PlayerDataList &playerDataList);
|
|
||||||
void RemoveAutoLeavePlayers();
|
void RemoveAutoLeavePlayers();
|
||||||
void InternalEndGame();
|
void InternalEndGame();
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ typedef unsigned SessionId;
|
|||||||
#include <boost/thread.hpp>
|
#include <boost/thread.hpp>
|
||||||
#include <boost/enable_shared_from_this.hpp>
|
#include <boost/enable_shared_from_this.hpp>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include <net/socket_helper.h>
|
#include <net/socket_helper.h>
|
||||||
#include <net/sessiondatacallback.h>
|
#include <net/sessiondatacallback.h>
|
||||||
|
|||||||
@@ -65,8 +65,6 @@ public:
|
|||||||
bool IsPlayerConnected(unsigned uniqueId) const;
|
bool IsPlayerConnected(unsigned uniqueId) const;
|
||||||
bool IsClientAddressConnected(const std::string &clientAddress) const;
|
bool IsClientAddressConnected(const std::string &clientAddress) const;
|
||||||
bool IsGuestAllowedToConnect(const std::string &clientAddress) const;
|
bool IsGuestAllowedToConnect(const std::string &clientAddress) const;
|
||||||
bool IsPlayerAllowedToJoinCreateLimitRank(const std::string &playerName) const;
|
|
||||||
bool IsPlayerAllowedToJoinCreateLimitRank(unsigned uniqueId) const;
|
|
||||||
|
|
||||||
void ForEach(boost::function<void (boost::shared_ptr<SessionData>)> func);
|
void ForEach(boost::function<void (boost::shared_ptr<SessionData>)> func);
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,6 @@
|
|||||||
* as that of the covered work. *
|
* as that of the covered work. *
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#include <playerdata.h>
|
#include <playerdata.h>
|
||||||
#include <ctime>
|
|
||||||
#include <core/loghelper.h> // @TODO: remove in productive
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -244,59 +242,3 @@ PlayerData::operator<(const PlayerData &other) const
|
|||||||
return m_number < other.GetNumber();
|
return m_number < other.GetNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
PlayerData::SetPlayerLastGames(std::vector<long> last_games)
|
|
||||||
{
|
|
||||||
boost::mutex::scoped_lock lock(m_dataMutex);
|
|
||||||
m_last_games.clear();
|
|
||||||
m_last_games = last_games;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlayerData::AddPlayerLastGame(long lastGame)
|
|
||||||
{
|
|
||||||
boost::mutex::scoped_lock lock(m_dataMutex);
|
|
||||||
|
|
||||||
m_last_games.push_back(lastGame);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<long>
|
|
||||||
PlayerData::GetPlayerLastGames()
|
|
||||||
{
|
|
||||||
boost::mutex::scoped_lock lock(m_dataMutex);
|
|
||||||
return m_last_games;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
PlayerData::IsPlayerAllowedToJoinCreateLimitRank(std::string num, std::string period)
|
|
||||||
{
|
|
||||||
bool retVal = false;
|
|
||||||
LOG_ERROR("checking IsPlayerAllowedToJoinCreateLimitRank() ");
|
|
||||||
LOG_ERROR("num = " << num << " period " << period);
|
|
||||||
boost::mutex::scoped_lock lock(m_dataMutex);
|
|
||||||
|
|
||||||
long then = (long)time(NULL) - (long)(stoi(period) * 60);
|
|
||||||
|
|
||||||
int count = 0;
|
|
||||||
int i=0;
|
|
||||||
for(std::vector<long>::iterator timeStamp = m_last_games.begin(); timeStamp != m_last_games.end(); ++timeStamp) {
|
|
||||||
LOG_ERROR("timeStamp " << *timeStamp);
|
|
||||||
time_t ts = (time_t)*timeStamp;
|
|
||||||
LOG_ERROR("comparing ts " << (long)ts << " with " << then);
|
|
||||||
if((long)ts > then){
|
|
||||||
LOG_ERROR("counting timeStamp in time " << ctime(&ts));
|
|
||||||
count++;
|
|
||||||
}else{
|
|
||||||
LOG_ERROR("erasing overdued timestamp " << ctime(&ts));
|
|
||||||
timeStamp = m_last_games.erase(timeStamp); // erase overdued entries
|
|
||||||
if( timeStamp == m_last_games.end())
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(count < stoi(num))
|
|
||||||
retVal = true;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -116,12 +116,6 @@ public:
|
|||||||
int GetStartCash() const;
|
int GetStartCash() const;
|
||||||
void SetStartCash(int cash);
|
void SetStartCash(int cash);
|
||||||
|
|
||||||
// @TODO: last_games here
|
|
||||||
void AddPlayerLastGame(long last_games);
|
|
||||||
void SetPlayerLastGames(std::vector<long> last_games);
|
|
||||||
std::vector<long> GetPlayerLastGames();
|
|
||||||
bool IsPlayerAllowedToJoinCreateLimitRank(std::string num, std::string period);
|
|
||||||
|
|
||||||
bool operator<(const PlayerData &other) const;
|
bool operator<(const PlayerData &other) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -141,8 +135,6 @@ private:
|
|||||||
bool m_isGameAdmin;
|
bool m_isGameAdmin;
|
||||||
boost::shared_ptr<AvatarFile> m_netAvatarFile;
|
boost::shared_ptr<AvatarFile> m_netAvatarFile;
|
||||||
|
|
||||||
std::vector<long> m_last_games;
|
|
||||||
|
|
||||||
mutable boost::mutex m_dataMutex;
|
mutable boost::mutex m_dataMutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+1417
-751
File diff suppressed because it is too large
Load Diff
+898
-837
File diff suppressed because it is too large
Load Diff
+37119
-26440
File diff suppressed because it is too large
Load Diff
+12816
-11203
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user