decodo-back-office-mcp
Version:
Model Context Protocol (MCP) server for Decodo proxy management API integration. Provides 14 tools for managing sub-users, proxy endpoints, IP whitelists, and traffic analytics.
39 lines • 1.77 kB
JavaScript
import winston from 'winston';
import { appConfig } from './config.js';
export const logger = winston.createLogger({
level: appConfig.LOG_LEVEL,
format: winston.format.combine(winston.format.timestamp(), winston.format.errors({ stack: true }), winston.format.json()),
defaultMeta: { service: appConfig.MCP_SERVER_NAME },
transports: [
new winston.transports.Console({
format: winston.format.combine(winston.format.colorize(), winston.format.simple())
})
]
});
// Create wrapper functions to ensure no sensitive data is logged
const sanitizeMessage = (message) => {
if (typeof message === 'string') {
return message
.replace(/api_key=[^&\s]+/gi, 'api_key=***')
.replace(/Authorization:\s*[^\s]+/gi, 'Authorization: ***');
}
return message;
};
const sanitizeMeta = (meta) => {
if (meta && typeof meta === 'object') {
const stringified = JSON.stringify(meta);
const sanitized = stringified.replace(/"api_key"\s*:\s*"[^"]+"/gi, '"api_key":"***"');
return JSON.parse(sanitized);
}
return meta;
};
// Override winston methods with sanitization
const originalInfo = logger.info.bind(logger);
const originalError = logger.error.bind(logger);
const originalWarn = logger.warn.bind(logger);
const originalDebug = logger.debug.bind(logger);
logger.info = (message, meta) => originalInfo(sanitizeMessage(message), sanitizeMeta(meta));
logger.error = (message, meta) => originalError(sanitizeMessage(message), sanitizeMeta(meta));
logger.warn = (message, meta) => originalWarn(sanitizeMessage(message), sanitizeMeta(meta));
logger.debug = (message, meta) => originalDebug(sanitizeMessage(message), sanitizeMeta(meta));
//# sourceMappingURL=logger.js.map