1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2026-03-25 04:37:22 +01:00

see #2000 Added page to the new firewall wizard to let the

user configure network zones of interfaces when chosen firewall
platform supports network zones (only PIX/ASA right now).
This commit is contained in:
Vadim Kurland 2011-01-28 16:43:13 -08:00
parent 670c6094de
commit 93b3b12bab
11 changed files with 821 additions and 442 deletions

View File

@ -1,5 +1,11 @@
2011-01-28 vadim <vadim@netcitadel.com>
* newFirewallDialog.cpp (fillInterfaceNZList): fixes #2000 "New
dialog window in New Firewall wizard for ASA / PIX - Network Zone
explanation". Added page to the new firewall wizard to let the
user configure network zones of interfaces when chosen firewall
platform supports network zones (only PIX/ASA right now).
* newFirewallDialog.cpp (fillInterfaceSLList): fixes #1983 "ASA
multiple interfaces have the same security level". Using table
widget with spin-boxes to let the user edit security levels of

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -74,6 +74,8 @@ using namespace libfwbuilder;
InterfaceDialog::InterfaceDialog(QWidget *parent) :
BaseObjectDialog(parent)
{
netzone_manager = new NetworkZoneManager();
m_dialog = new Ui::InterfaceDialog_q;
m_dialog->setupUi(this);
/*
@ -85,6 +87,7 @@ InterfaceDialog::InterfaceDialog(QWidget *parent) :
InterfaceDialog::~InterfaceDialog()
{
delete netzone_manager;
delete m_dialog;
}
@ -290,81 +293,12 @@ void InterfaceDialog::loadFWObject(FWObject *o)
m_dialog->netzone->setEnabled(true);
m_dialog->netzoneLabel->setEnabled(true);
netzoneObjectIDs.clear();
netzoneObjectNos.clear();
QStringList netzoneObjectNames;
int n = 0;
netzoneObjectIDs[0] = n;
netzoneObjectNos[n] = 0;
netzoneObjectNames.push_back(" None ");
++n;
netzoneObjectIDs[FWObjectDatabase::ANY_ADDRESS_ID] = n;
netzoneObjectNos[n] = FWObjectDatabase::ANY_ADDRESS_ID;
netzoneObjectNames.push_back(" Any ");
++n;
/* TODO: try to make this widget show object with appropriate icon */
list<FWObject*> libs = m_project->db()->getByType( Library::TYPENAME );
for (list<FWObject*>::iterator l=libs.begin(); l!=libs.end(); ++l)
{
FWObject *library= *l;
FWObject *o1,*o2;
if ( library->getId()==FWObjectDatabase::DELETED_OBJECTS_ID ) continue;
o1=library->findObjectByName(ObjectGroup::TYPENAME,"Objects");
assert(o1!=NULL);
o2=o1->findObjectByName(ObjectGroup::TYPENAME,"Groups");
if (o2==NULL)
{
if (fwbdebug)
qDebug("InterfaceDialog::loadFWObject missing Groups group in %s", FWObjectDatabase::getStringId(o1->getId()).c_str());
continue;
}
// assert(o2!=NULL);
for (FWObject::iterator i=o2->begin(); i!=o2->end(); ++i)
{
netzoneObjectIDs[(*i)->getId()] = n;
netzoneObjectNos[n] =(*i)->getId();
netzoneObjectNames.push_back(
tr("Group: ")+ (*i)->getName().c_str() );
++n;
}
o2=o1->findObjectByName(ObjectGroup::TYPENAME,"Networks");
if (o2==NULL)
{
if (fwbdebug)
qDebug("InterfaceDialog::loadFWObject missing Networks group in %s",
FWObjectDatabase::getStringId(o1->getId()).c_str());
continue;
}
// assert(o2!=NULL);
for (FWObject::iterator i1=o2->begin(); i1!=o2->end(); ++i1)
{
netzoneObjectIDs[(*i1)->getId()] = n;
netzoneObjectNos[n] = (*i1)->getId();
netzoneObjectNames.push_back(
tr("Network: ")+ (*i1)->getName().c_str() );
++n;
}
}
m_dialog->netzone->clear();
m_dialog->netzone->addItems( netzoneObjectNames );
netzone_manager->load(m_project->db());
int id = FWObjectDatabase::getIntId(obj->getStr("network_zone"));
if (id==-1) id = 0;
m_dialog->netzone->setCurrentIndex( netzoneObjectIDs[id] );
netzone_manager->packComboBox(m_dialog->netzone, id);
}
else
{
@ -517,11 +451,14 @@ void InterfaceDialog::applyChanges()
try
{
supports_security_levels=
Resources::getTargetCapabilityBool(f->getStr("platform"), "security_levels");
Resources::getTargetCapabilityBool(f->getStr("platform"),
"security_levels");
supports_network_zones=
Resources::getTargetCapabilityBool(f->getStr("platform"), "network_zones");
Resources::getTargetCapabilityBool(f->getStr("platform"),
"network_zones");
supports_unprotected =
Resources::getTargetCapabilityBool(f->getStr("platform"), "unprotected_interfaces");
Resources::getTargetCapabilityBool(f->getStr("platform"),
"unprotected_interfaces");
} catch (FWException &ex) { }
@ -534,10 +471,20 @@ void InterfaceDialog::applyChanges()
new_state->setBool("unprotected", m_dialog->unprotected->isChecked() );
if (supports_network_zones)
{
new_state->setStr("network_zone",
FWObjectDatabase::getStringId(
netzoneObjectNos[
m_dialog->netzone->currentIndex() ]));
m_dialog->netzone->itemData(
m_dialog->netzone->currentIndex(),
Qt::UserRole).toInt()));
// new_state->setStr("network_zone",
// FWObjectDatabase::getStringId(
// netzone_manager->getNetzoneIdByListIndex(
// m_dialog->netzone->currentIndex() )
// )
// );
}
intf->setManagement( m_dialog->management->isChecked() );
}

View File

