private static void SIPTransportRequestReceived(SIPEndPoint localSIPEndPoint, SIPEndPoint remoteEndPoint, SIPRequest sipRequest) { if (sipRequest.Method == SIPMethodsEnum.INVITE) { Console.WriteLine("INVITE received from " + localSIPEndPoint.ToString()); IPEndPoint sipPhoneEndPoint = SDP.GetSDPRTPEndPoint(sipRequest.Body); UASInviteTransaction uasTransaction = m_sipTransport.CreateUASTransaction(sipRequest, remoteEndPoint, localSIPEndPoint, null); SIPServerUserAgent uas = new SIPServerUserAgent(m_sipTransport, null, null, null, SIPCallDirection.In, null, null, null, uasTransaction); SIPResponse tryingResponse = SIPTransport.GetResponse(sipRequest, SIPResponseStatusCodesEnum.Trying, null); uasTransaction.SendInformationalResponse(tryingResponse); if (m_xmppClient == null) { m_xmppClient = new XMPPClient(XMPP_SERVER, XMPP_SERVER_PORT, XMPP_REALM, m_xmppUsername, m_xmppPassword); m_xmppClient.Disconnected += XMPPDisconnected; m_xmppClient.IsBound += () => { XMPPPlaceCall(uas); }; ThreadPool.QueueUserWorkItem(delegate { m_xmppClient.Connect(); }); } else { XMPPPlaceCall(uas); } } else if (sipRequest.Method == SIPMethodsEnum.CANCEL) { UASInviteTransaction inviteTransaction = (UASInviteTransaction)m_sipTransport.GetTransaction(SIPTransaction.GetRequestTransactionId(sipRequest.Header.Vias.TopViaHeader.Branch, SIPMethodsEnum.INVITE)); if (inviteTransaction != null) { Console.WriteLine("Matching CANCEL request received " + sipRequest.URI.ToString() + "."); SIPCancelTransaction cancelTransaction = m_sipTransport.CreateCancelTransaction(sipRequest, remoteEndPoint, localSIPEndPoint, inviteTransaction); cancelTransaction.GotRequest(localSIPEndPoint, remoteEndPoint, sipRequest); } else { Console.WriteLine("No matching transaction was found for CANCEL to " + sipRequest.URI.ToString() + "."); SIPResponse noCallLegResponse = SIPTransport.GetResponse(sipRequest, SIPResponseStatusCodesEnum.CallLegTransactionDoesNotExist, null); m_sipTransport.SendResponse(noCallLegResponse); } } else if (sipRequest.Method == SIPMethodsEnum.BYE) { Console.WriteLine("BYE request received."); if (m_activeCalls.ContainsKey(sipRequest.Header.CallId)) { SIPResponse okResponse = SIPTransport.GetResponse(sipRequest, SIPResponseStatusCodesEnum.Ok, null); m_sipTransport.SendResponse(okResponse); m_activeCalls[sipRequest.Header.CallId].TerminateXMPPCall(); m_activeCalls.Remove(sipRequest.Header.CallId); } else { SIPResponse doesntExistResponse = SIPTransport.GetResponse(sipRequest, SIPResponseStatusCodesEnum.CallLegTransactionDoesNotExist, null); m_sipTransport.SendResponse(doesntExistResponse); } } }
public void TestInvite() { XMPPClient ObjXmppClient = new XMPPClient(); //initializing the xmpp client with credentials ObjXmppClient.JID = "*****@*****.**"; ObjXmppClient.Password = "******"; ObjXmppClient.Server = "54.173.99.54"; ObjXmppClient.AutoReconnect = true; ObjXmppClient.RetrieveRoster = true; ObjXmppClient.PresenceStatus = new PresenceStatus() { PresenceType = PresenceType.available, IsOnline = true }; ObjXmppClient.AutoAcceptPresenceSubscribe = true; ObjXmppClient.AttemptReconnectOnBadPing = true; // XMPPConnection ObjXmppCon = new XMPPConnection(ObjXmppClient); ObjXmppCon = new XMPPConnection(ObjXmppClient); ObjXmppCon.Connect(); ObjXmppClient.Connect(); //muc manager test MucManager mucManager = new MucManager(ObjXmppClient); JID roomJID = "*****@*****.**"; mucManager.EnterRoom(roomJID, "XMPPTestNickName"); JID to = "*****@*****.**"; mucManager.DirectInvite(to, roomJID); }
void DeviceNetworkInformation_NetworkAvailabilityChanged(object sender, NetworkNotificationEventArgs e) { switch (e.NotificationType) { case NetworkNotificationType.InterfaceConnected: LogMessage("Network", SocketServer.MessageImportance.Medium, "Network was Connected at {0}\r\n", DateTime.Now); if ((XMPPClient != null) && (XMPPClient.XMPPState == XMPPState.Unknown) && (XMPPClient.XMPPAccount != null) && (XMPPClient.XMPPAccount.HaveSuccessfullyConnectedAndAuthenticated == true)) { XMPPClient.Connect(this); } break; case NetworkNotificationType.InterfaceDisconnected: LogMessage("Network", SocketServer.MessageImportance.Medium, "Network was Disconnected at {0}\r\n", DateTime.Now); if ((XMPPClient != null) && (XMPPClient.XMPPState != XMPPState.Unknown)) { XMPPClient.Disconnect(); XMPPClient.Connect(this); //MessageBox.Show("Network connection lost"); } break; case NetworkNotificationType.CharacteristicUpdate: break; default: break; } }
public void Connect(string username, string password, Constants.Server.Region region) { if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password) || region == Constants.Server.Region.UNK) { throw new ArgumentException("Username, password or region is emtpy"); } var address = _serverAddresses.Single(o => o.Key == region).Value; XMPPClient.UserName = username; XMPPClient.Password = _passPrefix + password; XMPPClient.Server = address; XMPPClient.Domain = _domain; XMPPClient.Resource = "xiff"; XMPPClient.Port = 5223; XMPPClient.UseTLS = true; XMPPClient.UseOldStyleTLS = true; XMPPClient.AutoAcceptPresenceSubscribe = false; XMPPClient.AutomaticallyDownloadAvatars = false; XMPPClient.RetrieveRoster = true; XMPPClient.OnStateChanged += XMPPClient_OnStateChanged; XMPPClient.OnRetrievedRoster += XMPPClient_OnRetrievedRoster; XMPPClient.OnNewConversationItem += XMPPClient_OnNewConversationItem; XMPPClient.Connect(); }
protected override void OnStart(string[] args) { base.OnStart(args); var client = new XMPPClient("etienne.pierrot", "fakepass"); client.Connect(); ObjectFactory.Configure(init => init.For<XMPPClient>().Singleton().Use(client)); TimerCallback timerDelegate = new TimerCallback(ChangeStatus); // create timer and attach our method delegate to it _serviceTimer =new Timer(timerDelegate, null, 1000, 5000); }
public void Call(SIPCallDescriptor sipCallDescriptor) { CallDescriptor = sipCallDescriptor; m_xmppClient = new XMPPClient("talk.google.com", 5222, "google.com", null, null); m_xmppClient.IsBound += IsBound; m_xmppClient.Answered += Answered; IPEndPoint sdpEndPoint = SDP.GetSDPRTPEndPoint(CallDescriptor.Content); if (IPSocket.IsPrivateAddress(sdpEndPoint.Address.ToString())) { bool wasSDPMangled; CallDescriptor.Content = SIPPacketMangler.MangleSDP(CallDescriptor.Content, CallDescriptor.MangleIPAddress.ToString(), out wasSDPMangled); } ThreadPool.QueueUserWorkItem(delegate { m_xmppClient.Connect(); }); }
static void Main(string[] args) { try { //if (args == null || args.Count() == 0) //{ // Console.WriteLine(USAGE_STRING); //} //else //{ // bool validArgs = ParseArgs(args); // if (validArgs) // { Console.WriteLine("XMPP Test Client:"); m_xmppClient = new XMPPClient(XMPP_SERVER, XMPP_SERVER_PORT, XMPP_REALM, m_xmppUsername, m_xmppPassword); m_xmppClient.Disconnected += XMPPDisconnected; m_xmppClient.IsBound += () => { Console.WriteLine("XMPP client is bound."); //var rosterRequest = m_xmppClient.GetRosterRequest(); //rosterRequest.GetRoster(); var presenceRequest = m_xmppClient.GetPresenceRequest(); //presenceRequest.Subscribe(); presenceRequest.Notify(); presenceRequest.NotifySupportedFeatures(); //var discoveryRequest = m_xmppClient.GetServiceDiscoveryRequest("*****@*****.**"); //discoveryRequest.Send(); //discoveryRequest.SendServerDiscoveryQuery(); //discoveryRequest.SendJingleInfoQuery(); var jingleRequest = m_xmppClient.GetJingleRequest("[email protected]/TalkGadgetE90A6B3B"); //var jingleRequest = m_xmppClient.GetJingleRequest("*****@*****.**"); jingleRequest.Initiate(); //m_xmppClient.SendMessage("*****@*****.**", "hi"); //XMPPPhoneSession call = m_xmppClient.GetPhoneSession(); ////call.PlaceCall("*****@*****.**", new SDP() //call.PlaceCall("*****@*****.**", new SDP() //{ // Address = "127.0.0.1", // Username = "******", // SessionId = Crypto.GetRandomString(5), // AnnouncementVersion = Crypto.GetRandomInt(5), // Connection = new SDPConnectionInformation("127.0.0.1"), // Timing = "0 0", // Media = new List<SDPMediaAnnouncement>() // { // new SDPMediaAnnouncement(0) // { // MediaFormats = new List<SDPMediaFormat>(){ new SDPMediaFormat((int)SDPMediaFormatsEnum.PCMU) } // } // } //}); }; ThreadPool.QueueUserWorkItem(delegate { m_xmppClient.Connect(); }); ManualResetEvent mre = new ManualResetEvent(false); mre.WaitOne(); //} //} } catch (Exception excp) { Console.WriteLine("Exception Main. " + excp.Message); } finally { Console.WriteLine("press any key to exit..."); Console.Read(); } }
/// <summary> /// Establishes the XMPP connection with the Google Voice gateway. Once the connection is bound it can be used /// to establish calls over. /// </summary> private void BindClient() { logger.Debug("Commencing bind on XMPP client."); m_xmppClient.Connect(); }