commit: work in progress is stable

pull/101/head
Alec Muffett 2021-09-24 12:52:21 +01:00
rodzic 70a222bd01
commit ad72747535
2 zmienionych plików z 66 dodań i 44 usunięć

2
eotk
Wyświetl plik

@ -370,7 +370,7 @@ Configure() {
fi
done 2>$log
Print done. logfile is $log.
Print done. logfile is $log
}
# argument 'parser' - ha!

Wyświetl plik

@ -239,7 +239,7 @@ sub DoForeign {
##################################################################
# $projects{$project}{ROWS} = [ {}, {}, ... ] # see $row
# $projects{$project}{SUBDOMAINS} = {} # keys-only
# $projects{$project}{ALTNAMES} = {} # keys-only
# $projects{$project}{FIRST_ONION} = ""
# $projects{$project}{TYPE} = ""
# $projects{$project}{IS_SOFTMAP} = 0/1
@ -306,12 +306,15 @@ sub DoMap {
$projects{$project}{FIRST_ONION} = $onion_doto;
}
# populate the subdomains
$projects{$project}{SUBDOMAINS}{$onion_doto} = 1;
# populate the fqdn altnames
$projects{$project}{ALTNAMES}{$onion_doto} = 1;
foreach my $sd (@subdomains) {
$projects{$project}{SUBDOMAINS}{"$sd.$onion_doto"} = 1;
$projects{$project}{ALTNAMES}{"$sd.$onion_doto"} = 1;
}
# log the subdomains
$projects{$project}{SUBDOMAINS}{$onion_doto} = \@subdomains;
# create the row
my %row = ();
$row{DNS_DOMAIN} = $to;
@ -343,6 +346,57 @@ sub DoMap {
push(@{$projects{$project}{ROWS}}, \%row);
}
sub DoUmbrellaCert {
warn "DoUmbrellaCert @_\n";
my $project = shift;
my $cert_common_name;
if (defined($ENV{CERT_COMMON_NAME})) {
$cert_common_name = $ENV{CERT_COMMON_NAME};
}
else {
if ($ENV{IS_SOFTMAP}) {
$cert_common_name = "$project.local";
}
else {
$cert_common_name = $projects{$project}{FIRST_ONION};
}
}
die "empty cert_common_name in project $project\n" unless (defined($cert_common_name));
&SetEnv("cert_common_name", $cert_common_name); # in case we had to manufacture one
# clean up the SAN list; purge the CommonName for deduplication
delete($projects{$project}{ALTNAMES}{$cert_common_name});
my @sanlist = sort keys %{$projects{$project}{ALTNAMES}};
# debugging
warn "commit $ENV{PROJECT} san $cert_common_name @sanlist\n";
$cert_prefix = $project;
$cert = "$ENV{SSL_DIR}/$cert_prefix.cert";
&SetEnv("cert_prefix", $cert_prefix);
if (-f $cert) {
warn "$cert exists!";
} # TODO: if the cert is already in the secrets.d directory, install it
else {
warn "making cert for $cert_prefix\n";
&GoAndRun(
$ENV{SSL_DIR},
$ENV{SSL_TOOL},
'-f', # this is a recent addition
$cert_prefix, # this is a recent addition
$cert_common_name,
@sanlist
);
}
}
sub DoRowCert {
warn "DoRowCert @_\n";
my $row = shift;
}
##################################################################
sub DoProject {
@ -362,46 +416,14 @@ sub DoProject {
&MakeDir($ENV{SSL_DIR});
&MakeDir($ENV{LOG_DIR});
# set the CommonName for the project cert; this is the first onion encountered:
my $cert_common_name;
if (defined($ENV{CERT_COMMON_NAME})) {
$cert_common_name = $ENV{CERT_COMMON_NAME};
# certificate generation
if ($ENV{SSL_CERT_EACH_ONION}) {
foreach my $row (1,2,3) {
&DoRowCert($row);
}
}
else {
if ($ENV{IS_SOFTMAP}) {
$cert_common_name = "$project.local";
}
else {
$cert_common_name = $projects{$project}{FIRST_ONION};
}
}
die "empty cert_common_name in project $project\n" unless (defined($cert_common_name));
&SetEnv("cert_common_name", $cert_common_name); # in case we had to manufacture one
# clean up the SAN list; purge the CommonName for deduplication
delete($projects{$project}{SUBDOMAINS}{$cert_common_name});
my @sanlist = sort keys %{$projects{$project}{SUBDOMAINS}};
# debugging
warn "commit $ENV{PROJECT} san $cert_common_name @sanlist\n";
# cert generation
# XXX
$cert = "$ENV{SSL_DIR}/$cert_prefix.cert";
if (-f $cert) {
warn "$cert exists!";
} # TODO: if the cert is already in the secrets.d directory, use it
else {
warn "making cert for $cert_prefix\n";
&GoAndRun(
$ENV{SSL_DIR},
$ENV{SSL_TOOL},
# '-f', # this is a recent addition
# $cert_prefix, # this is a recent addition
$cert_common_name,
@sanlist
);
&DoUmbrellaCert($project);
}
# nginx config: feed the rows to the template
@ -531,7 +553,7 @@ sub DoProject {
&SetEnv("projects_home", "$here/projects.d");
&SetEnv("softmap_nginx_workers", "auto"); # nginx_workers * softmap_tor_workers
&SetEnv("softmap_tor_workers", 2); # MUST BE NUMERIC > 1
&SetEnv("ssl_cert_each_onion", 1);
&SetEnv("ssl_cert_each_onion", 0);
&SetEnv("ssl_mkcert", 0);
&SetEnv("ssl_tool", "$here/lib.d/make-selfsigned-wildcard-ssl-cert.sh");
&SetEnv("suppress_header_csp", 0); # 0 = try rewriting; 1 = elide completely