public void FirewallConfiguration() { var payload = new FirewallRulePayload { SourcePort = "41", Protocol = "udp", Application = "app", ChainName = "chain", DestinationAddress = "127.0.0.1", DestinationPort = "70", Enabled = false, SourceAddress = "10.0.0.1" }; foreach (FirewallRulePayload.Directions value in Enum.GetValues(typeof(FirewallRulePayload.Directions))) { payload.Direction = value; var obj = new FirewallConfiguration(EventPriority.Low, payload); obj.ValidateSchema(); } foreach (FirewallRulePayload.Actions value in Enum.GetValues(typeof(FirewallRulePayload.Actions))) { payload.Action = value; var obj = new FirewallConfiguration(EventPriority.Low, payload); obj.ValidateSchema(); } payload.Priority = 4; var withPriority = new FirewallConfiguration(EventPriority.Low, payload); withPriority.ValidateSchema(); }
private IEnumerable<FirewallRulePayload> GetPayloads() { INetFwRules rules = _firewallPolicy.Rules; int count = rules.Count; IEnumVARIANT enumVARIANT = rules.get__NewEnum(); object[] obj = new object[1]; for (int i = 0; i < count; i++) { if (enumVARIANT.Next(1, obj, IntPtr.Zero) == 0) { var rule = (INetFwRule)obj[0]; if (!ShouldHandleRule(rule)) { continue; } FirewallRulePayload payload = new FirewallRulePayload(); payload.Action = rule.Action.ToIoTValue(); payload.Direction = rule.Direction.ToIoTValue(); payload.Enabled = rule.Enabled; payload.Application = rule.ApplicationName; payload.SourceAddress = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.RemoteAddresses : rule.LocalAddresses; payload.SourcePort = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.RemotePorts : rule.LocalPorts; payload.DestinationAddress = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.LocalAddresses : rule.RemoteAddresses; payload.DestinationPort = rule.Direction == NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN ? rule.LocalPorts : rule.RemotePorts; payload.Protocol = ((FirewallRuleProtocol)rule.Protocol).ToString(); payload.Priority = null; payload.ExtraDetails = new Dictionary<string, string>() { { RuleNameExtraDetailsKey, rule.Name } }; yield return payload; } } }