1.0.0 • Published 10 months ago
@ninjacoder/sendform v1.0.0
@dnsproxymanager/sendform-client
Cliente para el servicio de envío de formularios de DNSProxyManager. Este paquete proporciona una interfaz segura para enviar formularios web con validación mediante hash IV.
📋 Prerrequisitos
- Node.js (versión 22 o superior)
- Acceso a internet para comunicarse con el servidor
🔧 Instalación
npm install @dnsproxymanager/sendform-client📡 Uso Básico
Encriptacion de parametros
// Se puede generar facilmente con este script
const params = {
to: 'destinatario@email.com',
cc: 'copia@email.com',
subject: 'Asunto del correo',
replyto: 'responder@email.com',
tag: 'etiqueta',
template: 'template_id',
logoUrl: 'https://example.com/logo.png',
formName: 'Nombre del formulario'
}
const hash = await fetch('https://sendform.dnsproxymanager.com/encrypt', {
method: 'POST',
body: JSON.stringify({
params: params,
key: 'tu_clave_secreta'
})
});Desencriptacion de parametros
// Se puede generar facilmente con este script
const params = "tu_hash_iv_encriptado"
const hash = await fetch('https://sendform.dnsproxymanager.com/decrypt', {
method: 'POST',
body: JSON.stringify({
params: params,
key: 'tu_clave_secreta'
})
});Atención:
- El hash IV encriptado debe ser el mismo que se utiliza en el servidor.
- Una clave secreta erronea devolverar un error 401.
import SendForm from '@dnsproxymanager/sendform-client';
// Inicializar el cliente con la URL base y el hash IV de validación
const client = new SendForm(
'https://sendform.dnsproxymanager.com',
'tu_hash_iv_encriptado'
);
// Enviar formulario
const response = await client.send({
name: 'Juan Pérez',
email: 'juan@ejemplo.com',
message: 'Hola mundo'
});📚 API
Constructor
new SendForm(baseUrl, params)Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
baseUrl | string | No | URL base del servicio (por defecto: 'http://localhost:3000') |
params | string | Sí | Hash IV encriptado para validación |
Métodos
send(payload)
Envía el formulario con los datos proporcionados.
Parámetros:
payload(Object): Datos del formulario a enviar
Retorna:
- Promise con la respuesta del servidor
Ejemplo:
const response = await client.send({
name: 'Juan Pérez',
email: 'juan@ejemplo.com',
message: 'Hola mundo'
});🔐 Endpoints
El cliente utiliza el siguiente endpoint:
POST /send- Para enviar el formulario con los datos
🛠️ Funciones de Utilidad Refactorizadas
El módulo utils.js ha sido completamente refactorizado con nuevas funciones modulares:
Validación
isValidObject(value)- Valida objetosvalidateHashParams(params)- Valida parámetros para hash
Sanitización HTML
containsDangerousHtml(str)- Detecta HTML peligrosoescapeHtml(str)- Escapa caracteres HTMLsanitizeString(str, options)- Sanitiza cadenassanitizeArray(arr, options)- Sanitiza arrayssanitizeObject(obj, options)- Sanitiza objetossanitizeHtml(data, options)- Sanitización universal
Procesamiento de Datos
safeJsonStringify(data)- JSON segurosafeBase64Encode(data)- Codificación base64 segurasafeBase64Decode(encodedData)- Decodificación base64 segurasafeStringReverse(str)- Reversión de cadenas seguraprocessPayload(payload, options)- Procesamiento completo
Criptografía
generateHash(params, algorithm)- Generación de hash mejorada
Ejemplo de Uso de Utilidades
import { sanitizeHtml, generateHash, processPayload } from '@dnsproxymanager/sendform-client/utils';
// Sanitización personalizada
const data = { name: '<script>alert("xss")</script>' };
const sanitized = sanitizeHtml(data);
// Generación de hash
const hash = await generateHash({ userId: 123 });
// Procesamiento completo de payload
const processed = processPayload({ name: 'John', email: 'john@example.com' });🧪 Pruebas
Para ejecutar las pruebas de las funciones refactorizadas:
node src/utils.test.js📁 Estructura del Proyecto
├── src/
│ ├── index.js # Punto de entrada y clase principal
│ ├── utils.js # Utilidades refactorizadas (sanitización, hash, validación)
│ └── utils.test.js # Pruebas para las utilidades
├── package.json # Dependencias y scripts
└── README.md # Documentación📄 Licencia
MIT
1.0.0
10 months ago