@ -29,7 +29,10 @@
#include "../../config.h"
#include <ui_interfacedialog_q.h>
#include "BaseObjectDialog.h"
#include "networkZoneManager.h"
#include <QWidget>
#include "fwbuilder/FWObject.h"
@ -42,12 +45,7 @@ class InterfaceDialog : public BaseObjectDialog
{
Q_OBJECT;
// netzoneObjectIDs : key - object id, value - number in the list
QMap<int,int> netzoneObjectIDs;
// netzoneObjectNos : key - number in the list, value - obj id
QMap<int,int> netzoneObjectNos;
NetworkZoneManager *netzone_manager;
Ui::InterfaceDialog_q *m_dialog;
@ -55,7 +53,6 @@ class InterfaceDialog : public BaseObjectDialog
InterfaceDialog(QWidget *parent);
~InterfaceDialog();
public slots:
virtual void applyChanges();
virtual void loadFWObject(libfwbuilder::FWObject *obj);

View File

@ -1,249 +1,250 @@
<RCC>
<qresource prefix="/">
<qresource prefix="/" >
<file>Images/network_zone_dialog.png</file>
<file>Images/logo1.png</file>
<file>Images/library_switch_screenshot.png</file>
<file alias="Icons/Import-big">Icons/import_64_1.png</file>
<file alias="Icons/Inspect">Icons/inspect.png</file>
<file alias="Icons/Tutorial">Icons/tutorial_64.png</file>
<file alias="Icons/Import-big" >Icons/import_64_1.png</file>
<file alias="Icons/Inspect" >Icons/inspect.png</file>
<file alias="Icons/Tutorial" >Icons/tutorial_64.png</file>
<file>Icons/tutorial_64_1.png</file>
<file alias="Icons/Accept/icon">Icons/accept_25.png</file>
<file alias="Icons/Accept/icon-big">Icons/accept_64.png</file>
<file alias="Icons/Accept/icon-tree">Icons/accept_16.png</file>
<file alias="Icons/Accounting/icon">Icons/accounting_25.png</file>
<file alias="Icons/Accounting/icon-big">Icons/accounting_64.png</file>
<file alias="Icons/Accounting/icon-tree">Icons/accounting_16.png</file>
<file alias="Icons/AddressRange/icon">Icons/rangeaddress_25.png</file>
<file alias="Icons/AddressRange/icon-big">Icons/rangeaddress_64.png</file>
<file alias="Icons/AddressRange/icon-neg">Icons/rangeaddress-neg_25.png</file>
<file alias="Icons/AddressRange/icon-neg-tree">Icons/rangeaddress-neg_16.png</file>
<file alias="Icons/AddressRange/icon-ref">Icons/rangeaddress-ref_25.png</file>
<file alias="Icons/AddressRange/icon-tree">Icons/rangeaddress_16.png</file>
<file alias="Icons/AddressTable/icon">Icons/addresstable_25.png</file>
<file alias="Icons/AddressTable/icon-big">Icons/addresstable_64.png</file>
<file alias="Icons/AddressTable/icon-neg">Icons/addresstable-neg_25.png</file>
<file alias="Icons/AddressTable/icon-neg-tree">Icons/addresstable-neg_16.png</file>
<file alias="Icons/AddressTable/icon-ref">Icons/addresstable-ref_25.png</file>
<file alias="Icons/AddressTable/icon-tree">Icons/addresstable_16.png</file>
<file alias="Icons/Blank/icon">Icons/blank.png</file>
<file alias="Icons/Blank/icon-big">Icons/blank.png</file>
<file alias="Icons/Both/icon">Icons/both_25.png</file>
<file alias="Icons/Both/icon-big">Icons/both_64.png</file>
<file alias="Icons/Both/icon-tree">Icons/both_16.png</file>
<file alias="Icons/Branch/icon">Icons/branch_25.png</file>
<file alias="Icons/Branch/icon-big">Icons/branch_64.png</file>
<file alias="Icons/Branch/icon-tree">Icons/branch_16.png</file>
<file alias="Icons/Classify/icon">Icons/classify_25.png</file>
<file alias="Icons/Classify/icon-big">Icons/classify_64.png</file>
<file alias="Icons/Classify/icon-tree">Icons/classify_16.png</file>
<file alias="Icons/Cluster/icon">Icons/cluster_25.png</file>
<file alias="Icons/Cluster/icon-big">Icons/cluster_64.png</file>
<file alias="Icons/Cluster/icon-neg">Icons/cluster-neg_25.png</file>
<file alias="Icons/Cluster/icon-neg-tree">Icons/cluster-neg_16.png</file>
<file alias="Icons/Cluster/icon-ref">Icons/cluster-ref_25.png</file>
<file alias="Icons/Cluster/icon-tree">Icons/cluster_16.png</file>
<file alias="Icons/ClusterGroup/icon">Icons/user_25.png</file>
<file alias="Icons/ClusterGroup/icon-big">Icons/user_64.png</file>
<file alias="Icons/ClusterGroup/icon-neg">Icons/user-neg_25.png</file>
<file alias="Icons/ClusterGroup/icon-ref">Icons/user-ref_25.png</file>
<file alias="Icons/ClusterGroup/icon-tree">Icons/user_16.png</file>
<file alias="Icons/Compile">Icons/compile_25.png</file>
<file alias="Icons/Continue/icon">Icons/continue_25.png</file>
<file alias="Icons/Continue/icon-big">Icons/continue_64.png</file>
<file alias="Icons/Continue/icon-tree">Icons/continue_16.png</file>
<file alias="Icons/Custom/icon">Icons/custom_25.png</file>
<file alias="Icons/Custom/icon-big">Icons/custom_64.png</file>
<file alias="Icons/Custom/icon-tree">Icons/custom_16.png</file>
<file alias="Icons/CustomService/icon">Icons/service-custom_25.png</file>
<file alias="Icons/CustomService/icon-big">Icons/service-custom_64.png</file>
<file alias="Icons/CustomService/icon-neg">Icons/service-custom-neg_25.png</file>
<file alias="Icons/CustomService/icon-neg-tree">Icons/service-custom-neg_16.png</file>
<file alias="Icons/CustomService/icon-ref">Icons/service-custom-ref_25.png</file>
<file alias="Icons/CustomService/icon-tree">Icons/service-custom_16.png</file>
<file alias="Icons/DNSName/icon">Icons/domainname_25.png</file>
<file alias="Icons/DNSName/icon-big">Icons/domainname_64.png</file>
<file alias="Icons/DNSName/icon-neg">Icons/domainname-neg_25.png</file>
<file alias="Icons/DNSName/icon-neg-tree">Icons/domainname-neg_16.png</file>
<file alias="Icons/DNSName/icon-ref">Icons/domainname-ref_25.png</file>
<file alias="Icons/DNSName/icon-tree">Icons/domainname_16.png</file>
<file alias="Icons/Deny/icon">Icons/deny_25.png</file>
<file alias="Icons/Deny/icon-big">Icons/deny_64.png</file>
<file alias="Icons/Deny/icon-tree">Icons/deny_16.png</file>
<file alias="Icons/FailoverClusterGroup/icon">Icons/failover-cluster-group_25.png</file>
<file alias="Icons/FailoverClusterGroup/icon-big">Icons/failover-cluster-group_64.png</file>
<file alias="Icons/FailoverClusterGroup/icon-neg">Icons/failover-cluster-group-neg_25.png</file>
<file alias="Icons/FailoverClusterGroup/icon-neg-tree">Icons/failover-cluster-group-neg_16.png</file>
<file alias="Icons/FailoverClusterGroup/icon-ref">Icons/failover-cluster-group-ref_25.png</file>
<file alias="Icons/FailoverClusterGroup/icon-tree">Icons/failover-cluster-group_16.png</file>
<file alias="Icons/Firewall/icon">Icons/firewall_25.png</file>
<file alias="Icons/Firewall/icon-big">Icons/firewall_64.png</file>
<file alias="Icons/Firewall/icon-neg">Icons/firewall-neg_25.png</file>
<file alias="Icons/Firewall/icon-neg-tree">Icons/firewall-neg_16.png</file>
<file alias="Icons/Firewall/icon-ref">Icons/firewall-ref_25.png</file>
<file alias="Icons/Firewall/icon-tree">Icons/firewall_16.png</file>
<file alias="Icons/Host/icon">Icons/host_25.png</file>
<file alias="Icons/Host/icon-big">Icons/host_64.png</file>
<file alias="Icons/Host/icon-neg">Icons/host-neg_25.png</file>
<file alias="Icons/Host/icon-neg-tree">Icons/host-neg_16.png</file>
<file alias="Icons/Host/icon-ref">Icons/host-ref_25.png</file>
<file alias="Icons/Host/icon-tree">Icons/host_16.png</file>
<file alias="Icons/ICMP6Service/icon">Icons/service-icmp6_25.png</file>
<file alias="Icons/ICMP6Service/icon-big">Icons/service-icmp6_64.png</file>
<file alias="Icons/ICMP6Service/icon-neg">Icons/service-icmp6-neg_25.png</file>
<file alias="Icons/ICMP6Service/icon-neg-tree">Icons/service-icmp6-neg_16.png</file>
<file alias="Icons/ICMP6Service/icon-ref">Icons/service-icmp6-ref_25.png</file>
<file alias="Icons/ICMP6Service/icon-tree">Icons/service-icmp6_16.png</file>
<file alias="Icons/ICMPService/icon">Icons/service-icmp_25.png</file>
<file alias="Icons/ICMPService/icon-big">Icons/service-icmp_64.png</file>
<file alias="Icons/ICMPService/icon-neg">Icons/service-icmp-neg_25.png</file>
<file alias="Icons/ICMPService/icon-neg-tree">Icons/service-icmp-neg_16.png</file>
<file alias="Icons/ICMPService/icon-ref">Icons/service-icmp-ref_25.png</file>
<file alias="Icons/ICMPService/icon-tree">Icons/service-icmp_16.png</file>
<file alias="Icons/IPService/icon">Icons/service-ip_25.png</file>
<file alias="Icons/IPService/icon-big">Icons/service-ip_64.png</file>
<file alias="Icons/IPService/icon-neg">Icons/service-ip-neg_25.png</file>
<file alias="Icons/IPService/icon-neg-tree">Icons/service-ip-neg_16.png</file>
<file alias="Icons/IPService/icon-ref">Icons/service-ip-ref_25.png</file>
<file alias="Icons/IPService/icon-tree">Icons/service-ip_16.png</file>
<file alias="Icons/IPv4/icon">Icons/address_25.png</file>
<file alias="Icons/IPv4/icon-big">Icons/address_64.png</file>
<file alias="Icons/IPv4/icon-neg">Icons/address-neg_25.png</file>
<file alias="Icons/IPv4/icon-neg-tree">Icons/address-neg_16.png</file>
<file alias="Icons/IPv4/icon-ref">Icons/address-ref_25.png</file>
<file alias="Icons/IPv4/icon-tree">Icons/address_16.png</file>
<file alias="Icons/IPv6/icon">Icons/address6_25.png</file>
<file alias="Icons/IPv6/icon-big">Icons/address6_64.png</file>
<file alias="Icons/IPv6/icon-neg">Icons/address6-neg_25.png</file>
<file alias="Icons/IPv6/icon-neg-tree">Icons/address6-neg_16.png</file>
<file alias="Icons/IPv6/icon-ref">Icons/address6-ref_25.png</file>
<file alias="Icons/IPv6/icon-tree">Icons/address6_16.png</file>
<file alias="Icons/Inbound/icon">Icons/inbound_25.png</file>
<file alias="Icons/Inbound/icon-big">Icons/inbound_64.png</file>
<file alias="Icons/Inbound/icon-tree">Icons/inbound_16.png</file>
<file alias="Icons/Install">Icons/install_25.png</file>
<file alias="Icons/Interface/icon">Icons/interface_25.png</file>
<file alias="Icons/Interface/icon-big">Icons/interface_64.png</file>
<file alias="Icons/Interface/icon-neg">Icons/interface-neg_25.png</file>
<file alias="Icons/Interface/icon-neg-tree">Icons/interface-neg_16.png</file>
<file alias="Icons/Interface/icon-ref">Icons/interface-ref_25.png</file>
<file alias="Icons/Interface/icon-tree">Icons/interface_16.png</file>
<file alias="Icons/Interval/icon">Icons/clock_25.png</file>
<file alias="Icons/Interval/icon-big">Icons/clock_64.png</file>
<file alias="Icons/Interval/icon-neg">Icons/clock-neg_25.png</file>
<file alias="Icons/Interval/icon-neg-tree">Icons/clock-neg_16.png</file>
<file alias="Icons/Interval/icon-ref">Icons/clock-ref_25.png</file>
<file alias="Icons/Interval/icon-tree">Icons/clock_16.png</file>
<file alias="Icons/IntervalGroup/icon">Icons/clock-group_25.png</file>
<file alias="Icons/IntervalGroup/icon-big">Icons/clock-group_64.png</file>
<file alias="Icons/IntervalGroup/icon-neg">Icons/clock-group-neg_25.png</file>
<file alias="Icons/IntervalGroup/icon-neg-tree">Icons/clock-group-neg_16.png</file>
<file alias="Icons/IntervalGroup/icon-ref">Icons/clock-group-ref_25.png</file>
<file alias="Icons/IntervalGroup/icon-tree">Icons/clock-group_16.png</file>
<file alias="Icons/Library/icon">Icons/library_25.png</file>
<file alias="Icons/Library/icon-big">Icons/library_64.png</file>
<file alias="Icons/Library/icon-neg">Icons/library-neg_25.png</file>
<file alias="Icons/Library/icon-neg-tree">Icons/library-neg_16.png</file>
<file alias="Icons/Library/icon-ref">Icons/library-ref_25.png</file>
<file alias="Icons/Library/icon-tree">Icons/library_16.png</file>
<file alias="Icons/Log/icon">Icons/log_25.png</file>
<file alias="Icons/Log/icon-big">Icons/log_64.png</file>
<file alias="Icons/Log/icon-tree">Icons/log_16.png</file>
<file alias="Icons/NAT/icon">Icons/nat_25.png</file>
<file alias="Icons/NAT/icon-big">Icons/nat_64.png</file>
<file alias="Icons/NAT/icon-tree">Icons/nat_16.png</file>
<file alias="Icons/NATBranch/icon">Icons/branch_25.png</file>
<file alias="Icons/NATBranch/icon-big">Icons/branch_64.png</file>
<file alias="Icons/NATBranch/icon-tree">Icons/branch_16.png</file>
<file alias="Icons/Network/icon">Icons/network_25.png</file>
<file alias="Icons/Network/icon-big">Icons/network_64.png</file>
<file alias="Icons/Network/icon-neg">Icons/network-neg_25.png</file>
<file alias="Icons/Network/icon-neg-tree">Icons/network-neg_16.png</file>
<file alias="Icons/Network/icon-ref">Icons/network-ref_25.png</file>
<file alias="Icons/Network/icon-tree">Icons/network_16.png</file>
<file alias="Icons/NetworkIPv6/icon">Icons/network6_25.png</file>
<file alias="Icons/NetworkIPv6/icon-big">Icons/network6_64.png</file>
<file alias="Icons/NetworkIPv6/icon-neg">Icons/network6-neg_25.png</file>
<file alias="Icons/NetworkIPv6/icon-neg-tree">Icons/network6-neg_16.png</file>
<file alias="Icons/NetworkIPv6/icon-ref">Icons/network6-ref_25.png</file>
<file alias="Icons/NetworkIPv6/icon-tree">Icons/network6_16.png</file>
<file alias="Icons/ObjectGroup/icon">Icons/object-group_25.png</file>
<file alias="Icons/ObjectGroup/icon-big">Icons/object-group_64.png</file>
<file alias="Icons/ObjectGroup/icon-neg">Icons/object-group-neg_25.png</file>
<file alias="Icons/ObjectGroup/icon-neg-tree">Icons/object-group-neg_16.png</file>
<file alias="Icons/ObjectGroup/icon-ref">Icons/object-group-ref_25.png</file>
<file alias="Icons/ObjectGroup/icon-tree">Icons/object-group_16.png</file>
<file alias="Icons/Options/icon">Icons/options_25.png</file>
<file alias="Icons/Options/icon-big">Icons/options_64.png</file>
<file alias="Icons/Options/icon-tree">Icons/options_16.png</file>
<file alias="Icons/Outbound/icon">Icons/outbound_25.png</file>
<file alias="Icons/Outbound/icon-big">Icons/outbound_64.png</file>
<file alias="Icons/Outbound/icon-tree">Icons/outbound_16.png</file>
<file alias="Icons/Pipe/icon">Icons/pipe_25.png</file>
<file alias="Icons/Pipe/icon-big">Icons/pipe_64.png</file>
<file alias="Icons/Pipe/icon-tree">Icons/pipe_16.png</file>
<file alias="Icons/Policy/icon">Icons/ruleset_25.png</file>
<file alias="Icons/Policy/icon-big">Icons/ruleset_64.png</file>
<file alias="Icons/Policy/icon-tree">Icons/ruleset_16.png</file>
<file alias="Icons/Reject/icon">Icons/reject_25.png</file>
<file alias="Icons/Reject/icon-big">Icons/reject_64.png</file>
<file alias="Icons/Reject/icon-tree">Icons/reject_16.png</file>
<file alias="Icons/Return/icon">Icons/back_25.png</file>
<file alias="Icons/Route/icon">Icons/route_25.png</file>
<file alias="Icons/Route/icon-big">Icons/route_64.png</file>
<file alias="Icons/Route/icon-tree">Icons/route_16.png</file>
<file alias="Icons/Routing/icon">Icons/routing_25.png</file>
<file alias="Icons/Routing/icon-big">Icons/routing_64.png</file>
<file alias="Icons/Routing/icon-tree">Icons/routing_16.png</file>
<file alias="Icons/ServiceGroup/icon">Icons/service-group_25.png</file>
<file alias="Icons/ServiceGroup/icon-big">Icons/service-group_64.png</file>
<file alias="Icons/ServiceGroup/icon-neg">Icons/service-group-neg_25.png</file>
<file alias="Icons/ServiceGroup/icon-neg-tree">Icons/service-group-neg_16.png</file>
<file alias="Icons/ServiceGroup/icon-ref">Icons/service-group-ref_25.png</file>
<file alias="Icons/ServiceGroup/icon-tree">Icons/service-group_16.png</file>
<file alias="Icons/StateSyncClusterGroup/icon">Icons/state-sync-cluster-group_25.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-big">Icons/state-sync-cluster-group_64.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-neg">Icons/state-sync-cluster-group-neg_25.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-neg-tree">Icons/state-sync-cluster-group-neg_16.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-ref">Icons/state-sync-cluster-group-ref_25.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-tree">Icons/state-sync-cluster-group_16.png</file>
<file alias="Icons/SystemGroup/icon">Icons/folder_25.png</file>
<file alias="Icons/SystemGroup/icon-big">Icons/folder_64.png</file>
<file alias="Icons/SystemGroup/icon-tree">Icons/folder_16.png</file>
<file alias="Icons/TCPService/icon">Icons/service-tcp_25.png</file>
<file alias="Icons/TCPService/icon-big">Icons/service-tcp_64.png</file>
<file alias="Icons/TCPService/icon-neg">Icons/service-tcp-neg_25.png</file>
<file alias="Icons/TCPService/icon-neg-tree">Icons/service-tcp-neg_16.png</file>
<file alias="Icons/TCPService/icon-ref">Icons/service-tcp-ref_25.png</file>
<file alias="Icons/TCPService/icon-tree">Icons/service-tcp_16.png</file>
<file alias="Icons/Tag/icon">Icons/tag_25.png</file>
<file alias="Icons/Tag/icon-big">Icons/tag_64.png</file>
<file alias="Icons/Tag/icon-tree">Icons/tag_16.png</file>
<file alias="Icons/TagService/icon">Icons/service-tag_25.png</file>
<file alias="Icons/TagService/icon-big">Icons/service-tag_64.png</file>
<file alias="Icons/TagService/icon-neg">Icons/service-tag-neg_25.png</file>
<file alias="Icons/TagService/icon-neg-tree">Icons/service-tag-neg_16.png</file>
<file alias="Icons/TagService/icon-ref">Icons/service-tag-ref_25.png</file>
<file alias="Icons/TagService/icon-tree">Icons/service-tag_16.png</file>
<file alias="Icons/Translate/icon">Icons/translate_25.png</file>
<file alias="Icons/Translate/icon-tree">Icons/translate_16.png</file>
<file alias="Icons/UDPService/icon">Icons/service-udp_25.png</file>
<file alias="Icons/UDPService/icon-big">Icons/service-udp_64.png</file>
<file alias="Icons/UDPService/icon-neg">Icons/service-udp-neg_25.png</file>
<file alias="Icons/UDPService/icon-neg-tree">Icons/service-udp-neg_16.png</file>
<file alias="Icons/UDPService/icon-ref">Icons/service-udp-ref_25.png</file>
<file alias="Icons/UDPService/icon-tree">Icons/service-udp_16.png</file>
<file alias="Icons/UserService/icon">Icons/user_25.png</file>
<file alias="Icons/UserService/icon-big">Icons/user_64.png</file>
<file alias="Icons/UserService/icon-neg">Icons/user-neg_25.png</file>
<file alias="Icons/UserService/icon-neg-tree">Icons/user-neg_16.png</file>
<file alias="Icons/UserService/icon-ref">Icons/user-ref_25.png</file>
<file alias="Icons/UserService/icon-tree">Icons/user_16.png</file>
<file alias="Icons/lock">Icons/lock.png</file>
<file alias="Icons/neg">Icons/neg.png</file>
<file alias="Icons/physAddress/icon">Icons/physaddress_25.png</file>
<file alias="Icons/physAddress/icon-big">Icons/physaddress_64.png</file>
<file alias="Icons/physAddress/icon-neg">Icons/physaddress-neg_25.png</file>
<file alias="Icons/physAddress/icon-ref">Icons/physaddress-ref_25.png</file>
<file alias="Icons/physAddress/icon-tree">Icons/physaddress_16.png</file>
<file alias="Icons/Accept/icon" >Icons/accept_25.png</file>
<file alias="Icons/Accept/icon-big" >Icons/accept_64.png</file>
<file alias="Icons/Accept/icon-tree" >Icons/accept_16.png</file>
<file alias="Icons/Accounting/icon" >Icons/accounting_25.png</file>
<file alias="Icons/Accounting/icon-big" >Icons/accounting_64.png</file>
<file alias="Icons/Accounting/icon-tree" >Icons/accounting_16.png</file>
<file alias="Icons/AddressRange/icon" >Icons/rangeaddress_25.png</file>
<file alias="Icons/AddressRange/icon-big" >Icons/rangeaddress_64.png</file>
<file alias="Icons/AddressRange/icon-neg" >Icons/rangeaddress-neg_25.png</file>
<file alias="Icons/AddressRange/icon-neg-tree" >Icons/rangeaddress-neg_16.png</file>
<file alias="Icons/AddressRange/icon-ref" >Icons/rangeaddress-ref_25.png</file>
<file alias="Icons/AddressRange/icon-tree" >Icons/rangeaddress_16.png</file>
<file alias="Icons/AddressTable/icon" >Icons/addresstable_25.png</file>
<file alias="Icons/AddressTable/icon-big" >Icons/addresstable_64.png</file>
<file alias="Icons/AddressTable/icon-neg" >Icons/addresstable-neg_25.png</file>
<file alias="Icons/AddressTable/icon-neg-tree" >Icons/addresstable-neg_16.png</file>
<file alias="Icons/AddressTable/icon-ref" >Icons/addresstable-ref_25.png</file>
<file alias="Icons/AddressTable/icon-tree" >Icons/addresstable_16.png</file>
<file alias="Icons/Blank/icon" >Icons/blank.png</file>
<file alias="Icons/Blank/icon-big" >Icons/blank.png</file>
<file alias="Icons/Both/icon" >Icons/both_25.png</file>
<file alias="Icons/Both/icon-big" >Icons/both_64.png</file>
<file alias="Icons/Both/icon-tree" >Icons/both_16.png</file>
<file alias="Icons/Branch/icon" >Icons/branch_25.png</file>
<file alias="Icons/Branch/icon-big" >Icons/branch_64.png</file>
<file alias="Icons/Branch/icon-tree" >Icons/branch_16.png</file>
<file alias="Icons/Classify/icon" >Icons/classify_25.png</file>
<file alias="Icons/Classify/icon-big" >Icons/classify_64.png</file>
<file alias="Icons/Classify/icon-tree" >Icons/classify_16.png</file>
<file alias="Icons/Cluster/icon" >Icons/cluster_25.png</file>
<file alias="Icons/Cluster/icon-big" >Icons/cluster_64.png</file>
<file alias="Icons/Cluster/icon-neg" >Icons/cluster-neg_25.png</file>
<file alias="Icons/Cluster/icon-neg-tree" >Icons/cluster-neg_16.png</file>
<file alias="Icons/Cluster/icon-ref" >Icons/cluster-ref_25.png</file>
<file alias="Icons/Cluster/icon-tree" >Icons/cluster_16.png</file>
<file alias="Icons/ClusterGroup/icon" >Icons/user_25.png</file>
<file alias="Icons/ClusterGroup/icon-big" >Icons/user_64.png</file>
<file alias="Icons/ClusterGroup/icon-neg" >Icons/user-neg_25.png</file>
<file alias="Icons/ClusterGroup/icon-ref" >Icons/user-ref_25.png</file>
<file alias="Icons/ClusterGroup/icon-tree" >Icons/user_16.png</file>
<file alias="Icons/Compile" >Icons/compile_25.png</file>
<file alias="Icons/Continue/icon" >Icons/continue_25.png</file>
<file alias="Icons/Continue/icon-big" >Icons/continue_64.png</file>
<file alias="Icons/Continue/icon-tree" >Icons/continue_16.png</file>
<file alias="Icons/Custom/icon" >Icons/custom_25.png</file>
<file alias="Icons/Custom/icon-big" >Icons/custom_64.png</file>
<file alias="Icons/Custom/icon-tree" >Icons/custom_16.png</file>
<file alias="Icons/CustomService/icon" >Icons/service-custom_25.png</file>
<file alias="Icons/CustomService/icon-big" >Icons/service-custom_64.png</file>
<file alias="Icons/CustomService/icon-neg" >Icons/service-custom-neg_25.png</file>
<file alias="Icons/CustomService/icon-neg-tree" >Icons/service-custom-neg_16.png</file>
<file alias="Icons/CustomService/icon-ref" >Icons/service-custom-ref_25.png</file>
<file alias="Icons/CustomService/icon-tree" >Icons/service-custom_16.png</file>
<file alias="Icons/DNSName/icon" >Icons/domainname_25.png</file>
<file alias="Icons/DNSName/icon-big" >Icons/domainname_64.png</file>
<file alias="Icons/DNSName/icon-neg" >Icons/domainname-neg_25.png</file>
<file alias="Icons/DNSName/icon-neg-tree" >Icons/domainname-neg_16.png</file>
<file alias="Icons/DNSName/icon-ref" >Icons/domainname-ref_25.png</file>
<file alias="Icons/DNSName/icon-tree" >Icons/domainname_16.png</file>
<file alias="Icons/Deny/icon" >Icons/deny_25.png</file>
<file alias="Icons/Deny/icon-big" >Icons/deny_64.png</file>
<file alias="Icons/Deny/icon-tree" >Icons/deny_16.png</file>
<file alias="Icons/FailoverClusterGroup/icon" >Icons/failover-cluster-group_25.png</file>
<file alias="Icons/FailoverClusterGroup/icon-big" >Icons/failover-cluster-group_64.png</file>
<file alias="Icons/FailoverClusterGroup/icon-neg" >Icons/failover-cluster-group-neg_25.png</file>
<file alias="Icons/FailoverClusterGroup/icon-neg-tree" >Icons/failover-cluster-group-neg_16.png</file>
<file alias="Icons/FailoverClusterGroup/icon-ref" >Icons/failover-cluster-group-ref_25.png</file>
<file alias="Icons/FailoverClusterGroup/icon-tree" >Icons/failover-cluster-group_16.png</file>
<file alias="Icons/Firewall/icon" >Icons/firewall_25.png</file>
<file alias="Icons/Firewall/icon-big" >Icons/firewall_64.png</file>
<file alias="Icons/Firewall/icon-neg" >Icons/firewall-neg_25.png</file>
<file alias="Icons/Firewall/icon-neg-tree" >Icons/firewall-neg_16.png</file>
<file alias="Icons/Firewall/icon-ref" >Icons/firewall-ref_25.png</file>
<file alias="Icons/Firewall/icon-tree" >Icons/firewall_16.png</file>
<file alias="Icons/Host/icon" >Icons/host_25.png</file>
<file alias="Icons/Host/icon-big" >Icons/host_64.png</file>
<file alias="Icons/Host/icon-neg" >Icons/host-neg_25.png</file>
<file alias="Icons/Host/icon-neg-tree" >Icons/host-neg_16.png</file>
<file alias="Icons/Host/icon-ref" >Icons/host-ref_25.png</file>
<file alias="Icons/Host/icon-tree" >Icons/host_16.png</file>
<file alias="Icons/ICMP6Service/icon" >Icons/service-icmp6_25.png</file>
<file alias="Icons/ICMP6Service/icon-big" >Icons/service-icmp6_64.png</file>
<file alias="Icons/ICMP6Service/icon-neg" >Icons/service-icmp6-neg_25.png</file>
<file alias="Icons/ICMP6Service/icon-neg-tree" >Icons/service-icmp6-neg_16.png</file>
<file alias="Icons/ICMP6Service/icon-ref" >Icons/service-icmp6-ref_25.png</file>
<file alias="Icons/ICMP6Service/icon-tree" >Icons/service-icmp6_16.png</file>
<file alias="Icons/ICMPService/icon" >Icons/service-icmp_25.png</file>
<file alias="Icons/ICMPService/icon-big" >Icons/service-icmp_64.png</file>
<file alias="Icons/ICMPService/icon-neg" >Icons/service-icmp-neg_25.png</file>
<file alias="Icons/ICMPService/icon-neg-tree" >Icons/service-icmp-neg_16.png</file>
<file alias="Icons/ICMPService/icon-ref" >Icons/service-icmp-ref_25.png</file>
<file alias="Icons/ICMPService/icon-tree" >Icons/service-icmp_16.png</file>
<file alias="Icons/IPService/icon" >Icons/service-ip_25.png</file>
<file alias="Icons/IPService/icon-big" >Icons/service-ip_64.png</file>
<file alias="Icons/IPService/icon-neg" >Icons/service-ip-neg_25.png</file>
<file alias="Icons/IPService/icon-neg-tree" >Icons/service-ip-neg_16.png</file>
<file alias="Icons/IPService/icon-ref" >Icons/service-ip-ref_25.png</file>
<file alias="Icons/IPService/icon-tree" >Icons/service-ip_16.png</file>
<file alias="Icons/IPv4/icon" >Icons/address_25.png</file>
<file alias="Icons/IPv4/icon-big" >Icons/address_64.png</file>
<file alias="Icons/IPv4/icon-neg" >Icons/address-neg_25.png</file>
<file alias="Icons/IPv4/icon-neg-tree" >Icons/address-neg_16.png</file>
<file alias="Icons/IPv4/icon-ref" >Icons/address-ref_25.png</file>
<file alias="Icons/IPv4/icon-tree" >Icons/address_16.png</file>
<file alias="Icons/IPv6/icon" >Icons/address6_25.png</file>
<file alias="Icons/IPv6/icon-big" >Icons/address6_64.png</file>
<file alias="Icons/IPv6/icon-neg" >Icons/address6-neg_25.png</file>
<file alias="Icons/IPv6/icon-neg-tree" >Icons/address6-neg_16.png</file>
<file alias="Icons/IPv6/icon-ref" >Icons/address6-ref_25.png</file>
<file alias="Icons/IPv6/icon-tree" >Icons/address6_16.png</file>
<file alias="Icons/Inbound/icon" >Icons/inbound_25.png</file>
<file alias="Icons/Inbound/icon-big" >Icons/inbound_64.png</file>
<file alias="Icons/Inbound/icon-tree" >Icons/inbound_16.png</file>
<file alias="Icons/Install" >Icons/install_25.png</file>
<file alias="Icons/Interface/icon" >Icons/interface_25.png</file>
<file alias="Icons/Interface/icon-big" >Icons/interface_64.png</file>
<file alias="Icons/Interface/icon-neg" >Icons/interface-neg_25.png</file>
<file alias="Icons/Interface/icon-neg-tree" >Icons/interface-neg_16.png</file>
<file alias="Icons/Interface/icon-ref" >Icons/interface-ref_25.png</file>
<file alias="Icons/Interface/icon-tree" >Icons/interface_16.png</file>
<file alias="Icons/Interval/icon" >Icons/clock_25.png</file>
<file alias="Icons/Interval/icon-big" >Icons/clock_64.png</file>
<file alias="Icons/Interval/icon-neg" >Icons/clock-neg_25.png</file>
<file alias="Icons/Interval/icon-neg-tree" >Icons/clock-neg_16.png</file>
<file alias="Icons/Interval/icon-ref" >Icons/clock-ref_25.png</file>
<file alias="Icons/Interval/icon-tree" >Icons/clock_16.png</file>
<file alias="Icons/IntervalGroup/icon" >Icons/clock-group_25.png</file>
<file alias="Icons/IntervalGroup/icon-big" >Icons/clock-group_64.png</file>
<file alias="Icons/IntervalGroup/icon-neg" >Icons/clock-group-neg_25.png</file>
<file alias="Icons/IntervalGroup/icon-neg-tree" >Icons/clock-group-neg_16.png</file>
<file alias="Icons/IntervalGroup/icon-ref" >Icons/clock-group-ref_25.png</file>
<file alias="Icons/IntervalGroup/icon-tree" >Icons/clock-group_16.png</file>
<file alias="Icons/Library/icon" >Icons/library_25.png</file>
<file alias="Icons/Library/icon-big" >Icons/library_64.png</file>
<file alias="Icons/Library/icon-neg" >Icons/library-neg_25.png</file>
<file alias="Icons/Library/icon-neg-tree" >Icons/library-neg_16.png</file>
<file alias="Icons/Library/icon-ref" >Icons/library-ref_25.png</file>
<file alias="Icons/Library/icon-tree" >Icons/library_16.png</file>
<file alias="Icons/Log/icon" >Icons/log_25.png</file>
<file alias="Icons/Log/icon-big" >Icons/log_64.png</file>
<file alias="Icons/Log/icon-tree" >Icons/log_16.png</file>
<file alias="Icons/NAT/icon" >Icons/nat_25.png</file>
<file alias="Icons/NAT/icon-big" >Icons/nat_64.png</file>
<file alias="Icons/NAT/icon-tree" >Icons/nat_16.png</file>
<file alias="Icons/NATBranch/icon" >Icons/branch_25.png</file>
<file alias="Icons/NATBranch/icon-big" >Icons/branch_64.png</file>
<file alias="Icons/NATBranch/icon-tree" >Icons/branch_16.png</file>
<file alias="Icons/Network/icon" >Icons/network_25.png</file>
<file alias="Icons/Network/icon-big" >Icons/network_64.png</file>
<file alias="Icons/Network/icon-neg" >Icons/network-neg_25.png</file>
<file alias="Icons/Network/icon-neg-tree" >Icons/network-neg_16.png</file>
<file alias="Icons/Network/icon-ref" >Icons/network-ref_25.png</file>
<file alias="Icons/Network/icon-tree" >Icons/network_16.png</file>
<file alias="Icons/NetworkIPv6/icon" >Icons/network6_25.png</file>
<file alias="Icons/NetworkIPv6/icon-big" >Icons/network6_64.png</file>
<file alias="Icons/NetworkIPv6/icon-neg" >Icons/network6-neg_25.png</file>
<file alias="Icons/NetworkIPv6/icon-neg-tree" >Icons/network6-neg_16.png</file>
<file alias="Icons/NetworkIPv6/icon-ref" >Icons/network6-ref_25.png</file>
<file alias="Icons/NetworkIPv6/icon-tree" >Icons/network6_16.png</file>
<file alias="Icons/ObjectGroup/icon" >Icons/object-group_25.png</file>
<file alias="Icons/ObjectGroup/icon-big" >Icons/object-group_64.png</file>
<file alias="Icons/ObjectGroup/icon-neg" >Icons/object-group-neg_25.png</file>
<file alias="Icons/ObjectGroup/icon-neg-tree" >Icons/object-group-neg_16.png</file>
<file alias="Icons/ObjectGroup/icon-ref" >Icons/object-group-ref_25.png</file>
<file alias="Icons/ObjectGroup/icon-tree" >Icons/object-group_16.png</file>
<file alias="Icons/Options/icon" >Icons/options_25.png</file>
<file alias="Icons/Options/icon-big" >Icons/options_64.png</file>
<file alias="Icons/Options/icon-tree" >Icons/options_16.png</file>
<file alias="Icons/Outbound/icon" >Icons/outbound_25.png</file>
<file alias="Icons/Outbound/icon-big" >Icons/outbound_64.png</file>
<file alias="Icons/Outbound/icon-tree" >Icons/outbound_16.png</file>
<file alias="Icons/Pipe/icon" >Icons/pipe_25.png</file>
<file alias="Icons/Pipe/icon-big" >Icons/pipe_64.png</file>
<file alias="Icons/Pipe/icon-tree" >Icons/pipe_16.png</file>
<file alias="Icons/Policy/icon" >Icons/ruleset_25.png</file>
<file alias="Icons/Policy/icon-big" >Icons/ruleset_64.png</file>
<file alias="Icons/Policy/icon-tree" >Icons/ruleset_16.png</file>
<file alias="Icons/Reject/icon" >Icons/reject_25.png</file>
<file alias="Icons/Reject/icon-big" >Icons/reject_64.png</file>
<file alias="Icons/Reject/icon-tree" >Icons/reject_16.png</file>
<file alias="Icons/Return/icon" >Icons/back_25.png</file>
<file alias="Icons/Route/icon" >Icons/route_25.png</file>
<file alias="Icons/Route/icon-big" >Icons/route_64.png</file>
<file alias="Icons/Route/icon-tree" >Icons/route_16.png</file>
<file alias="Icons/Routing/icon" >Icons/routing_25.png</file>
<file alias="Icons/Routing/icon-big" >Icons/routing_64.png</file>
<file alias="Icons/Routing/icon-tree" >Icons/routing_16.png</file>
<file alias="Icons/ServiceGroup/icon" >Icons/service-group_25.png</file>
<file alias="Icons/ServiceGroup/icon-big" >Icons/service-group_64.png</file>
<file alias="Icons/ServiceGroup/icon-neg" >Icons/service-group-neg_25.png</file>
<file alias="Icons/ServiceGroup/icon-neg-tree" >Icons/service-group-neg_16.png</file>
<file alias="Icons/ServiceGroup/icon-ref" >Icons/service-group-ref_25.png</file>
<file alias="Icons/ServiceGroup/icon-tree" >Icons/service-group_16.png</file>
<file alias="Icons/StateSyncClusterGroup/icon" >Icons/state-sync-cluster-group_25.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-big" >Icons/state-sync-cluster-group_64.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-neg" >Icons/state-sync-cluster-group-neg_25.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-neg-tree" >Icons/state-sync-cluster-group-neg_16.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-ref" >Icons/state-sync-cluster-group-ref_25.png</file>
<file alias="Icons/StateSyncClusterGroup/icon-tree" >Icons/state-sync-cluster-group_16.png</file>
<file alias="Icons/SystemGroup/icon" >Icons/folder_25.png</file>
<file alias="Icons/SystemGroup/icon-big" >Icons/folder_64.png</file>
<file alias="Icons/SystemGroup/icon-tree" >Icons/folder_16.png</file>
<file alias="Icons/TCPService/icon" >Icons/service-tcp_25.png</file>
<file alias="Icons/TCPService/icon-big" >Icons/service-tcp_64.png</file>
<file alias="Icons/TCPService/icon-neg" >Icons/service-tcp-neg_25.png</file>
<file alias="Icons/TCPService/icon-neg-tree" >Icons/service-tcp-neg_16.png</file>
<file alias="Icons/TCPService/icon-ref" >Icons/service-tcp-ref_25.png</file>
<file alias="Icons/TCPService/icon-tree" >Icons/service-tcp_16.png</file>
<file alias="Icons/Tag/icon" >Icons/tag_25.png</file>
<file alias="Icons/Tag/icon-big" >Icons/tag_64.png</file>
<file alias="Icons/Tag/icon-tree" >Icons/tag_16.png</file>
<file alias="Icons/TagService/icon" >Icons/service-tag_25.png</file>
<file alias="Icons/TagService/icon-big" >Icons/service-tag_64.png</file>
<file alias="Icons/TagService/icon-neg" >Icons/service-tag-neg_25.png</file>
<file alias="Icons/TagService/icon-neg-tree" >Icons/service-tag-neg_16.png</file>
<file alias="Icons/TagService/icon-ref" >Icons/service-tag-ref_25.png</file>
<file alias="Icons/TagService/icon-tree" >Icons/service-tag_16.png</file>
<file alias="Icons/Translate/icon" >Icons/translate_25.png</file>
<file alias="Icons/Translate/icon-tree" >Icons/translate_16.png</file>
<file alias="Icons/UDPService/icon" >Icons/service-udp_25.png</file>
<file alias="Icons/UDPService/icon-big" >Icons/service-udp_64.png</file>
<file alias="Icons/UDPService/icon-neg" >Icons/service-udp-neg_25.png</file>
<file alias="Icons/UDPService/icon-neg-tree" >Icons/service-udp-neg_16.png</file>
<file alias="Icons/UDPService/icon-ref" >Icons/service-udp-ref_25.png</file>
<file alias="Icons/UDPService/icon-tree" >Icons/service-udp_16.png</file>
<file alias="Icons/UserService/icon" >Icons/user_25.png</file>
<file alias="Icons/UserService/icon-big" >Icons/user_64.png</file>
<file alias="Icons/UserService/icon-neg" >Icons/user-neg_25.png</file>
<file alias="Icons/UserService/icon-neg-tree" >Icons/user-neg_16.png</file>
<file alias="Icons/UserService/icon-ref" >Icons/user-ref_25.png</file>
<file alias="Icons/UserService/icon-tree" >Icons/user_16.png</file>
<file alias="Icons/lock" >Icons/lock.png</file>
<file alias="Icons/neg" >Icons/neg.png</file>
<file alias="Icons/physAddress/icon" >Icons/physaddress_25.png</file>
<file alias="Icons/physAddress/icon-big" >Icons/physaddress_64.png</file>
<file alias="Icons/physAddress/icon-neg" >Icons/physaddress-neg_25.png</file>
<file alias="Icons/physAddress/icon-ref" >Icons/physaddress-ref_25.png</file>
<file alias="Icons/physAddress/icon-tree" >Icons/physaddress_16.png</file>
<file>Icons/add.png</file>
<file>Icons/apply.png</file>
<file>Icons/back_32.png</file>

View File

@ -190,7 +190,9 @@ HEADERS += ../../config.h \
UserWorkflow.h \
FWBApplication.h \
WorkflowIcons.h \
FirewallCodeViewer.h
FirewallCodeViewer.h \
networkZoneManager.h
SOURCES += ProjectPanel.cpp \
ProjectPanel_events.cpp \
ProjectPanel_file_ops.cpp \
@ -373,7 +375,9 @@ SOURCES += ProjectPanel.cpp \
UserWorkflow.cpp \
FWBApplication.cpp \
WorkflowIcons.cpp \
FirewallCodeViewer.cpp
FirewallCodeViewer.cpp \
networkZoneManager.cpp
FORMS = FWBMainWindow_q.ui \
compileroutputpanel_q.ui \
customservicedialog_q.ui \

View File

@ -0,0 +1,141 @@
/*
Firewall Builder
Copyright (C) 2003 NetCitadel, LLC
Author: Vadim Kurland vadim@fwbuilder.org
$Id$
This program is free software which we release under the GNU General Public
License. You may redistribute and/or modify this program under the terms
of that license as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
To get a copy of the GNU General Public License, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "../../config.h"
#include "global.h"
#include "networkZoneManager.h"
#include "fwbuilder/FWObjectDatabase.h"
#include "fwbuilder/Library.h"
#include "fwbuilder/ObjectGroup.h"
#include <QtDebug>
using namespace libfwbuilder;
using namespace std;
NetworkZoneManager::NetworkZoneManager()
{
}
void NetworkZoneManager::load(FWObjectDatabase *_db)
{
db = _db;
netzones_object_names.clear();
netzones_id_to_index.clear();
netzones_index_to_id.clear();
int n = 0;
netzones_id_to_index[0] = n;
netzones_index_to_id[n] = 0;
netzones_object_names.push_back(" None ");
++n;
netzones_id_to_index[FWObjectDatabase::ANY_ADDRESS_ID] = n;
netzones_index_to_id[n] = FWObjectDatabase::ANY_ADDRESS_ID;
netzones_object_names.push_back(" Any ");
++n;
/* TODO: try to make this widget show object with appropriate icon */
list<FWObject*> libs = db->getByType( Library::TYPENAME );
for (list<FWObject*>::iterator l=libs.begin(); l!=libs.end(); ++l)
{
FWObject *library= *l;
FWObject *o1,*o2;
if ( library->getId()==FWObjectDatabase::DELETED_OBJECTS_ID ) continue;
o1 = library->findObjectByName(ObjectGroup::TYPENAME, "Objects");
assert(o1!=NULL);
o2 = o1->findObjectByName(ObjectGroup::TYPENAME, "Groups");
if (o2==NULL)
{
if (fwbdebug)
qDebug() << "NetworkZoneManager::NetworkZoneManager():"
<< "missing Groups group in "
<< FWObjectDatabase::getStringId(o1->getId()).c_str();
continue;
}
for (FWObject::iterator i=o2->begin(); i!=o2->end(); ++i)
{
netzones_id_to_index[(*i)->getId()] = n;
netzones_index_to_id[n] = (*i)->getId();
netzones_object_names.push_back(
QObject::tr("Group: ")+ (*i)->getName().c_str() );
++n;
}
o2=o1->findObjectByName(ObjectGroup::TYPENAME,"Networks");
if (o2==NULL)
{
if (fwbdebug)
qDebug() << "NetworkZoneManager::NetworkZoneManager():"
<< "missing Networks group in "
<< FWObjectDatabase::getStringId(o1->getId()).c_str();
continue;
}
for (FWObject::iterator i1=o2->begin(); i1!=o2->end(); ++i1)
{
netzones_id_to_index[(*i1)->getId()] = n;
netzones_index_to_id[n] = (*i1)->getId();
netzones_object_names.push_back(
QObject::tr("Network: ")+ (*i1)->getName().c_str());
++n;
}
}
}
int NetworkZoneManager::getListItemIdexByNetzoneId(int id)
{
return netzones_id_to_index[id];
}
int NetworkZoneManager::getNetzoneIdByListIndex(int idx)
{
return netzones_index_to_id[idx];
}
void NetworkZoneManager::packComboBox(QComboBox *combobox,
int current_netzone_object_id)
{
combobox->clear();
combobox->addItems(netzones_object_names);
for(int idx=0; idx < combobox->count(); ++idx)
combobox->setItemData(idx, QVariant(netzones_index_to_id[idx]), Qt::UserRole);
combobox->setCurrentIndex( netzones_id_to_index[current_netzone_object_id] );
}

