Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b40ad445b | ||
|
|
8f3e4006e3 | ||
|
|
20252a02e0 |
+5
-1
@@ -18,4 +18,8 @@ uics/
|
||||
make.sh
|
||||
gitpush_serverstuff_stable
|
||||
pokerth_server
|
||||
.vscode/
|
||||
.vscode
|
||||
.qmake.stash
|
||||
pokerth.ap*
|
||||
*.DS_STORE
|
||||
.gitignore.save
|
||||
|
||||
@@ -1,36 +1 @@
|
||||
Requirements
|
||||
============
|
||||
|
||||
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.
|
||||
see https://github.com/pokerth/pokerth/wiki/Building-PokerTH
|
||||
@@ -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.
|
||||
# (see http://trolltech.com/developer/downloads/qt/mac)
|
||||
|
||||
QT_FW_PATH="/Users/$USER/Qt/5.9/clang_64/lib"
|
||||
QT_PLUGIN_PATH="/Users/$USER/Qt/5.9/clang_64/plugins"
|
||||
QT_FW_PATH="/usr/local/Cellar/qt/5.13.0/lib"
|
||||
QT_PLUGIN_PATH="/usr/local/Cellar/qt/5.13.0/plugins"
|
||||
SDL_FW_PATH="/Library/Frameworks"
|
||||
APPLICATION="./pokerth.app"
|
||||
BINARY="$APPLICATION/Contents/MacOs/pokerth"
|
||||
RESOURCES="$APPLICATION/Contents/Resources"
|
||||
DYLIB_PATH="$APPLICATION/Contents/MacOs/dylibs"
|
||||
|
||||
# strip binary
|
||||
strip $BINARY
|
||||
@@ -23,18 +24,56 @@ cp -R ./data $RESOURCES/
|
||||
find $RESOURCES/data -name ".svn" | xargs rm -Rf
|
||||
# create framework-path
|
||||
BINARY_FW_PATH="$APPLICATION/Contents/Frameworks"
|
||||
mkdir $BINARY_FW_PATH
|
||||
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/sqldrivers
|
||||
mkdir -p $BINARY_PLUGIN_PATH/platforms
|
||||
mkdir -p $DYLIB_PATH
|
||||
|
||||
# integrate SDL-frameworks into binary
|
||||
cp -R $SDL_FW_PATH/SDL.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
|
||||
cp $QT_PLUGIN_PATH/imageformats/libqgif.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/QtNetwork.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
|
||||
rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug
|
||||
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.prl
|
||||
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
|
||||
QTCORE="QtCore.framework/Versions/5/QtCore"
|
||||
@@ -73,18 +117,20 @@ if [ "$1" != "--without-qt" ] ; then
|
||||
QTSQL="QtSql.framework/Versions/5/QtSql"
|
||||
QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork"
|
||||
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/$QTGUI $BINARY_FW_PATH/$QTGUI
|
||||
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/$QTNETWORK $BINARY_FW_PATH/$QTNETWORK
|
||||
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)
|
||||
QTGUI_LINK=$(otool -L $BINARY | grep QtGui | 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)
|
||||
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 $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $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 $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
|
||||
|
||||
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 $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 $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)
|
||||
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
|
||||
CONFIG -= ppc
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||
|
||||
# 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/asyncdbadminplayers.h \
|
||||
src/dbofficial/asyncdbblockplayer.h \
|
||||
src/dbofficial/asyncdbplayerlastgames.h \
|
||||
src/dbofficial/dbidmanager.h
|
||||
SOURCES += src/dbofficial/asyncdbauth.cpp \
|
||||
src/dbofficial/asyncdbcreategame.cpp \
|
||||
@@ -61,7 +60,6 @@ SOURCES += src/dbofficial/asyncdbauth.cpp \
|
||||
src/dbofficial/asyncdbavatarblacklist.cpp \
|
||||
src/dbofficial/asyncdbadminplayers.cpp \
|
||||
src/dbofficial/asyncdbblockplayer.cpp \
|
||||
src/dbofficial/asyncdbplayerlastgames.cpp \
|
||||
src/dbofficial/dbidmanager.cpp
|
||||
win32 {
|
||||
DEFINES += _WIN32_WINNT=0x0501
|
||||
|
||||
+9
-8
@@ -576,7 +576,7 @@ mac {
|
||||
CONFIG += x86_64
|
||||
CONFIG -= x86
|
||||
CONFIG -= ppc
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||
|
||||
# workaround for problems with boost_filesystem exceptions
|
||||
@@ -587,13 +587,14 @@ mac {
|
||||
# QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk/
|
||||
LIBPATH += lib
|
||||
|
||||
|
||||
# QT dynamic linked framework (see also mac_post_make.sh)
|
||||
LIBS += -F /Library/Frameworks
|
||||
LIBS += -framework \
|
||||
QtCore
|
||||
LIBS += -framework \
|
||||
QtGui
|
||||
LIBS += -framework \
|
||||
LIBS += -F /Library/Frameworks
|
||||
# LIBS += -framework \
|
||||
# QtCore
|
||||
# LIBS += -framework \
|
||||
# QtGui
|
||||
LIBS += -framework \
|
||||
SDL
|
||||
LIBS += -framework \
|
||||
SDL_mixer
|
||||
@@ -615,7 +616,7 @@ mac {
|
||||
-lprotobuf \
|
||||
-lz \
|
||||
-framework \
|
||||
Cocoa
|
||||
Cocoa
|
||||
|
||||
# set the application icon
|
||||
RC_FILE = pokerth.icns
|
||||
|
||||
+1
-1
@@ -294,7 +294,7 @@ mac{
|
||||
CONFIG += x86_64
|
||||
CONFIG -= x86
|
||||
CONFIG -= ppc
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||
|
||||
# for universal-compilation on PPC-Mac uncomment the following line
|
||||
|
||||
@@ -40,7 +40,7 @@ win32 {
|
||||
system(protoc pokerth.proto --java_out=tests/src)
|
||||
}
|
||||
unix : !mac {
|
||||
INCLUDEPATH += $${PREFIX}/include
|
||||
INCLUDEPATH += $${PREFIX}/include
|
||||
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)
|
||||
@@ -52,11 +52,14 @@ unix : !mac {
|
||||
}
|
||||
}
|
||||
mac {
|
||||
# make it x86_64 only
|
||||
CONFIG += x86_64
|
||||
CONFIG -= x86
|
||||
CONFIG -= ppc
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
||||
# make it x86_64 only
|
||||
CONFIG += x86_64
|
||||
CONFIG -= x86
|
||||
CONFIG -= ppc
|
||||
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
|
||||
# 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
|
||||
CONFIG -= ppc
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
|
||||
QMAKE_CXXFLAGS -= -std=gnu++0x
|
||||
|
||||
# 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("GameNameBadWordList", CONFIG_TYPE_STRING_LIST, "Regex"));
|
||||
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
|
||||
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
|
||||
ServerDBGeneric::EndGame(unsigned /*requestId*/)
|
||||
{
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
|
||||
#include <string>
|
||||
#include <ctime>
|
||||
#include <vector>
|
||||
|
||||
typedef unsigned DB_id;
|
||||
#define DB_ID_INVALID 0
|
||||
@@ -46,8 +45,6 @@ struct DBPlayerData {
|
||||
std::string secret;
|
||||
std::string country;
|
||||
std::string last_login;
|
||||
std::string last_games;
|
||||
std::string last_ip;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -57,7 +57,6 @@ public:
|
||||
|
||||
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName);
|
||||
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 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 <string>
|
||||
#include <list>
|
||||
#include <vector>
|
||||
|
||||
typedef std::list<DB_id> db_list;
|
||||
|
||||
@@ -58,7 +57,6 @@ public:
|
||||
|
||||
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName) = 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 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 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 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()));
|
||||
} else {
|
||||
int blocked = result[0][2];
|
||||
int active = result[0][7];
|
||||
int active = result[0][5];
|
||||
if ((active != 1) || (blocked != 0)) {
|
||||
service.post(boost::bind(&ServerDBCallback::PlayerLoginBlocked, &cb, GetId()));
|
||||
} else {
|
||||
mysqlpp::String secret(result[0][1]);
|
||||
mysqlpp::String country(result[0][3]);
|
||||
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);
|
||||
tmpData->id = result[0][0];
|
||||
secret.to_string(tmpData->secret);
|
||||
if (!country.is_null())
|
||||
country.to_string(tmpData->country);
|
||||
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));
|
||||
}
|
||||
|
||||
@@ -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_AVATARHASH "avatar_hash"
|
||||
#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_COL_ID "idgame"
|
||||
|
||||
@@ -41,15 +41,12 @@
|
||||
#include <dbofficial/asyncdbreportgame.h>
|
||||
#include <dbofficial/asyncdbadminplayers.h>
|
||||
#include <dbofficial/asyncdbblockplayer.h>
|
||||
#include <dbofficial/asyncdbplayerlastgames.h>
|
||||
#include <dbofficial/compositeasyncdbquery.h>
|
||||
#include <dbofficial/db_table_defs.h>
|
||||
#include <ctime>
|
||||
#include <sstream>
|
||||
#include <mysql++.h>
|
||||
|
||||
#include <core/loghelper.h> // @TODO: remove in productive
|
||||
|
||||
#define QUERY_NICK_PREPARE "nick_template"
|
||||
#define QUERY_LOGIN_PREPARE "login_template"
|
||||
#define QUERY_AVATAR_BLACKLIST_PREPARE "avatar_blacklist_template"
|
||||
@@ -61,7 +58,6 @@
|
||||
#define QUERY_REPORT_GAME_PREPARE "report_game_template"
|
||||
#define QUERY_ADMIN_PLAYER_PREPARE "admin_player_template"
|
||||
#define QUERY_BLOCK_PLAYER_PREPARE "block_player_template"
|
||||
#define QUERY_PLAYER_LASTGAMES_PREPARE "player_lastgames_template"
|
||||
|
||||
using namespace std;
|
||||
|
||||
@@ -234,33 +230,6 @@ ServerDBThread::SetGamePlayerPlace(unsigned requestId, DB_id playerId, unsigned
|
||||
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
|
||||
ServerDBThread::EndGame(unsigned requestId)
|
||||
{
|
||||
@@ -463,7 +432,7 @@ ServerDBThread::EstablishDBConnection()
|
||||
*/
|
||||
prepareNick
|
||||
<< "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();
|
||||
prepareAvatarBlacklist
|
||||
@@ -510,16 +479,12 @@ ServerDBThread::EstablishDBConnection()
|
||||
prepareBlockPlayer
|
||||
<< "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 " = ?";
|
||||
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()
|
||||
|| !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() +
|
||||
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_ioService->post(boost::bind(&ServerDBCallback::ConnectFailed, &m_callback, tmpError));
|
||||
m_permanentError = true;
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
#include <dbofficial/dbidmanager.h>
|
||||
#include <core/thread.h>
|
||||
|
||||
|
||||
struct DBConnectionData;
|
||||
class AsyncDBQuery;
|
||||
|
||||
@@ -67,7 +66,6 @@ public:
|
||||
|
||||
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName);
|
||||
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 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">
|
||||
<size>
|
||||
<width>600</width>
|
||||
<height>114</height>
|
||||
<height>94</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>600</width>
|
||||
<height>114</height>
|
||||
<height>94</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
@@ -2631,13 +2631,6 @@ p, li { white-space: pre-wrap; }
|
||||
</layout>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -2530,7 +2530,6 @@ void gameTableImpl::postRiverRunAnimation2()
|
||||
|
||||
if(nonfoldPlayersCounter!=1) {
|
||||
|
||||
label_WinningCombination->setText(CardsValue::determineHandName(currentGame->getCurrentHand()->getCurrentBeRo()->getHighestCardsValue(), activePlayerList).c_str());
|
||||
if(!flipHolecardsAllInAlreadyDone) {
|
||||
|
||||
for (it_c=activePlayerList->begin(); it_c!=activePlayerList->end(); ++it_c) {
|
||||
@@ -3018,8 +3017,6 @@ void gameTableImpl::nextRoundCleanGui()
|
||||
resetMyButtonsCheckStateMemory();
|
||||
clearMyButtons();
|
||||
pushButton_showMyCards->hide();
|
||||
label_WinningCombination->clear();
|
||||
update();
|
||||
}
|
||||
|
||||
void gameTableImpl::stopTimer()
|
||||
@@ -4120,7 +4117,6 @@ void gameTableImpl::refreshGameTableStyle()
|
||||
myGameTableStyle->setBigFontBoardStyle(textLabel_handLabel);
|
||||
myGameTableStyle->setBigFontBoardStyle(label_Pot);
|
||||
#endif
|
||||
myGameTableStyle->setBigFontBoardStyle(label_WinningCombination);
|
||||
myGameTableStyle->setCardHolderStyle(label_CardHolder0,0);
|
||||
myGameTableStyle->setCardHolderStyle(label_CardHolder1,0);
|
||||
myGameTableStyle->setCardHolderStyle(label_CardHolder2,0);
|
||||
|
||||
@@ -2745,13 +2745,13 @@ p, li { white-space: pre-wrap; }
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>390</width>
|
||||
<height>102</height>
|
||||
<height>82</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>390</width>
|
||||
<height>102</height>
|
||||
<height>82</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
@@ -3039,13 +3039,6 @@ p, li { white-space: pre-wrap; }
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_WinningCombination">
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -293,13 +293,11 @@ ServerGame::TimerVoteKick(const boost::system::error_code &ec)
|
||||
PlayerDataList
|
||||
ServerGame::InternalStartGame()
|
||||
{
|
||||
LOG_ERROR("InternalStartGame() entered.");
|
||||
// Initialize the game.
|
||||
PlayerDataList playerData(GetFullPlayerDataList());
|
||||
|
||||
if (playerData.size() >= 2) {
|
||||
// Set DB Backend.
|
||||
// @TODO: check for wec or bbc game with bbcbot as creator
|
||||
if (GetGameData().gameType == GAME_TYPE_RANKING)
|
||||
m_database = GetLobbyThread().GetDatabase();
|
||||
else
|
||||
@@ -348,12 +346,6 @@ ServerGame::InternalStartGame()
|
||||
|
||||
GetDatabase().AsyncCreateGame(GetId(), GetName());
|
||||
InitRankingMap(playerData);
|
||||
|
||||
// @TODO: here to save last_games with mysql per player
|
||||
|
||||
if (GetGameData().gameType == GAME_TYPE_RANKING)
|
||||
StoreLastGames(playerData);
|
||||
|
||||
}
|
||||
return playerData;
|
||||
}
|
||||
@@ -450,26 +442,6 @@ ServerGame::StoreAndResetRanking()
|
||||
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
|
||||
ServerGame::RemoveAutoLeavePlayers()
|
||||
{
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
#include <boost/uuid/uuid.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <gsasl.h>
|
||||
#include <ctime>
|
||||
|
||||
#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
|
||||
@@ -305,7 +304,6 @@ ServerLobbyThread::AddConnection(boost::shared_ptr<SessionData> sessionData)
|
||||
m_sessionManager.AddSession(sessionData);
|
||||
|
||||
LOG_VERBOSE("Accepted connection - session #" << sessionData->GetId() << ".");
|
||||
LOG_ERROR("Accepted connection - session #" << sessionData->GetId() << ".");
|
||||
|
||||
sessionData->StartTimerInitTimeout(SERVER_INIT_SESSION_TIMEOUT_SEC);
|
||||
sessionData->StartTimerGlobalTimeout(SERVER_SESSION_FORCED_TIMEOUT_SEC);
|
||||
@@ -1349,7 +1347,7 @@ ServerLobbyThread::HandleNetPacketRetrieveAvatar(boost::shared_ptr<SessionData>
|
||||
void
|
||||
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;
|
||||
if (newGame.has_password())
|
||||
@@ -1379,10 +1377,6 @@ ServerLobbyThread::HandleNetPacketCreateGame(boost::shared_ptr<SessionData> sess
|
||||
SendJoinGameFailed(session, gameId, NTF_NET_JOIN_GUEST_FORBIDDEN);
|
||||
} else if (!ServerGame::CheckSettings(tmpData, password, GetServerMode())) {
|
||||
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 {
|
||||
boost::shared_ptr<ServerGame> game(
|
||||
new ServerGame(
|
||||
@@ -1424,7 +1418,6 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr<SessionData> sessio
|
||||
MoveSessionToGame(game, session, joinGame.autoleave(), true);
|
||||
}
|
||||
} else {
|
||||
LOG_ERROR("JoinGame pre validation");
|
||||
// As guest, you are only allowed to join normal games.
|
||||
if (session->GetPlayerData()->GetRights() == PLAYER_RIGHTS_GUEST
|
||||
&& 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);
|
||||
} else if (!game->CheckPassword(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"))) {
|
||||
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
|
||||
} else if (tmpData.gameType == GAME_TYPE_RANKING && !joinGame.spectateonly()
|
||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR
|
||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6
|
||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4
|
||||
&& game->IsClientAddressConnected(session->GetClientAddr())) {
|
||||
} else if (tmpData.gameType == GAME_TYPE_RANKING
|
||||
&& !joinGame.spectateonly()
|
||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR
|
||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6
|
||||
&& session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4
|
||||
&& game->IsClientAddressConnected(session->GetClientAddr())) {
|
||||
SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED);
|
||||
|
||||
} else {
|
||||
MoveSessionToGame(game, session, joinGame.autoleave(), false);
|
||||
}
|
||||
@@ -1810,18 +1803,6 @@ ServerLobbyThread::UserValid(unsigned playerId, const DBPlayerData &dbPlayerData
|
||||
if (tmpSession && tmpSession->GetPlayerData()) {
|
||||
tmpSession->GetPlayerData()->SetDBId(dbPlayerData.id);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,8 +34,6 @@
|
||||
#include <net/serverexception.h>
|
||||
#include <net/socket_msg.h>
|
||||
|
||||
#include <ctime>
|
||||
|
||||
using namespace std;
|
||||
|
||||
#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 ReplaceRankingPlayer(unsigned oldPlayerId, unsigned newPlayerId);
|
||||
void StoreAndResetRanking();
|
||||
void StoreLastGames(const PlayerDataList &playerDataList);
|
||||
void RemoveAutoLeavePlayers();
|
||||
void InternalEndGame();
|
||||
|
||||
|
||||
@@ -40,7 +40,6 @@ typedef unsigned SessionId;
|
||||
#include <boost/thread.hpp>
|
||||
#include <boost/enable_shared_from_this.hpp>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <net/socket_helper.h>
|
||||
#include <net/sessiondatacallback.h>
|
||||
|
||||
@@ -65,8 +65,6 @@ public:
|
||||
bool IsPlayerConnected(unsigned uniqueId) const;
|
||||
bool IsClientAddressConnected(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);
|
||||
|
||||
|
||||
@@ -29,8 +29,6 @@
|
||||
* as that of the covered work. *
|
||||
*****************************************************************************/
|
||||
#include <playerdata.h>
|
||||
#include <ctime>
|
||||
#include <core/loghelper.h> // @TODO: remove in productive
|
||||
|
||||
using namespace std;
|
||||
|
||||
@@ -244,59 +242,3 @@ PlayerData::operator<(const PlayerData &other) const
|
||||
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;
|
||||
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;
|
||||
|
||||
private:
|
||||
@@ -141,8 +135,6 @@ private:
|
||||
bool m_isGameAdmin;
|
||||
boost::shared_ptr<AvatarFile> m_netAvatarFile;
|
||||
|
||||
std::vector<long> m_last_games;
|
||||
|
||||
mutable boost::mutex m_dataMutex;
|
||||
};
|
||||
|
||||
|
||||
+1476
-810
File diff suppressed because it is too large
Load Diff
+904
-843
File diff suppressed because it is too large
Load Diff
+37181
-26502
File diff suppressed because it is too large
Load Diff
+12909
-11296
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