private void ParseZones(XElement configNode, bool parseAddressBook) { var zones = configNode.XPathSelectElements("./security/zones/security-zone"); foreach (var zone in zones) { JuniperObject juniperZone = new Juniper_Zone(); juniperZone.Parse(zone, null); _juniperObjects.Add(juniperZone); if (parseAddressBook) { var addresses = zone.XPathSelectElements("address-book/address"); ParseAddresses(addresses, juniperZone.Name); var addressGroups = zone.XPathSelectElements("address-book/address-set"); foreach (var group in addressGroups) { JuniperObject juniperAddressGroup = new Juniper_AddressGroup(); juniperAddressGroup.Parse(group, juniperZone.Name); _juniperObjects.Add(juniperAddressGroup); HandleDuplicatedAddressName(juniperAddressGroup.Name, juniperZone.Name); } } } }
private bool ParseAddressBooks(XElement configNode) { var addressBooks = configNode.XPathSelectElements("./security/address-book"); if (!addressBooks.Any()) { return(false); } foreach (var addressBook in addressBooks) { string addressBookName = JuniperObject.GlobalZoneName; string addressBookZone = JuniperObject.GlobalZoneName; var addressBookNameNode = addressBook.Element("name"); if (addressBookNameNode != null && !string.IsNullOrEmpty(addressBookNameNode.Value)) { addressBookName = addressBookNameNode.Value; } var zoneNameNode = addressBook.XPathSelectElement("./attach/zone/name"); if (zoneNameNode != null && !string.IsNullOrEmpty(zoneNameNode.Value)) { addressBookZone = zoneNameNode.Value; } else if (addressBookName != JuniperObject.GlobalZoneName) { // Found non global address-book without a zone attached!!! Console.WriteLine("Found non global address-book without a zone attached: {0}", addressBookName); continue; } var addresses = addressBook.Elements("address"); ParseAddresses(addresses, addressBookZone); var addressGroups = addressBook.Elements("address-set"); foreach (var group in addressGroups) { JuniperObject juniperAddressGroup = new Juniper_AddressGroup(); juniperAddressGroup.Parse(group, addressBookZone); _juniperObjects.Add(juniperAddressGroup); HandleDuplicatedAddressName(juniperAddressGroup.Name, addressBookZone); } } return(true); }