[fwbuilder-commits] [SCM] Firewall Builder GUI and Policy Compilers Open Source Code branch, develo
Brought to you by:
mikehorn
From: <gi...@ir...> - 2011-02-27 04:34:40
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Firewall Builder GUI and Policy Compilers Open Source Code". The branch, development has been updated via 73500e15c51a3526cb148738bc20997ff2bba98e (commit) from 849482d15dabefed1675b778886f7381b1091a78 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 73500e15c51a3526cb148738bc20997ff2bba98e Author: Vadim Kurland <va...@sl...> Date: Sat Feb 26 20:45:57 2011 -0800 see #2153 Wizard shows additional page when user imports PIX/ASA config. This page explains concept of network zones and offers UI to let them choose network objects or groups as a network zone of each interface. diff --git a/doc/ChangeLog b/doc/ChangeLog index 7ce2bc6..68d4c8b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,11 @@ 2011-02-26 vadim <va...@ne...> + * DiscoveryDruid.cpp (finishClicked): see #2153 "Add Network Zone + explanation and selection dialog to ASA/PIX import". Wizard shows + additional page when user imports PIX/ASA config. This page + explains concept of network zones and offers UI to let them choose + network objects or groups as a network zone of each interface. + * PIXImporter.cpp (rearrangeVlanInterfaces): see #2145 "ASA Import of VLAN interfaces - Advanced Interface Settings not available". Vlan interfaces discovered in the process of PIX configuration diff --git a/src/libgui/DiscoveryDruid.cpp b/src/libgui/DiscoveryDruid.cpp index 0b817e4..ba80674 100644 --- a/src/libgui/DiscoveryDruid.cpp +++ b/src/libgui/DiscoveryDruid.cpp @@ -85,6 +85,7 @@ #include "UserWorkflow.h" #include "ObjectManipulator.h" #include "FWWindow.h" +#include "networkZoneManager.h" #include "IOSImporter.h" #include "IPTImporter.h" @@ -99,6 +100,8 @@ DiscoveryDruid::DiscoveryDruid(QWidget *parent, bool start_with_import) : { init = true; + discovered_fw = NULL; + m_dialog = new Ui::DiscoveryDruid_q; m_dialog->setupUi(this); @@ -221,6 +224,45 @@ void DiscoveryDruid::backClicked() void DiscoveryDruid::finishClicked() { + if (current_task == BT_IMPORT && selectedPlatform() == "pix" && currentPage() == 14) + { + // read and configure network zones + list<FWObject*> all_interfaces = discovered_fw->getByTypeDeep(Interface::TYPENAME); + list<FWObject*>::iterator it; + int row = 0; + for (it=all_interfaces.begin(); it!=all_interfaces.end(); ++it) + { + Interface *iface = Interface::cast(*it); + + string network_zone_str_id = ""; + + QList<QTableWidgetItem*> ltwi = + m_dialog->iface_nz_list->findItems( iface->getName().c_str(), + Qt::MatchExactly ); + if ( ! ltwi.empty()) + { + QTableWidgetItem *itm2 = ltwi[0]; + assert(itm2!=NULL); + int row = itm2->row(); + QComboBox *cb = dynamic_cast<QComboBox*>( + m_dialog->iface_nz_list->cellWidget(row, 3)); + assert(cb!=NULL); + int network_zone_int_id = + cb->itemData(cb->currentIndex(), Qt::UserRole).toInt(); + if (network_zone_int_id != 0) + network_zone_str_id = FWObjectDatabase::getStringId( + network_zone_int_id); + else + network_zone_str_id = ""; + } + + // only set network zone if it is supported and is not empty. See #2014 + if (!network_zone_str_id.empty()) + iface->setStr("network_zone", network_zone_str_id); + + } + } + QDialog::accept(); } @@ -576,6 +618,7 @@ void DiscoveryDruid::changedSelected( const int &page ) setNextEnabled(page, false); setFinishEnabled(page, true); finishButton->setFocus(); + fillNetworkZones(); break; } @@ -1234,6 +1277,55 @@ void DiscoveryDruid::selectAllObjs() m_dialog->objectlist->selectAll(); } +void DiscoveryDruid::fillNetworkZones() +{ + m_dialog->iface_nz_list->clear(); + + QStringList labels; + labels << QObject::tr("Name") << QObject::tr("Label") + << QObject::tr("Address") << QObject::tr("Network Zone"); + m_dialog->iface_nz_list->setHorizontalHeaderLabels(labels); + + NetworkZoneManager netzone_manager; + netzone_manager.load(mw->activeProject()->db()); + + list<FWObject*> all_interfaces = discovered_fw->getByTypeDeep(Interface::TYPENAME); + list<FWObject*>::iterator it; + int row = 0; + for (it=all_interfaces.begin(); it!=all_interfaces.end(); ++it) + { + Interface *iface = Interface::cast(*it); + + m_dialog->iface_nz_list->insertRow(row); + + QTableWidgetItem* itm; + + itm = new QTableWidgetItem(iface->getName().c_str()); + itm->setFlags(itm->flags() & ~Qt::ItemIsEditable); + m_dialog->iface_nz_list->setItem(row, 0, itm); + + itm = new QTableWidgetItem(iface->getLabel().c_str()); + itm->setFlags(itm->flags() & ~Qt::ItemIsEditable); + m_dialog->iface_nz_list->setItem(row, 1, itm); + + QString addr_str; + const InetAddr* addr = iface->getAddressPtr(); + if (addr) addr_str = addr->toString().c_str(); + + itm = new QTableWidgetItem(addr_str); + itm->setFlags(itm->flags() & ~Qt::ItemIsEditable); + m_dialog->iface_nz_list->setItem(row, 2, itm); + + QComboBox *widget = new QComboBox(); + netzone_manager.packComboBox(widget, -1); + m_dialog->iface_nz_list->setCellWidget(row, 3, widget); + + row++; + } + + m_dialog->iface_nz_list->resizeColumnToContents(3); +} + void DiscoveryDruid::fillNetworks() { ObjectDescriptor buf; @@ -1360,6 +1452,7 @@ void DiscoveryDruid::loadDataFromImporter() if (fw) // fw can be NULL if import was uncussessful { + discovered_fw = fw; ProjectPanel *pp = mw->activeProject(); QString filename = pp->getFileName(); diff --git a/src/libgui/DiscoveryDruid.h b/src/libgui/DiscoveryDruid.h index 2a4160c..d38f325 100644 --- a/src/libgui/DiscoveryDruid.h +++ b/src/libgui/DiscoveryDruid.h @@ -217,6 +217,8 @@ private: QProgressBar *unBar; QLabel *errMessage; QString HostName; + + libfwbuilder::Firewall *discovered_fw; void setDiscoveryMethod_file(); void setDiscoveryMethod_DNS(); @@ -254,6 +256,7 @@ public: void loadDataFromCrawler(); void loadDataFromDNS(); void fillListOfNetworks(); + void fillNetworkZones(); void createRealObjects(); // void stripObjects(); void getNameServers(); diff --git a/src/libgui/discoverydruid_q.ui b/src/libgui/discoverydruid_q.ui index aee5a86..174898c 100644 --- a/src/libgui/discoverydruid_q.ui +++ b/src/libgui/discoverydruid_q.ui @@ -48,7 +48,7 @@ <item> <widget class="QStackedWidget" name="stackedWidget"> <property name="currentIndex"> - <number>13</number> + <number>14</number> </property> <widget class="QWidget" name="WizardPage0"> <layout class="QGridLayout"> ----------------------------------------------------------------------- Summary of changes: doc/ChangeLog | 6 +++ src/libgui/DiscoveryDruid.cpp | 93 ++++++++++++++++++++++++++++++++++++++++ src/libgui/DiscoveryDruid.h | 3 + src/libgui/discoverydruid_q.ui | 2 +- 4 files changed, 103 insertions(+), 1 deletions(-) hooks/post-receive -- Firewall Builder GUI and Policy Compilers Open Source Code |