Files
openflow/utilities/ofp-pki-cgi.in
T
Ben Pfaff ddbf6040e3 Make pkidir, rundir, logdir modifiable from "configure" command line.
Make "make" behave properly when these are changed by re-running
"configure", by putting their definitions into a generated file that
depends on Makefile.
2008-10-23 14:07:25 -07:00

42 lines
944 B
Plaintext
Executable File

#! @PERL@
use CGI;
use Digest::SHA1;
use Fcntl;
$CGI::POST_MAX = 65536; # Limit POSTs to 64 kB.
use strict;
use warnings;
my $pkidir = '@PKIDIR@';
my $q = new CGI;
die unless $q->request_method() eq 'POST';
my $type = $q->param('type');
die unless defined $type;
die unless $type eq 'switch' or $type eq 'controller';
my $req = $q->param('req');
die unless defined $req;
die unless $req =~ /^-----BEGIN CERTIFICATE REQUEST-----$/m;
die unless $req =~ /^-----END CERTIFICATE REQUEST-----$/m;
my $digest = Digest::SHA1::sha1_hex($req);
my $incoming = "$pkidir/${type}ca/incoming";
my $dst = "$incoming/$digest-req.pem";
sysopen(REQUEST, "$dst.tmp", O_RDWR | O_CREAT | O_EXCL, 0600)
or die "sysopen $dst.tmp: $!";
print REQUEST $req;
close(REQUEST) or die "close $dst.tmp: $!";
rename("$dst.tmp", $dst) or die "rename $dst.tmp to $dst: $!";
print $q->header('text/html', '204 No response');
# Local Variables:
# mode: perl
# End: