mirror of https://github.com/FreeRDP/FreeRDP
libfreerdp-core: started logging packets to pcap file
This commit is contained in:
parent
684db03578
commit
a3f0f4c8dc
|
@ -497,6 +497,11 @@ int transport_read(rdpTransport* transport, wStream* s)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (streamPosition + status >= pduLength)
|
||||
{
|
||||
WLog_Packet(transport->log, WLOG_TRACE, Stream_Buffer(s), pduLength, 0);
|
||||
}
|
||||
|
||||
return transport_status;
|
||||
}
|
||||
|
||||
|
@ -532,6 +537,11 @@ int transport_write(rdpTransport* transport, wStream* s)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (length > 0)
|
||||
{
|
||||
WLog_Packet(transport->log, WLOG_TRACE, Stream_Buffer(s), length, 1);
|
||||
}
|
||||
|
||||
while (length > 0)
|
||||
{
|
||||
if (transport->layer == TRANSPORT_LAYER_TLS)
|
||||
|
@ -841,10 +851,13 @@ rdpTransport* transport_new(rdpSettings* settings)
|
|||
|
||||
transport = (rdpTransport*) malloc(sizeof(rdpTransport));
|
||||
|
||||
if (transport != NULL)
|
||||
if (transport)
|
||||
{
|
||||
ZeroMemory(transport, sizeof(rdpTransport));
|
||||
|
||||
WLog_Init();
|
||||
transport->log = WLog_Get("com.freerdp.core.transport");
|
||||
|
||||
transport->TcpIn = tcp_new(settings);
|
||||
|
||||
transport->settings = settings;
|
||||
|
@ -873,9 +886,9 @@ rdpTransport* transport_new(rdpSettings* settings)
|
|||
|
||||
void transport_free(rdpTransport* transport)
|
||||
{
|
||||
if (transport != NULL)
|
||||
if (transport)
|
||||
{
|
||||
SetEvent(transport->stopEvent);
|
||||
SetEvent(transport->stopEvent);
|
||||
|
||||
if (transport->ReceiveBuffer)
|
||||
Stream_Release(transport->ReceiveBuffer);
|
||||
|
|
|
@ -36,6 +36,7 @@ typedef struct rdp_transport rdpTransport;
|
|||
#include "gateway/tsg.h"
|
||||
|
||||
#include <winpr/sspi.h>
|
||||
#include <winpr/wlog.h>
|
||||
#include <winpr/synch.h>
|
||||
#include <winpr/thread.h>
|
||||
#include <winpr/stream.h>
|
||||
|
@ -74,6 +75,7 @@ struct rdp_transport
|
|||
BOOL async;
|
||||
HANDLE ReadMutex;
|
||||
HANDLE WriteMutex;
|
||||
wLog* log;
|
||||
};
|
||||
|
||||
wStream* transport_send_stream_init(rdpTransport* transport, int size);
|
||||
|
|
|
@ -1557,10 +1557,7 @@ rdpUpdate* update_new(rdpRdp* rdp)
|
|||
ZeroMemory(update, sizeof(rdpUpdate));
|
||||
|
||||
WLog_Init();
|
||||
|
||||
update->log = WLog_Get("com.freerdp.update");
|
||||
WLog_OpenAppender(update->log);
|
||||
//WLog_SetLogLevel(update->log, WLOG_DEBUG);
|
||||
update->log = WLog_Get("com.freerdp.core.update");
|
||||
|
||||
update->bitmap_update.count = 64;
|
||||
update->bitmap_update.rectangles = (BITMAP_DATA*) malloc(sizeof(BITMAP_DATA) * update->bitmap_update.count);
|
||||
|
|
|
@ -84,6 +84,12 @@ struct _wLogMessage
|
|||
int ImageWidth;
|
||||
int ImageHeight;
|
||||
int ImageBpp;
|
||||
|
||||
/* Packet Message */
|
||||
|
||||
void* PacketData;
|
||||
int PacketLength;
|
||||
DWORD PacketFlags;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -127,12 +127,13 @@ int WLog_ConsoleAppender_WritePacketMessage(wLog* log, wLogConsoleAppender* appe
|
|||
|
||||
if (!appender->PacketMessageContext)
|
||||
{
|
||||
FullFileName = WLog_Message_GetOutputFileName(PacketId, "pcap");
|
||||
FullFileName = WLog_Message_GetOutputFileName(-1, "pcap");
|
||||
appender->PacketMessageContext = (void*) Pcap_Open(FullFileName, TRUE);
|
||||
free(FullFileName);
|
||||
}
|
||||
|
||||
WLog_PacketMessage_Write((wPcap*) appender->PacketMessageContext, message->Data, message->Length, 0);
|
||||
WLog_PacketMessage_Write((wPcap*) appender->PacketMessageContext,
|
||||
message->PacketData, message->PacketLength, message->PacketFlags);
|
||||
|
||||
return PacketId;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,11 @@ char* WLog_Message_GetOutputFileName(int id, const char* ext)
|
|||
FilePath = GetKnownSubPath(KNOWN_PATH_TEMP, "wlog");
|
||||
|
||||
FileName = (char*) malloc(256);
|
||||
sprintf_s(FileName, 256, "%u-%d.%s", (unsigned int) ProcessId, id, ext);
|
||||
|
||||
if (id >= 0)
|
||||
sprintf_s(FileName, 256, "%u-%d.%s", (unsigned int) ProcessId, id, ext);
|
||||
else
|
||||
sprintf_s(FileName, 256, "%u.%s", (unsigned int) ProcessId, ext);
|
||||
|
||||
FullFileName = GetCombinedPath(FilePath, FileName);
|
||||
|
||||
|
|
|
@ -174,6 +174,13 @@ int WLog_PrintMessageVA(wLog* log, wLogMessage* message, va_list args)
|
|||
status = WLog_Write(log, message);
|
||||
}
|
||||
}
|
||||
else if (message->Type == WLOG_MESSAGE_DATA)
|
||||
{
|
||||
message->Data = va_arg(args, void*);
|
||||
message->Length = va_arg(args, int);
|
||||
|
||||
status = WLog_WriteData(log, message);
|
||||
}
|
||||
else if (message->Type == WLOG_MESSAGE_IMAGE)
|
||||
{
|
||||
message->ImageData = va_arg(args, void*);
|
||||
|
@ -183,12 +190,13 @@ int WLog_PrintMessageVA(wLog* log, wLogMessage* message, va_list args)
|
|||
|
||||
status = WLog_WriteImage(log, message);
|
||||
}
|
||||
else if (message->Type == WLOG_MESSAGE_DATA)
|
||||
else if (message->Type == WLOG_MESSAGE_PACKET)
|
||||
{
|
||||
message->Data = va_arg(args, void*);
|
||||
message->Length = va_arg(args, int);
|
||||
message->PacketData = va_arg(args, void*);
|
||||
message->PacketLength = va_arg(args, int);
|
||||
message->PacketFlags = va_arg(args, int);
|
||||
|
||||
status = WLog_WriteData(log, message);
|
||||
status = WLog_WritePacket(log, message);
|
||||
}
|
||||
|
||||
return status;
|
||||
|
|
Loading…
Reference in New Issue