mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
ipinfo.cgi: Allow to display multiple flags.
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
committed by
Michael Tremer
parent
ed0e7a0d54
commit
33975f578d
@@ -190,10 +190,13 @@ sub get_locations() {
|
||||
return @sorted_locations;
|
||||
}
|
||||
|
||||
# Function to check if a given address has a special flag.
|
||||
sub address_has_flag($) {
|
||||
# Function to check if a given address has one ore more special flags.
|
||||
sub address_has_flags($) {
|
||||
my ($address) = @_;
|
||||
|
||||
# Array to store the flags of the address.
|
||||
my @flags;
|
||||
|
||||
# Init libloc database handle.
|
||||
my $db_handle = &init();
|
||||
|
||||
@@ -206,10 +209,16 @@ sub address_has_flag($) {
|
||||
# Grab the mapped location code for this flag.
|
||||
$mapped_code = $network_flags{$flag};
|
||||
|
||||
# Return the code.
|
||||
return $mapped_code;
|
||||
# Add the mapped code to the array of flags.
|
||||
push(@flags, $mapped_code);
|
||||
}
|
||||
}
|
||||
|
||||
# Sort the array of flags.
|
||||
@flags = sort(@flags);
|
||||
|
||||
# Return the array of flags.
|
||||
return @flags;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -64,7 +64,7 @@ if (&General::validip($addr)) {
|
||||
# enumerate location information for IP address...
|
||||
my $db_handle = &Location::Functions::init();
|
||||
my $ccode = &Location::Functions::lookup_country_code($db_handle, $addr);
|
||||
my $network_flag = &Location::Functions::address_has_flag($addr);
|
||||
my @network_flags = &Location::Functions::address_has_flags($addr);
|
||||
|
||||
# Try to get the continent of the country code.
|
||||
my $continent = &Location::get_continent_code($db_handle, $ccode);
|
||||
@@ -111,12 +111,48 @@ if (&General::validip($addr)) {
|
||||
&Header::openbox('100%', 'left', $addr . " <a href='country.cgi#$ccode'><img src='$flag_icon' border='0' align='absmiddle' alt='$ccode' title='$ccode' /></a> (" . $hostname . ') : '.$whois_server);
|
||||
|
||||
# Check if the address has a flag.
|
||||
if ($network_flag) {
|
||||
# Get
|
||||
my $network_flag_name = &Location::Functions::get_full_country_name($network_flag);
|
||||
if (@network_flags) {
|
||||
# Get amount of flags for this network.
|
||||
my $flags_amount = @network_flags;
|
||||
my $processed_flags;
|
||||
|
||||
# Display notice.
|
||||
print "<h3>This address is marked as $network_flag_name.</h3>\n";
|
||||
# The message string which will be displayed.
|
||||
my $message_string = "This address is marked as";
|
||||
|
||||
# Loop through the array of network_flags.
|
||||
foreach my $network_flag (@network_flags) {
|
||||
# Increment value of processed flags.
|
||||
$processed_flags++;
|
||||
|
||||
# Get the network flag name.
|
||||
my $network_flag_name = &Location::Functions::get_full_country_name($network_flag);
|
||||
|
||||
# Add the flag name to the message string.
|
||||
$message_string = "$message_string" . " $network_flag_name";
|
||||
|
||||
# Check if multiple flags are set for this network.
|
||||
if ($flags_amount gt "1") {
|
||||
# Check if the the current flag is the next-to-last one.
|
||||
if ($processed_flags eq $flags_amount - 1) {
|
||||
$message_string = "$message_string" . " and ";
|
||||
|
||||
# Check if the current flag it the last one.
|
||||
} elsif ($processed_flags eq $flags_amount) {
|
||||
# The message is finished add a dot for ending the sentence.
|
||||
$message_string = "$message_string" . ".";
|
||||
|
||||
# Otherwise add a simple comma to the message string.
|
||||
} else {
|
||||
$message_string = "$message_string" . ", ";
|
||||
}
|
||||
} else {
|
||||
# Nothing special to do, simple add a dot to finish the sentence.
|
||||
$message_string = "$message_string" . ".";
|
||||
}
|
||||
}
|
||||
|
||||
# Display the generated notice.
|
||||
print "<h3>$message_string</h3>\n";
|
||||
print "<br>\n";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user