Files
QAPI/nodejs/commande/deleteRepo.js
2026-05-16 23:42:06 +02:00

41 lines
1.3 KiB
JavaScript

const fs = require('fs');
const { execSync } = require('child_process');
module.exports = function(app, checkApiKey) {
app.post('/action/deleterepo', checkApiKey, (req, res) => {
const { repoName } = req.body;
if (!repoName) {
return res.status(400).send('Repository name is required');
}
const repoPath = `/var/svn/${repoName}`;
const authzFilePath = '/etc/apache2/dav_svn.authz';
try {
// Check if repo exists
if (!fs.existsSync(repoPath)) {
return res.status(404).send(`Repository ${repoName} not found`);
}
// Delete repository directory
execSync(`rm -rf ${repoPath}`);
// Update authz file
let authzContent = fs.readFileSync(authzFilePath, 'utf8');
const repoSection = new RegExp(`\\[/${repoName}\\][^\\[]*`, 'g');
authzContent = authzContent.replace(repoSection, '');
// Clean up empty lines
authzContent = authzContent.replace(/\n\s*\n/g, '\n');
fs.writeFileSync(authzFilePath, authzContent);
res.send(`Repository ${repoName} and its permissions deleted successfully`);
} catch (error) {
res.status(500).send(`Error deleting repository: ${error.message}`);
}
});
};