48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
const fs = require('fs');
|
|
|
|
module.exports = function (app, checkApiKey) {
|
|
app.get('/action/getgroups', checkApiKey, (req, res) => {
|
|
const authzFilePath = '/etc/apache2/dav_svn.authz';
|
|
|
|
try {
|
|
const fileContent = fs.readFileSync(authzFilePath, 'utf8');
|
|
const lines = fileContent.split('\n');
|
|
|
|
let groups = [];
|
|
let inGroupsSection = false;
|
|
|
|
for (const line of lines) {
|
|
const trimmed = line.trim();
|
|
|
|
// Début de la section [groups]
|
|
if (trimmed === '[groups]') {
|
|
inGroupsSection = true;
|
|
continue;
|
|
}
|
|
|
|
// Fin de la section [groups]
|
|
if (inGroupsSection && trimmed.startsWith('[')) {
|
|
break;
|
|
}
|
|
|
|
// Lire les groupes
|
|
if (inGroupsSection && trimmed.includes('=')) {
|
|
const groupName = trimmed.split('=')[0].trim();
|
|
groups.push(groupName);
|
|
}
|
|
}
|
|
|
|
res.json({
|
|
groups: groups,
|
|
count: groups.length
|
|
});
|
|
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
error: "Error reading groups file",
|
|
details: error.message
|
|
});
|
|
}
|
|
});
|
|
};
|