mirror of
https://github.com/AsgardEternal/SquadJS.git
synced 2024-09-28 19:54:25 -05:00
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
|
import axios from 'axios';
|
||
|
import Logger from 'core/logger';
|
||
|
|
||
|
export async function fetchAdminLists(adminLists){
|
||
|
|
||
|
let groups = {};
|
||
|
let admins = {};
|
||
|
|
||
|
for (let idx = 0; idx < adminLists.length; idx++) {
|
||
|
const list = adminLists[idx];
|
||
|
|
||
|
let data = "";
|
||
|
|
||
|
if(list.type === "remote"){
|
||
|
|
||
|
try {
|
||
|
const resp = await axios({
|
||
|
method: 'GET',
|
||
|
url: `${list.loc}`
|
||
|
});
|
||
|
data = resp.data;
|
||
|
} catch (error) {
|
||
|
Logger.verbose('SquadServer', 1 , `Error fetching remote admin list ${list.loc}`, error);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
const groupRgx = /(?<=Group=)(.*?):(.*)(?=\n)/g;
|
||
|
const adminRgx = /(?<=Admin=)(\d+):(\S+)(?=\s)/g;
|
||
|
|
||
|
/* eslint-disable no-unused-vars */
|
||
|
for (const [match, groupID, groupPerms] of data.matchAll(groupRgx)) {
|
||
|
groups[`${idx}-${groupID}`] = groupPerms.split(',');
|
||
|
}
|
||
|
for (const [match, steamID, groupID] of data.matchAll(adminRgx)) {
|
||
|
let perms = {};
|
||
|
for(const perm of groups[`${idx}-${groupID}`])
|
||
|
perms[perm] = true;
|
||
|
|
||
|
if(steamID in admins)
|
||
|
admins[steamID] = Object.assign(admins[steamID], perms);
|
||
|
else
|
||
|
admins[steamID] = Object.assign(perms);
|
||
|
|
||
|
Logger.verbose('SquadServer', 3, `Added Admin ${steamID} with ${Object.keys(admins[steamID])}`);
|
||
|
}
|
||
|
/* eslint-enable no-unused-vars */
|
||
|
}
|
||
|
Logger.verbose('SquadServer', 2, `${Object.keys(admins).length} admins loaded`);
|
||
|
return admins;
|
||
|
}
|
||
|
|