修复安全和请求策略问题
This commit is contained in:
@@ -85,7 +85,18 @@ async function getLocation(target) {
|
||||
// Secondary DB check with resolved IP
|
||||
const [rows] = await db.query('SELECT * FROM server_locations WHERE ip = ?', [cleanIp]);
|
||||
if (rows.length > 0) {
|
||||
return normalizeGeo(rows[0]);
|
||||
const data = rows[0];
|
||||
// Cache the domain mapping to avoid future DNS lookups
|
||||
if (cleanTarget !== cleanIp) {
|
||||
try {
|
||||
await db.query(`
|
||||
INSERT INTO server_locations (ip, country, country_name, region, city, latitude, longitude)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
ON DUPLICATE KEY UPDATE last_updated = CURRENT_TIMESTAMP
|
||||
`, [cleanTarget, data.country, data.country_name, data.region, data.city, data.latitude, data.longitude]);
|
||||
} catch(e) {}
|
||||
}
|
||||
return normalizeGeo(data);
|
||||
}
|
||||
} catch (err) {
|
||||
// Quiet DNS failure for tokens (legacy bug mitigation)
|
||||
@@ -145,6 +156,29 @@ async function getLocation(target) {
|
||||
locationData.longitude
|
||||
]);
|
||||
|
||||
// Cache the domain target as well if it differs from the resolved IP
|
||||
if (cleanTarget !== cleanIp) {
|
||||
await db.query(`
|
||||
INSERT INTO server_locations (ip, country, country_name, region, city, latitude, longitude)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
country = VALUES(country),
|
||||
country_name = VALUES(country_name),
|
||||
region = VALUES(region),
|
||||
city = VALUES(city),
|
||||
latitude = VALUES(latitude),
|
||||
longitude = VALUES(longitude)
|
||||
`, [
|
||||
cleanTarget,
|
||||
locationData.country,
|
||||
locationData.country_name,
|
||||
locationData.region,
|
||||
locationData.city,
|
||||
locationData.latitude,
|
||||
locationData.longitude
|
||||
]);
|
||||
}
|
||||
|
||||
return locationData;
|
||||
}
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user