本文整理汇总了C++中FWObject类的典型用法代码示例。如果您正苦于以下问题:C++ FWObject类的具体用法?C++ FWObject怎么用?C++ FWObject使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了FWObject类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
// Invalid routing destination network: network address and netmask mismatch.
bool RoutingCompiler::validateNetwork::processNext()
{
RoutingRule *rule=getNext(); if (rule==NULL) return false;
tmp_queue.push_back(rule);
RuleElementRDst *dstrel=rule->getRDst();
FWObject *o = FWReference::cast(dstrel->front())->getPointer();
// currently we do not support run-time DNSName and AddressTable objects
// in routing rules.
MultiAddress *ma = MultiAddress::cast(o);
if (ma && ma->isRunTime())
{
compiler->abort(rule, "Use of dynamic run-time objects "
"as destination in routing rules is not supported.");
}
if( checkValidNetwork(o) == false)
{
string msg;
msg = "Object \"" + o->getName() +
"\" used as destination in the routing rule " +
rule->getLabel() + " has invalid netmask";
compiler->abort(rule, msg.c_str());
}
return true;
}
示例2: createObject
FWObject* AddressObjectMaker::createObject(ObjectSignature &sig)
{
FWObject *obj = nullptr;
if (sig.type_name == AddressRange::TYPENAME)
obj = createAddressRange(sig);
if (sig.type_name == AddressTable::TYPENAME)
obj = createAddressTable(sig);
if (sig.type_name == DNSName::TYPENAME)
obj = createDNSName(sig);
if (obj == nullptr)
obj = createAddress(sig);
// Now I should build new signature because actual object type has
// only been determined in createAddress()
ObjectSignature new_sig(error_tracker);
if ( ! sig.object_name.isEmpty())
{
obj->setName(sig.object_name.toUtf8().constData());
obj->dispatch(&new_sig, (void*)(nullptr));
registerNamedObject(new_sig, obj);
} else
{
obj->dispatch(&new_sig, (void*)(nullptr));
registerAnonymousObject(new_sig, obj);
}
return obj;
}
示例3: xmlNewProp
xmlNodePtr RuleSet::toXML(xmlNodePtr parent)
{
xmlNodePtr me = FWObject::toXML(parent, false);
xmlNewProp(me, XMLTools::ToXmlCast("name"), XMLTools::StrToXmlCast(getName()));
xmlNewProp(me, XMLTools::ToXmlCast("comment"), XMLTools::StrToXmlCast(getComment()));
xmlNewProp(me, XMLTools::ToXmlCast("ro"), XMLTools::ToXmlCast(((getRO()) ? "True" : "False")));
xmlNewProp(me, XMLTools::ToXmlCast("ipv4_rule_set"),
XMLTools::ToXmlCast(((ipv4) ? "True" : "False")));
xmlNewProp(me, XMLTools::ToXmlCast("ipv6_rule_set"),
XMLTools::ToXmlCast(((ipv6) ? "True" : "False")));
xmlNewProp(me, XMLTools::ToXmlCast("top_rule_set"),
XMLTools::ToXmlCast(((top) ? "True" : "False")));
// First all rules, skip options
for(list<FWObject*>::const_iterator j=begin(); j!=end(); ++j)
{
if (FWOptions::cast(*j) == nullptr) (*j)->toXML(me);
}
FWObject *o;
if ( (o=getFirstByType( RuleSetOptions::TYPENAME ))!=nullptr )
o->toXML(me);
return me;
}
示例4: FWBTree
void ObjectManipulator::moveObject(FWObject *targetLib, FWObject *obj)
{
FWObject *cl=getCurrentLib();
if (cl==targetLib) return;
FWObject *grp = NULL;
if (FWObjectDatabase::isA(targetLib)) grp = targetLib;
else
{
grp = FWBTree().getStandardSlotForObject(
targetLib, obj->getTypeName().c_str());
}
if (grp==NULL) grp=targetLib;
if (!grp->isReadOnly())
{
map<int, set<FWObject*> > reference_holders;
FWCmdMoveObject *cmd = new FWCmdMoveObject(m_project,
obj->getParent(),
grp,
obj,
reference_holders,
"Move object");
m_project->undoStack->push(cmd);
}
if (fwbdebug) qDebug("ObjectManipulator::moveObject all done");
}
示例5: qDebug
void ObjectManipulator::unlockObject()
{
if (fwbdebug)
qDebug() << "ObjectManipulator::unlockObject selected:"
<< getCurrentObjectTree()->getNumSelected();
if (getCurrentObjectTree()->getNumSelected()==0) return;
try
{
FWObject *obj;
vector<FWObject*> so = getCurrentObjectTree()->getSimplifiedSelection();
for (vector<FWObject*>::iterator i=so.begin(); i!=so.end(); ++i)
{
obj= *i;
FWObject *lib = obj->getLibrary();
if (lib->getId()!=FWObjectDatabase::STANDARD_LIB_ID)
{
std::auto_ptr<FWCmdLockObject> cmd(
new FWCmdLockObject(m_project, obj, tr("Unlock object ") +
QString::fromUtf8(obj->getName().c_str())));
FWObject* new_state = cmd->getNewState();
new_state->setReadOnly(false);
if (!cmd->getOldState()->cmp(new_state, true))
m_project->undoStack->push(cmd.release());
}
}
} catch (FWException &ex)
{
qDebug() << ex.toString().c_str();
}
}
示例6: dragEnterEvent
void FWObjectDropArea::dragEnterEvent( QDragEnterEvent *ev)
{
list<FWObject*> dragol;
if (FWObjectDrag::decode(ev, dragol))
{
if (dragol.size()>0)
{
FWObject * o = dragol.front();
bool ok = false ;
if (acceptedTypes.size()==0)
ok = true ;
for (int p = 0 ; p < acceptedTypes.size(); p++)
{
QString type =o->getTypeName().c_str();
if (type==acceptedTypes[p])
{
ok = true ;
break ;
}
}
if (!ok)
{
ev->setAccepted(false);
return ;
}
}
}
ev->setAccepted( ev->mimeData()->hasFormat(FWObjectDrag::FWB_MIME_TYPE) );
}
示例7: packObjects
void CreateObjectGroupsForTSrc::packObjects(RuleElement *re,
BaseObjectGroup *obj_group)
{
if (libfwbuilder::XMLTools::version_compare(
compiler->fw->getStr("version"), "8.3")>=0)
{
// put all objects inside of the group, except for the interface
// if it belongs to the firewall
FWObject *re_interface = NULL;
for (FWObject::iterator i1=re->begin(); i1!=re->end(); ++i1)
{
FWObject *o = *i1;
FWObject *obj = o;
if (FWReference::cast(o)!=NULL)
obj = FWReference::cast(o)->getPointer();
if (Interface::isA(obj) && obj->isChildOf(compiler->fw))
{
re_interface = obj;
continue;
}
obj_group->addRef(obj);
}
re->clearChildren(false); //do not want to destroy children objects
if (re_interface)
{
// add interface back.
re->addRef(re_interface);
}
re->addRef(obj_group);
} else
{
CreateObjectGroups::packObjects(re, obj_group);
}
}
示例8: if
bool PolicyCompiler::ConvertToAtomicForAddresses::processNext()
{
PolicyRule *rule=getNext(); if (rule==NULL) return false;
RuleElementSrc *src=rule->getSrc(); assert(src);
RuleElementDst *dst=rule->getDst(); assert(dst);
for (FWObject::iterator i1=src->begin(); i1!=src->end(); ++i1) {
for (FWObject::iterator i2=dst->begin(); i2!=dst->end(); ++i2) {
PolicyRule *r = compiler->dbcopy->createPolicyRule();
r->duplicate(rule);
compiler->temp_ruleset->add(r);
FWObject *s;
s=r->getSrc(); assert(s);
s->clearChildren();
s->addCopyOf( *i1 );
s=r->getDst(); assert(s);
s->clearChildren();
s->addCopyOf( *i2 );
tmp_queue.push_back(r);
}
}
return true;
}
示例9: currentItem
QDrag* ObjectListView::dragObject()
{
QTreeWidgetItem *ovi = currentItem();
// currentItem returns NULL if the list is empty
if (ovi==NULL) return NULL;
int obj_id = ovi->data(0, Qt::UserRole).toInt();
FWObject *obj = db->findInIndex(obj_id);
QString icn = (":/Icons/"+obj->getTypeName()+"/icon-ref").c_str();
//Resources::global_res->getObjResourceStr(obj, "icon-ref").c_str();
list<FWObject*> dragobj;
dragobj.push_back(obj);
FWObjectDrag *drag = new FWObjectDrag(dragobj, this);
//QPixmap pm = QPixmap::fromMimeSource( icn_filename );
QPixmap pm;
if ( ! QPixmapCache::find( icn, pm) )
{
pm.load( icn );
QPixmapCache::insert( icn, pm);
}
drag->setPixmap( pm );
drag->setHotSpot( QPoint( pm.rect().width() / 2,
pm.rect().height() / 2 ) );
return drag;
}
示例10: assert
void ObjectManipulator::removeUserFolder()
{
ObjectTreeViewItem *item = dynamic_cast<ObjectTreeViewItem *>
(getCurrentObjectTree()->currentItem());
if (item == 0 || item->getUserFolderParent() == 0) return;
ObjectTreeViewItem *parent = dynamic_cast<ObjectTreeViewItem *>
(item->parent());
assert(parent != 0);
vector<FWObject *> objs;
for (int ii = 0; ii < item->childCount(); ii++) {
ObjectTreeViewItem *child = dynamic_cast<ObjectTreeViewItem *>
(item->child(ii));
FWObject *obj = child->getFWObject();
if (obj->getRO()) {
QMessageBox::critical(this, "Firewall Builder",
tr("Folder with locked object "
"cannot be deleted"));
return;
}
objs.push_back(obj);
}
if (objs.size() > 0) {
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
ConfirmDeleteObjectDialog confirm(this);
confirm.load(objs);
QApplication::restoreOverrideCursor();
if (confirm.exec() == QDialog::Rejected) return;
}
FWCmdMacro *macro = new FWCmdMacro(tr("Delete user folder"));
QList<QTreeWidgetItem *> children = item->takeChildren();
while (!children.isEmpty()) {
ObjectTreeViewItem *child = dynamic_cast<ObjectTreeViewItem *>
(children.takeFirst());
assert(child != 0);
FWObject *obj = child->getFWObject();
if (mw->isEditorVisible() && mw->getOpenedEditor() == obj) {
mw->hideEditor();
}
deleteObject(obj, macro);
}
FWCmdRemoveUserFolder *cmd =
new FWCmdRemoveUserFolder(m_project, parent->getFWObject(),
item->getUserFolderName(), "", macro);
FWObject *newObj = cmd->getNewState();
set<string> folders = stringToSet(newObj->getStr("subfolders"));
folders.erase(item->getUserFolderName().toUtf8().constData());
newObj->setStr("subfolders", setToString(folders));
m_project->undoStack->push(macro);
}
示例11: getCurrentObjectTree
void ObjectManipulator::groupObjects()
{
if (getCurrentObjectTree()->getNumSelected()==0) return;
FWObject *co = getCurrentObjectTree()->getSelectedObjects().front();
newGroupDialog ngd(this, m_project->db());
if (ngd.exec()==QDialog::Accepted)
{
QString objName = ngd.m_dialog->obj_name->text();
QString libName = ngd.m_dialog->libs->currentText();
QString type = ObjectGroup::TYPENAME;
if (Service::cast(co)!=NULL) type=ServiceGroup::TYPENAME;
if (Interval::cast(co)!=NULL) type=IntervalGroup::TYPENAME;
FWObject *parent = NULL;
FWObject *newgrp = NULL;
list<FWObject*> ll = m_project->db()->getByType( Library::TYPENAME );
for (FWObject::iterator i=ll.begin(); i!=ll.end(); i++)
{
FWObject *lib=*i;
if (libName==QString::fromUtf8(lib->getName().c_str()))
{
/* TODO: need to show a dialog and say that chosen library is
* read-only. this is not critical though since newGroupDialog fills
* the pull-down only with names of read-write libraries
*/
if (lib->isReadOnly()) return;
parent = FWBTree().getStandardSlotForObject(lib,type);
if (parent==NULL)
{
if (fwbdebug)
qDebug("ObjectManipulator::groupObjects(): could not find standard slot for object of type %s in library %s",
type.toAscii().constData(),lib->getName().c_str());
return;
}
newgrp = m_project->db()->create(type.toStdString());
newgrp->setName(string(objName.toUtf8().constData()));
break;
}
}
if (newgrp==NULL) return;
FWCmdAddObject *cmd = new FWCmdAddObject(
m_project, parent, newgrp, QObject::tr("Create new group"));
FWObject *new_state = cmd->getNewState();
new_state->add(newgrp);
vector<FWObject*> so = getCurrentObjectTree()->getSimplifiedSelection();
for (vector<FWObject*>::iterator i=so.begin(); i!=so.end(); ++i)
newgrp->addRef(*i);
m_project->undoStack->push(cmd);
}
}
示例12: string
/*
* checks if one of the children of RuleElement is a host, IPv4 or
* network object with address 0.0.0.0 and netmask 0.0.0.0.
*
* Exceptions:
* - object 'any'
* - interface with dynamic address.
*
* In addition check for address A.B.C.D/0 which is most likely a
* mistake if A.B.C.D != 0.0.0.0. See #475
*/
Address* PolicyCompiler::checkForZeroAddr::findZeroAddress(RuleElement *re)
{
Address *a=NULL;
for (FWObject::iterator i=re->begin(); i!=re->end(); i++)
{
FWObject *o = FWReference::getObject(*i);
assert(o!=NULL);
MultiAddress *maddr = MultiAddress::cast(o);
if (maddr && maddr->isRunTime()) continue;
Address *addr = Address::cast(o);
if (addr==NULL && o!=NULL)
compiler->warning(
re->getParent(),
string("findZeroAddress: Unknown object in rule element: ") +
o->getName() +
" type=" + o->getTypeName());
if (addr && addr->hasInetAddress())
{
if (Interface::cast(o)!=NULL &&
(Interface::cast(o)->isDyn() ||
Interface::cast(o)->isUnnumbered() ||
Interface::cast(o)->isBridgePort()))
continue;
if ( ! addr->isAny())
{
const InetAddr *ad = addr->getAddressPtr();
const InetAddr *nm = addr->getNetmaskPtr();
// AddressRange has address but not netmask
// AddressRange with address 0.0.0.0 is acceptable
// (not equivalent to "any")
if (ad->isAny() && nm!=NULL && nm->isAny())
{
a = addr;
break;
}
// Address A.B.C.D/0 is most likely a mistake if
// A.B.C.D != 0.0.0.0
if ((Network::cast(addr) || NetworkIPv6::cast(addr)) &&
!ad->isAny() && nm!=NULL && nm->isAny())
{
a = addr;
break;
}
}
}
}
return a;
}
示例13: while
string RoutingCompiler::debugPrintRule(Rule *r)
{
RoutingRule *rule = RoutingRule::cast(r);
RuleElementRDst *dstrel = rule->getRDst();
RuleElementRItf *itfrel = rule->getRItf();
RuleElementRGtw *gtwrel = rule->getRGtw();
ostringstream str;
// str << setw(70) << setfill('-') << "-";
string dst, itf, gtw;
FWObject *obj = FWReference::getObject(itfrel->front());
itf = (obj) ? obj->getName() : "NULL";
obj = FWReference::getObject(gtwrel->front());
gtw = (obj) ? obj->getName() : "NULL";
int no = 0;
FWObject::iterator i1 = dstrel->begin();
while ( i1!=dstrel->end())
{
str << endl;
dst = " ";
if (i1 != dstrel->end())
{
FWObject *o = FWReference::getObject(*i1);
dst = (o) ? o->getName() : "NULL";
}
int w = 0;
if (no==0)
{
str << rule->getLabel();
w = rule->getLabel().length();
}
str << setw(10-w) << setfill(' ') << " ";
str << setw(18) << setfill(' ') << dst.c_str() << " ";
str << setw(18) << setfill(' ') << itf.c_str() << " ";
str << setw(18) << setfill(' ') << gtw.c_str() << " ";
str << setw(18) << setfill(' ') << " ";
++no;
if ( i1 != dstrel->end() ) ++i1;
}
return str.str();
}
示例14: getRoot
void PolicyRule::setDummySource()
{
FWObjectDatabase *root = getRoot();
FWObject *dummySource = root->findInIndex(FWObjectDatabase::DUMMY_ADDRESS_ID);
if (!dummySource || (root->getStringId(dummySource->getId()) != "dummyaddressid0"))
return;
FWObject::iterator i1 = begin();
(*i1)->addRef(dummySource);
src_re = RuleElementSrc::cast(*i1);
}
示例15: if
bool NATCompiler_ipf::ExpandPortRange::processNext()
{
NATRule *rule=getNext(); if (rule==NULL) return false;
Service *osrv=compiler->getFirstOSrv(rule);
if (UDPService::isA(osrv) || TCPService::isA(osrv))
{
int rs = TCPUDPService::cast(osrv)->getDstRangeStart();
int re = TCPUDPService::cast(osrv)->getDstRangeEnd();
int numPorts = re-rs+1;
if (numPorts==1)
{
tmp_queue.push_back(rule);
return true;
}
if (numPorts > 20)
{
ostringstream ostr;
ostr << string("Expanding port range ") << osrv->getName()
<< " creates " << numPorts << " rules";
compiler->warning(rule, ostr.str());
}
string newSrvType = TCPService::TYPENAME;
if (UDPService::isA(osrv)) newSrvType = UDPService::TYPENAME;
for (int p=rs; p<=re; ++p)
{
NATRule *r = compiler->dbcopy->createNATRule();
r->duplicate(rule);
FWObject *newSrv = compiler->dbcopy->create(newSrvType);
newSrv->duplicate(osrv,true);
TCPUDPService::cast(newSrv)->setDstRangeStart(p);
TCPUDPService::cast(newSrv)->setDstRangeEnd(p);
compiler->persistent_objects->add(newSrv,false);
compiler->dbcopy->addToIndex(newSrv);
RuleElementOSrv *nosrv = r->getOSrv();
nosrv->clearChildren();
nosrv->addRef(newSrv);
compiler->temp_ruleset->add(r);
tmp_queue.push_back(r);
}
} else
{
tmp_queue.push_back(rule);
}
return true;
}