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
632e9bbf
Commit
632e9bbf
authored
Nov 01, 2011
by
Max-Wilhelm Bruker
Browse files
improved banning and deck hashing
parent
9fe8f6fc
Changes
22
Hide whitespace changes
Inline
Side-by-side
servatrice/src/serversocketinterface.cpp
View file @
632e9bbf
...
...
@@ -464,50 +464,43 @@ ResponseCode ServerSocketInterface::cmdDeckDownload(Command_DeckDownload *cmd, C
// MODERATOR FUNCTIONS.
// May be called by admins and moderators. Permission is checked by the calling function.
ResponseCode
ServerSocketInterface
::
cmd
UpdateServerMessage
(
Command_UpdateServerMessage
*
/
*cmd
*/
,
CommandContainer
*
/*cont*/
)
ResponseCode
ServerSocketInterface
::
cmd
BanFromServer
(
Command_BanFromServer
*
cmd
,
CommandContainer
*
/*cont*/
)
{
servatrice
->
updateLoginMessage
();
QString
userName
=
cmd
->
getUserName
();
QString
address
=
cmd
->
getAddress
();
int
minutes
=
cmd
->
getMinutes
();
servatrice
->
dbMutex
.
lock
();
QSqlQuery
query
;
query
.
prepare
(
"insert into "
+
servatrice
->
getDbPrefix
()
+
"_bans (user_name, ip_address, id_admin, time_from, minutes, reason) values(:user_name, :ip_address, :id_admin, NOW(), :minutes, :reason)"
);
query
.
bindValue
(
":user_name"
,
userName
);
query
.
bindValue
(
":ip_address"
,
address
);
query
.
bindValue
(
":id_admin"
,
getUserIdInDB
(
userInfo
->
getName
()));
query
.
bindValue
(
":minutes"
,
minutes
);
query
.
bindValue
(
":reason"
,
cmd
->
getReason
()
+
"
\n
"
);
servatrice
->
execSqlQuery
(
query
);
servatrice
->
dbMutex
.
unlock
();
ServerSocketInterface
*
user
=
static_cast
<
ServerSocketInterface
*>
(
server
->
getUsers
().
value
(
userName
));
if
(
user
)
{
user
->
sendProtocolItem
(
new
Event_ConnectionClosed
(
"banned"
));
user
->
deleteLater
();
}
return
RespOk
;
}
// ADMIN FUNCTIONS.
// Permission is checked by the calling function.
ResponseCode
ServerSocketInterface
::
cmd
ShutdownServer
(
Command_ShutdownServer
*
cmd
,
CommandContainer
*
/*cont*/
)
ResponseCode
ServerSocketInterface
::
cmd
UpdateServerMessage
(
Command_UpdateServerMessage
*
/
*cmd
*/
,
CommandContainer
*
/*cont*/
)
{
servatrice
->
scheduleShutdown
(
cmd
->
getReason
(),
cmd
->
getMinutes
()
);
servatrice
->
updateLoginMessage
(
);
return
RespOk
;
}
ResponseCode
ServerSocketInterface
::
cmd
BanFrom
Server
(
Command_
BanFrom
Server
*
cmd
,
CommandContainer
*
/*cont*/
)
ResponseCode
ServerSocketInterface
::
cmd
Shutdown
Server
(
Command_
Shutdown
Server
*
cmd
,
CommandContainer
*
/*cont*/
)
{
QString
userName
=
cmd
->
getUserName
();
if
(
!
server
->
getUsers
().
contains
(
userName
))
return
RespNameNotFound
;
int
minutes
=
cmd
->
getMinutes
();
ServerSocketInterface
*
user
=
static_cast
<
ServerSocketInterface
*>
(
server
->
getUsers
().
value
(
userName
));
if
(
user
->
getUserInfo
()
->
getUserLevel
()
&
ServerInfo_User
::
IsRegistered
)
{
// Registered users can be banned by name.
QMutexLocker
locker
(
&
servatrice
->
dbMutex
);
QSqlQuery
query
;
query
.
prepare
(
"insert into "
+
servatrice
->
getDbPrefix
()
+
"_bans (id_user, id_admin, time_from, minutes, reason) values(:id_user, :id_admin, NOW(), :minutes, :reason)"
);
query
.
bindValue
(
":id_user"
,
getUserIdInDB
(
userName
));
query
.
bindValue
(
":id_admin"
,
getUserIdInDB
(
userInfo
->
getName
()));
query
.
bindValue
(
":minutes"
,
minutes
);
query
.
bindValue
(
":reason"
,
cmd
->
getReason
()
+
"
\n
"
);
servatrice
->
execSqlQuery
(
query
);
}
else
{
// Unregistered users must be banned by IP address.
// Indefinite address bans are not reasonable -> default to 30 minutes.
if
(
minutes
==
0
)
minutes
=
30
;
servatrice
->
addAddressBan
(
user
->
getPeerAddress
(),
minutes
);
}
user
->
sendProtocolItem
(
new
Event_ConnectionClosed
(
"banned"
));
user
->
deleteLater
();
servatrice
->
scheduleShutdown
(
cmd
->
getReason
(),
cmd
->
getMinutes
());
return
RespOk
;
}
servatrice/src/serversocketinterface.h
View file @
632e9bbf
...
...
@@ -76,6 +76,7 @@ public:
ServerSocketInterface
(
Servatrice
*
_server
,
QTcpSocket
*
_socket
,
QObject
*
parent
=
0
);
~
ServerSocketInterface
();
QHostAddress
getPeerAddress
()
const
{
return
socket
->
peerAddress
();
}
QString
getAddress
()
const
{
return
socket
->
peerAddress
().
toString
();
}
void
sendProtocolItem
(
ProtocolItem
*
item
,
bool
deleteItem
=
true
);
};
...
...
Prev
1
2
Next
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