El módulo objects mantiene una lista de objetos de red creada por el usuario. Estos objetos pueden contener cualquier número de direcciones IP y bloques CIDR.
Su interfaz es muy simple. La clase
EBox::ObjectObserver tiene dos funciones
abstractas que deben ser implementadas por los módulos que hacen uso
del módulo objects:
usesObjectRecibe el nombre de un objeto como
argumento y devuelve true
si el módulo está haciendo uso del objeto dado
en su configuración, y
false en caso contrario.
freeObjectTambién recibe el nombre de un objeto
como argumento. Este método le dice al módulo
que el usuario ha pedido la eliminación del
objeto dado (incluso si estaba siendo usado
por los otros módulos). El módulo debería
borrar todas las referencias al objeto en su
configuración cuando se llame a
freeObject.
Como ejemplo, aquí está la implementación de ambas funciones en el módulo firewall:
Ejemplo 4.1. Implementación de la clase
EBox::ObjectsObserver
sub usesObject # (object)
{
my ($self, $object) = @_;
defined($object) or return undef;
($object ne "") or return undef;
return $self->dir_exists("objects/$object");
}
sub freeObject # (object)
{
my ($self, $object) = @_;
defined($object) or return;
($object ne "") or return;
$self->delete_dir("objects/$object");
}