diff options
Diffstat (limited to 'setup.pl')
-rwxr-xr-x | setup.pl | 43 |
1 files changed, 37 insertions, 6 deletions
@@ -9,6 +9,7 @@ use File::Slurp; use File::Path qw(make_path); use File::Copy; use LWP::Simple qw(getstore); +use Data::Dumper; sub printspec($$) { my ($outfile, $key) = @_; @@ -19,8 +20,16 @@ sub printspec($$) { "provisioning" => "/browserid/provision.html"}); }; -my $configpath = "/etc/mulkyid"; -my $pemfile = "$configpath/rsa2048.pem"; +my $conffile = "www/config.pl"; + +# Generate configuration file. +our $MULKONF = { }; +if (stat($conffile)) { + say "Found existing configuration ($conffile)."; + do $conffile; +} +my $configpath = $MULKONF->{configpath} // "etc/mulkyid"; +my $pemfile = $MULKONF->{pemfile} // "$configpath/rsa2048.pem"; # Download jQuery. make_path("www/jquery"); @@ -30,6 +39,7 @@ if (stat("www/jquery/jquery.js")) { say "Fetching jQuery..."; getstore("http://code.jquery.com/jquery-1.7.2.min.js", "www/jquery/jquery.js") or die "Could not fetch jQuery"; + say "jQuery saved to: www/jquery/jquery.js"; } # Generate the private key. @@ -45,7 +55,8 @@ if (stat($pemfile)) { or die "Cannot open $pemfile for writing: $!"; print $keyfile $key->get_private_key_string(); close $keyfile; - system "chmod 440 $pemfile"; + say "Private key saved to: $pemfile". + chmod 0440, $pemfile; } # Generate spec file. @@ -53,14 +64,34 @@ open(my $specfile, ">", "browserid.json") or die "Cannot open browserid.json for writing: $!"; printspec $specfile, $key; close($specfile); +say "Persona spec file saved to: browserid.json"; + +# Generate configuration file. +$MULKONF = { + configpath => $configpath, + pemfile => $pemfile +}; +open(my $conffd, ">", $conffile) + or die "Cannot open $conffile for writing: $!"; +print $conffd <<EOF; +#! /usr/bin/env perl +# NB. Do not edit this file directly. It is overwritten with each run of setup.pl. +@{[Data::Dumper->Dump([$MULKONF], ["MULKONF"])]} +1; +EOF +close $conffd; +say "Configuration saved to: $conffile"; -say "\n"; +say ""; say "******************************************************************"; say "* FINISHED. *"; say "* *"; say "* Please put browserid.json where it will be served as *"; say "* https://<whatever>/.well-known/browserid *"; -say "* with a content type of *"; +say "* with a content type of: *"; say "* application/json *"; -say "* . *"; +say "* *"; +say "* In addition, please ensure that the private key file can be *"; +say "* read by the web server by assigning the file to the *"; +say "* appropriate owner. *"; say "******************************************************************"; |