Esempio n. 1
0
int freerds_icp_LogoffUser(FDSAPI_MSG_PACKET* msg, pbRPCPayload** pbresponse)
{
	rdsConnection* connection = NULL;
	FDSAPI_LOGOFF_USER_REQUEST* pRequest;
	FDSAPI_LOGOFF_USER_RESPONSE response;
	UINT32 type = FDSAPI_LOGOFF_USER_REQUEST_ID;

	pRequest = (FDSAPI_LOGOFF_USER_REQUEST*) calloc(1, sizeof(FDSAPI_LOGOFF_USER_REQUEST));

	if (!pRequest)
		return -1;

	freerds_rpc_msg_unpack(FDSAPI_REQUEST_ID(type), pRequest, msg->buffer, msg->length);
	CopyMemory(pRequest, msg, sizeof(FDSAPI_MSG_HEADER));

	response.msgType = FDSAPI_RESPONSE_ID(type);
	response.callId = pRequest->callId;

	connection = freerds_server_get_connection(g_Server, pRequest->ConnectionId);

	if (!connection)
	{
		response.status = 1;
		return -1;
	}

	MessageQueue_Post(connection->notifications, (void*) connection, pRequest->msgType, (void*) pRequest, NULL);
	*pbresponse = NULL;

	return PBRPC_SUCCESS;
}
Esempio n. 2
0
	int CallInPing::decodeRequest()
	{
		BYTE* buffer;
		UINT32 length;

		buffer = (BYTE*) mEncodedRequest.data();
		length = (UINT32) mEncodedRequest.size();

		freerds_rpc_msg_unpack(m_RequestId, &m_Request, buffer, length);

		freerds_rpc_msg_free(m_RequestId, &m_Request);

		WLog_Print(logger_CallInPing, WLOG_DEBUG,
			"request: heartbeatId=%lu",
			m_Request.HeartbeatId);

		return 0;
	};
Esempio n. 3
0
	int CallInLogOffUserSession::decodeRequest()
	{
		BYTE* buffer;
		UINT32 length;

		buffer = (BYTE*) mEncodedRequest.data();
		length = (UINT32) mEncodedRequest.size();

		freerds_rpc_msg_unpack(m_RequestId, &m_Request, buffer, length);

		mConnectionId = m_Request.ConnectionId;

		freerds_rpc_msg_free(m_RequestId, &m_Request);

		WLog_Print(logger_CallInLogOffUserSession, WLOG_DEBUG,
			"request: connectionId=%lu", mConnectionId);

		return 0;
	};
Esempio n. 4
0
int freerds_icp_Heartbeat(FDSAPI_MSG_PACKET* msg, pbRPCPayload** pbresponse)
{
	pbRPCPayload* payload;
	FDSAPI_HEARTBEAT_REQUEST request;
	FDSAPI_HEARTBEAT_RESPONSE response;
	UINT32 type = FDSAPI_HEARTBEAT_REQUEST_ID;

	freerds_rpc_msg_unpack(FDSAPI_REQUEST_ID(type), &request, msg->buffer, msg->length);
	CopyMemory(&request, msg, sizeof(FDSAPI_MSG_HEADER));

	response.msgType = FDSAPI_RESPONSE_ID(type);
	response.callId = request.callId;
	response.HeartbeatId = request.HeartbeatId;

	payload = pbrpc_payload_new();
	payload->s = freerds_rpc_msg_pack(FDSAPI_RESPONSE_ID(type), &response, NULL);
	payload->buffer = Stream_Buffer(payload->s);
	payload->length = Stream_Length(payload->s);
	*pbresponse = payload;

	return PBRPC_SUCCESS;
}
Esempio n. 5
0
	int CallInAuthenticateUser::decodeRequest()
	{
		BYTE* buffer;
		UINT32 length;

		buffer = (BYTE*) mEncodedRequest.data();
		length = (UINT32) mEncodedRequest.size();

		freerds_rpc_msg_unpack(m_RequestId, &m_Request, buffer, length);

		mSessionId = m_Request.SessionId;
		mUserName = m_Request.User ? m_Request.User : "";
		mDomainName = m_Request.Domain ? m_Request.Domain : "";
		mPassword = m_Request.Password ? m_Request.Password : "";

		freerds_rpc_msg_free(m_RequestId, &m_Request);

		WLog_Print(logger_CallInAuthenticateUser, WLOG_DEBUG,
			"request: sessionId=%lu, userName=%s, domainName=%s",
			mSessionId, mUserName.c_str(), mDomainName.c_str());

		return 0;
	};
Esempio n. 6
0
int freerds_icp_ChannelEndpointOpen(FDSAPI_MSG_PACKET* msg, pbRPCPayload** pbresponse)
{
	rdsConnection* connection = NULL;
	FDSAPI_CHANNEL_ENDPOINT_OPEN_REQUEST* pRequest;
	UINT32 type = FDSAPI_CHANNEL_ENDPOINT_OPEN_REQUEST_ID;

	pRequest = (FDSAPI_CHANNEL_ENDPOINT_OPEN_REQUEST*) calloc(1, sizeof(FDSAPI_CHANNEL_ENDPOINT_OPEN_REQUEST));

	if (!pRequest)
		return -1;

	freerds_rpc_msg_unpack(FDSAPI_REQUEST_ID(type), pRequest, msg->buffer, msg->length);
	CopyMemory(pRequest, msg, sizeof(FDSAPI_MSG_HEADER));

	connection = freerds_server_get_connection(g_Server, pRequest->ConnectionId);

	if (!connection)
		return -1;

	MessageQueue_Post(connection->notifications, (void*) connection, pRequest->msgType, (void*) pRequest, NULL);
	*pbresponse = NULL;

	return 0;
}
Esempio n. 7
0
int freerds_icp_LogonUser(FDSAPI_LOGON_USER_REQUEST* pRequest, FDSAPI_LOGON_USER_RESPONSE* pResponse)
{
	int status;
	pbRPCPayload pbrequest;
	pbRPCPayload* pbresponse = NULL;
	UINT32 type = FDSAPI_LOGON_USER_REQUEST_ID;

	pbrequest.s = freerds_rpc_msg_pack(type, pRequest, NULL);
	pbrequest.buffer = Stream_Buffer(pbrequest.s);
	pbrequest.length = Stream_Length(pbrequest.s);

	status = pbrpc_call_method(g_Server, FDSAPI_REQUEST_ID(type), &pbrequest, &pbresponse);

	Stream_Free(pbrequest.s, TRUE);

	if (status != 0)
		return status;

	freerds_rpc_msg_unpack(FDSAPI_RESPONSE_ID(type), pResponse, pbresponse->buffer, pbresponse->length);

	pbrpc_free_payload(pbresponse);

	return PBRPC_SUCCESS;
}