UNPKG

nikto-mcp

Version:

A secure MCP (Model Context Protocol) server that enables AI agents to interact with Nikto web server scanner

49 lines 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = void 0; exports.reloadConfig = reloadConfig; const zod_1 = require("zod"); const fs_1 = require("fs"); const path_1 = require("path"); // Read version from package.json const packageJsonPath = (0, path_1.join)(__dirname, '../../package.json'); const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf8')); const configSchema = zod_1.z.object({ version: zod_1.z.string(), niktoBinary: zod_1.z.string(), niktoMode: zod_1.z.enum(['local', 'docker']), dockerImage: zod_1.z.string(), dockerNetworkMode: zod_1.z.string(), maxConcurrentScans: zod_1.z.number().positive(), defaultTimeout: zod_1.z.number().positive(), logLevel: zod_1.z.enum(['debug', 'info', 'warn', 'error']), port: zod_1.z.number().positive().optional(), }); function loadConfig() { return { version: packageJson.version, niktoBinary: process.env['NIKTO_BINARY'] ?? 'nikto', niktoMode: process.env['NIKTO_MODE'] ?? 'local', dockerImage: process.env['NIKTO_DOCKER_IMAGE'] ?? 'ghcr.io/sullo/nikto:latest', dockerNetworkMode: process.env['NIKTO_DOCKER_NETWORK'] ?? 'host', maxConcurrentScans: parseInt(process.env['MAX_CONCURRENT_SCANS'] ?? '3', 10), defaultTimeout: parseInt(process.env['SCAN_TIMEOUT'] ?? '3600', 10), logLevel: process.env['LOG_LEVEL'] ?? 'info', port: process.env['MCP_PORT'] ? parseInt(process.env['MCP_PORT'], 10) : undefined, }; } exports.config = loadConfig(); // Function to reload configuration (useful for testing) function reloadConfig() { exports.config = loadConfig(); return exports.config; } // Validate configuration at startup try { configSchema.parse(exports.config); } catch (error) { console.error('Invalid configuration:', error); process.exit(1); } //# sourceMappingURL=index.js.map