custom/cve5/asfpreload.js (161 lines of code) (raw):
function getProductListNoVendor(cve) {
var lines = [];
for (var affected of cve.containers.cna.affected) {
lines.push(affected.product);
}
return lines.join(", ");
}
async function loadProductNames() {
var projects = []
var pmcs = userPMCS.split(',');
var res;
const abortController = new AbortController()
setTimeout(() => abortController.abort(), 5000)
try {
var response = await fetch('https://whimsy.apache.org/public/committee-info.json', {
method: 'GET',
credentials: 'omit',
headers: {
'Accept': 'application/json, text/plain, */*'
},
redirect: 'error',
signal: abortController.signal
});
if (!response.ok) {
errMsg.textContent = "Failed Apache project list";
infoMsg.textContent = "";
throw Error(id + ' ' + response.statusText);
} else {
res = await response.json();
if (res.committees) {
for (var committee in res.committees)
if (pmcs.includes(committee) || pmcs.includes('security')) {
res.committees[committee].display_name &&
projects.push('Apache ' + res.committees[committee].display_name);
}
}
}
} catch (error) {
errMsg.textContent = error;
}
try {
const abortController = new AbortController()
setTimeout(() => abortController.abort(), 5000)
var response = await fetch('https://whimsy.apache.org/public/public_podlings.json', {
method: 'GET',
credentials: 'omit',
headers: {
'Accept': 'application/json, text/plain, */*'
},
redirect: 'error',
signal: abortController.signal
});
if (!response.ok) {
errMsg.textContent = "Failed Apache podling list";
infoMsg.textContent = "";
throw Error(id + ' ' + response.statusText);
} else {
var resp = await response.json();
if (resp.podling) {
for (var committee in resp.podling) {
if (pmcs.includes(committee) || pmcs.includes('security')) {
if (resp.podling[committee].status && resp.podling[committee].status == "current") {
if (resp.podling[committee].name && !res.committees[committee])
projects.push('Apache ' + resp.podling[committee].name + " (incubating)");
}
}
}
}
}
} catch (error) {
errMsg.textContent = error;
}
return (projects);
}
async function loadProjectUrl(pmc) {
var url = ""
try {
const abortController = new AbortController()
setTimeout(() => abortController.abort(), 5000)
var response = await fetch('https://whimsy.apache.org/public/committee-info.json', {
method: 'GET',
credentials: 'omit',
headers: {
'Accept': 'application/json, text/plain, */*'
},
redirect: 'error',
signal: abortController.signal
});
if (!response.ok) {
return url
} else {
var res = await response.json();
if (res.committees && res.committees[pmc]) {
url = res.committees[pmc].site
return url.replace('http:','https:')
}
}
} catch (error) {
return url
}
/* If that failed, see if it retired */
try {
const abortController = new AbortController()
setTimeout(() => abortController.abort(), 5000)
var response = await fetch('https://whimsy.apache.org/public/committee-retired.json', {
method: 'GET',
credentials: 'omit',
headers: {
'Accept': 'application/json, text/plain, */*'
},
redirect: 'error',
signal: abortController.signal
});
if (!response.ok) {
return url
} else {
var res = await response.json();
if (res.retired && res.retired[pmc]) {
url = 'https://attic.apache.org/projects/' + pmc + '.html'
return url
}
}
} catch (error) {
return url
}
/* If that failed, try the podlings */
try {
const abortController = new AbortController()
setTimeout(() => abortController.abort(), 5000)
var response = await fetch('https://whimsy.apache.org/public/public_podlings.json', {
method: 'GET',
credentials: 'omit',
headers: {
'Accept': 'application/json, text/plain, */*'
},
redirect: 'error',
signal: abortController.signal
});
if (!response.ok) {
return url
} else {
var res = await response.json();
if (res.podling && res.podling[pmc] && res.podling[pmc].podlingStatus && res.podling[pmc].podlingStatus.website) {
url = res.podling[pmc].podlingStatus.website
return url.replace('http:','https:')
}
}
} catch (error) {
return url
}
}
async function loadEmailLists(pmc) {
try {
var response = await fetch('/asfemaillists?pmc='+pmc, { method: 'GET' });
if (response.ok) {
return await response.text();
} else {
return "";
}
} catch (error) {
return "";
}
}