88 lines
1.8 KiB
TypeScript
88 lines
1.8 KiB
TypeScript
/**
|
|
* Configuration management for the MCP server
|
|
* Handles environment variables and configuration loading
|
|
*/
|
|
|
|
export interface NASConfig {
|
|
host?: string;
|
|
username?: string;
|
|
password?: string;
|
|
protocol?: 'smb' | 'ftp' | 'sftp';
|
|
}
|
|
|
|
export interface ServerConfig {
|
|
host?: string;
|
|
username?: string;
|
|
port?: number;
|
|
keyPath?: string;
|
|
}
|
|
|
|
export interface RouterConfig {
|
|
host?: string;
|
|
username?: string;
|
|
password?: string;
|
|
}
|
|
|
|
export interface AppConfig {
|
|
nas: NASConfig;
|
|
server: ServerConfig;
|
|
router: RouterConfig;
|
|
footballApiKey?: string;
|
|
gameApiKey?: string;
|
|
}
|
|
|
|
class ConfigManager {
|
|
private config: AppConfig;
|
|
|
|
constructor() {
|
|
this.config = this.loadConfig();
|
|
}
|
|
|
|
private loadConfig(): AppConfig {
|
|
return {
|
|
nas: {
|
|
host: process.env.NAS_HOST,
|
|
username: process.env.NAS_USERNAME,
|
|
password: process.env.NAS_PASSWORD,
|
|
protocol: (process.env.NAS_PROTOCOL as 'smb' | 'ftp' | 'sftp') || 'smb',
|
|
},
|
|
server: {
|
|
host: process.env.SERVER_HOST,
|
|
username: process.env.SERVER_USERNAME,
|
|
port: process.env.SERVER_PORT ? parseInt(process.env.SERVER_PORT) : 22,
|
|
keyPath: process.env.SERVER_KEY_PATH,
|
|
},
|
|
router: {
|
|
host: process.env.ROUTER_HOST,
|
|
username: process.env.ROUTER_USERNAME,
|
|
password: process.env.ROUTER_PASSWORD,
|
|
},
|
|
footballApiKey: process.env.FOOTBALL_API_KEY,
|
|
gameApiKey: process.env.GAME_API_KEY,
|
|
};
|
|
}
|
|
|
|
getConfig(): AppConfig {
|
|
return this.config;
|
|
}
|
|
|
|
getNASConfig(): NASConfig {
|
|
return this.config.nas;
|
|
}
|
|
|
|
getServerConfig(): ServerConfig {
|
|
return this.config.server;
|
|
}
|
|
|
|
getRouterConfig(): RouterConfig {
|
|
return this.config.router;
|
|
}
|
|
|
|
reload(): void {
|
|
this.config = this.loadConfig();
|
|
}
|
|
}
|
|
|
|
export const configManager = new ConfigManager();
|
|
|