public static PullPointSubscriptionClient GetPullPointSubClient(string ip, int port, string toHeaderAddr, List <MessageHeader> headers) { //EndpointAddress serviceAddress = new EndpointAddress(string.Format("http://{0}:{1}/onvif/event_service", ip, port)); AddressHeader[] addrHeader; // = AddressHeader.CreateAddressHeader("Action", "http://www.w3.org/2005/08/addressing", "http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest"); addrHeader = new AddressHeader[2]; addrHeader[0] = AddressHeader.CreateAddressHeader("Action", "http://www.w3.org/2005/08/addressing", "http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesRequest"); addrHeader[1] = AddressHeader.CreateAddressHeader("To", "http://www.w3.org/2005/08/addressing", toHeaderAddr); //addrHeader[1] = AddressHeader.CreateAddressHeader("MessageID", "http://www.w3.org/2005/08/addressing", "urn:uuid:e47b9746-c5c1-455e-839f-0db5bed7d8c7"); //addrHeader[1] = AddressHeader.CreateAddressHeader("ReplyTo", "http://www.w3.org/2005/08/addressing", "http://www.w3.org/2005/08/addressing/anonymous"); //MessageHeader[] msgHeader; //msgHeader = new MessageHeader[1]; //msgHeader[0] = MessageHeader.CreateHeader("Action", "http://www.w3.org/2005/08/addressing", "http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest", true); EndpointAddress serviceAddress = new EndpointAddress( new System.Uri(string.Format("http://{0}:{1}/onvif/event_service", ip, port)), addrHeader); HttpTransportBindingElement httpBinding = new HttpTransportBindingElement(); httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest; var messageElement = new TextMessageEncodingBindingElement(); messageElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None); CustomBinding bind = new CustomBinding(messageElement, httpBinding); PullPointSubscriptionClient ppsc = new PullPointSubscriptionClient(bind, serviceAddress); return(ppsc); }
private void btnSubscribe_Click(object sender, EventArgs e) { try { EventsReceiver listener = new EventsReceiver(); listener.NotificationReceived += listener_NotificationReceived; listener.Name = tbEventsReceiver.Text; _listener = listener; _host = new ServiceHost(listener, new Uri(tbEventsReceiver.Text)); ServiceEndpoint endpoint = _host.AddServiceEndpoint(typeof(Proxies.Events.NotificationConsumer), new WSHttpBinding(SecurityMode.None), string.Empty); _host.Open(); Subscribe request = new Subscribe(); request.ConsumerReference = new EndpointReferenceType(); request.ConsumerReference.Address = new AttributedURIType(); request.ConsumerReference.Address.Value = tbEventsReceiver.Text; if (!string.IsNullOrEmpty(tbTopicsFilter.Text)) { request.Filter = CreateFilter(); } request.InitialTerminationTime = tbSubscriptionTime.Text; SubscribeResponse response = Client.Subscribe(request); tcSubscription.SelectedTab = tpManageSubscription; _subscriptionReference = response.SubscriptionReference; tbSubscriptionReference.Text = _subscriptionReference.Address.Value; _subscribed = true; if (response.TerminationTime.HasValue) { _terminationTime = response.TerminationTime.Value; tbTerminationTime.Text = _terminationTime.ToString("hh:mm:ss.fff"); DisplayTimeLeft(); } EndpointAddress addr = new EndpointAddress(_subscriptionReference.Address.Value); EndpointReferenceBehaviour behaviour = new EndpointReferenceBehaviour(response.SubscriptionReference); _subscriptionManager = new SubscriptionManagerClient(_custombindingSoap12, addr); _subscriptionManager.Endpoint.Behaviors.Add(behaviour); _pullPointSubscriptionClient = new PullPointSubscriptionClient(_custombindingSoap12, addr); _pullPointSubscriptionClient.Endpoint.Behaviors.Add(behaviour); timer.Start(); btnSubscribe.Enabled = false; btnRenew.Enabled = true; btnUnsubscribe.Enabled = true; btnSetSynchronizationPoint.Enabled = true; } catch (Exception exc) { _host.Close(); MessageBox.Show(exc.Message); } }
public static NotificationMessageHolderType[] GetEvents(Structures set) { try { //if (set.GetPTZTokens() == "" || !set.IsActive) return false; var messageElement = new TextMessageEncodingBindingElement(); messageElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None); HttpTransportBindingElement httpBinding = new HttpTransportBindingElement(); httpBinding.AuthenticationScheme = AuthenticationSchemes.Basic; CustomBinding bind = new CustomBinding(messageElement, httpBinding); EndpointAddress mediaAddress = new EndpointAddress(set.GetONVIF + "/onvif/event"); PullPointSubscriptionClient mediaClient = new PullPointSubscriptionClient(bind, mediaAddress); mediaClient.ClientCredentials.UserName.UserName = set.Login; mediaClient.ClientCredentials.UserName.Password = set.Password; NotificationMessageHolderType[] t; DateTime term; var nodes = mediaClient.PullMessages("1", 1, null, out term, out t); return(t); } catch { return(new NotificationMessageHolderType[] { }); } }
/// <summary> /// Creates PullPointSubscription client using address passed. /// </summary> /// <param name="endpointReference">Service address.</param> /// <returns></returns> protected PullPointSubscriptionClient CreatePullPointSubscriptionClient(Proxies.Event.EndpointReferenceType endpointReference) { Binding binding = CreateEventServiceBinding(endpointReference.Address.Value); _pullPointSubscriptionClient = new PullPointSubscriptionClient(binding, new EndpointAddress(endpointReference.Address.Value)); AddSecurityBehaviour(_pullPointSubscriptionClient.Endpoint); AttachAddressing(_pullPointSubscriptionClient.Endpoint, endpointReference); SetupTimeout(_pullPointSubscriptionClient.InnerChannel); return(_pullPointSubscriptionClient); }
public OnVif1Events(OnVifDevice onVifDevice) : base(onVifDevice) { // m_ErrorMessage = ""; m_PullPointResponse = null; // m_onVifDevice = onVifDevice; m_EventPropertiesResponse = null; m_EventPortTypeClient = null; m_PullPointSubscriptionClient = null; m_SubscriptionManagerClient = null; // m_initialised = false; m_subscriptionTerminationTime = TimeSpan.FromSeconds(20); }
public static PullPointSubscriptionClient GetPullPointSubClient(string ip, int port) { EndpointAddress serviceAddress = new EndpointAddress(string.Format("http://{0}:{1}/onvif/event_service", ip, port)); HttpTransportBindingElement httpBinding = new HttpTransportBindingElement(); httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest; var messageElement = new TextMessageEncodingBindingElement(); messageElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None); CustomBinding bind = new CustomBinding(messageElement, httpBinding); PullPointSubscriptionClient ppsc = new PullPointSubscriptionClient(bind, serviceAddress); return(ppsc); }
public static void ManejaEventos(string uri) { try { ServicePointManager.Expect100Continue = false; EndpointAddress endPointAddress = new EndpointAddress(uri); HttpTransportBindingElement httpTransportBinding = new HttpTransportBindingElement { AuthenticationScheme = AuthenticationSchemes.Digest }; httpTransportBinding.KeepAliveEnabled = true; TextMessageEncodingBindingElement textMessageEncodingBinding = new TextMessageEncodingBindingElement { MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.WSAddressing10) }; PasswordDigestBehavior passwordDigestBehavior = new PasswordDigestBehavior("julian", "julian"); CustomBinding customBinding = new CustomBinding(textMessageEncodingBinding, httpTransportBinding); customBinding.SendTimeout = new TimeSpan(0, 0, 10); EventPortTypeClient ept = new EventPortTypeClient(customBinding, endPointAddress); ept.Endpoint.Behaviors.Add(passwordDigestBehavior); Console.WriteLine("Status 1 : " + ept.State.ToString()); ept.Open(); Console.WriteLine("Status 2 : " + ept.State.ToString()); ept.GetType(); ept.GetHashCode(); FilterType filter = new FilterType(); string initTermTime = null; CreatePullPointSubscriptionSubscriptionPolicy policy = new CreatePullPointSubscriptionSubscriptionPolicy(); XmlElement[] elems1 = new XmlElement[10]; System.DateTime time1 = new System.DateTime(); Nullable <System.DateTime> time2 = new System.DateTime(); EndpointReferenceType endpoint = ept.CreatePullPointSubscription(filter, "PT60M", policy, ref elems1, out time1, out time2); System.DateTime CurrentTime = new System.DateTime(); NotificationMessageHolderType[] NotificationMessages = new NotificationMessageHolderType[0]; PullPointSubscriptionClient.PullMessages() PullPointSubscriptionClient.PullMessages("PT5M", 99, Any, out CurrentTime, out NotificationMessages); PullPointSubscriptionClient subbind = new PullPointSubscriptionClient(customBinding, endPointAddress); subbind.Endpoint.Behaviors.Add(passwordDigestBehavior); string timeOut = "PT60.000S"; int mesLimit = 100; XmlElement[] elemns2 = new XmlElement[10]; System.DateTime termTime = new System.DateTime(); NotificationMessageHolderType[] messHolder = new NotificationMessageHolderType[0]; subbind.PullMessages(timeOut, mesLimit, elemns2, out termTime, out messHolder); for (int i = 0; i < messHolder.Length; i++) { Console.WriteLine("parsing"); } Console.WriteLine("--------- NO CATCH --------- "); } catch (Exception eee) { Console.WriteLine("manejando eventos: " + eee); } }
public override async Task <bool> InitalizeAsync() { if (this.m_onVifDevice.ServicesResponse == null) { bool b = await this.m_onVifDevice.InitalizeDeviceAsync(); if (this.m_onVifDevice.ServicesResponse == null) { return(false); } } try { foreach (var service in this.m_onVifDevice.ServicesResponse.Service) { if (service.Namespace == "http://www.onvif.org/ver10/events/wsdl") { string serviceAdress = service.XAddr; HttpTransportBindingElement httpBinding = new HttpTransportBindingElement(); httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest; var messageElement = new TextMessageEncodingBindingElement(); messageElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.WSAddressing10); CustomBinding binding = new CustomBinding(messageElement, httpBinding); /* * this.m_EventPortTypeClient = new EventPortTypeClient(binding, new EndpointAddress($"http://{ this.m_onVifDevice.Hostname}/onvif/event_service")); * this.m_EventPortTypeClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetPasswordDigestBehavior); * CreatePullPointSubscriptionRequest request = new CreatePullPointSubscriptionRequest(); * request.InitialTerminationTime = "PT60S"; * request.SubscriptionPolicy = new CreatePullPointSubscriptionSubscriptionPolicy(); * * * m_PullPointResponse = await this.m_EventPortTypeClient.CreatePullPointSubscriptionAsync(request); * * * * * PullMessagesRequest message = new PullMessagesRequest("PT1S", 1024, null); * * await m_PullPointSubscriptionClient.PullMessagesAsync(message); * * GetEventPropertiesRequest eventrequest = new GetEventPropertiesRequest(); * m_EventPropertiesResponse =await this.m_EventPortTypeClient.GetEventPropertiesAsync(eventrequest); */ OnvifDevice.Capabilities response = await this.m_onVifDevice.GetDeviceCapabilitiesAsync(); NotificationConsumerClient consclient = new NotificationConsumerClient(binding, new EndpointAddress(serviceAdress)); consclient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetPasswordDigestBehavior); consclient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetBasicBasicAuthBehaviour); OnvifEvent10.Notify request = new OnvifEvent10.Notify(); // await consclient.NotifyAsync(request); // await consclient.OpenAsync(); NotificationConsumerService _notificationConsumerService = new NotificationConsumerService(); // _notificationConsumerService.NewNotification += _notificationConsumerService_NewNotification; // ServiceHost _notificationConsumerServiceHost = new ServiceHost(_notificationConsumerService, new Uri("http://localhost:8085/NotificationConsumerService")); // _notificationConsumerServiceHost.Open(); NotificationProducerClient client = new NotificationProducerClient(binding, new EndpointAddress(serviceAdress)); client.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetPasswordDigestBehavior); client.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetBasicBasicAuthBehaviour); var subScribe = new Subscribe() { ConsumerReference = new EndpointReferenceType { Address = new AttributedURIType { Value = consclient.Endpoint.Address.Uri.ToString() }, } }; subScribe.InitialTerminationTime = "PT2H"; SubscribeResponse1 resp = await client.SubscribeAsync(subScribe); if ((response.Events != null) && response.Events.WSSubscriptionPolicySupport) { m_PullPointSubscriptionClient = new PullPointSubscriptionClient(binding, new EndpointAddress(serviceAdress)); m_SubscriptionManagerClient = new SubscriptionManagerClient(binding, new EndpointAddress(serviceAdress)); m_PullPointSubscriptionClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetPasswordDigestBehavior); m_PullPointSubscriptionClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetBasicBasicAuthBehaviour); m_SubscriptionManagerClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetPasswordDigestBehavior); m_SubscriptionManagerClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetBasicBasicAuthBehaviour); return(true); } else { // throw new DeviceEventReceiverException("Device doesn't support pull point subscription"); } if ((response.Events != null) && response.Events.WSPullPointSupport) { m_PullPointSubscriptionClient = new PullPointSubscriptionClient(binding, new EndpointAddress(serviceAdress)); m_SubscriptionManagerClient = new SubscriptionManagerClient(binding, new EndpointAddress(serviceAdress)); m_PullPointSubscriptionClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetPasswordDigestBehavior); m_PullPointSubscriptionClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetBasicBasicAuthBehaviour); m_SubscriptionManagerClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetPasswordDigestBehavior); m_SubscriptionManagerClient.Endpoint.EndpointBehaviors.Add(this.m_onVifDevice.GetBasicBasicAuthBehaviour); return(true); } else { throw new DeviceEventReceiverException("Device doesn't support pull point subscription"); } } } } catch (Exception ex) { m_ErrorMessage = ex.Message; return(false); } return(m_initialised); }