Spaces:
Sleeping
Sleeping
| import { Request, Response } from 'express'; | |
| import config from '../config/index.js'; | |
| import { loadSettings, loadOriginalSettings } from '../config/index.js'; | |
| import { getDataService } from '../services/services.js'; | |
| import { DataService } from '../services/dataService.js'; | |
| import { IUser } from '../types/index.js'; | |
| const dataService: DataService = getDataService(); | |
| /** | |
| * Get runtime configuration for frontend | |
| */ | |
| export const getRuntimeConfig = (req: Request, res: Response): void => { | |
| try { | |
| const runtimeConfig = { | |
| basePath: config.basePath, | |
| version: config.mcpHubVersion, | |
| name: config.mcpHubName, | |
| }; | |
| res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate'); | |
| res.setHeader('Pragma', 'no-cache'); | |
| res.setHeader('Expires', '0'); | |
| res.json({ | |
| success: true, | |
| data: runtimeConfig, | |
| }); | |
| } catch (error) { | |
| console.error('Error getting runtime config:', error); | |
| res.status(500).json({ | |
| success: false, | |
| message: 'Failed to get runtime configuration', | |
| }); | |
| } | |
| }; | |
| /** | |
| * Get public system configuration (only skipAuth setting) | |
| * This endpoint doesn't require authentication to allow checking if auth should be skipped | |
| */ | |
| export const getPublicConfig = (req: Request, res: Response): void => { | |
| try { | |
| const settings = loadSettings(); | |
| const skipAuth = settings.systemConfig?.routing?.skipAuth || false; | |
| let permissions = {}; | |
| if (skipAuth) { | |
| const user: IUser = { | |
| username: 'guest', | |
| password: '', | |
| isAdmin: true, | |
| }; | |
| permissions = dataService.getPermissions(user); | |
| } | |
| res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate'); | |
| res.setHeader('Pragma', 'no-cache'); | |
| res.setHeader('Expires', '0'); | |
| res.json({ | |
| success: true, | |
| data: { | |
| skipAuth, | |
| permissions, | |
| }, | |
| }); | |
| } catch (error) { | |
| console.error('Error getting public config:', error); | |
| res.status(500).json({ | |
| success: false, | |
| message: 'Failed to get public configuration', | |
| }); | |
| } | |
| }; | |
| /** | |
| * Get MCP settings in JSON format for export/copy | |
| * Supports both full settings and individual server configuration | |
| */ | |
| export const getMcpSettingsJson = (req: Request, res: Response): void => { | |
| try { | |
| const { serverName } = req.query; | |
| const settings = loadOriginalSettings(); | |
| if (serverName && typeof serverName === 'string') { | |
| // Return individual server configuration | |
| const serverConfig = settings.mcpServers[serverName]; | |
| if (!serverConfig) { | |
| res.status(404).json({ | |
| success: false, | |
| message: `Server '${serverName}' not found`, | |
| }); | |
| return; | |
| } | |
| res.json({ | |
| success: true, | |
| data: { | |
| mcpServers: { | |
| [serverName]: serverConfig, | |
| }, | |
| }, | |
| }); | |
| } else { | |
| // Return full settings | |
| res.json({ | |
| success: true, | |
| data: settings, | |
| }); | |
| } | |
| } catch (error) { | |
| console.error('Error getting MCP settings JSON:', error); | |
| res.status(500).json({ | |
| success: false, | |
| message: 'Failed to get MCP settings', | |
| }); | |
| } | |
| }; | |