From e826f0fed4ca9c31ff70ffba22b072fc58e4c306 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Fri, 14 Apr 2006 20:41:57 +0000 Subject: OrkAudio now reports local and remote IP addresses for each tape when the voip plugin is used. git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@217 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/AudioTape.cpp | 14 +++++++++ orkaudio/AudioTape.h | 6 +++- orkaudio/LogManager.cpp | 1 + orkaudio/LogManager.h | 1 + orkaudio/audiocaptureplugins/voip/RtpSession.cpp | 37 ++++++++++++++++++++++-- orkaudio/audiocaptureplugins/voip/RtpSession.h | 4 +++ orkaudio/messages/TapeMsg.cpp | 5 ++++ orkaudio/messages/TapeMsg.h | 8 +++++ orkbasecxx/AudioCapture.cpp | 24 +++++++++++++++ orkbasecxx/AudioCapture.h | 10 ++++++- 10 files changed, 106 insertions(+), 4 deletions(-) diff --git a/orkaudio/AudioTape.cpp b/orkaudio/AudioTape.cpp index 7efce4d..60580e3 100644 --- a/orkaudio/AudioTape.cpp +++ b/orkaudio/AudioTape.cpp @@ -38,6 +38,8 @@ void AudioTapeDescription::Define(Serializer* s) s->StringValue("localParty", m_localParty); s->StringValue("remoteParty", m_remoteParty); s->StringValue("localEntryPoint", m_localEntryPoint); + s->StringValue("localIp", m_localIp); + s->StringValue("remoteIp", m_remoteIp); } void AudioTapeDescription::Validate(){} @@ -182,6 +184,8 @@ void AudioTape::SetShouldStop() void AudioTape::AddCaptureEvent(CaptureEventRef eventRef, bool send) { + CStdString logMsg; + // Extract useful info from well known events switch(eventRef->m_type) { @@ -200,6 +204,8 @@ void AudioTape::AddCaptureEvent(CaptureEventRef eventRef, bool send) atd.m_localEntryPoint = m_localEntryPoint; atd.m_localParty = m_localParty; atd.m_remoteParty = m_remoteParty; + atd.m_localIp = m_localIp; + atd.m_remoteIp = m_remoteIp; CStdString description = atd.SerializeSingleLine(); LOG4CXX_INFO(LOG.tapelistLog, description); } @@ -216,6 +222,12 @@ void AudioTape::AddCaptureEvent(CaptureEventRef eventRef, bool send) case CaptureEvent::EtLocalEntryPoint: m_localEntryPoint = eventRef->m_value; break; + case CaptureEvent::EtLocalIp: + m_localIp = eventRef->m_value; + break; + case CaptureEvent::EtRemoteIp: + m_remoteIp = eventRef->m_value; + break; } // Store the capture event locally @@ -252,6 +264,8 @@ void AudioTape::GetMessage(MessageRef& msgRef) pTapeMsg->m_direction = CaptureEvent::DirectionToString(m_direction); pTapeMsg->m_duration = m_duration; pTapeMsg->m_timestamp = m_beginDate; + pTapeMsg->m_localIp = m_localIp; + pTapeMsg->m_remoteIp = m_remoteIp; } else { diff --git a/orkaudio/AudioTape.h b/orkaudio/AudioTape.h index adf9b85..8fd8e8f 100644 --- a/orkaudio/AudioTape.h +++ b/orkaudio/AudioTape.h @@ -41,7 +41,9 @@ public: CStdString m_remoteParty; CaptureEvent::DirectionEnum m_direction; time_t m_beginDate; - int m_duration; + int m_duration; + CStdString m_localIp; + CStdString m_remoteIp; }; class AudioTape @@ -102,6 +104,8 @@ public: time_t m_beginDate; time_t m_endDate; time_t m_duration; + CStdString m_localIp; + CStdString m_remoteIp; private: void GenerateFilePathAndIdentifier(); diff --git a/orkaudio/LogManager.cpp b/orkaudio/LogManager.cpp index 5773748..3092f85 100644 --- a/orkaudio/LogManager.cpp +++ b/orkaudio/LogManager.cpp @@ -48,6 +48,7 @@ void OrkLogManager::Initialize() reportingLog = Logger::getLogger("reporting"); configLog = Logger::getLogger("config"); tapelistLog = Logger::getLogger("tapelist"); + tapeLog = Logger::getLogger("tape"); } void OrkLogManager::Shutdown() diff --git a/orkaudio/LogManager.h b/orkaudio/LogManager.h index 2556147..70aadc1 100644 --- a/orkaudio/LogManager.h +++ b/orkaudio/LogManager.h @@ -35,6 +35,7 @@ public: LoggerPtr reportingLog; LoggerPtr configLog; LoggerPtr tapelistLog; + LoggerPtr tapeLog; }; typedef ACE_Singleton OrkLogManagerSingleton; diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp index 2e74786..fcf39e3 100644 --- a/orkaudio/audiocaptureplugins/voip/RtpSession.cpp +++ b/orkaudio/audiocaptureplugins/voip/RtpSession.cpp @@ -78,6 +78,8 @@ void RtpSession::ProcessMetadataSipIncoming() char szInviteeIp[16]; ACE_OS::inet_ntop(AF_INET, (void*)&m_inviteeIp, szInviteeIp, sizeof(szInviteeIp)); m_capturePort.Format("%s,%d", szInviteeIp, m_inviteeTcpPort); + m_localIp = m_inviteeIp; + m_remoteIp = m_invitorIp; } void RtpSession::ProcessMetadataSipOutgoing() @@ -88,6 +90,8 @@ void RtpSession::ProcessMetadataSipOutgoing() char szInvitorIp[16]; ACE_OS::inet_ntop(AF_INET, (void*)&m_invitorIp, szInvitorIp, sizeof(szInvitorIp)); m_capturePort.Format("%s,%d", szInvitorIp, m_invitorTcpPort); + m_localIp = m_invitorIp; + m_remoteIp = m_inviteeIp; } void RtpSession::ProcessMetadataRawRtp(RtpPacketInfoRef& rtpPacket) @@ -133,12 +137,17 @@ void RtpSession::ProcessMetadataRawRtp(RtpPacketInfoRef& rtpPacket) m_localParty = szSourceIp; m_remoteParty = szDestIp; m_capturePort.Format("%s,%d", szSourceIp, rtpPacket->m_sourcePort); + m_localIp = rtpPacket->m_sourceIp; + m_remoteIp = rtpPacket->m_destIp; } else { m_localParty = szDestIp; m_remoteParty = szSourceIp; m_capturePort.Format("%s,%d", szDestIp, rtpPacket->m_destPort); + m_localIp = rtpPacket->m_destIp; + m_remoteIp = rtpPacket->m_sourceIp; + } } @@ -211,13 +220,21 @@ void RtpSession::ProcessMetadataSkinny(RtpPacketInfoRef& rtpPacket) char szDestIp[16]; ACE_OS::inet_ntop(AF_INET, (void*)&rtpPacket->m_destIp, szDestIp, sizeof(szDestIp)); m_capturePort.Format("%s,%u", szDestIp, rtpPacket->m_destPort); + + m_localIp = rtpPacket->m_destIp; + m_remoteIp = rtpPacket->m_sourceIp; + } + else + { + m_localIp = rtpPacket->m_sourceIp; + m_remoteIp = rtpPacket->m_destIp; } } void RtpSession::ReportMetadata() { - // report Local party + // Report Local party CaptureEventRef event(new CaptureEvent()); event->m_type = CaptureEvent::EtLocalParty; event->m_value = m_localParty; @@ -229,11 +246,27 @@ void RtpSession::ReportMetadata() event->m_value = m_remoteParty; g_captureEventCallBack(event, m_capturePort); - // report direction + // Report direction event.reset(new CaptureEvent()); event->m_type = CaptureEvent::EtDirection; event->m_value = CaptureEvent::DirectionToString(m_direction); g_captureEventCallBack(event, m_capturePort); + + // Report Local IP address + char szLocalIp[16]; + ACE_OS::inet_ntop(AF_INET, (void*)&m_localIp, szLocalIp, sizeof(szLocalIp)); + event.reset(new CaptureEvent()); + event->m_type = CaptureEvent::EtLocalIp; + event->m_value = szLocalIp; + g_captureEventCallBack(event, m_capturePort); + + // Report Remote IP address + char szRemoteIp[16]; + ACE_OS::inet_ntop(AF_INET, (void*)&m_remoteIp, szRemoteIp, sizeof(szRemoteIp)); + event.reset(new CaptureEvent()); + event->m_type = CaptureEvent::EtRemoteIp; + event->m_value = szRemoteIp; + g_captureEventCallBack(event, m_capturePort); } diff --git a/orkaudio/audiocaptureplugins/voip/RtpSession.h b/orkaudio/audiocaptureplugins/voip/RtpSession.h index 6e9c739..dc1fcae 100644 --- a/orkaudio/audiocaptureplugins/voip/RtpSession.h +++ b/orkaudio/audiocaptureplugins/voip/RtpSession.h @@ -113,6 +113,10 @@ private: int m_invitorTcpPort; struct in_addr m_inviteeIp; int m_inviteeTcpPort; + struct in_addr m_localIp; + struct in_addr m_remoteIp; + //struct in_addr m_localMac; + //struct in_addr m_remoteMac; LoggerPtr m_log; CStdString m_capturePort; bool m_started; diff --git a/orkaudio/messages/TapeMsg.cpp b/orkaudio/messages/TapeMsg.cpp index 4f21703..b624d08 100644 --- a/orkaudio/messages/TapeMsg.cpp +++ b/orkaudio/messages/TapeMsg.cpp @@ -41,6 +41,11 @@ void TapeMsg::Define(Serializer* s) s->StringValue(DIRECTION_PARAM, m_direction); s->IntValue(DURATION_PARAM, m_duration); s->StringValue(SERVICE_PARAM, m_serviceName); + + s->StringValue(LOCAL_IP_PARAM, m_localIp); + s->StringValue(REMOTE_IP_PARAM, m_remoteIp); + //s->StringValue(LOCAL_MAC_PARAM, m_localMac); + //s->StringValue(REMOTE_MAC_PARAM, m_remoteMac); } void TapeMsg::Validate() diff --git a/orkaudio/messages/TapeMsg.h b/orkaudio/messages/TapeMsg.h index 81f5e3e..3165bb4 100644 --- a/orkaudio/messages/TapeMsg.h +++ b/orkaudio/messages/TapeMsg.h @@ -28,6 +28,10 @@ #define LOCALENTRYPOINT_PARAM "localentrypoint" #define DURATION_PARAM "duration" #define SERVICE_PARAM "service" +#define LOCAL_IP_PARAM "localip" +#define REMOTE_IP_PARAM "remoteip" +#define LOCAL_MAC_PARAM "localmac" +#define REMOTE_MAC_PARAM "remotemac" class TapeMsg : public SyncMessage { @@ -53,6 +57,10 @@ public: CStdString m_loginString; int m_duration; CStdString m_serviceName; + CStdString m_localIp; + CStdString m_remoteIp; + CStdString m_localMac; + CStdString m_remoteMac; }; typedef boost::shared_ptr TapeMsgRef; diff --git a/orkbasecxx/AudioCapture.cpp b/orkbasecxx/AudioCapture.cpp index e1c64c3..5523757 100644 --- a/orkbasecxx/AudioCapture.cpp +++ b/orkbasecxx/AudioCapture.cpp @@ -225,6 +225,14 @@ CStdString CaptureEvent::EventTypeToString(int eventTypeEnum) return ET_LOCALENTRYPOINT; case EtKeyValue: return ET_KEYVALUE; + case EtLocalIp: + return ET_LOCALIP; + case EtRemoteIp: + return ET_REMOTEIP; + case EtLocalMac: + return ET_LOCALMAC; + case EtRemoteMac: + return ET_REMOTEMAC; } return ET_INVALID; } @@ -260,6 +268,22 @@ int CaptureEvent::EventTypeToEnum(CStdString& eventTypeString) { eventTypeEnum = EtKeyValue; } + else if (eventTypeString.CompareNoCase(ET_LOCALIP) == 0) + { + eventTypeEnum = EtLocalIp; + } + else if (eventTypeString.CompareNoCase(ET_REMOTEIP) == 0) + { + eventTypeEnum = EtRemoteIp; + } + else if (eventTypeString.CompareNoCase(ET_LOCALMAC) == 0) + { + eventTypeEnum = EtLocalMac; + } + else if (eventTypeString.CompareNoCase(ET_REMOTEMAC) == 0) + { + eventTypeEnum = EtRemoteMac; + } return eventTypeEnum; } diff --git a/orkbasecxx/AudioCapture.h b/orkbasecxx/AudioCapture.h index 19bb184..9a9c6b4 100644 --- a/orkbasecxx/AudioCapture.h +++ b/orkbasecxx/AudioCapture.h @@ -112,6 +112,10 @@ public: #define ET_LOCALPARTY "localparty" #define ET_LOCALENTRYPOINT "localentrypoint" #define ET_KEYVALUE "keyvalue" +#define ET_LOCALIP "localip" +#define ET_REMOTEIP "remoteip" +#define ET_LOCALMAC "localmac" +#define ET_REMOTEMAC "remotemac" #define ET_INVALID "invalid" typedef enum { @@ -123,7 +127,11 @@ public: EtLocalParty = 5, EtLocalEntryPoint = 6, EtKeyValue = 7, - EtInvalid = 8 + EtLocalIp = 8, + EtRemoteIp = 9, + EtLocalMac = 10, + EtRemoteMac = 11, + EtInvalid = 12 } EventTypeEnum; static CStdString EventTypeToString(int eventTypeEnum); static int EventTypeToEnum(CStdString&); -- cgit v1.2.3