feat(recordings): enhance recording management with improved error handling, finalize recording logic, and add motion notification support

This commit is contained in:
2026-02-03 17:45:00 +00:00
parent ef74b5ca19
commit 23db01dfc8
4 changed files with 442 additions and 39 deletions

View File

@@ -31,6 +31,32 @@ const trustedOrigins = process.env.BETTER_AUTH_TRUSTED_ORIGINS
? process.env.BETTER_AUTH_TRUSTED_ORIGINS.split(',').map((origin) => origin.trim()).filter(Boolean)
: [];
const buildMinioConnectOrigin = (): string | null => {
const endpoint = process.env.MINIO_ENDPOINT?.trim();
if (!endpoint) {
return null;
}
if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {
try {
return new URL(endpoint).origin;
} catch {
return null;
}
}
const useSSL = (process.env.MINIO_USE_SSL ?? 'false').toLowerCase() === 'true';
const port = Number(process.env.MINIO_PORT ?? (useSSL ? 443 : 80));
const scheme = useSSL ? 'https' : 'http';
const includePort = !(useSSL && port === 443) && !(!useSSL && port === 80);
return `${scheme}://${endpoint}${includePort ? `:${port}` : ''}`;
};
const minioConnectOrigin = buildMinioConnectOrigin();
const connectSrcDirectives = ["'self'", 'cdn.jsdelivr.net', ...(minioConnectOrigin ? [minioConnectOrigin] : [])];
const mediaSrcDirectives = ["'self'", 'blob:', 'data:', ...(minioConnectOrigin ? [minioConnectOrigin] : [])];
app.get('/', (_req, res) => {
res.send('API is running');
});
@@ -55,7 +81,8 @@ app.use(
"script-src": ["'self'", "'unsafe-inline'", "cdn.jsdelivr.net", "cdn.tailwindcss.com"],
"style-src": ["'self'", "'unsafe-inline'", "cdn.jsdelivr.net", "fonts.googleapis.com"],
"font-src": ["'self'", "fonts.gstatic.com"],
"connect-src": ["'self'", "cdn.jsdelivr.net"],
"connect-src": connectSrcDirectives,
"media-src": mediaSrcDirectives,
"img-src": ["'self'", "data:", "blob:"],
},
},