mirror of
https://github.com/swissmakers/fail2ban-ui.git
synced 2026-04-11 13:47:05 +02:00
44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
// API helper functions for Fail2ban UI
|
|
|
|
// Add server parameter to URL
|
|
function withServerParam(url) {
|
|
if (!currentServerId) {
|
|
return url;
|
|
}
|
|
return url + (url.indexOf('?') === -1 ? '?' : '&') + 'serverId=' + encodeURIComponent(currentServerId);
|
|
}
|
|
|
|
// Get server headers for API requests
|
|
function serverHeaders(headers) {
|
|
headers = headers || {};
|
|
if (currentServerId) {
|
|
headers['X-F2B-Server'] = currentServerId;
|
|
}
|
|
return headers;
|
|
}
|
|
|
|
// Auth-aware fetch wrapper that handles 401/403 responses
|
|
function authFetch(url, options) {
|
|
options = options || {};
|
|
// Ensure Accept header for API requests
|
|
if (!options.headers) {
|
|
options.headers = {};
|
|
}
|
|
if (!options.headers['Accept']) {
|
|
options.headers['Accept'] = 'application/json';
|
|
}
|
|
|
|
return fetch(url, options).then(function(response) {
|
|
// Handle authentication errors
|
|
if (response.status === 401 || response.status === 403) {
|
|
if (typeof handleAuthError === 'function') {
|
|
handleAuthError(response);
|
|
}
|
|
// Return a rejected promise to stop the chain
|
|
return Promise.reject(new Error('Authentication required'));
|
|
}
|
|
return response;
|
|
});
|
|
}
|
|
|