Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
d4aaf9ff
Commit
d4aaf9ff
authored
Jan 02, 2012
by
Max-Wilhelm Bruker
Browse files
minor cleanups, server-side deck storage code is working again
parent
eabe3511
Changes
19
Hide whitespace changes
Inline
Side-by-side
cockatrice/cockatrice.pro
View file @
d4aaf9ff
...
...
@@ -90,10 +90,10 @@ HEADERS += src/abstractcounter.h \
..
/
common
/
color
.
h
\
..
/
common
/
serializable_item
.
h
\
..
/
common
/
decklist
.
h
\
..
/
common
/
protocol
.
h
\
..
/
common
/
rng_abstract
.
h
\
..
/
common
/
rng_sfmt
.
h
\
..
/
common
/
server
.
h
\
..
/
common
/
server_response_containers
.
h
\
..
/
common
/
server_arrow
.
h
\
..
/
common
/
server_card
.
h
\
..
/
common
/
server_cardzone
.
h
\
...
...
@@ -174,11 +174,11 @@ SOURCES += src/abstractcounter.cpp \
..
/
common
/
get_pb_extension
.
cpp
\
..
/
common
/
serializable_item
.
cpp
\
..
/
common
/
decklist
.
cpp
\
..
/
common
/
protocol
.
cpp
\
..
/
common
/
rng_abstract
.
cpp
\
..
/
common
/
rng_sfmt
.
cpp
\
..
/
common
/
sfmt
/
SFMT
.
c
\
..
/
common
/
server
.
cpp
\
..
/
common
/
server_response_containers
.
cpp
\
..
/
common
/
server_card
.
cpp
\
..
/
common
/
server_cardzone
.
cpp
\
..
/
common
/
server_room
.
cpp
\
...
...
cockatrice/src/abstractclient.cpp
View file @
d4aaf9ff
#include
"abstractclient.h"
#include
"protocol.h"
#include
"pending_command.h"
#include
"pb/commands.pb.h"
#include
"pb/server_message.pb.h"
#include
"pb/event_server_identification.pb.h"
#include
"pb/event_server_message.pb.h"
#include
"pb/event_server_shutdown.pb.h"
...
...
cockatrice/src/localclient.cpp
View file @
d4aaf9ff
#include
"localclient.h"
#include
"localserverinterface.h"
#include
"protocol.h"
#include
"pb/session_commands.pb.h"
...
...
cockatrice/src/remoteclient.cpp
View file @
d4aaf9ff
#include
<QTimer>
#include
"remoteclient.h"
#include
"protocol.h"
#include
"pending_command.h"
#include
"pb/commands.pb.h"
#include
"pb/session_commands.pb.h"
#include
"pb/response_login.pb.h"
#include
"pb/server_message.pb.h"
#include
"pb/event_server_identification.pb.h"
static
const
unsigned
int
protocolVersion
=
13
;
RemoteClient
::
RemoteClient
(
QObject
*
parent
)
:
AbstractClient
(
parent
),
timeRunning
(
0
),
lastDataReceived
(
0
),
messageInProgress
(
false
),
messageLength
(
0
)
...
...
@@ -41,8 +44,13 @@ void RemoteClient::slotConnected()
setStatus
(
StatusAwaitingWelcome
);
}
void
RemoteClient
::
processServerIdentificationEvent
(
const
Event_ServerIdentification
&
/*
event
*/
)
void
RemoteClient
::
processServerIdentificationEvent
(
const
Event_ServerIdentification
&
event
)
{
if
(
event
.
protocol_version
()
!=
protocolVersion
)
{
emit
protocolVersionMismatch
(
protocolVersion
,
event
.
protocol_version
());
setStatus
(
StatusDisconnected
);
return
;
}
setStatus
(
StatusLoggingIn
);
Command_Login
cmdLogin
;
...
...
cockatrice/src/tab_server.cpp
View file @
d4aaf9ff
...
...
@@ -11,7 +11,6 @@
#include
<QInputDialog>
#include
"tab_server.h"
#include
"abstractclient.h"
#include
"protocol.h"
#include
"userlist.h"
#include
"userinfobox.h"
#include
<QDebug>
...
...
cockatrice/src/tab_userlists.cpp
View file @
d4aaf9ff
...
...
@@ -31,8 +31,8 @@ TabUserLists::TabUserLists(TabSupervisor *_tabSupervisor, AbstractClient *_clien
connect
(
client
,
SIGNAL
(
userLeftEventReceived
(
const
Event_UserLeft
&
)),
this
,
SLOT
(
processUserLeftEvent
(
const
Event_UserLeft
&
)));
connect
(
client
,
SIGNAL
(
buddyListReceived
(
const
QList
<
ServerInfo_User
>
&
)),
this
,
SLOT
(
buddyListReceived
(
const
QList
<
ServerInfo_User
>
&
)));
connect
(
client
,
SIGNAL
(
ignoreListReceived
(
const
QList
<
ServerInfo_User
>
&
)),
this
,
SLOT
(
ignoreListReceived
(
const
QList
<
ServerInfo_User
>
&
)));
connect
(
client
,
SIGNAL
(
addToListEventReceived
(
const
Event_AddToList
*
)),
this
,
SLOT
(
processAddToListEvent
(
const
Event_AddToList
&
)));
connect
(
client
,
SIGNAL
(
removeFromListEventReceived
(
const
Event_RemoveFromList
*
)),
this
,
SLOT
(
processRemoveFromListEvent
(
const
Event_RemoveFromList
&
)));
connect
(
client
,
SIGNAL
(
addToListEventReceived
(
const
Event_AddToList
&
)),
this
,
SLOT
(
processAddToListEvent
(
const
Event_AddToList
&
)));
connect
(
client
,
SIGNAL
(
removeFromListEventReceived
(
const
Event_RemoveFromList
&
)),
this
,
SLOT
(
processRemoveFromListEvent
(
const
Event_RemoveFromList
&
)));
PendingCommand
*
pend
=
client
->
prepareSessionCommand
(
Command_ListUsers
());
connect
(
pend
,
SIGNAL
(
finished
(
const
Response
&
)),
this
,
SLOT
(
processListUsersResponse
(
const
Response
&
)));
...
...
common/.directory
View file @
d4aaf9ff
[Dolphin]
Timestamp=2011,1
2,31,17,13,
2
Timestamp=201
2,
1,1
,23,11,3
2
Version=2
[Settings]
ShowDotFiles=true
common/pb/proto/serverinfo_user.proto
View file @
d4aaf9ff
...
...
@@ -15,7 +15,7 @@ message ServerInfo_User {
optional
uint32
user_level
=
2
;
optional
string
address
=
3
;
optional
string
real_name
=
4
;
optional
Gender
gender
=
5
;
optional
Gender
gender
=
5
[
default
=
GenderUnknown
]
;
optional
string
country
=
6
;
optional
bytes
avatar_bmp
=
7
;
}
common/server_game.cpp
View file @
d4aaf9ff
...
...
@@ -39,7 +39,6 @@
#include
"pb/event_set_active_phase.pb.h"
#include
"pb/serverinfo_playerping.pb.h"
#include
<google/protobuf/descriptor.h>
#include
"protocol.h"
#include
<QTimer>
#include
<QDebug>
...
...
common/server_game.h
View file @
d4aaf9ff
...
...
@@ -25,7 +25,7 @@
#include
<QObject>
#include
<QMutex>
#include
"server_player.h"
#include
"
protocol
.h"
#include
"
server_response_containers
.h"
#include
"pb/response.pb.h"
#include
"pb/serverinfo_player.pb.h"
#include
"pb/serverinfo_game.pb.h"
...
...
common/server_player.cpp
View file @
d4aaf9ff
...
...
@@ -5,7 +5,6 @@
#include
"server_cardzone.h"
#include
"server_game.h"
#include
"server_protocolhandler.h"
#include
"protocol.h"
#include
"decklist.h"
#include
"pb/response.pb.h"
#include
"pb/command_move_card.pb.h"
...
...
common/server_protocolhandler.cpp
View file @
d4aaf9ff
#include
<QDebug>
#include
"rng_abstract.h"
#include
"server_protocolhandler.h"
#include
"protocol.h"
#include
"server_room.h"
#include
"server_card.h"
#include
"server_arrow.h"
...
...
common/server_protocolhandler.h
View file @
d4aaf9ff
...
...
@@ -4,7 +4,6 @@
#include
<QObject>
#include
<QPair>
#include
"server.h"
#include
"protocol.h"
#include
"pb/response.pb.h"
#include
"pb/server_message.pb.h"
...
...
@@ -13,6 +12,7 @@ class Server_Card;
class
ServerInfo_User
;
class
Server_Room
;
class
QTimer
;
class
DeckList
;
class
Message
;
class
ServerMessage
;
...
...
@@ -21,6 +21,8 @@ class Response;
class
SessionEvent
;
class
GameEventContainer
;
class
RoomEvent
;
class
GameEventStorage
;
class
ResponseContainer
;
class
CommandContainer
;
class
Command_Ping
;
...
...
common/
protocol
.cpp
→
common/
server_response_containers
.cpp
View file @
d4aaf9ff
File moved
common/
protocol
.h
→
common/
server_response_containers
.h
View file @
d4aaf9ff
...
...
@@ -16,8 +16,6 @@ class DeckList;
class
GameEvent
;
class
GameEventContainer
;
class
GameEventContext
;
#include
<QDebug>
static
const
int
protocolVersion
=
13
;
class
GameEventStorageItem
{
public:
...
...
servatrice/servatrice.pro
View file @
d4aaf9ff
...
...
@@ -24,10 +24,10 @@ HEADERS += src/main.h \
..
/
common
/
color
.
h
\
..
/
common
/
serializable_item
.
h
\
..
/
common
/
decklist
.
h
\
..
/
common
/
protocol
.
h
\
..
/
common
/
rng_abstract
.
h
\
..
/
common
/
rng_sfmt
.
h
\
..
/
common
/
server
.
h
\
..
/
common
/
server_response_containers
.
h
\
..
/
common
/
server_arrow
.
h
\
..
/
common
/
server_card
.
h
\
..
/
common
/
server_cardzone
.
h
\
...
...
@@ -47,11 +47,11 @@ SOURCES += src/main.cpp \
src
/
passwordhasher
.
cpp
\
..
/
common
/
serializable_item
.
cpp
\
..
/
common
/
decklist
.
cpp
\
..
/
common
/
protocol
.
cpp
\
..
/
common
/
rng_abstract
.
cpp
\
..
/
common
/
rng_sfmt
.
cpp
\
..
/
common
/
sfmt
/
SFMT
.
c
\
..
/
common
/
server
.
cpp
\
..
/
common
/
server_response_containers
.
cpp
\
..
/
common
/
server_card
.
cpp
\
..
/
common
/
server_cardzone
.
cpp
\
..
/
common
/
server_room
.
cpp
\
...
...
servatrice/src/servatrice.cpp
View file @
d4aaf9ff
...
...
@@ -25,7 +25,6 @@
#include
"server_room.h"
#include
"serversocketinterface.h"
#include
"serversocketthread.h"
#include
"protocol.h"
#include
"server_logger.h"
#include
"main.h"
#include
"passwordhasher.h"
...
...
@@ -298,36 +297,38 @@ bool Servatrice::isInIgnoreList(const QString &whoseList, const QString &who)
ServerInfo_User
Servatrice
::
evalUserQueryResult
(
const
QSqlQuery
&
query
,
bool
complete
)
{
QString
name
=
query
.
value
(
0
).
toString
();
int
is_admin
=
query
.
value
(
1
).
toInt
();
QString
realName
=
query
.
value
(
2
).
toString
();
QString
genderStr
=
query
.
value
(
3
).
toString
();
QString
country
=
query
.
value
(
4
).
toString
();
QByteArray
avatarBmp
;
if
(
complete
)
avatarBmp
=
query
.
value
(
5
).
toByteArray
();
ServerInfo_User
::
Gender
gender
;
ServerInfo_User
result
;
result
.
set_name
(
query
.
value
(
0
).
toString
().
toStdString
());
const
QString
country
=
query
.
value
(
4
).
toString
();
if
(
!
country
.
isEmpty
())
result
.
set_country
(
country
.
toStdString
());
if
(
complete
)
{
const
QByteArray
avatarBmp
=
query
.
value
(
5
).
toByteArray
();
if
(
avatarBmp
.
size
())
result
.
set_avatar_bmp
(
avatarBmp
.
data
(),
avatarBmp
.
size
());
}
const
QString
genderStr
=
query
.
value
(
3
).
toString
();
if
(
genderStr
==
"m"
)
gender
=
ServerInfo_User
::
Male
;
result
.
set_
gender
(
ServerInfo_User
::
Male
)
;
else
if
(
genderStr
==
"f"
)
gender
=
ServerInfo_User
::
Female
;
else
gender
=
ServerInfo_User
::
GenderUnknown
;
result
.
set_gender
(
ServerInfo_User
::
Female
);
const
int
is_admin
=
query
.
value
(
1
).
toInt
();
int
userLevel
=
ServerInfo_User
::
IsUser
|
ServerInfo_User
::
IsRegistered
;
if
(
is_admin
==
1
)
userLevel
|=
ServerInfo_User
::
IsAdmin
|
ServerInfo_User
::
IsModerator
;
else
if
(
is_admin
==
2
)
userLevel
|=
ServerInfo_User
::
IsModerator
;
ServerInfo_User
result
;
result
.
set_name
(
name
.
toStdString
());
result
.
set_user_level
(
userLevel
);
result
.
set_real_name
(
realName
.
toStdString
());
result
.
set_gender
(
gender
);
result
.
set_country
(
country
.
toStdString
());
result
.
set_avatar_bmp
(
avatarBmp
.
data
(),
avatarBmp
.
size
());
const
QString
realName
=
query
.
value
(
2
).
toString
();
if
(
!
realName
.
isEmpty
())
result
.
set_real_name
(
realName
.
toStdString
());
return
result
;
}
...
...
servatrice/src/serversocketinterface.cpp
View file @
d4aaf9ff
...
...
@@ -23,12 +23,11 @@
#include
<QDebug>
#include
"serversocketinterface.h"
#include
"servatrice.h"
#include
"protocol.h"
#include
"decklist.h"
#include
"server_player.h"
#include
"main.h"
#include
"server_logger.h"
#include
"server_response_containers.h"
#include
"pb/commands.pb.h"
#include
"pb/command_deck_upload.pb.h"
#include
"pb/command_deck_download.pb.h"
...
...
@@ -40,12 +39,17 @@
#include
"pb/event_server_identification.pb.h"
#include
"pb/event_add_to_list.pb.h"
#include
"pb/event_remove_from_list.pb.h"
#include
"pb/response_deck_list.pb.h"
#include
"pb/response_deck_download.pb.h"
#include
"pb/response_deck_upload.pb.h"
#include
"pb/serverinfo_user.pb.h"
#include
"pb/serverinfo_deckstorage.pb.h"
#include
<string>
#include
<iostream>
static
const
int
protocolVersion
=
13
;
ServerSocketInterface
::
ServerSocketInterface
(
Servatrice
*
_server
,
QTcpSocket
*
_socket
,
QObject
*
parent
)
:
Server_ProtocolHandler
(
_server
,
parent
),
servatrice
(
_server
),
socket
(
_socket
),
messageInProgress
(
false
)
{
...
...
@@ -260,38 +264,44 @@ int ServerSocketInterface::getDeckPathId(const QString &path)
{
return
getDeckPathId
(
0
,
path
.
split
(
"/"
));
}
/*
bool ServerSocketInterface::deckListHelper(
DeckList_Directory
*folder)
bool
ServerSocketInterface
::
deckListHelper
(
int
folderId
,
ServerInfo_DeckStorage_Folder
*
folder
)
{
QMutexLocker
locker
(
&
servatrice
->
dbMutex
);
QSqlQuery
query
;
query
.
prepare
(
"select id, name from "
+
servatrice
->
getDbPrefix
()
+
"_decklist_folders where id_parent = :id_parent and user = :user"
);
query.bindValue(":id_parent", folder
->getId()
);
query.bindValue(":user", userInfo->
getN
ame());
query
.
bindValue
(
":id_parent"
,
folder
Id
);
query
.
bindValue
(
":user"
,
QString
::
fromStdString
(
userInfo
->
n
ame
())
)
;
if
(
!
servatrice
->
execSqlQuery
(
query
))
return
false
;
while
(
query
.
next
())
{
DeckList_Directory *newFolder = new DeckList_Directory(query.value(1).toString(), query.value(0).toInt());
folder->appendItem(newFolder);
if (!deckListHelper(newFolder))
ServerInfo_DeckStorage_TreeItem
*
newItem
=
folder
->
add_items
();
newItem
->
set_id
(
query
.
value
(
0
).
toInt
());
newItem
->
set_name
(
query
.
value
(
1
).
toString
().
toStdString
());
if
(
!
deckListHelper
(
newItem
->
id
(),
newItem
->
mutable_folder
()))
return
false
;
}
query
.
prepare
(
"select id, name, upload_time from "
+
servatrice
->
getDbPrefix
()
+
"_decklist_files where id_folder = :id_folder and user = :user"
);
query.bindValue(":id_folder", folder
->getId()
);
query.bindValue(":user", userInfo->
getN
ame());
query
.
bindValue
(
":id_folder"
,
folder
Id
);
query
.
bindValue
(
":user"
,
QString
::
fromStdString
(
userInfo
->
n
ame
())
)
;
if
(
!
servatrice
->
execSqlQuery
(
query
))
return
false
;
while
(
query
.
next
())
{
DeckList_File *newFile = new DeckList_File(query.value(1).toString(), query.value(0).toInt(), query.value(2).toDateTime());
folder->appendItem(newFile);
ServerInfo_DeckStorage_TreeItem
*
newItem
=
folder
->
add_items
();
newItem
->
set_id
(
query
.
value
(
0
).
toInt
());
newItem
->
set_name
(
query
.
value
(
1
).
toString
().
toStdString
());
ServerInfo_DeckStorage_File
*
newFile
=
newItem
->
mutable_file
();
newFile
->
set_creation_time
(
query
.
value
(
2
).
toDateTime
().
toMSecsSinceEpoch
());
}
return
true
;
}
*/
// CHECK AUTHENTICATION!
// Also check for every function that data belonging to other users cannot be accessed.
...
...
@@ -302,17 +312,14 @@ Response::ResponseCode ServerSocketInterface::cmdDeckList(const Command_DeckList
servatrice
->
checkSql
();
/* DeckList_Directory *root = new DeckList_Directory(QString());
QSqlQuery query;
if (!deckListHelper(root))
Response_DeckList
*
re
=
new
Response_DeckList
;
ServerInfo_DeckStorage_Folder
*
root
=
re
->
mutable_root
();
if
(
!
deckListHelper
(
0
,
root
))
return
Response
::
RespContextError
;
ProtocolResponse *resp = new Response_DeckList(-1, RespOk, root);
if (getCompressionSupport())
resp->setCompressed(true);
bla->setResponse(resp);
*/
return
Response
::
RespNothing
;
rc
.
setResponseExtension
(
re
);
return
Response
::
RespOk
;
}
Response
::
ResponseCode
ServerSocketInterface
::
cmdDeckNewDir
(
const
Command_DeckNewDir
&
cmd
,
ResponseContainer
&
/*rc*/
)
...
...
@@ -426,8 +433,14 @@ Response::ResponseCode ServerSocketInterface::cmdDeckUpload(const Command_DeckUp
query
.
bindValue
(
":content"
,
deckStr
);
servatrice
->
execSqlQuery
(
query
);
// bla->setResponse(new Response_DeckUpload(-1, RespOk, new DeckList_File(deckName, query.lastInsertId().toInt(), QDateTime::currentDateTime())));
return
Response
::
RespNothing
;
Response_DeckUpload
*
re
=
new
Response_DeckUpload
;
ServerInfo_DeckStorage_TreeItem
*
fileInfo
=
re
->
mutable_new_file
();
fileInfo
->
set_id
(
query
.
lastInsertId
().
toInt
());
fileInfo
->
set_name
(
deckName
.
toStdString
());
fileInfo
->
mutable_file
()
->
set_creation_time
(
QDateTime
::
currentMSecsSinceEpoch
());
rc
.
setResponseExtension
(
re
);
return
Response
::
RespOk
;
}
DeckList
*
ServerSocketInterface
::
getDeckFromDatabase
(
int
deckId
)
...
...
servatrice/src/serversocketinterface.h
View file @
d4aaf9ff
...
...
@@ -28,6 +28,7 @@
class
QTcpSocket
;
class
Servatrice
;
class
DeckList
;
class
ServerInfo_DeckStorage_Folder
;
class
ServerSocketInterface
:
public
Server_ProtocolHandler
{
...
...
@@ -51,7 +52,7 @@ private:
Response
::
ResponseCode
cmdRemoveFromList
(
const
Command_RemoveFromList
&
cmd
,
ResponseContainer
&
rc
);
int
getDeckPathId
(
int
basePathId
,
QStringList
path
);
int
getDeckPathId
(
const
QString
&
path
);
//
bool deckListHelper(
DeckList_Directory
*folder);
bool
deckListHelper
(
int
folderId
,
ServerInfo_DeckStorage_Folder
*
folder
);
Response
::
ResponseCode
cmdDeckList
(
const
Command_DeckList
&
cmd
,
ResponseContainer
&
rc
);
Response
::
ResponseCode
cmdDeckNewDir
(
const
Command_DeckNewDir
&
cmd
,
ResponseContainer
&
rc
);
void
deckDelDirHelper
(
int
basePathId
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment