mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
Tor: allow multiple countries to be selected for Exit relays
This extends the functionality of the Tor CGI in order to be able to select multiple countries for possible Exit relays, which is - in terms of anonymity - less worse than limiting all Tor circuits to a single country. For example, a user might want to avoid Exit relays in more than one country, and permit Tor to use Exit relays elesewhere, and vice versa. Signed-off-by: Peter Müller <peter.mueller@ipfire.org> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
committed by
Michael Tremer
parent
ef99991370
commit
5efe8957a5
@@ -2,7 +2,7 @@
|
||||
###############################################################################
|
||||
# #
|
||||
# IPFire.org - A linux based firewall #
|
||||
# Copyright (C) 2013-2019 IPFire Team <info@ipfire.org> #
|
||||
# Copyright (C) 2007-2020 IPFire Team <info@ipfire.org> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
@@ -316,10 +316,17 @@ END
|
||||
</tr>
|
||||
<tr>
|
||||
<td width='50%' colspan='2'>
|
||||
<select name='TOR_EXIT_COUNTRY'>
|
||||
<select name='TOR_EXIT_COUNTRY' multiple='multiple'>
|
||||
<option value=''>- $Lang::tr{'tor exit country any'} -</option>
|
||||
END
|
||||
my @country_codes = &Location::Functions::get_locations("no_special_locations");
|
||||
|
||||
# Convert Exit/Guard country strings into lists to make comparison easier
|
||||
my @exit_countries;
|
||||
if ($settings{'TOR_EXIT_COUNTRY'} ne '') {
|
||||
@exit_countries = split(/\|/, $settings{'TOR_EXIT_COUNTRY'});
|
||||
}
|
||||
|
||||
foreach my $country_code (@country_codes) {
|
||||
# Convert country code into upper case format.
|
||||
$country_code = uc($country_code);
|
||||
@@ -329,8 +336,8 @@ END
|
||||
|
||||
print "<option value='$country_code'";
|
||||
|
||||
if ($settings{'TOR_EXIT_COUNTRY'} eq $country_code) {
|
||||
print " selected";
|
||||
if ($settings{'TOR_EXIT_COUNTRY'} ne '') {
|
||||
print " selected" if grep /$country_code/, @exit_countries;
|
||||
}
|
||||
|
||||
print ">$country_name ($country_code)</option>\n";
|
||||
@@ -675,8 +682,17 @@ sub BuildConfiguration() {
|
||||
|
||||
if ($settings{'TOR_EXIT_COUNTRY'} ne '') {
|
||||
$strict_nodes = 1;
|
||||
my $countrylist;
|
||||
|
||||
print FILE "ExitNodes {$settings{'TOR_EXIT_COUNTRY'}}\n";
|
||||
for my $singlecountry (split(/\|/, $settings{'TOR_EXIT_COUNTRY'})) {
|
||||
if ($countrylist eq '') {
|
||||
$countrylist = "{" . lc $singlecountry . "}";
|
||||
} else {
|
||||
$countrylist = $countrylist . "," . "{" . lc $singlecountry . "}";
|
||||
}
|
||||
}
|
||||
|
||||
print FILE "ExitNodes $countrylist\n";
|
||||
}
|
||||
|
||||
if ($settings{'TOR_USE_EXIT_NODES'} ne '') {
|
||||
|
||||
Reference in New Issue
Block a user