public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, SIPRequest sipRequest, SIPResponse sipResponse, SIPEndPoint localEndPoint, SIPEndPoint remoteEndPoint, SIPCallDirection callDirection) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; RemoteEndPoint = remoteEndPoint; ServerEndPoint = localEndPoint; Created = DateTimeOffset.UtcNow; ProcessID = Process.GetCurrentProcess().Id; string dirn = (callDirection == SIPCallDirection.In) ? CALLDIRECTION_IN_STRING : CALLDIRECTION_OUT_STRING; if (sipRequest != null) { Message = "REQUEST (" + Created.ToString("HH:mm:ss:fff") + "): " + localEndPoint + dirn + remoteEndPoint + "\r\n" + sipRequest.ToString(); } else if (sipResponse != null) { Message = "RESPONSE (" + Created.ToString("HH:mm:ss:fff") + "): " + localEndPoint + dirn + remoteEndPoint + "\r\n" + sipResponse.ToString(); } }
public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, SIPRequest sipRequest, SIPResponse sipResponse, SIPEndPoint localEndPoint, SIPEndPoint remoteEndPoint, SIPCallDirection callDirection) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; RemoteEndPoint = remoteEndPoint; ServerEndPoint = localEndPoint; Created = DateTimeOffset.UtcNow; #if !SILVERLIGHT ProcessID = Process.GetCurrentProcess().Id; #endif string dirn = (callDirection == SIPCallDirection.In) ? CALLDIRECTION_IN_STRING : CALLDIRECTION_OUT_STRING; if (sipRequest != null) { Message = $"REQUEST ({Created:HH:mm:ss:fff}): {localEndPoint}{dirn}{remoteEndPoint}\r\n{sipRequest}"; } else if (sipResponse != null) { Message = $"RESPONSE ({Created:HH:mm:ss:fff}): {localEndPoint}{dirn}{remoteEndPoint}\r\n{sipResponse}"; } }
public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, string username) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; Username = username; Created = DateTimeOffset.UtcNow; ProcessID = Process.GetCurrentProcess().Id; }
/// <summary> /// Mangles private IP addresses in a SIP request replacing them with the IP address the packet was received on. /// </summary> /// <param name="sipRequest">The unmangled SIP request.</param> /// <returns>The mangled SIP request</returns> public static void MangleSIPRequest(SIPMonitorServerTypesEnum server, SIPRequest sipRequest, string username, SIPMonitorLogDelegate logDelegate) { try { string bottomViaIPAddress = sipRequest.Header.Vias.BottomViaHeader.ReceivedFromIPAddress; if (sipRequest.Header.Contact != null && sipRequest.Header.Contact.Count == 1 && bottomViaIPAddress != null) { string contactHost = sipRequest.Header.Contact[0].ContactURI.Host; // Only mangle if the host is a private IP address and there is something to change. // For example the server could be on the same private subnet in which case it can't help. if (IPSocket.IsPrivateAddress(contactHost) && contactHost != bottomViaIPAddress) { string origContact = sipRequest.Header.Contact[0].ContactURI.Host; sipRequest.Header.Contact[0].ContactURI.Host = sipRequest.Header.Vias.BottomViaHeader.ReceivedFromAddress; //logger.LogDebug("Contact URI identified as containing private address for " + sipRequest.Method + " " + origContact + " adjusting to use bottom via " + bottomViaHost + "."); //FireProxyLogEvent(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.Registrar, SIPMonitorServerTypesEnum.ContactRegisterInProgress, "Contact on " + sipRequest.Method + " " + origContact + " had private address adjusted to " + bottomViaHost + ".", username)); } } if (sipRequest.Body != null && bottomViaIPAddress != null) { bool wasMangled = false; string mangledSDP = MangleSDP(sipRequest.Body, bottomViaIPAddress, out wasMangled); if (wasMangled) { sipRequest.Body = mangledSDP; sipRequest.Header.ContentLength = sipRequest.Body.Length; if (logDelegate != null) { logDelegate(new SIPMonitorConsoleEvent(server, SIPMonitorEventTypesEnum.DialPlan, "SDP mangled for " + sipRequest.Method.ToString() + " request from " + sipRequest.RemoteSIPEndPoint.ToString() + ", adjusted address " + bottomViaIPAddress + ".", username)); } } } } catch (Exception excp) { Logger.Logger.Error("Exception MangleSIPRequest. ->" + excp.Message); } }
public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, SIPEndPoint serverSocket, SIPEndPoint fromSocket, SIPEndPoint toSocket) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; ServerEndPoint = serverSocket; RemoteEndPoint = fromSocket; DestinationEndPoint = toSocket; Created = DateTimeOffset.UtcNow; ProcessID = Process.GetCurrentProcess().Id; }
public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, string username) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; Username = username; Created = DateTimeOffset.UtcNow; #if !SILVERLIGHT ProcessID = Process.GetCurrentProcess().Id; #endif }
public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, string username, SIPEndPoint localEndPoint, SIPEndPoint remoteEndPoint) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; Username = username; Created = DateTimeOffset.UtcNow; ServerEndPoint = localEndPoint; RemoteEndPoint = remoteEndPoint; #if !SILVERLIGHT ProcessID = Process.GetCurrentProcess().Id; #endif }
public bool ShowServer(SIPMonitorServerTypesEnum eventServer) { if (ServerTypeId != 0) { if ((int)eventServer == ServerTypeId) { return(true); } else { return(false); } } return(true); }
/// <summary> /// Mangles private IP addresses in a SIP response replacing them with the IP address the packet was received on. /// </summary> /// <param name="sipResponse">The unmangled SIP response.</param> /// <returns>The mangled SIP response</returns> public static void MangleSIPResponse(SIPMonitorServerTypesEnum server, SIPResponse sipResponse, SIPEndPoint remoteEndPoint, string username, SIPMonitorLogDelegate logDelegate) { try { if (sipResponse.Header.Contact != null && sipResponse.Header.Contact.Count > 0) { string contactHost = sipResponse.Header.Contact[0].ContactURI.Host; // Only mangle if the host is a private IP address and there is something to change. // For example the server could be on the same private subnet in which case it can't help. if (IPSocket.IsPrivateAddress(contactHost) && contactHost != remoteEndPoint.Address.ToString()) { SIPURI origContact = sipResponse.Header.Contact[0].ContactURI; sipResponse.Header.Contact[0].ContactURI = new SIPURI(origContact.Scheme, remoteEndPoint); //logger.LogDebug("INVITE response Contact URI identified as containing private address, original " + origContact + " adjusted to " + remoteEndPoint.ToString() + "."); //FireProxyLogEvent(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.Registrar, SIPMonitorServerTypesEnum.ContactRegisterInProgress, "INVITE Response contact adjusted from " + origContact + " to " + remoteEndPoint.ToString() + ".", username)); } } if (sipResponse.Body != null) { bool wasMangled = false; string mangledSDP = MangleSDP(sipResponse.Body, remoteEndPoint.Address.ToString(), out wasMangled); if (wasMangled) { sipResponse.Body = mangledSDP; sipResponse.Header.ContentLength = sipResponse.Body.Length; if (logDelegate != null) { logDelegate(new SIPMonitorConsoleEvent(server, SIPMonitorEventTypesEnum.DialPlan, "SDP mangled for " + sipResponse.Status.ToString() + " response from " + sipResponse.RemoteSIPEndPoint.ToString() + ", adjusted address " + remoteEndPoint.Address.ToString() + ".", username)); } } } } catch (Exception excp) { Logger.Logger.Error("Exception MangleSIPResponse. ->" + excp.Message); } }
public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, SIPRequest sipRequest, SIPResponse sipResponse, SIPEndPoint localEndPoint, SIPEndPoint remoteEndPoint, SIPCallDirection callDirection) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; RemoteEndPoint = remoteEndPoint; ServerEndPoint = localEndPoint; Created = DateTimeOffset.UtcNow; #if !SILVERLIGHT ProcessID = Process.GetCurrentProcess().Id; #endif string dirn = (callDirection == SIPCallDirection.In) ? CALLDIRECTION_IN_STRING : CALLDIRECTION_OUT_STRING; if (sipRequest != null) { Message = "REQUEST (" + Created.ToString("HH:mm:ss:fff") + "): " + localEndPoint + dirn + remoteEndPoint + "\r\n" + sipRequest.ToString(); } else if (sipResponse != null) { Message = "RESPONSE (" + Created.ToString("HH:mm:ss:fff") + "): " + localEndPoint + dirn + remoteEndPoint + "\r\n" + sipResponse.ToString(); } }
public SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum serverType, SIPMonitorEventTypesEnum eventType, string message, SIPEndPoint serverSocket, SIPEndPoint fromSocket, SIPEndPoint toSocket) { m_serialisationPrefix = SERIALISATION_PREFIX; ClientType = SIPMonitorClientTypesEnum.Console; ServerType = serverType; EventType = eventType; Message = message; ServerEndPoint = serverSocket; RemoteEndPoint = fromSocket; DestinationEndPoint = toSocket; Created = DateTimeOffset.UtcNow; #if !SILVERLIGHT ProcessID = Process.GetCurrentProcess().Id; #endif }
public bool ShowServer(SIPMonitorServerTypesEnum eventServer) { if (ServerTypeId != 0) { if ((int)eventServer == ServerTypeId) { return true; } else { return false; } } return true; }
/// <summary> /// Mangles private IP addresses in a SIP response replacing them with the IP address the packet was received on. /// </summary> /// <param name="sipResponse">The unmangled SIP response.</param> /// <returns>The mangled SIP response</returns> public static void MangleSIPResponse(SIPMonitorServerTypesEnum server, SIPResponse sipResponse, SIPEndPoint remoteEndPoint, string username, SIPMonitorLogDelegate logDelegate) { try { if (sipResponse.Header.Contact != null && sipResponse.Header.Contact.Count > 0) { string contactHost = sipResponse.Header.Contact[0].ContactURI.Host; // Only mangle if the host is a private IP address and there is something to change. // For example the server could be on the same private subnet in which case it can't help. if (IPSocket.IsPrivateAddress(contactHost) && contactHost != remoteEndPoint.Address.ToString()) { SIPURI origContact = sipResponse.Header.Contact[0].ContactURI; sipResponse.Header.Contact[0].ContactURI = new SIPURI(origContact.Scheme, remoteEndPoint); //logger.Debug("INVITE response Contact URI identified as containing private address, original " + origContact + " adjustied to " + remoteEndPoint.ToString() + "."); //FireProxyLogEvent(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.Registrar, SIPMonitorServerTypesEnum.ContactRegisterInProgress, "INVITE Response contact adjusted from " + origContact + " to " + remoteEndPoint.ToString() + ".", username)); } } if (sipResponse.Body != null) { bool wasMangled = false; string mangledSDP = MangleSDP(sipResponse.Body, remoteEndPoint.Address.ToString(), out wasMangled); if (wasMangled) { sipResponse.Body = mangledSDP; sipResponse.Header.ContentLength = sipResponse.Body.Length; if (logDelegate != null) { logDelegate(new SIPMonitorConsoleEvent(server, SIPMonitorEventTypesEnum.DialPlan, "SDP mangled for INVITE response from " + sipResponse.RemoteSIPEndPoint.ToString() + ", adjusted address " + remoteEndPoint.Address.ToString() + ".", username)); } } } } catch (Exception excp) { logger.Error("Exception MangleSIPResponse. " + excp.Message); } }
/// <summary> /// Mangles private IP addresses in a SIP request replacing them with the IP address the packet was received on. /// </summary> /// <param name="sipResponse">The unmangled SIP request.</param> /// <returns>The mangled SIP request</returns> public static void MangleSIPRequest(SIPMonitorServerTypesEnum server, SIPRequest sipRequest, string username, SIPMonitorLogDelegate logDelegate) { try { string bottomViaIPAddress = sipRequest.Header.Vias.BottomViaHeader.ReceivedFromIPAddress; if (sipRequest.Header.Contact != null && sipRequest.Header.Contact.Count == 1 && bottomViaIPAddress != null) { string contactHost = sipRequest.Header.Contact[0].ContactURI.Host; // Only mangle if the host is a private IP address and there is something to change. // For example the server could be on the same private subnet in which case it can't help. if (IPSocket.IsPrivateAddress(contactHost) && contactHost != bottomViaIPAddress) { string origContact = sipRequest.Header.Contact[0].ContactURI.Host; sipRequest.Header.Contact[0].ContactURI.Host = sipRequest.Header.Vias.BottomViaHeader.ReceivedFromAddress; //logger.Debug("Contact URI identified as containing private address for " + sipRequest.Method + " " + origContact + " adjusting to use bottom via " + bottomViaHost + "."); //FireProxyLogEvent(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.Registrar, SIPMonitorServerTypesEnum.ContactRegisterInProgress, "Contact on " + sipRequest.Method + " " + origContact + " had private address adjusted to " + bottomViaHost + ".", username)); } } if (sipRequest.Body != null && bottomViaIPAddress != null) { bool wasMangled = false; string mangledSDP = MangleSDP(sipRequest.Body, bottomViaIPAddress, out wasMangled); if (wasMangled) { sipRequest.Body = mangledSDP; sipRequest.Header.ContentLength = sipRequest.Body.Length; if (logDelegate != null) { logDelegate(new SIPMonitorConsoleEvent(server, SIPMonitorEventTypesEnum.DialPlan, "SDP mangled for INVITE request from " + sipRequest.RemoteSIPEndPoint.ToString() + ", adjusted address " + bottomViaIPAddress + ".", username)); } } } } catch (Exception excp) { logger.Error("Exception MangleSIPRequest. " + excp.Message); } }