//---------------------------------------------------------------------------- // // Copyright (c) Intel Corporation, 2011-2015 All Rights Reserved. // //---------------------------------------------------------------------------- using System; using System.Collections.ObjectModel; using Intel.Manageability; using System.Xml; using Intel.Manageability.Exceptions; using Intel.Manageability.Events; namespace WSEventingSample { class WSEventingFunctionality { /// /// Regular Subscription to all events /// /// The Intel AMT instance public static void Subscribe(IAMTInstance amt) { try { if (amt.Events.WSEvents.supportedFilters.Contains(FilterName.All)) { //Subscribe with the default (PUSH) delivery mode //The address (FQDN or IP format) must begin with ‘http://’ ('https://' is also supported from AMT version 11.0 and above) and include the port. Subscription subscription = new Subscription("http://192.168.0.15:12345", FilterName.All, SenderIDType.UUID); //the SenderId will be added to ReferenceParameter, in Intel(R) AMT < 5.1 it will be added to the HTTPHeader subscription.SenderIDPlacing = SenderIDPlacing.ReferenceParameter; amt.Events.WSEvents.Subscribe(subscription, null, null); Console.WriteLine("\nSubscription operation completed successfully."); } else { Console.WriteLine("\n" + "This filter is not supported by this version of Intel(R) AMT "); } } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// Subscribe With Reference Parameters /// Reference parameters are limited by Intel AMT to a maximum length of 256 characters. This value includes tags and namespaces, and not just the values. /// /// The Intel AMT instance public static void SubscribeWithReferenceParameters(IAMTInstance amt) { try { //This XML will be sent with the event //the XML must contain the namespace for the reference parameters and the content XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("m", "Free_XML", "http://www.RefParametersNamepsace.com"); //content of the reference parameters root.InnerText = "this XML will be sent each event"; doc.AppendChild(root); if (amt.Events.WSEvents.supportedFilters.Contains(FilterName.All)) { //The address (FQDN or IP format) must begin with ‘http://’ ('https://' is also supported from AMT version 11.0 and above) and include the port. Subscription subscription = new Subscription("http://myConsole.intel.com:12345", FilterName.All, SenderIDType.CurrentAddress); //the SenderId will be added to ReferenceParameter, in Intel(R) AMT < 5.1 it will be added to the HTTPHeader subscription.SenderIDPlacing = SenderIDPlacing.ReferenceParameter; amt.Events.WSEvents.Subscribe(subscription, null, doc); Console.WriteLine("\nSubscription operation completed successfully."); } else { Console.WriteLine("\n" + "This filter is not supported by this version of Intel(R) AMT "); } } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// Display all the current subscriptions /// /// The Intel AMT instance public static void DisplayCurrentSubscription(IAMTInstance amt) { try { Collection subscriptions = amt.Events.WSEvents.EnumerateSubscriptions(); Console.WriteLine("Subscriptions"); Console.WriteLine("-------------"); foreach (Subscription sub in subscriptions) { Console.WriteLine("\nListener address: {0}", sub.ListenerAddress); Console.WriteLine("DeliveryMode: {0}", sub.DeliveryMode); Console.WriteLine("Type of filter: {0}", sub.Filter); Console.WriteLine("Sender address: {0}", sub.Sender); } } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// UnSubscribe from a subscription /// /// The Intel AMT instance public static void UnSubscribe(IAMTInstance amt) { try { bool Unsubscribed = false; Collection subscriptions = amt.Events.WSEvents.EnumerateSubscriptions(); foreach (Subscription sub in subscriptions) { //Delete all the subscriptions with listenerAddress == "http://192.168.0.16:12345", filter == All, DeliveryMode = Push if ((sub.DeliveryMode == DeliveryMode.Push) && (sub.ListenerAddress == "http://192.168.0.15:12345") && (sub.Filter == FilterName.All)) { amt.Events.WSEvents.UnSubscribe(sub); Unsubscribed = true; } } if (!(Unsubscribed)) { Console.WriteLine("Subscription not found."); return; } Console.WriteLine("\nUnSubscribe operation completed successfully."); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } public static void SubscribeCILAEvent(IAMTInstance amt) { try { if (amt.Events.WSEvents.supportedFilters.Contains(FilterName.Features)) { amt.Events.EnableCILA(FastCallForHelp.Enable_OS_AND_BIOS); //The address (FQDN or IP format) must begin with ‘http://’ ('https://' is also supported from AMT version 11.0 and above) and include the port. Subscription subscription = new Subscription("http://192.168.0.17:12345", FilterName.Features, SenderIDType.None); amt.Events.WSEvents.Subscribe(subscription, null, null); Console.WriteLine("\nSubscription operation completed successfully."); } else { Console.WriteLine("\n" + "This filter is not supported by this version of Intel(R) AMT "); } } catch (NotSupportedException ex) { Console.WriteLine("\n" + ex.Message); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// Unsubscribe all subscriptions /// /// The Intel AMT instance public static void UnSubscribeAll(IAMTInstance amt) { try { amt.Events.WSEvents.UnSubscribeAll(); Console.WriteLine("\nUnSubscription operation completed successfully."); } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } /// /// Regular Subscription to ME_Presence events /// /// The Intel AMT instance public static void SubscribeME_PresenceEvent(IAMTInstance amt) { try { if (amt.Events.WSEvents.supportedFilters.Contains(FilterName.ME_Presence)) { //The address (FQDN or IP format) must begin with ‘http://’ ('https://' is also supported from AMT version 11.0 and above) and include the port. Subscription subscription = new Subscription("http://192.168.0.12:12345", FilterName.ME_Presence, "MyAMT", DeliveryMode.Push); //set the presence interval to be 20 minutes subscription.PresenceInterval = 20; amt.Events.WSEvents.Subscribe(subscription, null, null); Console.WriteLine("\nSubscription operation completed successfully."); } else { Console.WriteLine("\n" + "This filter is not supported by this version of Intel(R) AMT "); } } catch (ManageabilityException ex) { Console.WriteLine("\n" + ex.Message); } } } }