1.0.0 • Published 10 months ago

@ninjacoder/sendform v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@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ámetroTipoRequeridoDescripción
baseUrlstringNoURL base del servicio (por defecto: 'http://localhost:3000')
paramsstringHash 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 objetos
  • validateHashParams(params) - Valida parámetros para hash

Sanitización HTML

  • containsDangerousHtml(str) - Detecta HTML peligroso
  • escapeHtml(str) - Escapa caracteres HTML
  • sanitizeString(str, options) - Sanitiza cadenas
  • sanitizeArray(arr, options) - Sanitiza arrays
  • sanitizeObject(obj, options) - Sanitiza objetos
  • sanitizeHtml(data, options) - Sanitización universal

Procesamiento de Datos

  • safeJsonStringify(data) - JSON seguro
  • safeBase64Encode(data) - Codificación base64 segura
  • safeBase64Decode(encodedData) - Decodificación base64 segura
  • safeStringReverse(str) - Reversión de cadenas segura
  • processPayload(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