AmazonS3
tcp/443
CloudFront
tcp/80
Open service 65.8.131.98:80 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 00:00:16 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://qa.defect-tracker.web.ata.dev/ X-Cache: Redirect from cloudfront Via: 1.1 e82859bd3e5e584a3698e67f22415dae.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P13 X-Amz-Cf-Id: S3dF1VGJUB7A2nTwRXMWNv_lY4JCO8bsIdHffiuHzIgWLM19hKHP-w== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 65.8.131.78:443 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 14519
Connection: close
Last-Modified: Mon, 15 Dec 2025 12:55:24 GMT
x-amz-server-side-encryption: AES256
Accept-Ranges: bytes
Server: AmazonS3
Date: Sun, 21 Dec 2025 20:37:25 GMT
ETag: "591b9f0d4e250b972931a8f90b662c5a"
X-Cache: Error from cloudfront
Via: 1.1 c8441ee313b5204aa32e9bf5a370d536.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: RxxNn2pod0TCb5cN8rB2GP8ZFp_ieV4xzQ3SOlODZajAXWGwcPfShg==
Age: 12172
Page title: All Things API
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/Group.png" />
<meta name="viewport" content="width=device-width, initial-scale=0.1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="/Group.png" />
<link rel="manifest" href="/manifest.json" />
<title>All Things API</title>
<link
rel="stylesheet"
href="src/bug-tracker/build-bug-tracker/ata-bug-tracker.css"
/>
<!-- <script>
// Token refresh interceptor
(function() {
const TOKEN_KEYS = {
ACCESS: "accessToken",
REFRESH: "refreshToken",
ROLE: "userRoleCode"
};
// Mutex implementation to prevent multiple refresh calls
const mutex = {
locked: false,
queue: [],
lock() {
this.locked = true;
},
unlock() {
this.locked = false;
this.queue.forEach(resolve => resolve());
this.queue = [];
},
waitForUnlock() {
if (!this.locked) return Promise.resolve();
return new Promise(resolve => this.queue.push(resolve));
}
};
// Check if token is expired
function isTokenExpired(token) {
try {
const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
const decoded = JSON.parse(jsonPayload);
return decoded.exp * 1000 < Date.now();
} catch (e) {
return true;
}
}
// Get token from storage
function getToken(key) {
return localStorage.getItem(key) || sessionStorage.getItem(key);
}
// Set token in storage
function setToken(key, value) {
if (localStorage.getItem(key) !== null) {
localStorage.setItem(key, value);
} else if (sessionStorage.getItem(key) !== null) {
sessionStorage.setItem(key, value);
} else {
localStorage.setItem(key, value);
}
}
// Refresh token function
async function refreshToken() {
if (mutex.locked) {
await mutex.waitForUnlock();
return getToken(TOKEN_KEYS.ACCESS);
}
mutex.lock();
try {
const refreshToken = getToken(TOKEN_KEYS.REFRESH);
if (!refreshToken) {
window.location.href = '/login';
return null;
}
// Check if refresh token is expired
if (isTokenExpired(refreshToken)) {
window.location.href = '/login';
return null;
}
const apiBaseUrl = window.VITE_API_BASE_URL || process.env?.VITE_API_BASE_URL;
const response = await fetch(`${apiBaseUrl}/company-mgmt/user/refresh-token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': window.VITE_COMPANY_API_KEY || process.env?.VITE_COMPANY_API_KEY
},
body: JSON.stringify({ refreshtoken: refreshToken })
});
if (!response.ok) {
throw new Error('Failed to refresh token');
}
const data = await response.json();
if (data?.data?.decryptedData) {
const { accessToken, refreshToken: newRefreshToken } = data.data.decryptedData;
setToken(TOKEN_KEYS.ACCESS, accessToken);
setToken(TOKEN_KEYS.REFRESH, newRefreshToken);
return accessToken;
} else {
throw new Error('Invalid token response');
}
} catch (erro
Open service 65.8.131.129:443 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 14519
Connection: close
Last-Modified: Mon, 15 Dec 2025 12:55:24 GMT
x-amz-server-side-encryption: AES256
Accept-Ranges: bytes
Server: AmazonS3
Date: Sun, 21 Dec 2025 20:37:25 GMT
ETag: "591b9f0d4e250b972931a8f90b662c5a"
X-Cache: Error from cloudfront
Via: 1.1 f126ea1ed848e1f1d4c478d1f814e2c2.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: 4G5zJZtB3q8FJ2Y4lcELVSHM64iKBGcYUkbBCqD0GWFMcwUoS4x6SQ==
Age: 12172
Page title: All Things API
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/Group.png" />
<meta name="viewport" content="width=device-width, initial-scale=0.1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="/Group.png" />
<link rel="manifest" href="/manifest.json" />
<title>All Things API</title>
<link
rel="stylesheet"
href="src/bug-tracker/build-bug-tracker/ata-bug-tracker.css"
/>
<!-- <script>
// Token refresh interceptor
(function() {
const TOKEN_KEYS = {
ACCESS: "accessToken",
REFRESH: "refreshToken",
ROLE: "userRoleCode"
};
// Mutex implementation to prevent multiple refresh calls
const mutex = {
locked: false,
queue: [],
lock() {
this.locked = true;
},
unlock() {
this.locked = false;
this.queue.forEach(resolve => resolve());
this.queue = [];
},
waitForUnlock() {
if (!this.locked) return Promise.resolve();
return new Promise(resolve => this.queue.push(resolve));
}
};
// Check if token is expired
function isTokenExpired(token) {
try {
const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
const decoded = JSON.parse(jsonPayload);
return decoded.exp * 1000 < Date.now();
} catch (e) {
return true;
}
}
// Get token from storage
function getToken(key) {
return localStorage.getItem(key) || sessionStorage.getItem(key);
}
// Set token in storage
function setToken(key, value) {
if (localStorage.getItem(key) !== null) {
localStorage.setItem(key, value);
} else if (sessionStorage.getItem(key) !== null) {
sessionStorage.setItem(key, value);
} else {
localStorage.setItem(key, value);
}
}
// Refresh token function
async function refreshToken() {
if (mutex.locked) {
await mutex.waitForUnlock();
return getToken(TOKEN_KEYS.ACCESS);
}
mutex.lock();
try {
const refreshToken = getToken(TOKEN_KEYS.REFRESH);
if (!refreshToken) {
window.location.href = '/login';
return null;
}
// Check if refresh token is expired
if (isTokenExpired(refreshToken)) {
window.location.href = '/login';
return null;
}
const apiBaseUrl = window.VITE_API_BASE_URL || process.env?.VITE_API_BASE_URL;
const response = await fetch(`${apiBaseUrl}/company-mgmt/user/refresh-token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': window.VITE_COMPANY_API_KEY || process.env?.VITE_COMPANY_API_KEY
},
body: JSON.stringify({ refreshtoken: refreshToken })
});
if (!response.ok) {
throw new Error('Failed to refresh token');
}
const data = await response.json();
if (data?.data?.decryptedData) {
const { accessToken, refreshToken: newRefreshToken } = data.data.decryptedData;
setToken(TOKEN_KEYS.ACCESS, accessToken);
setToken(TOKEN_KEYS.REFRESH, newRefreshToken);
return accessToken;
} else {
throw new Error('Invalid token response');
}
} catch (erro
Open service 65.8.131.78:80 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 00:00:15 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://qa.defect-tracker.web.ata.dev/ X-Cache: Redirect from cloudfront Via: 1.1 7ca1f888e55cc20dcbd40691cd7e4e84.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P13 X-Amz-Cf-Id: Pqk7LpNDDae6P2BnxTY9l6-so5PKHk7fIUCPb42G42fliJmRUUBpgg== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 65.8.131.129:80 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 00:00:15 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://qa.defect-tracker.web.ata.dev/ X-Cache: Redirect from cloudfront Via: 1.1 e82859bd3e5e584a3698e67f22415dae.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P13 X-Amz-Cf-Id: NIwzgaWgi2t1fCUsS6IVDZY2OJHJyAAwGJwkqmRt3a-3uwL1bTEGeQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 65.8.131.103:80 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 301 Moved Permanently Server: CloudFront Date: Mon, 22 Dec 2025 00:00:15 GMT Content-Type: text/html Content-Length: 167 Connection: close Location: https://qa.defect-tracker.web.ata.dev/ X-Cache: Redirect from cloudfront Via: 1.1 cf0761f56e297984902a10e73dbff038.cloudfront.net (CloudFront) X-Amz-Cf-Pop: FRA60-P13 X-Amz-Cf-Id: KCX81DdV29u9HIYyHQF7JyDdq-fL48ouciw1jWC7-JUf8PcUH0DYIQ== Page title: 301 Moved Permanently <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> <hr><center>CloudFront</center> </body> </html>
Open service 65.8.131.103:443 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 14519
Connection: close
Last-Modified: Mon, 15 Dec 2025 12:55:24 GMT
x-amz-server-side-encryption: AES256
Accept-Ranges: bytes
Server: AmazonS3
Date: Sun, 21 Dec 2025 20:37:25 GMT
ETag: "591b9f0d4e250b972931a8f90b662c5a"
X-Cache: Error from cloudfront
Via: 1.1 d07394c1abd1aadfca4b7709ba1de6a8.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: ENBS1v1l6gczy-_70D7ig67L7wpAqe6sTzPSfViuIkYSkk8SojONNw==
Age: 12171
Page title: All Things API
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/Group.png" />
<meta name="viewport" content="width=device-width, initial-scale=0.1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="/Group.png" />
<link rel="manifest" href="/manifest.json" />
<title>All Things API</title>
<link
rel="stylesheet"
href="src/bug-tracker/build-bug-tracker/ata-bug-tracker.css"
/>
<!-- <script>
// Token refresh interceptor
(function() {
const TOKEN_KEYS = {
ACCESS: "accessToken",
REFRESH: "refreshToken",
ROLE: "userRoleCode"
};
// Mutex implementation to prevent multiple refresh calls
const mutex = {
locked: false,
queue: [],
lock() {
this.locked = true;
},
unlock() {
this.locked = false;
this.queue.forEach(resolve => resolve());
this.queue = [];
},
waitForUnlock() {
if (!this.locked) return Promise.resolve();
return new Promise(resolve => this.queue.push(resolve));
}
};
// Check if token is expired
function isTokenExpired(token) {
try {
const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
const decoded = JSON.parse(jsonPayload);
return decoded.exp * 1000 < Date.now();
} catch (e) {
return true;
}
}
// Get token from storage
function getToken(key) {
return localStorage.getItem(key) || sessionStorage.getItem(key);
}
// Set token in storage
function setToken(key, value) {
if (localStorage.getItem(key) !== null) {
localStorage.setItem(key, value);
} else if (sessionStorage.getItem(key) !== null) {
sessionStorage.setItem(key, value);
} else {
localStorage.setItem(key, value);
}
}
// Refresh token function
async function refreshToken() {
if (mutex.locked) {
await mutex.waitForUnlock();
return getToken(TOKEN_KEYS.ACCESS);
}
mutex.lock();
try {
const refreshToken = getToken(TOKEN_KEYS.REFRESH);
if (!refreshToken) {
window.location.href = '/login';
return null;
}
// Check if refresh token is expired
if (isTokenExpired(refreshToken)) {
window.location.href = '/login';
return null;
}
const apiBaseUrl = window.VITE_API_BASE_URL || process.env?.VITE_API_BASE_URL;
const response = await fetch(`${apiBaseUrl}/company-mgmt/user/refresh-token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': window.VITE_COMPANY_API_KEY || process.env?.VITE_COMPANY_API_KEY
},
body: JSON.stringify({ refreshtoken: refreshToken })
});
if (!response.ok) {
throw new Error('Failed to refresh token');
}
const data = await response.json();
if (data?.data?.decryptedData) {
const { accessToken, refreshToken: newRefreshToken } = data.data.decryptedData;
setToken(TOKEN_KEYS.ACCESS, accessToken);
setToken(TOKEN_KEYS.REFRESH, newRefreshToken);
return accessToken;
} else {
throw new Error('Invalid token response');
}
} catch (erro
Open service 65.8.131.98:443 · qa.defect-tracker.web.ata.dev
2025-12-22 00:00
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 14519
Connection: close
Last-Modified: Mon, 15 Dec 2025 12:55:24 GMT
x-amz-server-side-encryption: AES256
Accept-Ranges: bytes
Server: AmazonS3
Date: Sun, 21 Dec 2025 20:37:25 GMT
ETag: "591b9f0d4e250b972931a8f90b662c5a"
X-Cache: Error from cloudfront
Via: 1.1 e82859bd3e5e584a3698e67f22415dae.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA60-P13
X-Amz-Cf-Id: AWkNmqRBTvGgKChXllVobeIgD2GQqOEVUXhEGuQZbb8SEEVdrU5sHg==
Age: 12171
Page title: All Things API
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/Group.png" />
<meta name="viewport" content="width=device-width, initial-scale=0.1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="/Group.png" />
<link rel="manifest" href="/manifest.json" />
<title>All Things API</title>
<link
rel="stylesheet"
href="src/bug-tracker/build-bug-tracker/ata-bug-tracker.css"
/>
<!-- <script>
// Token refresh interceptor
(function() {
const TOKEN_KEYS = {
ACCESS: "accessToken",
REFRESH: "refreshToken",
ROLE: "userRoleCode"
};
// Mutex implementation to prevent multiple refresh calls
const mutex = {
locked: false,
queue: [],
lock() {
this.locked = true;
},
unlock() {
this.locked = false;
this.queue.forEach(resolve => resolve());
this.queue = [];
},
waitForUnlock() {
if (!this.locked) return Promise.resolve();
return new Promise(resolve => this.queue.push(resolve));
}
};
// Check if token is expired
function isTokenExpired(token) {
try {
const base64Url = token.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
const decoded = JSON.parse(jsonPayload);
return decoded.exp * 1000 < Date.now();
} catch (e) {
return true;
}
}
// Get token from storage
function getToken(key) {
return localStorage.getItem(key) || sessionStorage.getItem(key);
}
// Set token in storage
function setToken(key, value) {
if (localStorage.getItem(key) !== null) {
localStorage.setItem(key, value);
} else if (sessionStorage.getItem(key) !== null) {
sessionStorage.setItem(key, value);
} else {
localStorage.setItem(key, value);
}
}
// Refresh token function
async function refreshToken() {
if (mutex.locked) {
await mutex.waitForUnlock();
return getToken(TOKEN_KEYS.ACCESS);
}
mutex.lock();
try {
const refreshToken = getToken(TOKEN_KEYS.REFRESH);
if (!refreshToken) {
window.location.href = '/login';
return null;
}
// Check if refresh token is expired
if (isTokenExpired(refreshToken)) {
window.location.href = '/login';
return null;
}
const apiBaseUrl = window.VITE_API_BASE_URL || process.env?.VITE_API_BASE_URL;
const response = await fetch(`${apiBaseUrl}/company-mgmt/user/refresh-token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': window.VITE_COMPANY_API_KEY || process.env?.VITE_COMPANY_API_KEY
},
body: JSON.stringify({ refreshtoken: refreshToken })
});
if (!response.ok) {
throw new Error('Failed to refresh token');
}
const data = await response.json();
if (data?.data?.decryptedData) {
const { accessToken, refreshToken: newRefreshToken } = data.data.decryptedData;
setToken(TOKEN_KEYS.ACCESS, accessToken);
setToken(TOKEN_KEYS.REFRESH, newRefreshToken);
return accessToken;
} else {
throw new Error('Invalid token response');
}
} catch (erro