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:
parent
670c6094de
commit
93b3b12bab
@ -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
|
||||
|
||||
BIN
src/libgui/Images/network_zone_dialog.png
Normal file
BIN
src/libgui/Images/network_zone_dialog.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
@ -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() );
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 \
|
||||
|
||||
141
src/libgui/networkZoneManager.cpp
Normal file
141
src/libgui/networkZoneManager.cpp
Normal 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] );
|
||||
|
||||
}
|
||||
62
src/libgui/networkZoneManager.h
Normal file
62
src/libgui/networkZoneManager.h
Normal 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
|
||||
@ -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));
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 "inside" interface would need to have its Network Zone set to a group object that containd the network objects for Network "A", Network "B" and Network "C". This means that rules with source addresses in any of these networks will be properly associated with Ethernet0/1. For the "outside" interface you will typically set its Network Zone to "Any" 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">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user