View File

@ -0,0 +1,62 @@
/*
Firewall Builder
Copyright (C) 2011 NetCitadel, LLC
Author: Vadim Kurland vadim@fwbuilder.org
This program is free software which we release under the GNU General Public
License. You may redistribute and/or modify this program under the terms
of that license as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
To get a copy of the GNU General Public License, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __NETWORK_ZONE_MANAGER_H_
#define __NETWORK_ZONE_MANAGER_H_
#include "../../config.h"
#include <QStringList>
#include <QMap>
#include <QComboBox>
namespace libfwbuilder
{
class FWObjectDatabase;
}
class NetworkZoneManager
{
libfwbuilder::FWObjectDatabase *db;
QStringList netzones_object_names;
// netzones_id_to_index : key - object id, value - number in the list
QMap<int,int> netzones_id_to_index;
// netzones_index_to_id : key - number in the list, value - obj id
QMap<int,int> netzones_index_to_id;
public:
NetworkZoneManager();
void load(libfwbuilder::FWObjectDatabase *db);
int getListItemIdexByNetzoneId(int id);
int getNetzoneIdByListIndex(int idx);
void packComboBox(QComboBox *combobox,
int current_netzone_object_id);
};
#endif

View File

@ -38,6 +38,7 @@
#include "UserWorkflow.h"
#include "FWBApplication.h"
#include "QDesktopWidget"
#include "networkZoneManager.h"
#include "interfaceProperties.h"
#include "interfacePropertiesObjectFactory.h"
@ -82,6 +83,14 @@ using namespace libfwbuilder;
using namespace std;
#define NAME_AND_PLATFORM_PAGE 0
#define INTERFACES_MANUAL_OR_SNMP 1
#define CONFIGURE_INTERFACES_MANUALLY 2
#define CONFIGURE_SECURITY_LEVELS 3
#define CONFIGURE_NETWORK_ZONES 4
#define CHOOSE_FW_TEMPLATE 5
#define CONFIGURE_TEMPLATE_INTERFACES_MANUALLY 6
newFirewallDialog::newFirewallDialog(QWidget *parentw, FWObject *_p) :
QDialog(parentw)
@ -148,7 +157,7 @@ newFirewallDialog::newFirewallDialog(QWidget *parentw, FWObject *_p) :
/* fill in host OS */
setHostOS(m_dialog->hostOS, readPlatform(m_dialog->platform), "");
setNextEnabled( 0, false );
setNextEnabled( NAME_AND_PLATFORM_PAGE, false );
//m_dialog->iface_sl_list->setAllColumnsShowFocus( true );
QTimer::singleShot(0, m_dialog->obj_name, SLOT(setFocus()));
@ -180,7 +189,7 @@ newFirewallDialog::newFirewallDialog(QWidget *parentw, FWObject *_p) :
if (this->height() > maxheight)
this->resize(this->width(), maxheight);
showPage(0);
showPage(NAME_AND_PLATFORM_PAGE);
}
void newFirewallDialog::browseTemplate()
@ -252,7 +261,7 @@ void newFirewallDialog::changed()
<< "use_manual=" << m_dialog->use_manual->isChecked()
<< "use_snmp=" << m_dialog->use_snmp->isChecked();
if (p==0)
if (p==NAME_AND_PLATFORM_PAGE)
{
setNextEnabled(p,
!m_dialog->obj_name->text().isEmpty() &&
@ -264,7 +273,7 @@ void newFirewallDialog::changed()
m_dialog->interfaceEditor2->setHostOS(host_os);
}
if (p==1)
if (p==INTERFACES_MANUAL_OR_SNMP)
{
bool use_snmp = false;
@ -289,6 +298,7 @@ void newFirewallDialog::changed()
use_snmp = m_dialog->use_manual->isChecked() || snmpPollCompleted;
setNextEnabled( 1, use_snmp );
}
if (fwbdebug)
qDebug() << "newFirewallDialog::changed() done";
}
@ -359,7 +369,7 @@ void newFirewallDialog::monitor()
#endif
snmpPollCompleted=true;
setNextEnabled( 1, true );
setNextEnabled( INTERFACES_MANUAL_OR_SNMP, true );
}
void newFirewallDialog::getInterfacesViaSNMP()
@ -444,17 +454,16 @@ bool interfaceCompare(libfwbuilder::Interface *first,
bool newFirewallDialog::appropriate(const int page) const
{
int p = page;
switch (p)
switch (page)
{
case 0:
case 4:
case NAME_AND_PLATFORM_PAGE:
case CHOOSE_FW_TEMPLATE:
return true;
case 1:
case 2:
case 3:
case INTERFACES_MANUAL_OR_SNMP:
case CONFIGURE_INTERFACES_MANUALLY:
case CONFIGURE_SECURITY_LEVELS:
case CONFIGURE_NETWORK_ZONES:
return (!m_dialog->useTemplate->isChecked());
}
return true;
@ -462,7 +471,7 @@ bool newFirewallDialog::appropriate(const int page) const
void newFirewallDialog::nextClicked()
{
if ( currentPage() == 4 )
if ( currentPage() == CHOOSE_FW_TEMPLATE )
{
if (m_dialog->templateList->currentItem() == NULL)
{
@ -471,13 +480,18 @@ void newFirewallDialog::nextClicked()
tr("Please select template"),
tr("&Continue"), QString::null,QString::null,
0, 1 );
showPage(4);
showPage(CHOOSE_FW_TEMPLATE);
return;
}
}
if ( currentPage() == 2 )
if ( currentPage() == CONFIGURE_INTERFACES_MANUALLY )
if ( !this->m_dialog->interfaceEditor1->isValid() )
return;
// FakeWizard::nextRelevant() finds next (in the numerical order)
// page that is permitted by function appropriate() and returns
// its number
if (nextRelevant( currentPage() ) > -1)
showPage(nextRelevant( currentPage() ));
}
@ -500,7 +514,7 @@ void newFirewallDialog::showPage(const int page)
// p is a page number _after_ it changed
switch (p)
{
case 0:
case NAME_AND_PLATFORM_PAGE:
// we get here if user hits "Back" on page 4 (where they
// choose template object)
if (tmpldb!=NULL)
@ -513,7 +527,7 @@ void newFirewallDialog::showPage(const int page)
m_dialog->obj_name->setFocus();
break;
case 1:
case INTERFACES_MANUAL_OR_SNMP:
{
// page 1 is where we choose to configure interfaces manually or via snmp
m_dialog->snmpIP->setText("");
@ -522,7 +536,7 @@ void newFirewallDialog::showPage(const int page)
break;
}
case 2:
case CONFIGURE_INTERFACES_MANUALLY:
{
if (!Resources::getTargetCapabilityBool(
readPlatform(m_dialog->platform).toLatin1().constData(),
@ -532,35 +546,52 @@ void newFirewallDialog::showPage(const int page)
/* if chosen fw platform does not support security levels,
* this is the last page
*/
setNextEnabled( 2, false );
setFinishEnabled( 2, true );
setNextEnabled( CONFIGURE_INTERFACES_MANUALLY, false );
setFinishEnabled( CONFIGURE_INTERFACES_MANUALLY, true );
m_dialog->finishButton->setDefault(true);
}
break;
}
case 3:
case CONFIGURE_SECURITY_LEVELS:
{
if (m_dialog->useTemplate->isChecked())
{
showPage( 0 );
showPage( NAME_AND_PLATFORM_PAGE );
return;
}
// Edit security levels
fillInterfaceSLList();
setNextEnabled( 3, false );
setFinishEnabled( 3, true );
setNextEnabled( CONFIGURE_SECURITY_LEVELS, true );
setFinishEnabled( CONFIGURE_SECURITY_LEVELS, false );
m_dialog->nextButton->setDefault(true);
break;
}
case CONFIGURE_NETWORK_ZONES:
{
if (m_dialog->useTemplate->isChecked())
{
showPage( NAME_AND_PLATFORM_PAGE );
return;
}
// Edit network zones
fillInterfaceNZList();
setNextEnabled(CONFIGURE_NETWORK_ZONES, false );
setFinishEnabled(CONFIGURE_NETWORK_ZONES, true );
m_dialog->finishButton->setDefault(true);
break;
}
case 4:
case CHOOSE_FW_TEMPLATE:
{
// Show firewall templates
setFinishEnabled( 4, false );
setNextEnabled( 4, true );
setFinishEnabled( CHOOSE_FW_TEMPLATE, false );
setNextEnabled( CHOOSE_FW_TEMPLATE, true );
/* load templates if not loaded */
if (tmpldb==NULL)
{
@ -587,8 +618,7 @@ void newFirewallDialog::showPage(const int page)
list<FWObject*> fl;
FWObjectTypedChildIterator libiter =
tmpldb->findByType(Library::TYPENAME);
FWObjectTypedChildIterator libiter = tmpldb->findByType(Library::TYPENAME);
for ( ; libiter!=libiter.end(); ++libiter)
findFirewalls(*libiter, fl, false);
@ -599,7 +629,7 @@ void newFirewallDialog::showPage(const int page)
int n=0;
for (list<FWObject*>::iterator m=fl.begin(); m!=fl.end(); m++,n++)
{
FWObject *o=*m;
FWObject *o = *m;
/*
Ticket #1492 requested the change to only show the user templates
@ -629,8 +659,10 @@ void newFirewallDialog::showPage(const int page)
twi->setText( QString(o->getName().c_str()) );
m_dialog->templateList->addItem( twi );
templates[ m_dialog->templateList->item( m_dialog->templateList->count()-1 ) ]=o;
templates[ m_dialog->templateList->item(
m_dialog->templateList->count()-1 ) ] = o;
}
m_dialog->templateList->setFocus();
m_dialog->templateList->setCurrentItem(0);
m_dialog->finishButton->setDefault(false);
@ -638,11 +670,11 @@ void newFirewallDialog::showPage(const int page)
break;
}
case 5:
case CONFIGURE_TEMPLATE_INTERFACES_MANUALLY:
{
// Edit interfaces of the template object
createFirewallFromTemplate();
setFinishEnabled( 5, true );
setFinishEnabled( CONFIGURE_TEMPLATE_INTERFACES_MANUALLY, true );
/*
this->m_dialog->interfaceEditor2->setExplanation(
tr("Here you can change IP address of the template interface "
@ -666,6 +698,59 @@ void newFirewallDialog::showPage(const int page)
}
}
void newFirewallDialog::getInterfaceDataFromInterfaceEditor(
EditedInterfaceData &edata, InterfaceData &idata)
{
idata.name = edata.name.toStdString();
idata.label = edata.label.toStdString();
AddressInfo address;
bool gotIPv4 = false;
foreach(AddressInfo addr, edata.addresses.values())
{
if (addr.ipv4)
{
address = addr;
gotIPv4 = true;
break;
}
}
InetAddrMask *iam;// = new InetAddrMask();
if (edata.type == 0 && edata.addresses.size() != 0)
{
if (!gotIPv4) address = edata.addresses.values().first();
if ( address.ipv4 )
iam = new InetAddrMask(
InetAddr(address.address.toStdString()),
InetAddr(address.netmask.toStdString()));
else
{
iam = new InetAddrMask(
InetAddr(AF_INET6, address.address.toStdString()),
InetAddr(AF_INET6, address.netmask.toStdString()));
}
idata.addr_mask.push_back(iam);
}
if (gotIPv4)
{
try
{
idata.guessSecurityLevel(
readPlatform(m_dialog->platform).toStdString() );
}
catch (FWException &ex)
{
QMessageBox::warning(
this,"Firewall Builder", ex.toString().c_str(),
"&Continue", QString::null, QString::null, 0, 1 );
showPage( CONFIGURE_INTERFACES_MANUALLY );
return;
}
}
else idata.securityLevel = 0;
}
void newFirewallDialog::fillInterfaceSLList()
{
m_dialog->iface_sl_list->clear();
@ -682,54 +767,7 @@ void newFirewallDialog::fillInterfaceSLList()
{
InterfaceData idata;
idata.name = iface.name.toStdString();
idata.label = iface.label.toStdString();
AddressInfo address;
bool gotIPv4 = false;
foreach(AddressInfo addr, iface.addresses.values())
{
if (addr.ipv4)
{
address = addr;
gotIPv4 = true;
break;
}
}
InetAddrMask *iam;// = new InetAddrMask();
if (iface.type == 0 && iface.addresses.size() != 0)
{
if (!gotIPv4) address = iface.addresses.values().first();
if ( address.ipv4 )
iam = new InetAddrMask(
InetAddr(address.address.toStdString()),
InetAddr(address.netmask.toStdString()));
else
{
iam = new InetAddrMask(
InetAddr(AF_INET6, address.address.toStdString()),
InetAddr(AF_INET6, address.netmask.toStdString()));
}
idata.addr_mask.push_back(iam);
}
if (gotIPv4)
{
try
{
idata.guessSecurityLevel(
readPlatform(m_dialog->platform).toStdString() );
}
catch (FWException &ex)
{
QMessageBox::warning(
this,"Firewall Builder", ex.toString().c_str(),
"&Continue", QString::null, QString::null, 0, 1 );
showPage( 2 );
return;
}
}
else idata.securityLevel = 0;
getInterfaceDataFromInterfaceEditor(iface, idata);
m_dialog->iface_sl_list->insertRow(row);
@ -743,7 +781,13 @@ void newFirewallDialog::fillInterfaceSLList()
itm->setFlags(itm->flags() & ~Qt::ItemIsEditable);
m_dialog->iface_sl_list->setItem(row, 1, itm);
itm = new QTableWidgetItem(address.address);
string addr;
if (idata.addr_mask.size() > 0)
{
const InetAddr *iaddr = idata.addr_mask.front()->getAddressPtr();
if (iaddr) addr = iaddr->toString();
}
itm = new QTableWidgetItem(addr.c_str());
itm->setFlags(itm->flags() & ~Qt::ItemIsEditable);
m_dialog->iface_sl_list->setItem(row, 2, itm);
@ -758,6 +802,59 @@ void newFirewallDialog::fillInterfaceSLList()
}
}
void newFirewallDialog::fillInterfaceNZList()
{
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(db);
int row = 0;
foreach(EditedInterfaceData iface,
this->m_dialog->interfaceEditor1->getData().values() +
this->m_dialog->interfaceEditor1->getNewData())
{
InterfaceData idata;
getInterfaceDataFromInterfaceEditor(iface, idata);
m_dialog->iface_nz_list->insertRow(row);
QTableWidgetItem* itm;
itm = new QTableWidgetItem(iface.name);
itm->setFlags(itm->flags() & ~Qt::ItemIsEditable);
m_dialog->iface_nz_list->setItem(row, 0, itm);
itm = new QTableWidgetItem(iface.label);
itm->setFlags(itm->flags() & ~Qt::ItemIsEditable);
m_dialog->iface_nz_list->setItem(row, 1, itm);
string addr;
if (idata.addr_mask.size() > 0)
{
const InetAddr *iaddr = idata.addr_mask.front()->getAddressPtr();
if (iaddr) addr = iaddr->toString();
}
itm = new QTableWidgetItem(addr.c_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);
}
/*
* this slot is connected to currentItemChanged signal of templateList
* As a side effect, this slot is called when we clear templateList.
@ -925,19 +1022,18 @@ void newFirewallDialog::finishClicked()
// see #1594
m_dialog->finishButton->setFocus(Qt::OtherFocusReason);
int p = currentPage();
if (fwbdebug)
qDebug() << "newFirewallDialog::finishClicked()"
<< "p=" << p;
<< "currentPage()=" << currentPage();
if ((!this->m_dialog->useTemplate->isChecked()) && p == 2)
if ((!this->m_dialog->useTemplate->isChecked()) &&
currentPage() == CONFIGURE_INTERFACES_MANUALLY)
{
if ( !this->m_dialog->interfaceEditor1->isValid() )
return;
}
if ( p == 5 )
if ( currentPage() == CONFIGURE_TEMPLATE_INTERFACES_MANUALLY )
if ( !this->m_dialog->interfaceEditor2->isValid() )
return;
@ -946,9 +1042,10 @@ void newFirewallDialog::finishClicked()
st->setNewFirewallPlatform(platform.c_str());
if (p==2) fillInterfaceSLList();
if (currentPage()==CONFIGURE_INTERFACES_MANUALLY) fillInterfaceSLList();
if (p==4 || p==5)
if (currentPage()==CHOOSE_FW_TEMPLATE ||
currentPage()==CONFIGURE_TEMPLATE_INTERFACES_MANUALLY)
{
// Creating from a template
if (nfw==NULL) createFirewallFromTemplate();
@ -993,18 +1090,35 @@ void newFirewallDialog::finishClicked()
bool dyn = iface.type == 1;
bool unnum = iface.type == 2;
QString physaddr = iface.mac;
int sec_level = 0;
string network_zone_str_id = "";
QList<QTableWidgetItem*> ltwi =
m_dialog->iface_sl_list->findItems( name , Qt::MatchExactly );
assert(!ltwi.empty());
QTableWidgetItem *itm2 = ltwi[0];
assert(itm2!=NULL);
if ( ! ltwi.empty())
{
QTableWidgetItem *itm2 = ltwi[0];
assert(itm2!=NULL);
int row = itm2->row();
QSpinBox *sb = dynamic_cast<QSpinBox*>(
m_dialog->iface_sl_list->cellWidget(row, 3));
assert(sb!=NULL);
sec_level = sb->value();
}
int row = itm2->row();
QSpinBox *sb = dynamic_cast<QSpinBox*>(
m_dialog->iface_sl_list->cellWidget(row, 3));
int sl = sb->value();
ltwi = m_dialog->iface_nz_list->findItems( name , 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);
network_zone_str_id = FWObjectDatabase::getStringId(
cb->itemData(cb->currentIndex(), Qt::UserRole).toInt());
}
Interface *oi = Interface::cast(db->create(Interface::TYPENAME));
assert(oi!=NULL);
@ -1017,12 +1131,8 @@ void newFirewallDialog::finishClicked()
oi->setDyn(dyn);
oi->setUnnumbered(unnum);
oi->setSecurityLevel(sl);
//mw->insertObjectInTree(nfw, oi);
if (fwbdebug)
qDebug("Adding interface %s: security_level=%d",
oi->getName().c_str(), sl);
oi->setSecurityLevel(sec_level);
oi->setStr("network_zone", network_zone_str_id);
std::auto_ptr<interfaceProperties> int_prop(
interfacePropertiesObjectFactory::getInterfacePropertiesObject(nfw));

View File

@ -32,6 +32,7 @@
#include "fwbuilder/InterfaceData.h"
#include "fwbuilder/InetAddrMask.h"
#include "fwbuilder/InterfaceData.h"
#include "fakeWizard.h"
@ -74,19 +75,26 @@ class newFirewallDialog : public QDialog, public FakeWizard
std::list<std::string> possible_dmz_interface_labels;
void fillInterfaceData(libfwbuilder::Interface *intf, QTextBrowser *qte);
void fillInterfaceSLList();
void fillInterfaceNZList();
void getInterfaceDataFromInterfaceEditor(EditedInterfaceData &edata,
libfwbuilder::InterfaceData &idata);
void createFirewallFromTemplate();
void changedAddressesInNewFirewall();
void replaceInterfaceAttributes(libfwbuilder::Firewall *fw,
libfwbuilder::Interface *intf,
EditedInterfaceData *new_data);
libfwbuilder::Address* replaceInterfaceAddressData(libfwbuilder::Firewall *fw,
libfwbuilder::Interface *intf,
libfwbuilder::Address *addr_obj,
const QString &address,
const QString &netmask,
bool ipv4);
libfwbuilder::Address* replaceInterfaceAddressData(
libfwbuilder::Firewall *fw,
libfwbuilder::Interface *intf,
libfwbuilder::Address *addr_obj,
const QString &address,
const QString &netmask,
bool ipv4);
void replaceReferencesToNetworks(libfwbuilder::Firewall *fw,
libfwbuilder::Interface *intf,
libfwbuilder::InetAddrMask old_net,

View File

@ -9,10 +9,16 @@
<rect>
<x>0</x>
<y>0</y>
<width>555</width>
<height>592</height>
<width>650</width>
<height>590</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>650</width>
<height>590</height>
</size>
</property>
<property name="windowTitle">
<string>Creating new firewall object</string>
</property>
@ -61,7 +67,7 @@
</size>
</property>
<property name="currentIndex">
<number>3</number>
<number>4</number>
</property>
<widget class="QWidget" name="page1">
<layout class="QGridLayout" name="gridLayout_4">
@ -407,6 +413,9 @@
</widget>
<widget class="QWidget" name="page4">
<layout class="QGridLayout" name="gridLayout_7">
<property name="leftMargin">
<number>9</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label666">
<property name="text">
@ -443,12 +452,15 @@
<item row="3" column="1">
<widget class="QFrame" name="frame160">
<property name="frameShape">
<enum>QFrame::Box</enum>
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QTableWidget" name="iface_sl_list">
<property name="showGrid">
@ -485,6 +497,97 @@
</layout>
</widget>
<widget class="QWidget" name="page5">
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="0">
<widget class="QLabel" name="label666_2">
<property name="text">
<string>Firewall Builder uses Network Zones to determine network topology. Each firewall interface must have a Network Zone configured. The Network Zone of an interface represents the set of IP networks that would be the source IP address of traffic arriving inbound on an interface.</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>In the diagram below, the Ethernet0/1 &quot;inside&quot; interface would need to have its Network Zone set to a group object that containd the network objects for Network &quot;A&quot;, Network &quot;B&quot; and Network &quot;C&quot;. This means that rules with source addresses in any of these networks will be properly associated with Ethernet0/1. For the &quot;outside&quot; interface you will typically set its Network Zone to &quot;Any&quot; which is all IP networks that aren't defined as Network Zones for any other interfaces.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap resource="MainRes.qrc">:/Images/network_zone_dialog.png</pixmap>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QFrame" name="frame160_2">
<property name="minimumSize">
<size>
<width>0</width>
<height>150</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout" name="gridLayout_9">
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QTableWidget" name="iface_nz_list">
<property name="showGrid">
<bool>true</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<column>
<property name="text">
<string>Name</string>
</property>
</column>
<column>
<property name="text">
<string>Label</string>
</property>
</column>
<column>
<property name="text">
<string>Address</string>
</property>
</column>
<column>
<property name="text">
<string>Security Level</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="page6">
<layout class="QGridLayout">
<property name="margin">
<number>0</number>
@ -722,7 +825,7 @@ You can change interface names and their IP addresses on the next page. Templat
</item>
</layout>
</widget>
<widget class="QWidget" name="page6">
<widget class="QWidget" name="page7">
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<widget class="QLabel" name="label">