kopia lustrzana https://github.com/alecmuffett/eotk
commit: foreignmap
rodzic
69f541babe
commit
732000e6eb
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue