Revert "Use temporary fix"

This reverts commit 59804a13a3.
This commit is contained in:
Volodymyr Kravchenko 2025-02-06 00:33:55 +02:00
parent 236699a92a
commit 01da057b3e

View file

@ -14,31 +14,7 @@ import {
} from './constants'; } from './constants';
import { NextApiRequestCollect } from 'pages/api/send'; import { NextApiRequestCollect } from 'pages/api/send';
let lookup;
// 1. Initialize lookup OUTSIDE any function, but make it a Promise.
let lookupPromise: any = null;
// 2. Create an initialization function.
async function initializeMaxmind() {
if (!lookupPromise) {
// eslint-disable-next-line no-console
console.log('debug: loading GeoLite2-City.mmdb');
const dir = path.join(process.cwd(), 'geo');
const dbPath = path.resolve(dir, 'GeoLite2-City.mmdb');
// Use try/catch for error handling during DB loading
try {
lookupPromise = maxmind.open(dbPath);
} catch (error) {
console.error("Error loading GeoLite2 database:", error);
// CRITICAL: You MUST handle the error here. Throwing an error
// will cause the server to crash, which is better than running
// without the database.
throw error; // Re-throw to prevent the app from starting.
}
}
return lookupPromise;
}
export function getIpAddress(req: NextApiRequestCollect) { export function getIpAddress(req: NextApiRequestCollect) {
const customHeader = String(process.env.CLIENT_IP_HEADER).toLowerCase(); const customHeader = String(process.env.CLIENT_IP_HEADER).toLowerCase();
@ -131,11 +107,17 @@ export async function getLocation(ip: string, req: NextApiRequestCollect) {
}; };
} }
const lookup = await lookupPromise; // Database lookup
if (!lookup) { // This check is likely unnecessary, but good for safety. if (!lookup) {
throw new Error("Maxmind database not loaded."); // eslint-disable-next-line no-console
console.log('debug: loading GeoLite2-City.mmdb');
const dir = path.join(process.cwd(), 'geo');
lookup = await maxmind.open(path.resolve(dir, 'GeoLite2-City.mmdb'));
} }
const result = lookup.get(ip);
if (result) { if (result) {
const country = result.country?.iso_code ?? result?.registered_country?.iso_code; const country = result.country?.iso_code ?? result?.registered_country?.iso_code;
const subdivision1 = result.subdivisions?.[0]?.iso_code; const subdivision1 = result.subdivisions?.[0]?.iso_code;