fa-mcp-sdk 0.2.146 → 0.2.182
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/fa-mcp.js +66 -54
- package/cli-template/.env.example +2 -2
- package/cli-template/{fa-mcp-sdk-spec.md → FA-MCP-SDK.md} +699 -42
- package/cli-template/README.md +2 -2
- package/cli-template/package.json +1 -1
- package/cli-template/r/TEST HTTP.xml +9 -0
- package/cli-template/{run/TEST SSE.run.xml → r/TEST SSE.xml } +2 -2
- package/cli-template/{run/TEST STDIO.run.xml → r/TEST STDIO.xml } +2 -2
- package/cli-template/r/generate-token.xml +14 -0
- package/cli-template/{run/kill-server.run.xml → r/kill-server.xml} +2 -2
- package/cli-template/{run/kill-token-gen-server.xml → r/remove-nul.xml} +4 -5
- package/{cli-template/config → config}/_local.yaml +28 -14
- package/{cli-template/config → config}/custom-environment-variables.yaml +3 -0
- package/{cli-template/config → config}/default.yaml +50 -10
- package/{cli-template/config → config}/development.yaml +4 -4
- package/config/local.yaml +89 -0
- package/{cli-template/config → config}/production.yaml +4 -4
- package/dist/core/_types_/active-directory-config.d.ts +3 -0
- package/dist/core/_types_/active-directory-config.d.ts.map +1 -1
- package/dist/core/_types_/config.d.ts +5 -1
- package/dist/core/_types_/config.d.ts.map +1 -1
- package/dist/core/_types_/types.d.ts +40 -1
- package/dist/core/_types_/types.d.ts.map +1 -1
- package/dist/core/ad/group-checker.d.ts +13 -0
- package/dist/core/ad/group-checker.d.ts.map +1 -0
- package/dist/core/ad/group-checker.js +86 -0
- package/dist/core/ad/group-checker.js.map +1 -0
- package/dist/core/auth/admin-auth.d.ts +16 -0
- package/dist/core/auth/admin-auth.d.ts.map +1 -0
- package/dist/core/auth/admin-auth.js +159 -0
- package/dist/core/auth/admin-auth.js.map +1 -0
- package/dist/core/auth/basic.d.ts +6 -0
- package/dist/core/auth/basic.d.ts.map +1 -0
- package/dist/core/auth/basic.js +26 -0
- package/dist/core/auth/basic.js.map +1 -0
- package/dist/core/auth/{jwt-validation.d.ts → jwt.d.ts} +4 -3
- package/dist/core/auth/jwt.d.ts.map +1 -0
- package/dist/core/auth/{jwt-validation.js → jwt.js} +9 -19
- package/dist/core/auth/jwt.js.map +1 -0
- package/dist/core/auth/middleware.d.ts.map +1 -1
- package/dist/core/auth/middleware.js +3 -3
- package/dist/core/auth/middleware.js.map +1 -1
- package/dist/core/auth/multi-auth.d.ts +14 -6
- package/dist/core/auth/multi-auth.d.ts.map +1 -1
- package/dist/core/auth/multi-auth.js +151 -141
- package/dist/core/auth/multi-auth.js.map +1 -1
- package/dist/core/auth/permanent.d.ts +6 -0
- package/dist/core/auth/permanent.d.ts.map +1 -0
- package/dist/core/auth/permanent.js +15 -0
- package/dist/core/auth/permanent.js.map +1 -0
- package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.d.ts +1 -1
- package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.d.ts.map +1 -1
- package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.js +8 -10
- package/dist/core/auth/token-generator/ntlm/ntlm-domain-config.js.map +1 -1
- package/dist/core/auth/token-generator/ntlm/ntlm-integration.d.ts.map +1 -1
- package/dist/core/auth/token-generator/ntlm/ntlm-integration.js +9 -2
- package/dist/core/auth/token-generator/ntlm/ntlm-integration.js.map +1 -1
- package/dist/core/auth/token-generator/server.d.ts.map +1 -1
- package/dist/core/auth/token-generator/server.js +59 -25
- package/dist/core/auth/token-generator/server.js.map +1 -1
- package/dist/core/auth/types.d.ts +4 -3
- package/dist/core/auth/types.d.ts.map +1 -1
- package/dist/core/bootstrap/startup-info.d.ts.map +1 -1
- package/dist/core/bootstrap/startup-info.js +19 -0
- package/dist/core/bootstrap/startup-info.js.map +1 -1
- package/dist/core/consul/access-points-updater.js +1 -1
- package/dist/core/consul/access-points-updater.js.map +1 -1
- package/dist/core/consul/get-consul-api.d.ts +1 -1
- package/dist/core/consul/get-consul-api.d.ts.map +1 -1
- package/dist/core/consul/get-consul-api.js +1 -1
- package/dist/core/consul/get-consul-api.js.map +1 -1
- package/dist/core/consul/register.d.ts +1 -1
- package/dist/core/consul/register.d.ts.map +1 -1
- package/dist/core/index.d.ts +4 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/init-mcp-server.d.ts.map +1 -1
- package/dist/core/init-mcp-server.js +1 -1
- package/dist/core/init-mcp-server.js.map +1 -1
- package/dist/core/utils/testing/McpSseClient.js.map +1 -1
- package/dist/core/web/admin-router.d.ts +10 -0
- package/dist/core/web/admin-router.d.ts.map +1 -0
- package/dist/core/web/admin-router.js +309 -0
- package/dist/core/web/admin-router.js.map +1 -0
- package/dist/core/web/favicon-svg.d.ts +1 -1
- package/dist/core/web/favicon-svg.d.ts.map +1 -1
- package/dist/core/web/favicon-svg.js +21 -3
- package/dist/core/web/favicon-svg.js.map +1 -1
- package/dist/core/web/home-api.d.ts +7 -0
- package/dist/core/web/home-api.d.ts.map +1 -0
- package/dist/core/web/home-api.js +106 -0
- package/dist/core/web/home-api.js.map +1 -0
- package/dist/core/web/server-http.d.ts +1 -0
- package/dist/core/web/server-http.d.ts.map +1 -1
- package/dist/core/web/server-http.js +60 -25
- package/dist/core/web/server-http.js.map +1 -1
- package/dist/core/web/static/home/index.html +218 -0
- package/dist/core/web/static/home/script.js +643 -0
- package/dist/core/web/{about-page/css.js → static/styles.css} +435 -105
- package/dist/core/web/static/token-gen/index.html +105 -0
- package/dist/core/web/static/token-gen/jwt-icon.svg +3 -0
- package/dist/core/web/static/token-gen/logout.svg +4 -0
- package/dist/core/web/static/token-gen/script.js +553 -0
- package/dist/core/web/static/token-gen/user.svg +4 -0
- package/dist/core/web/svg-icons.d.ts +7 -0
- package/dist/core/web/svg-icons.d.ts.map +1 -0
- package/dist/core/web/svg-icons.js +78 -0
- package/dist/core/web/svg-icons.js.map +1 -0
- package/package.json +7 -3
- package/scripts/copy-static.js +31 -0
- package/src/template/_types_/custom-config.ts +83 -0
- package/src/template/asset/logo.svg +4 -0
- package/src/template/start.ts +3 -3
- package/src/template/tools/handle-tool-call.ts +2 -1
- package/src/tests/mcp/test-http.js +10 -2
- package/src/tests/mcp/test-sse.js +10 -2
- package/src/tests/mcp/test-stdio.js +1 -2
- package/cli-template/run/TEST HTTP.run.xml +0 -5
- package/cli-template/run/TEST search.run.xml +0 -11
- package/cli-template/run/remove-nul.js.run.xml +0 -5
- package/dist/core/auth/jwt-validation.d.ts.map +0 -1
- package/dist/core/auth/jwt-validation.js.map +0 -1
- package/dist/core/auth/token-generator/html.d.ts +0 -9
- package/dist/core/auth/token-generator/html.d.ts.map +0 -1
- package/dist/core/auth/token-generator/html.js +0 -862
- package/dist/core/auth/token-generator/html.js.map +0 -1
- package/dist/core/web/about-page/css.d.ts +0 -2
- package/dist/core/web/about-page/css.d.ts.map +0 -1
- package/dist/core/web/about-page/css.js.map +0 -1
- package/dist/core/web/about-page/render.d.ts +0 -2
- package/dist/core/web/about-page/render.d.ts.map +0 -1
- package/dist/core/web/about-page/render.js +0 -773
- package/dist/core/web/about-page/render.js.map +0 -1
- package/src/template/_examples/multi-auth-examples.ts +0 -541
- /package/cli-template/{run/== START ==.run.xml → r/== START ==.xml} +0 -0
- /package/cli-template/{run/cb.run.xml → r/cb.xml} +0 -0
- /package/cli-template/{run/ci.run.xml → r/ci.xml} +0 -0
- /package/cli-template/{run/lint.run.xml → r/lint.xml} +0 -0
- /package/cli-template/{run/lint_fix.run.xml → r/lint_fix.xml} +0 -0
- /package/cli-template/{run/reinstall.run.xml → r/reinstall.xml} +0 -0
- /package/{cli-template/config → config}/test.yaml +0 -0
- /package/{src/template/asset/favicon.svg → dist/core/web/static/logo.svg} +0 -0
- /package/{cli-template/scripts → scripts}/kill-port.js +0 -0
- /package/{cli-template/scripts → scripts}/npm/patch_node_modules.js +0 -0
- /package/{cli-template/scripts → scripts}/npm/run.js +0 -0
- /package/{cli-template/scripts → scripts}/npm/yarn-ci.ps1 +0 -0
- /package/{cli-template/scripts → scripts}/npm/yarn-ci.sh +0 -0
- /package/{cli-template/scripts → scripts}/npm/yarn-reinstall.ps1 +0 -0
- /package/{cli-template/scripts → scripts}/npm/yarn-reinstall.sh +0 -0
- /package/{cli-template/scripts → scripts}/pre-commit +0 -0
- /package/{cli-template/scripts → scripts}/remove-nul.js +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin panel router - Token Generator & Validator
|
|
3
|
+
* Endpoints for JWT token generation and validation
|
|
4
|
+
*/
|
|
5
|
+
import { Router } from 'express';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { dirname, join } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { appConfig, getProjectData } from '../bootstrap/init-config.js';
|
|
10
|
+
import { checkJwtToken, generateToken } from '../auth/jwt.js';
|
|
11
|
+
import { isNTLMEnabled } from '../auth/token-generator/ntlm/ntlm-domain-config.js';
|
|
12
|
+
import { getSessionStats } from '../auth/token-generator/ntlm/ntlm-session-storage.js';
|
|
13
|
+
import { getLoginPageHTML } from '../auth/token-generator/ntlm/ntlm-templates.js';
|
|
14
|
+
import { createAdminAuthMW } from '../auth/admin-auth.js';
|
|
15
|
+
import { logger as lgr } from '../logger.js';
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = dirname(__filename);
|
|
18
|
+
// Path to static files (relative to compiled JS location in dist/)
|
|
19
|
+
const staticPath = join(__dirname, 'static/token-gen');
|
|
20
|
+
const logger = lgr.getSubLogger({ name: chalk.bgCyan('admin-router') });
|
|
21
|
+
const timeToSeconds = {
|
|
22
|
+
minutes: 60,
|
|
23
|
+
hours: 60 * 60,
|
|
24
|
+
days: 60 * 60 * 24,
|
|
25
|
+
months: 60 * 60 * 24 * 30,
|
|
26
|
+
years: 60 * 60 * 24 * 365,
|
|
27
|
+
};
|
|
28
|
+
const { adminAuth } = appConfig.webServer || {};
|
|
29
|
+
const adminAuthType = adminAuth?.enabled === true ? adminAuth.type : undefined;
|
|
30
|
+
const ntlmEnabled = adminAuthType === 'ntlm' && isNTLMEnabled;
|
|
31
|
+
// Check if auth type requires Bearer token (handled by frontend modal)
|
|
32
|
+
const requiresBearerToken = adminAuthType === 'permanentServerTokens' || adminAuthType === 'jwtToken';
|
|
33
|
+
/**
|
|
34
|
+
* Checks custom authorization for Token Generator access
|
|
35
|
+
* Returns null if authorized, or AuthResult with error if not
|
|
36
|
+
*/
|
|
37
|
+
async function checkTokenGenAuthorization(req) {
|
|
38
|
+
const projectData = getProjectData();
|
|
39
|
+
const handler = projectData?.tokenGenAuthHandler;
|
|
40
|
+
// If no custom handler is configured, allow access
|
|
41
|
+
if (typeof handler !== 'function') {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
// Build input based on auth type
|
|
45
|
+
const input = {
|
|
46
|
+
user: req.ntlm?.username || 'Unknown',
|
|
47
|
+
authType: (adminAuthType || 'permanentServerTokens'),
|
|
48
|
+
};
|
|
49
|
+
// Add domain for NTLM
|
|
50
|
+
if (adminAuthType === 'ntlm' && req.ntlm?.domain) {
|
|
51
|
+
input.domain = req.ntlm.domain;
|
|
52
|
+
}
|
|
53
|
+
// Add payload for JWT
|
|
54
|
+
if (adminAuthType === 'jwtToken') {
|
|
55
|
+
input.payload = req.authPayload;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const result = await handler(input);
|
|
59
|
+
if (!result.success) {
|
|
60
|
+
logger.info(`Token Generator authorization denied for ${input.user}: ${result.error}`);
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
return null; // Authorized
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
logger.error('Token Generator authorization handler error:', error);
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
error: `Authorization check failed: ${error.message}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Creates admin router with all token generation endpoints
|
|
75
|
+
*/
|
|
76
|
+
export function createAdminRouter() {
|
|
77
|
+
const router = Router();
|
|
78
|
+
// ============================
|
|
79
|
+
// PUBLIC ENDPOINTS (no auth required)
|
|
80
|
+
// ============================
|
|
81
|
+
// Public endpoint - auth config (frontend needs this to know if token modal is required)
|
|
82
|
+
router.get('/api/auth-config', (req, res) => {
|
|
83
|
+
res.json({
|
|
84
|
+
success: true,
|
|
85
|
+
authType: adminAuthType || null,
|
|
86
|
+
requiresBearerToken,
|
|
87
|
+
timestamp: new Date().toISOString(),
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
// Main admin page - always serve HTML (auth is handled by frontend for Bearer tokens)
|
|
91
|
+
// For NTLM/Basic - middleware will handle auth before this route
|
|
92
|
+
if (requiresBearerToken) {
|
|
93
|
+
// For Bearer token auth: serve page without auth, frontend will handle token modal
|
|
94
|
+
router.get('/', (req, res) => {
|
|
95
|
+
logger.info('Admin page accessed (Bearer token auth - frontend handles authentication)');
|
|
96
|
+
res.sendFile(join(staticPath, 'index.html'));
|
|
97
|
+
});
|
|
98
|
+
// Logout for Bearer token auth - just return success, frontend clears sessionStorage
|
|
99
|
+
router.get('/logout', (req, res) => {
|
|
100
|
+
res.setHeader('Clear-Site-Data', '"storage"');
|
|
101
|
+
return res.status(200).json({
|
|
102
|
+
success: true,
|
|
103
|
+
message: 'Logged out successfully',
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// ============================
|
|
108
|
+
// PROTECTED ENDPOINTS (auth required)
|
|
109
|
+
// ============================
|
|
110
|
+
// Apply admin authentication middleware to protected routes
|
|
111
|
+
const adminAuthMW = createAdminAuthMW();
|
|
112
|
+
router.use(adminAuthMW);
|
|
113
|
+
// Note: Static files (CSS, JS) are served globally at /static/token-gen/ by server-http.ts
|
|
114
|
+
// Main admin page - for NTLM/Basic auth (middleware already authenticated)
|
|
115
|
+
if (!requiresBearerToken) {
|
|
116
|
+
router.get('/', (req, res) => {
|
|
117
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
118
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
119
|
+
const isAuthenticated = req.ntlm?.isAuthenticated || false;
|
|
120
|
+
logger.info(`Admin page accessed by: ${domain}\\${username} (Authenticated: ${isAuthenticated})`);
|
|
121
|
+
res.sendFile(join(staticPath, 'index.html'));
|
|
122
|
+
});
|
|
123
|
+
// Logout for NTLM auth
|
|
124
|
+
router.get('/logout', (req, res) => {
|
|
125
|
+
logger.info(`Logout requested by: ${req.ntlm?.domain || 'Unknown'}\\${req.ntlm?.username || 'Unknown'}`);
|
|
126
|
+
if (adminAuthType === 'ntlm') {
|
|
127
|
+
res.setHeader('WWW-Authenticate', 'NTLM');
|
|
128
|
+
res.setHeader('Clear-Site-Data', '"cookies", "storage"');
|
|
129
|
+
return res.status(401).send('Authentication required - please login again');
|
|
130
|
+
}
|
|
131
|
+
// For basic auth
|
|
132
|
+
res.setHeader('Clear-Site-Data', '"cookies", "storage"');
|
|
133
|
+
return res.status(401).json({
|
|
134
|
+
success: true,
|
|
135
|
+
message: 'Logged out successfully',
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
// Login page (for NTLM)
|
|
140
|
+
router.get('/login', (req, res) => {
|
|
141
|
+
res.send(getLoginPageHTML(req.ntlm?.username || ''));
|
|
142
|
+
});
|
|
143
|
+
// Debug endpoint for session stats (development only)
|
|
144
|
+
router.get('/debug/sessions', (req, res) => {
|
|
145
|
+
if (process.env.NODE_ENV === 'production') {
|
|
146
|
+
return res.status(404).json({ error: 'Not available in production' });
|
|
147
|
+
}
|
|
148
|
+
const stats = getSessionStats();
|
|
149
|
+
return res.json({
|
|
150
|
+
message: 'Admin Panel Session Statistics',
|
|
151
|
+
timestamp: new Date().toISOString(),
|
|
152
|
+
...stats,
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
// API: Generate token
|
|
156
|
+
router.post('/api/generate-token', async (req, res) => {
|
|
157
|
+
try {
|
|
158
|
+
// Check custom authorization
|
|
159
|
+
const authError = await checkTokenGenAuthorization(req);
|
|
160
|
+
if (authError) {
|
|
161
|
+
return res.status(403).json({
|
|
162
|
+
success: false,
|
|
163
|
+
error: authError.error || 'Authorization denied',
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
167
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
168
|
+
const authenticatedUser = `${domain}\\${username}`;
|
|
169
|
+
const { user, timeValue, timeUnit, payload } = req.body;
|
|
170
|
+
if (!user || !timeValue || !timeUnit) {
|
|
171
|
+
logger.info(`Token generation failed (missing parameters) by: ${authenticatedUser}`);
|
|
172
|
+
return res.json({
|
|
173
|
+
success: false,
|
|
174
|
+
error: 'Need to fill in the user and token lifetime',
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
const multiplier = timeToSeconds[timeUnit];
|
|
178
|
+
if (!multiplier) {
|
|
179
|
+
logger.info(`Token generation failed (invalid time unit) by: ${authenticatedUser}`);
|
|
180
|
+
return res.json({
|
|
181
|
+
success: false,
|
|
182
|
+
error: 'Invalid Time Unit',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
const liveTimeSec = timeValue * multiplier;
|
|
186
|
+
const token = generateToken(user, liveTimeSec, payload || {});
|
|
187
|
+
logger.info(`Generated token for user: ${user}, duration: ${timeValue} ${timeUnit}, requested by: ${authenticatedUser}`);
|
|
188
|
+
return res.json({
|
|
189
|
+
success: true,
|
|
190
|
+
token: token,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
195
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
196
|
+
logger.error(`Error generating token for ${domain}\\${username}:`, error);
|
|
197
|
+
return res.json({
|
|
198
|
+
success: false,
|
|
199
|
+
error: error.message,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
// API: Validate token
|
|
204
|
+
router.post('/api/validate-token', (req, res) => {
|
|
205
|
+
try {
|
|
206
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
207
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
208
|
+
const authenticatedUser = `${domain}\\${username}`;
|
|
209
|
+
const { token } = req.body;
|
|
210
|
+
if (!token) {
|
|
211
|
+
logger.info(`Token validation failed (no token provided) by: ${authenticatedUser}`);
|
|
212
|
+
return res.json({
|
|
213
|
+
success: false,
|
|
214
|
+
error: 'Token Not Transferred',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
const result = checkJwtToken({ token });
|
|
218
|
+
if (result.errorReason) {
|
|
219
|
+
logger.info(`Token validation failed (${result.errorReason}) by: ${authenticatedUser}`);
|
|
220
|
+
return res.json({
|
|
221
|
+
success: false,
|
|
222
|
+
error: result.errorReason,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
logger.info(`Token validated successfully for user: ${result.payload?.user}, requested by: ${authenticatedUser}`);
|
|
226
|
+
return res.json({
|
|
227
|
+
success: true,
|
|
228
|
+
payload: result.payload,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
233
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
234
|
+
logger.error(`Error validating token for ${domain}\\${username}:`, error);
|
|
235
|
+
return res.json({
|
|
236
|
+
success: false,
|
|
237
|
+
error: error.message,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
// API: Service info
|
|
242
|
+
router.get('/api/service-info', (req, res) => {
|
|
243
|
+
try {
|
|
244
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
245
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
246
|
+
const isAuthenticated = req.ntlm?.isAuthenticated || false;
|
|
247
|
+
logger.info(`Service info requested by: ${domain}\\${username}`);
|
|
248
|
+
res.json({
|
|
249
|
+
success: true,
|
|
250
|
+
serviceName: appConfig.name,
|
|
251
|
+
primaryColor: appConfig.uiColor.primary,
|
|
252
|
+
authenticatedUser: `${domain}\\${username}`,
|
|
253
|
+
isAuthenticated,
|
|
254
|
+
authType: adminAuthType,
|
|
255
|
+
ntlmEnabled,
|
|
256
|
+
timestamp: new Date().toISOString(),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
261
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
262
|
+
logger.error(`Error getting service info for ${domain}\\${username}:`, error);
|
|
263
|
+
res.json({
|
|
264
|
+
success: false,
|
|
265
|
+
error: error.message,
|
|
266
|
+
serviceName: appConfig.name,
|
|
267
|
+
authType: adminAuthType,
|
|
268
|
+
ntlmEnabled,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
// API: Auth status
|
|
273
|
+
router.get('/api/auth-status', (req, res) => {
|
|
274
|
+
try {
|
|
275
|
+
const username = req.ntlm?.username || 'Unknown';
|
|
276
|
+
const domain = req.ntlm?.domain || 'Unknown';
|
|
277
|
+
const isAuthenticated = req.ntlm?.isAuthenticated || false;
|
|
278
|
+
// Determine if logout is available (for all auth types except disabled)
|
|
279
|
+
const canLogout = isAuthenticated && !!adminAuthType;
|
|
280
|
+
// Format user display based on auth type
|
|
281
|
+
let userDisplay = null;
|
|
282
|
+
if (isAuthenticated) {
|
|
283
|
+
if (adminAuthType === 'ntlm') {
|
|
284
|
+
userDisplay = `${domain}\\${username}`;
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
userDisplay = username;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
res.json({
|
|
291
|
+
success: true,
|
|
292
|
+
authType: adminAuthType || null,
|
|
293
|
+
isAuthenticated,
|
|
294
|
+
user: userDisplay,
|
|
295
|
+
canLogout,
|
|
296
|
+
timestamp: new Date().toISOString(),
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
res.json({
|
|
301
|
+
success: false,
|
|
302
|
+
error: error.message,
|
|
303
|
+
authType: adminAuthType || null,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
return router;
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=admin-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-router.js","sourceRoot":"","sources":["../../../src/core/web/admin-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favicon-svg.d.ts","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"favicon-svg.d.ts","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAoC1E,eAAO,MAAM,UAAU,QAAO,MAI7B,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,cAyB7B,CAAC"}
|
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
import crypto from 'crypto';
|
|
2
|
+
import { readFileSync } from 'fs';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
2
5
|
import { config, getProjectData } from '../bootstrap/init-config.js';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
3
8
|
const ONE_YEAR_MS = 60 * 60 * 24 * 365 * 1000; // 1 year
|
|
9
|
+
// Default logo SVG (loaded from static/logo.svg)
|
|
10
|
+
let defaultLogoSvg = null;
|
|
11
|
+
const loadDefaultLogo = () => {
|
|
12
|
+
if (defaultLogoSvg === null) {
|
|
13
|
+
try {
|
|
14
|
+
defaultLogoSvg = readFileSync(join(__dirname, 'static/logo.svg'), 'utf-8');
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
defaultLogoSvg = '<svg><!-- No logo provided --></svg>';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return defaultLogoSvg;
|
|
21
|
+
};
|
|
4
22
|
const etagS = (entity) => {
|
|
5
23
|
// compute hash of entity
|
|
6
24
|
const hash = crypto
|
|
@@ -10,9 +28,9 @@ const etagS = (entity) => {
|
|
|
10
28
|
.substring(0, 27);
|
|
11
29
|
return `"${Buffer.byteLength(entity, 'utf8').toString(16)}-${hash}"`;
|
|
12
30
|
};
|
|
13
|
-
export const
|
|
31
|
+
export const getLogoSvg = () => {
|
|
14
32
|
const { assets } = getProjectData();
|
|
15
|
-
let svg = assets?.
|
|
33
|
+
let svg = assets?.logoSvg || loadDefaultLogo();
|
|
16
34
|
return svg.replace('fill="currentColor"', `fill="${config.uiColor.primary}"`);
|
|
17
35
|
};
|
|
18
36
|
/**
|
|
@@ -32,7 +50,7 @@ export const faviconSvg = () => {
|
|
|
32
50
|
return;
|
|
33
51
|
}
|
|
34
52
|
// Lazy load SVG when needed
|
|
35
|
-
const svg =
|
|
53
|
+
const svg = getLogoSvg();
|
|
36
54
|
res.setHeader('Cache-Control', `public, max-age=${Math.floor(ONE_YEAR_MS / 1000)}`);
|
|
37
55
|
res.setHeader('ETag', etagS(svg));
|
|
38
56
|
res.setHeader('Content-Length', svg.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favicon-svg.js","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,SAAS;AAExD,MAAM,KAAK,GAAG,CAAC,MAAc,EAAU,EAAE;IACvC,yBAAyB;IACzB,MAAM,IAAI,GAAG,MAAM;SAChB,UAAU,CAAC,MAAM,CAAC;SAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;SACtB,MAAM,CAAC,QAAQ,CAAC;SAChB,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"favicon-svg.js","sourceRoot":"","sources":["../../../src/core/web/favicon-svg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home-api.d.ts","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA0B5C,wBAAsB,cAAc,CAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFjF"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Home page API endpoint
|
|
3
|
+
* Returns all dynamic data needed for the home page
|
|
4
|
+
*/
|
|
5
|
+
import { getResourcesList } from '../mcp/resources.js';
|
|
6
|
+
import { getPromptsList } from '../mcp/prompts.js';
|
|
7
|
+
import { getMainDBConnectionStatus } from '../db/pg-db.js';
|
|
8
|
+
import { getLogoSvg } from './favicon-svg.js';
|
|
9
|
+
import { appConfig, getProjectData } from '../bootstrap/init-config.js';
|
|
10
|
+
import { detectAuthConfiguration } from '../auth/multi-auth.js';
|
|
11
|
+
const startTime = new Date();
|
|
12
|
+
const getUptime = () => {
|
|
13
|
+
const uptimeMs = Date.now() - startTime.getTime();
|
|
14
|
+
const uptimeSeconds = Math.floor(uptimeMs / 1000);
|
|
15
|
+
const hours = Math.floor(uptimeSeconds / 3600);
|
|
16
|
+
const minutes = Math.floor((uptimeSeconds % 3600) / 60);
|
|
17
|
+
const seconds = uptimeSeconds % 60;
|
|
18
|
+
if (hours > 0) {
|
|
19
|
+
return `${hours}h ${minutes}m ${seconds}s`;
|
|
20
|
+
}
|
|
21
|
+
else if (minutes > 0) {
|
|
22
|
+
return `${minutes}m ${seconds}s`;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return `${seconds}s`;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export async function handleHomeInfo(_req, res) {
|
|
29
|
+
try {
|
|
30
|
+
const { version, repo } = appConfig;
|
|
31
|
+
const serviceTitle = appConfig.productName.replace(/MCP/i, '').replace(/\s{2,}/g, ' ').trim();
|
|
32
|
+
const logoSvg = getLogoSvg();
|
|
33
|
+
const { resources } = getResourcesList();
|
|
34
|
+
const { prompts } = getPromptsList();
|
|
35
|
+
const { tools, httpComponents } = global.__MCP_PROJECT_DATA__;
|
|
36
|
+
const { getConsulUIAddress = (_s) => '', assets } = getProjectData();
|
|
37
|
+
// Build footer HTML
|
|
38
|
+
const footerParts = [];
|
|
39
|
+
if (repo) {
|
|
40
|
+
footerParts.push(`<a href="${repo}" target="_blank" rel="noopener">GitHub Repository</a>`);
|
|
41
|
+
}
|
|
42
|
+
if (assets?.maintainerHtml) {
|
|
43
|
+
footerParts.push(assets.maintainerHtml);
|
|
44
|
+
}
|
|
45
|
+
// Database info
|
|
46
|
+
let db = null;
|
|
47
|
+
if (appConfig.isMainDBUsed) {
|
|
48
|
+
const dbStatus = await getMainDBConnectionStatus();
|
|
49
|
+
const { host, port, database } = appConfig.db.postgres.dbs.main;
|
|
50
|
+
db = {
|
|
51
|
+
connection: `${host}:${port}/${database}`,
|
|
52
|
+
status: dbStatus,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Consul info
|
|
56
|
+
let consul = null;
|
|
57
|
+
if (appConfig.consul.service.enable) {
|
|
58
|
+
const { id } = appConfig.consul.service;
|
|
59
|
+
if (id) {
|
|
60
|
+
consul = {
|
|
61
|
+
id,
|
|
62
|
+
url: getConsulUIAddress(id),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Authentication info (same logic as startup-info.ts)
|
|
67
|
+
const authConfig = appConfig.webServer?.auth;
|
|
68
|
+
const adminAuthConfig = appConfig.webServer?.adminAuth;
|
|
69
|
+
const { configured: mcpAuthTypes } = detectAuthConfiguration();
|
|
70
|
+
const mcpAuth = authConfig?.enabled
|
|
71
|
+
? (mcpAuthTypes.length ? mcpAuthTypes.join(', ') : 'enabled but not configured')
|
|
72
|
+
: 'disabled';
|
|
73
|
+
const adminAuth = adminAuthConfig?.enabled
|
|
74
|
+
? adminAuthConfig.type
|
|
75
|
+
: 'disabled';
|
|
76
|
+
const response = {
|
|
77
|
+
serviceTitle,
|
|
78
|
+
description: appConfig.description,
|
|
79
|
+
version,
|
|
80
|
+
uptime: getUptime(),
|
|
81
|
+
primaryColor: appConfig.uiColor.primary,
|
|
82
|
+
logoSvg,
|
|
83
|
+
toolsCount: tools.length,
|
|
84
|
+
resourcesCount: resources.length,
|
|
85
|
+
promptsCount: prompts.length,
|
|
86
|
+
tools,
|
|
87
|
+
resources,
|
|
88
|
+
prompts,
|
|
89
|
+
db,
|
|
90
|
+
swagger: !!httpComponents?.swagger,
|
|
91
|
+
consul,
|
|
92
|
+
mcpAuth,
|
|
93
|
+
adminAuth,
|
|
94
|
+
repo,
|
|
95
|
+
footer: footerParts.join(' • '),
|
|
96
|
+
};
|
|
97
|
+
res.json(response);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
res.status(500).json({
|
|
101
|
+
error: 'Failed to get home info',
|
|
102
|
+
message: error.message,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=home-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"home-api.js","sourceRoot":"","sources":["../../../src/core/web/home-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;AAE7B,MAAM,SAAS,GAAG,GAAW,EAAE;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,aAAa,GAAG,EAAE,CAAC;IAEnC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,GAAG,KAAK,KAAK,OAAO,KAAK,OAAO,GAAG,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,GAAG,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAE,IAAa,EAAE,GAAa;IAChE,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QACpC,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9F,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QACrC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAI,MAAc,CAAC,oBAAoB,CAAC;QACvE,MAAM,EAAE,kBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;QAE7E,oBAAoB;QACpB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,CAAC,IAAI,CAAC,YAAY,IAAI,wDAAwD,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,MAAM,EAAE,cAAc,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC;QAED,gBAAgB;QAChB,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,yBAAyB,EAAE,CAAC;YACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,QAAS,CAAC,GAAG,CAAC,IAAK,CAAC;YAClE,EAAE,GAAG;gBACH,UAAU,EAAE,GAAG,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE;gBACzC,MAAM,EAAE,QAAQ;aACjB,CAAC;QACJ,CAAC;QAED,cAAc;QACd,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YACxC,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,GAAG;oBACP,EAAE;oBACF,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC;QAC7C,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;QACvD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,uBAAuB,EAAE,CAAC;QAE/D,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO;YACjC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC;YAChF,CAAC,CAAC,UAAU,CAAC;QAEf,MAAM,SAAS,GAAG,eAAe,EAAE,OAAO;YACxC,CAAC,CAAC,eAAe,CAAC,IAAI;YACtB,CAAC,CAAC,UAAU,CAAC;QAEf,MAAM,QAAQ,GAAG;YACf,YAAY;YACZ,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,OAAO;YACP,MAAM,EAAE,SAAS,EAAE;YACnB,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;YACvC,OAAO;YACP,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,cAAc,EAAE,SAAS,CAAC,MAAM;YAChC,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,KAAK;YACL,SAAS;YACT,OAAO;YACP,EAAE;YACF,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO;YAClC,MAAM;YACN,OAAO;YACP,SAAS;YACT,IAAI;YACJ,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;SAChC,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,yBAAyB;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-http.d.ts","sourceRoot":"","sources":["../../../src/core/web/server-http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-http.d.ts","sourceRoot":"","sources":["../../../src/core/web/server-http.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,cAAc,SAA8B,CAAC;AAyC1D;;GAEG;AACH,wBAAsB,eAAe,IAAK,OAAO,CAAC,IAAI,CAAC,CA+ZtD"}
|