Enable validation according to WebSocket resource and origin.

This commit is contained in:
lotodore
2013-10-05 16:42:05 +02:00
parent 2c5dcc2ba0
commit a6f3536290
8 changed files with 33 additions and 13 deletions
+12 -4
View File
@@ -36,8 +36,10 @@
using namespace std;
ServerAcceptWebHelper::ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr<boost::asio::io_service> ioService)
: m_ioService(ioService), m_serverCallback(serverCallback)
ServerAcceptWebHelper::ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr<boost::asio::io_service> ioService,
const string &webSocketResource, const string &webSocketOrigin)
: m_ioService(ioService), m_serverCallback(serverCallback),
m_webSocketResource(webSocketResource), m_webSocketOrigin(webSocketOrigin)
{
m_webSocketServer.reset(new server);
}
@@ -71,9 +73,15 @@ ServerAcceptWebHelper::Close()
}
bool
ServerAcceptWebHelper::validate(websocketpp::connection_hdl /*hdl*/)
ServerAcceptWebHelper::validate(websocketpp::connection_hdl hdl)
{
return true;
bool retVal = false;
server::connection_ptr con = m_webSocketServer->get_con_from_hdl(hdl);
if ((m_webSocketResource.empty() || con->get_resource() == m_webSocketResource)
&& (m_webSocketOrigin.empty() || (con->get_origin() != "null" && con->get_origin() == m_webSocketOrigin))) {
retVal = true;
}
return retVal;
}
void