bool accept_client(net::Socket remote, std::string origin) { /* printf("Verifying origin: \"%s\"\n" "Verifying remote: \"%s\"\n", origin.c_str(), remote.to_string().c_str()); */ (void) origin; return remote.address() == net::ip4::Addr(10,0,0,1); }
void Server::onSocketRecv(net::Socket& socket, const MutableBuffer& buffer, const net::Address& peerAddress) { TraceL << "Data received: " << buffer.size() << endl; stun::Message message; char* buf = bufferCast<char*>(buffer); std::size_t len = buffer.size(); std::size_t nread = 0; while (len > 0 && (nread = message.read(constBuffer(buf, len))) > 0) { if (message.classType() == stun::Message::Request || message.classType() == stun::Message::Indication) { Request request(message, socket.transport(), socket.address(), peerAddress); // TODO: Only authenticate stun::Message::Request types handleRequest(request, _observer.authenticateRequest(this, request)); } else { assert(0 && "unknown request type"); } buf += nread; len -= nread; } if (len == buffer.size()) WarnL << "Non STUN packet received" << std::endl; #if 0 stun::Message message; if (message.read(constBuffer(packet.data(), packet.size()))) { assert(message.state() == stun::Message::Request); Request request(*info->socket, message, info->socket->address(), info->peerAddress); AuthenticationState state = _observer.authenticateRequest(this, request); handleRequest(request, state); } else #endif } void Server::onTCPSocketClosed(net::Socket& socket) { TraceL << "TCP socket closed" << endl; releaseTCPSocket(&socket); }