feat: 初次提交
This commit is contained in:
87
src/storage/config.ts
Normal file
87
src/storage/config.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
/**
|
||||
* 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();
|
||||
|
||||
Reference in New Issue
Block a user