commit: foreignmap

pull/17/head
Alec Muffett 2017-03-04 00:46:44 +00:00
rodzic 69f541babe
commit 732000e6eb
2 zmienionych plików z 60 dodań i 0 usunięć

Wyświetl plik

@ -9,6 +9,8 @@ die "$0: needs EOTK_HOME environment variable to be set\n"
# state
my %projects = ();
my %foreign_by_domain = ();
my %foreign_by_onion = ();
my $unset_variable = "<-UNSET-VARIABLE->";
my $here = $ENV{EOTK_HOME};
@ -93,6 +95,20 @@ sub Dotify { # dotify a regexp
##################################################################
sub DoForeign {
warn "DoForeign @_\n";
my ($what, $onion, $domain, @crap) = @_;
$onion =~ s!\.(onion)!!; # cleanup dups
$onion = "$onion.onion"; # restore trailing .onion
die "DoForeign: wtf?\n" if ($what ne "foreignmap");
die "DoForeign: duplicate onion $onion\n" if ($foreign_by_onion{$onion});
die "DoForeign: duplicate domain $domain\n" if ($foreign_by_domain{$domain});
$foreign_by_onion{$onion} = $domain;
$foreign_by_domain{$domain} = $onion;
}
##################################################################
# $projects{$project}{ROWS} = [ {}, {}, ... ] # see $row
# $projects{$project}{SUBDOMAINS} = {} # keys-only
# $projects{$project}{FIRST_ONION} = ""
@ -181,6 +197,8 @@ sub DoMap {
push(@{$projects{$project}{ROWS}}, \%row);
}
##################################################################
sub DoProject {
warn "DoProject @_\n";
my $project = shift;
@ -389,6 +407,9 @@ foreach (@config) {
elsif ($cmd eq "softmap") {
&DoMap($cmd, @args);
}
elsif ($cmd eq "foreignmap") {
&DoForeign($cmd, @args);
}
else {
die "error: what does '$cmd @args' mean?";
}
@ -401,6 +422,31 @@ warn Dumper(\%projects);
# create a home
&MakeDir($ENV{PROJECTS_HOME});
# prep the foreigns
my @flist = ();
foreach $domain (sort keys %foreign_by_domain) {
my $x;
my $onion = $foreign_by_domain{$domain};
my @elements = ();
$x = $onion; # onion
push(@elements, $x);
$x = &Dotify($x); # _RE
push(@elements, $x);
$x = &Dotify($x); # _RE2
push(@elements, $x);
$x = $domain; # domain
push(@elements, $x);
$x = &Dotify($x); # _RE
push(@elements, $x);
$x = &Dotify($x); # _RE2
push(@elements, $x);
push(@flist, join(",", @elements));
}
&SetEnv("foreignmap_csv", join(" ", @flist));
# lay it out
foreach my $project (sort keys %projects) {
&DoProject($project);

Wyświetl plik

@ -107,6 +107,20 @@ http {
;
%%END
%%IF %FOREIGNMAP_CSV%
# foreignmap subs
%%CSV %FOREIGNMAP_CSV%
# for %4% -> %1%
subs_filter
(/|\\\\/\\\\)/(([-0-9a-z]+\\.)+)?%6%\\b
$1/$2%1%
gir
;
%%ENDCSV
%%ELSE
# no foreignmap subs
%%ENDIF
# fix the cookies
%%BEGIN
proxy_cookie_domain