Compare commits
No commits in common. "ccaa256960c843c40acd1c4b30c41f313ecefa9c" and "5291e2cb5b40b862e36af6c9a0676561314fe08c" have entirely different histories.
ccaa256960
...
5291e2cb5b
@ -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();
|
||||
|
||||
|
@ -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();
|
||||
|
||||
_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);
|
||||
|
Loading…
Reference in New Issue
Block a user