Biblioteca de utilidades PHP para proyectos Tabula17. Proporciona componentes reutilizables y herramientas comunes para facilitar el desarrollo de aplicaciones.
composer require xvii/satelles-utilis-proelio
Implementa un sistema de colas de tareas con múltiples backends:
- RedisQueue: Implementación basada en Redis
- RabbitMQQueue: Implementación basada en RabbitMQ
Ejemplo de uso con Redis:
$config = [
'host' => 'localhost',
'port' => 6379,
'channel' => 'mi-aplicacion'
];
$queue = new RedisQueue($config);
// Agregar una tarea
$taskId = $queue->push([
'tipo' => 'enviar-email',
'datos' => [
'destinatario' => 'usuario@ejemplo.com',
'asunto' => 'Prueba'
]
]);
// Procesar una tarea
$task = $queue->pop();
if ($task) {
// Procesar la tarea...
$queue->ack($task['_task_id']);
}
Ejemplo con RabbitMQ:
$config = [
'host' => 'localhost',
'port' => 5672,
'user' => 'guest',
'password' => 'guest',
'queue' => 'mi-cola'
];
$queue = new RabbitMQQueue($config);
// El uso es similar al de RedisQueue
Implementa autenticación mutual TLS (mTLS) para servidores TCP Swoole. Permite gestionar conexiones seguras basadas en certificados X.509.
Ejemplo de uso:
// Configuración del servidor
$server = new Swoole\Server('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
$server->set([
'ssl_cert_file' => '/path/to/server.crt',
'ssl_key_file' => '/path/to/server.key',
'ssl_ca_file' => '/path/to/ca.crt',
'ssl_verify_peer' => true,
'ssl_allow_self_signed' => false,
'ssl_client_cert_file' => true,
]);
// Configuración del middleware
$logger = new Monolog\Logger('mtls');
$middleware = new TCPmTLSAuthMiddleware($logger);
// Autorizar clientes
$middleware->allowClients([
'client1.example.com',
'client2.example.com',
'*.trusted-domain.com'
]);
// Manejar conexiones
$server->on('receive', function (Server $server, int $fd, int $reactorId, string $data) use ($middleware) {
$middleware->handle($server, $fd, $data, function ($server, $context) {
// Lógica de negocio para conexiones autorizadas
$response = sprintf(
"Hola %s! Tu mensaje: %s\n",
$context['client_cn'],
trim($context['data'])
);
$server->send($context['fd'], $response);
});
});
$server->start();
Características del middleware mTLS:
- Validación de certificados de cliente
- Gestión de lista blanca de Common Names
- Rechazo automático de conexiones no autorizadas
- Contexto enriquecido con información del certificado
Implementa un cliente para el protocolo IPP (Internet Printing Protocol) que permite interactuar con servidores CUPS. Permite enviar trabajos de impresión y gestionar impresoras de red.
- El servidor CUPS debe estar configurado para aceptar conexiones remotas si no estás trabajando en localhost.
Para ello, asegúrate de que el archivo de configuración
/etc/cups/cupsd.conf
permita conexiones desde tu IP o dominio. - El protocolo IPP (Internet Printing Protocol) es complejo y esta clase solo implementa una parte.
- Swoole es necesario para manejar las conexiones de red de manera eficiente.
Ejemplo de uso:
// Crear cliente CUPS
$client = new CupsClient('localhost', 631);
// Enviar trabajo de impresión
$response = $client->printJob(
'mi-impresora',
$datos,
'Documento importante',
['copies' => 2]
);
// Listar impresoras disponibles
$printers = $client->getPrinters();
// Cerrar conexión cuando termine
$client->disconnect();
Si al intentar obtener la lista de impresoras disponibles recibes un error de autenticación, asegúrate de que el servidor CUPS esté configurado para permitir conexiones sin autenticación o proporciona las credenciales necesarias.
- Para utilizar CUPS con autenticación, puedes pasar las credenciales en el constructor o usar el método
setCredentials
del cliente CUPS:
$client = new CupsClient(
host:'localhost',
port:631,
username:'usuario',
password:'contraseña'
);
// o mediante setCredentials
$client->setCredentials('usuario', 'contraseña');
- Para modificar la configuración de CUPS en
/etc/cups/cupsd.conf
y permitir operaciones administrativas:
# Permitir acceso a la API desde localhost
<Location />
Allow from localhost
Order deny,allow
</Location>
# Permitir operaciones administrativas
<Location /admin>
Allow from localhost
Order deny,allow
</Location>
Para más detalles sobre la configuración de CUPS, consulta la documentación oficial de CUPS.
Características del cliente CUPS:
- Soporte completo del protocolo IPP 1.1
- Gestión automática de conexiones
- Envío de trabajos de impresión
- Consulta de impresoras disponibles
- Manejo de atributos y opciones de impresión
- Parsing completo de respuestas IPP
- Sistema de Caché
- Utilidades de Logging
- Helpers para manipulación de arrays y strings
- Validadores comunes
- Utilidades de fecha y hora
- Interfaces HTTP comunes
- Y más...
- PHP 8.2 o superior
- Extensiones según el componente:
- Redis:
ext-redis
- RabbitMQ:
php-amqplib/php-amqplib
- mTLS:
ext-openssl
,ext-swoole
- CUPS:
ext-swoole
- Redis:
Las contribuciones son bienvenidas. Por favor:
- Haz fork del proyecto
- Crea una rama para tu funcionalidad (
git checkout -b feature/nueva-funcionalidad
) - Commitea tus cambios (
git commit -am 'Agrega nueva funcionalidad'
) - Push a la rama (
git push origin feature/nueva-funcionalidad
) - Crea un Pull Request
MIT License
Para reportar problemas o solicitar nuevas características:
- Revisa los issues existentes
- Abre un nuevo issue con los detalles del problema o sugerencia