PaperCut es el sistema de control de impresión más extendido en oficinas, y el único de los dos que sabe de dinero por página. La integración usa su API de servicios web, que es XML-RPC, no REST.
1. Preparar PaperCut (los dos pasos que todos olvidan)
- Token: en Options → Advanced → Config editor, poné un valor en
auth.webservices.auth-token. Ese token es la contraseña de toda la API. - Lista blanca de IPs: en Options → Advanced, añadí la IP del servidor de Boris a «Allowed XML Web Services callers». Por defecto solo se permite
127.0.0.1, así que sin este paso todo falla, incluso con el token correcto.
Si PaperCut y Boris no están en la misma red, hace falta una VPN. No publiques el puerto 9191 en internet.
2. Configurar en Boris
- Server URL:
https://servidor:9192(ohttp://servidor:9191). Boris añade/rpc/api/xmlrpc. - Auth token: el del paso anterior.
- Prefijo de usuario: por ejemplo
cw-. Hace que las cuentas que crea Boris se distingan de tus socios de un vistazo. - Aceptar certificado autofirmado: normalmente sí, porque PaperCut genera el suyo. Solo con el servidor en red interna.
- Cuota por reserva: páginas o crédito que recibe cada reserva.
Guardá → Probar conexión (Boris lista tus impresoras) → Importar impresoras.
Qué hace Boris dentro de PaperCut
- Comprueba si la cuenta existe (
api.isUserExists) y, si no, crea un usuario interno conapi.addNewInternalUser. Los usuarios internos son los que no vienen de Active Directory: exactamente lo que es un invitado de día. - Pone el saldo con
api.setUserAccountBalance. Usa set y no adjust a propósito: si el cron reintenta, el invitado no acaba con crédito doble. - Al revocar, marca
disabled-printy deja el saldo a cero. No borra la cuenta, para no perder el histórico que quizá necesites para facturar el mes pasado. - El consumo sale de las propiedades
print-stats.page-countyprint-stats.job-count, más el saldo restante.
Cosas a tener en cuenta
- PHP dejó de traer la extensión
xmlrpcen la versión 8, así que Boris arma y parsea el XML por su cuenta. Si ves un error de XML mal formado, casi siempre es que respondió otra cosa (un proxy, un login HTML), no PaperCut. - Un fallo de token o de IP no da 401: devuelve un fault de XML-RPC. Boris te muestra el texto tal cual, que suele decir exactamente qué falta.
- El PIN que genera Boris sirve como código en la impresora si tenés activada la liberación segura.
- Open the relevant screen Go to the section where this feature is configured.
- Review the required fields Fill in the data that Boris asks for in that screen.
- Save and verify Save the changes and check that the feature works as expected.
