**Motivations:** - Ensure all application directories have systemd services enabled at boot - Complete service installation for api-relay, filigrane-api, and clamav-api - Fix dependencies and import issues preventing clamav-api from starting **Root causes:** - Three services (api-relay, filigrane-api, clamav-api) had service files but were not installed in systemd - api-clamav had incorrect node-clamav version (0.12.1) that doesn't exist - api-clamav dependencies were not installed (node_modules missing) - ES module import syntax incompatible with CommonJS node-clamav package **Correctifs:** - Installed api-relay.service, filigrane-api.service, and clamav-api.service in /etc/systemd/system/ - Enabled all three services for automatic startup at boot - Updated api-clamav/package.json: changed node-clamav version from ^0.12.1 to ^1.0.11 - Installed npm dependencies for api-clamav - Fixed ES module import in api-clamav/src/routes/scan.js to use CommonJS-compatible syntax **Evolutions:** - All 7 application services now have systemd services enabled at boot - Complete service coverage: anchorage-api, faucet-api, signet-dashboard, userwallet, api-relay, filigrane-api, clamav-api - All services verified active and listening on their respective ports **Pages affectées:** - api-clamav/package.json - api-clamav/src/routes/scan.js - api-clamav/node_modules/ (new) - api-clamav/package-lock.json (new) - /etc/systemd/system/api-relay.service (new) - /etc/systemd/system/filigrane-api.service (new) - /etc/systemd/system/clamav-api.service (new)
2.3 KiB
2.3 KiB
API Relay – Évolutions (build ESM, rate limit, CORS, logging, métriques, etc.)
Author: Équipe 4NK
Date: 2026-01-26
Objectif
Implémenter les évolutions listées pour le relais UserWallet : build ESM compatible node dist/, rate limiting, CORS configurable, validation POST stricte, logging structuré (Pino), métriques Prometheus, compression, indexation par service, Bloom filter, timeouts, unité systemd, documentation.
Impacts
- Build :
tsconfigenmodule/moduleResolutionNode16, imports avec.js.npm start→node dist/index.js. - Middleware : CORS (origines via
CORS_ORIGINS), rate limit (fenêtre et max via env), compression gzip, body limit, timeout serveur. - Validation :
lib/validatepour MsgChiffre, MsgSignature, MsgCle ; réponses 400 explicites. - Logging : Pino, middleware HTTP (method, url, status, durationMs).
- Métriques :
GET /metrics, Prometheusrelay_storage_entries{kind}. - Bloom :
GET /bloom, JSON export du filtre des hash vus. - Storage : index
byServicepourgetMessages(?, ?, serviceUuid),getSeenHashes,getSignatureCount,getKeyCount. - Déploiement :
start.sh,api-relay.service, README mis à jour.
Modifications
tsconfig.json: Node16, .js dans les imports.package.json:start→node dist/index.js; deps express-rate-limit, compression, pino, prom-client, bloom-filters, @types/compression.src/lib/logger.ts,src/lib/validate.ts,src/middleware/index.ts.src/routes/metrics.ts,src/routes/bloom.ts.src/routes/messages|signatures|keys: validate + logger.src/services/storage: byService, rebuildServiceIndex, getSeenHashes, get*Count ; logger.src/services/relay: logger ; suppression du double check hasSeenHash.src/index: http.createServer, timeout, middleware, /metrics, /bloom.start.sh,api-relay.service,README.md.
Modalités de déploiement
npm run build && npm startou./start.sh.- Systemd :
cp api-relay.service /etc/systemd/system/,systemctl enable --now api-relay.
Modalités d’analyse
curl /health,curl "/messages?start=0&end=9999999999",curl /metrics,curl /bloom.- Vérifier les logs structurés (JSON Pino), rate limit (en-têtes), compression (Content-Encoding: gzip).