41 lines
1.3 KiB
JavaScript
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}`);
|
|
}
|
|
});
|
|
};
|