52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
import { analyzeInstaller, listInstallerTechnologies } from '../services/installerIntelService.js';
|
|
import { buildDetectionRule } from '../services/detectionRuleService.js';
|
|
import { buildRecipeArtifacts, getRecipe, searchRecipes } from '../services/recipeService.js';
|
|
import { createPsadtProfile, createIntuneDeployment } from '../models/psadtModel.js';
|
|
import { createApplication } from '../models/applicationModel.js';
|
|
|
|
export function installerTypes(req, res) {
|
|
res.json(listInstallerTechnologies());
|
|
}
|
|
|
|
export function analyze(req, res) {
|
|
const fileName = String(req.body?.fileName || '').trim();
|
|
if (!fileName) return res.status(400).json({ error: 'fileName is required' });
|
|
res.json(analyzeInstaller({ fileName, productCode: req.body?.productCode || '' }));
|
|
}
|
|
|
|
export function detection(req, res) {
|
|
try {
|
|
res.json(buildDetectionRule(req.body || {}));
|
|
} catch (error) {
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
}
|
|
|
|
export function recipes(req, res) {
|
|
res.json(searchRecipes(req.query?.q || ''));
|
|
}
|
|
|
|
export function applyRecipe(req, res) {
|
|
const recipe = getRecipe(req.params.id);
|
|
if (!recipe) return res.status(404).json({ error: 'Recipe not found' });
|
|
try {
|
|
const artifacts = buildRecipeArtifacts(recipe, {
|
|
visibility: req.body?.visibility || 'personal',
|
|
groupId: req.body?.groupId || null
|
|
});
|
|
const userId = req.user.id;
|
|
|
|
const profile = createPsadtProfile(artifacts.profile, userId);
|
|
const application = artifacts.application ? createApplication(artifacts.application, userId) : null;
|
|
const deployment = createIntuneDeployment({
|
|
...artifacts.deployment,
|
|
profileId: profile.id,
|
|
applicationId: application?.id || null
|
|
}, userId);
|
|
|
|
res.status(201).json({ recipeId: recipe.id, profile, deployment, application });
|
|
} catch (error) {
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
}
|