Compare commits

..

No commits in common. "ccaa256960c843c40acd1c4b30c41f313ecefa9c" and "5291e2cb5b40b862e36af6c9a0676561314fe08c" have entirely different histories.

2 changed files with 78 additions and 100 deletions

View File

@ -2270,14 +2270,6 @@ namespace AppServer
{
SM.Debug("Load " + emailHT.Count + " subscribers emails from DB ...");
}
if (sslServer == null)
{
SM.Debug("sslServer is null");
return;
}
Int64 latestEmailTime = sslServer.getLastEmailTime();
ArrayList EmailList = sslServer.getEmails();

View File

@ -263,24 +263,19 @@ namespace SipComponent
}
else
_localIPaddress = localIPAddress;
_sipDomainPort = sipDomainPort;
_sipClient = CreateSipClientClass(sipDomain, _sipDomainPort, _localIPaddress, localSipPort, userName, password, requestTimeout);
_bufferMiliseconds = bufferMiliseconds;
// Registration Timer
_registrationInterval = registrationInterval;
_registrationData = new RegistrationData(userName, _registrationInterval + 2);
System.Timers.Timer registrationTimer = new System.Timers.Timer();
// Set up the registration timer
registrationTimer.Interval = _registrationInterval * 1000;
registrationTimer.Elapsed += _registrationTimer_Elapsed;
_sipID_regTimer_regStatus_Dict.Add(userName,
new Tuple<System.Timers.Timer, RegistrationStatus>(registrationTimer, RegistrationStatus.RegistrationNotStarted
));
_IDsregisteredList.Add(userName);
StartRegistrationTimer();
@ -309,7 +304,6 @@ namespace SipComponent
throw new ObjectDisposedException("SipClientClass");
if (idToInvite == null)
throw new ArgumentNullException("idToInvite");
lock (_lockerSipDialog)
{
if (!_IDsentInviteDict.ContainsKey(idToInvite) && !_IDreceivedInviteDict.ContainsKey(idToInvite)
@ -330,7 +324,6 @@ namespace SipComponent
throw new ObjectDisposedException("SipClientClass");
if (groupIDtoInvite == null)
throw new ArgumentNullException("groupIDtoInvite");
// Check if registered to the group id
lock (_lockerSipDialog)
{
@ -349,7 +342,6 @@ namespace SipComponent
{
if (_sipClassClosed)
throw new ObjectDisposedException("SipClientClass");
Task t = null;
CancelInvite_private(idToCancel, out t);
}
@ -378,7 +370,6 @@ namespace SipComponent
{
return dialog.CallID == _IDsentInviteDict[idToCancel].CallID;
});
if (d != null)
{
//Send Cancel Request
@ -396,7 +387,6 @@ namespace SipComponent
}
}, d);
}
// Remove from dict
_IDsentInviteDict.Remove(idToCancel);
_IDsCalledByMeList.Remove(idToCancel);
@ -595,7 +585,6 @@ namespace SipComponent
{
if (_sipClassClosed)
throw new ObjectDisposedException("SipClientClass");
lock (_lockerSipDialog)
{
if (_IDdialogTuple.ContainsKey(idToSendVoice))
@ -614,28 +603,28 @@ namespace SipComponent
{
if (_sipClassClosed)
throw new ObjectDisposedException("SipClientClass");
if (idToRequestGps == null)
throw new ArgumentNullException("idToRequestGps");
// Send Gps request for Linx
// [#msgLen]#seqID#154#
string cmdText = string.Format("#{0}#154#", seqID);
string cmd = AddMsgLenForMBus(cmdText);
Message pollRequestForLinx = GenerateSipMessage(idToRequestGps, UserName, _sipClient.Domain, _sipDomainPort, cmd);
pollRequestForLinx.Header.Add("Ais-Service", "mbus");
Task.Factory.StartNew(() =>
if (idToRequestGps != null)
{
try
// Send Gps request for Linx
// [#msgLen]#seqID#154#
string cmdText = string.Format("#{0}#154#", seqID);
string cmd = AddMsgLenForMBus(cmdText);
Message pollRequestForLinx = GenerateSipMessage(idToRequestGps, UserName, _sipClient.Domain, _sipDomainPort, cmd);
pollRequestForLinx.Header.Add("Ais-Service", "mbus");
Task.Factory.StartNew(() =>
{
_sipClient.SendRequest(pollRequestForLinx);
}
catch (Exception)
{
; // Probably timeout exception, do not do anything
}
});
try
{
_sipClient.SendRequest(pollRequestForLinx);
}
catch (Exception)
{
; // Probably timeout exception, do not do anything
}
});
}
else
throw new ArgumentNullException("idToRequestGps");
}
@ -647,26 +636,26 @@ namespace SipComponent
{
if (_sipClassClosed)
throw new ObjectDisposedException("SipClientClass");
if (linxID == null)
throw new ArgumentNullException("linxID");
// Send [#msgLen]#seqID#238#
string textToSend = string.Format("#{0}#238#", _rand.Next().ToString());
string cmdToSend = AddMsgLenForMBus(textToSend);
Message sipMessage = GenerateSipMessage(linxID, UserName, _sipClient.Domain, _sipDomainPort, cmdToSend);
Task.Factory.StartNew(() =>
if (linxID != null)
{
try
// Send [#msgLen]#seqID#238#
string textToSend = string.Format("#{0}#238#", _rand.Next().ToString());
string cmdToSend = AddMsgLenForMBus(textToSend);
Message sipMessage = GenerateSipMessage(linxID, UserName, _sipClient.Domain, _sipDomainPort, cmdToSend);
Task.Factory.StartNew(() =>
{
_sipClient.SendRequest(sipMessage);
}
catch (Exception)
{
// Do nothing
}
});
try
{
_sipClient.SendRequest(sipMessage);
}
catch (Exception)
{
// Do nothing
}
});
}
else
throw new ArgumentNullException("linxID");
}
/// <summary>
@ -680,12 +669,10 @@ namespace SipComponent
{
if (_sipClassClosed)
throw new ObjectDisposedException("SipClientClass");
if (idToSendSMS != null && text != null)
{
bool sendSipMessage = true;
string unconfirmedSmsKey = null;
if (_smsConfirmationFromServer)
{
unconfirmedSmsKey = idToSendSMS + text.GetHashCode();
@ -704,7 +691,6 @@ namespace SipComponent
}
}
}
if (sendSipMessage)
{
// Create a new thread on which:
@ -757,16 +743,15 @@ namespace SipComponent
throw new ArgumentNullException("text");
}
private Message GenerateSipMessage(string destinationID, string senderID, string sipServer, int sipServerPort, string text)
private Message GenerateSipMessage(string destinationID, string senderID, string sipServer,
int sipServerPort, string text)
{
Message sipMessage = new Message()
{
Uri = $"sip:{destinationID}@{sipServer}:{sipServerPort}",
From = new ContactInfo($"sip:{senderID}@{sipServer}"),
To = new ContactInfo($"sip:{destinationID}@{sipServer}"),
ContentType = "text/plain;charset=UTF-8",
Body = text
};
Message sipMessage = new Message();
sipMessage.Uri = "sip:" + destinationID + "@" + sipServer + ":" + sipServerPort;
sipMessage.From = new ContactInfo(string.Format("sip:{0}@{1}", senderID, sipServer));
sipMessage.To = new ContactInfo(string.Format("sip:{0}@{1}", destinationID, sipServer));
sipMessage.ContentType = "text/plain;charset=UTF-8";
sipMessage.Body = text;
return sipMessage;
}
@ -848,12 +833,10 @@ namespace SipComponent
if (!_sipClassClosed)
{
_sipClassClosed = true;
// Send ARS OFF and disconnect from socket IO
if (_sendArsOnOff)
_socketIOClass.SendArs(new ArsInfo(false, "0", UserName));
_socketIOClass.Disconect();
//
List<string> sipIDs = new List<string>();
Task task = null;
@ -909,7 +892,6 @@ namespace SipComponent
// Stop sip class
_sipClient.Disconnect();
});
if (!async)
t.Wait();
}
@ -929,8 +911,6 @@ namespace SipComponent
zeroRegistrationData = new RegistrationData(id, 0, true);
else
zeroRegistrationData = new RegistrationData(id, 0);
_sipID_regTimer_regStatus_Dict[id].Item1.Stop();
SendSipRegister(zeroRegistrationData);
}
@ -1418,11 +1398,10 @@ namespace SipComponent
string lastWord = source.Substring(source.LastIndexOf(' ') + 1);
if (lastWord.Contains("delivered"))
return true;
if (lastWord.Contains("failed"))
else if (lastWord.Contains("failed"))
return false;
throw new ApplicationException("Error on parsing the sms confirmation from sip server");
else
throw new ApplicationException("Error on parsing the sms confirmation from sip server");
}
#endregion
@ -1439,13 +1418,11 @@ namespace SipComponent
// Extract ip and port where to send voice to simoco
IPAddress ipToSendAudio = null;
int portToSendAudio;
if (IPAddress.TryParse(receivedSDP.Connection.Address, out ipToSendAudio))
{
portToSendAudio = receivedSDP.Media[0].Port;
}
else
throw new ApplicationException("Canot determine ip where to send audio");
else throw new ApplicationException("Canot determine ip where to send audio");
// Creez clientul de UDP conectat la portul pe care voi primi voce
UdpClient udpClient = new UdpClient(localRTPport);
@ -1586,9 +1563,9 @@ namespace SipComponent
private SipClient CreateSipClientClass(string sipDomain, int sipDomainPort, string localIPaddress, int localSipPort, string userName, string password, int requestTimeout)
{
SipClient sipClient;
// Set up the master SIP class
SipClient sipClient = new SipClient(sipDomain, sipDomainPort, Independentsoft.Sip.ProtocolType.Udp, userName, password);
sipClient = new SipClient(sipDomain, sipDomainPort, Independentsoft.Sip.ProtocolType.Udp, userName, password);
sipClient.LocalIPEndPoint = new IPEndPoint(IPAddress.Parse(localIPaddress), localSipPort);
// Turn on logging
//sipClient.Logger = new Logger(AppDomain.CurrentDomain.BaseDirectory + "\\sipLog.txt");
@ -1613,7 +1590,6 @@ namespace SipComponent
int rtpPort = ReturnAvailablePort();
SessionDescription sdp = CreateSDP(rtpPort);
Invite inv = new Invite();
inv.Uri = "sip:" + idToCall + "@" + sipServerIP;
inv.From = new ContactInfo("sip:" + sipID.ToString() + "@" + sipServerIP);
@ -1674,17 +1650,20 @@ namespace SipComponent
private void SendSipRegister(object registrationDataObj)
{
string sipServerIP = _sipClient.Domain;
RegistrationData regData = (RegistrationData)registrationDataObj;
string sipIDfrom = _sipClient.Username;
string sipIDto = regData.SipID;
string sipIDto = regData.SipID;
int expiresValue = regData.Expires;
bool isUnregisterRequest = (expiresValue == 0);
Register reg = new Register();
reg.Uri = "sip:" + sipServerIP;
reg.From = new ContactInfo( sipIDfrom.ToString(), $"sip:{sipIDfrom}@{sipServerIP}");
reg.To = new ContactInfo( sipIDto.ToString(), $"sip:{sipIDto}@{sipServerIP}");
reg.From = new ContactInfo(
sipIDfrom.ToString(),
"sip:" + sipIDfrom + "@" + sipServerIP);
reg.To = new ContactInfo(
sipIDto.ToString(),
"sip:" + sipIDto.ToString() + "@" + sipServerIP);
reg.Contact = new Contact("sip:" + sipIDfrom.ToString() + "@" + _sipClient.LocalIPEndPoint.ToString());
reg.Expires = expiresValue;
@ -1784,7 +1763,6 @@ namespace SipComponent
{
SendSipRegister(state);
}, _registrationData);
// Start registration timer
_sipID_regTimer_regStatus_Dict[UserName].Item1.Start();
}
@ -1829,12 +1807,10 @@ namespace SipComponent
{
rtpPort += 2;
}
if (rtpPort < MaxRtpPortNumber)
return rtpPort;
throw new SipClassException(
else
throw new SipClassException(
string.Format("Nu gasesc port liber in range-ul {0} - {1}", MinRtpPortNumber, MaxRtpPortNumber));
}
}
@ -1845,8 +1821,10 @@ namespace SipComponent
{
return invite.SessionDescription.Media[0].Port == portNb;
});
return (inv != null);
if (inv != null)
return true;
else
return false;
}
private bool IsPortAllreadyInUse(int portNumber)
@ -1865,12 +1843,15 @@ namespace SipComponent
public static bool ValidRtpPort(int rtpPort)
{
if (rtpPort < 1024 || rtpPort > 65534)
{
return false;
if (rtpPort % 2 == 1)
}
else if (rtpPort % 2 == 1)
{
return false;
return true;
}
else
return true;
}
/// <summary>
@ -1889,6 +1870,11 @@ namespace SipComponent
private bool IsInSameSubnet(IPAddress address2, IPAddress address, IPAddress subnetMask)
{
IPAddress network1 = GetNetworkAddress(address, subnetMask);