TsgcWebSocketFirewall › Eventi › OnResolveCountry
Viene attivato durante la valutazione GeoIP in modo che l'applicazione possa fornire un codice paese personalizzato per un indirizzo IP.
property OnResolveCountry: TsgcFirewallOnResolveCountry;
// TsgcFirewallOnResolveCountry = procedure(Sender: TObject; const aIP: string; var aCountryCode: string) of object
—
OnResolveCountry viene sollevato dal modulo GeoIP quando deve mappare aIP a un paese. Il database CSV integrato (caricato tramite LoadGeoIPDatabase) viene consultato per primo; l'evento viene invocato affinché la Sua applicazione possa sovrascrivere o integrare il risultato con una ricerca su una fonte diversa (database MaxMind di terze parti, un servizio REST, una cache interna, ecc.). Assegni il codice ISO 3166-1 alpha-2 di due lettere (per esempio "US", "DE", "CN") al parametro var aCountryCode. Restituisca una stringa vuota per lasciare l'IP non classificato (le regole di allow/block GeoIP lo tratteranno quindi come sconosciuto). Il gestore viene eseguito nel thread I/O del server; viene invocato a ogni connessione quando GeoIP è abilitato, quindi memorizzi aggressivamente in cache le ricerche ed eviti chiamate di rete bloccanti.
procedure TForm1.sgcWebSocketFirewall1ResolveCountry(Sender: TObject;
const aIP: string; var aCountryCode: string);
begin
// quick in-memory cache
aCountryCode := FCountryCache.Values[aIP];
if aCountryCode <> '' then
Exit;
// fall back to your own GeoIP provider
aCountryCode := MyGeoIPProvider.Lookup(aIP);
if aCountryCode <> '' then
FCountryCache.Values[aIP] := aCountryCode;
end;