File:
[LON-CAPA] /
loncom /
CrGenerate.pl
Revision
1.3:
download - view:
text,
annotated -
select for diffs
Tue Jun 29 11:32:06 2004 UTC (20 years, 3 months ago) by
foxr
Branches:
MAIN
CVS tags:
HEAD
Implement the ReadConfig sub. This sub parses the apache config files
for the PerlSetVars and extracts:
SSLProgram - Path to the SSL utility command (openssl e.g.).
lonCertificateDirectory - Where certificates will be installed.
lonnetPrivateKey - Name of the private key file to produce.
SSLEmail - Email address of the certificate administrator.
#!/usr/bin/perl
# The LearningOnline Network
# CrGenerate - Generate a loncapa certificate request.
#
# $Id: CrGenerate.pl,v 1.3 2004/06/29 11:32:06 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
#
# This script:
# 1. Generates a private host key and certificate request/
# 2. Decodes the private host key
# 3. Installs the private host key with appropriate permissions
# in the appropriate directory (sorry to be vague about this, but
# the installation directory is determined by external configuration
# info).
# 4. Constructs an email to the loncapa cluster administrator
# consisting of a generic heading and the certificate request as a MIME
# attachment.
# 5. Sends the email and
# 6. Cleans up after itself by removing any temp files generated.
#
#
# Import section:
use strict;
use MIME::Entity;
use Mail::Mailer;
use LONCAPA::Configuration;
# Global variable declarations:
my $SSLCommand; # Full path to openssl command.
my $CertificateDirectory; # LONCAPA Certificate directory.
my $KeyFilename; # Key filename (within CertificateDirectory).
my $Passphrase="loncapawhatever"; # Initial passphrase for keyfile
my $RequestEmail; # Email address of loncapa cert admin.
# Debug/log support:
#
my $DEBUG = 1; # 1 for on, 0 for off.
# Send debugging to stderr.
# Parameters:
# msg - Message to send to stderr.
# Implicit Inputs:
# $DEBUG - message is only written if this is true.
#
sub Debug {
my $msg = shift;
if($DEBUG) {
print STDERR "$msg\n";
}
}
#
# Read the LonCAPA web config files to get the values of the
# configuration global variables we need:
# Implicit inputs:
# loncapa.conf - configuration file to read (user specific).
# Implicit outputs (see global variables section):
# SSLCommand,
# CertificateDirectory
# KeyfileName
# RequestEmail
# Side-Effects:
# Exit with error if cannot complete.
#
sub ReadConfig {
Debug("Reading configuration");
my $perlvarref = LONCAPA::Configuration::read_conf('loncapa.conf');
# Name of the SSL Program
if($perlvarref->{SSLProgram}) {
$SSLCommand = $perlvarref->{SSLProgram};
Debug("SSL Command: $SSLCommand");
}
else {
die "Unable to read the SSLCommand configuration option\n";
}
# Where the certificates, and host key are installed:
if($perlvarref->{lonCertificateDirectory}) {
$CertificateDirectory = $perlvarref->{lonCertificateDirectory};
Debug("Local certificate Directory: $CertificateDirectory");
}
else {
die "Unable to read SSLDirectory configuration option\n";
}
# The name of the host key file (to be installed in SSLDirectory).
#
if($perlvarref->{lonnetPrivateKey}) {
$KeyFilename = $perlvarref->{lonnetPrivateKey};
Debug("Private key will be installed as $KeyFilename");
}
else {
die "Unable to read lonnetPrivateKey conrig paraemter\n";
}
# The email address to which the certificate request is sent:
if($perlvarref->{SSLEmail}) {
$RequestEmail = $perlvarref->{SSLEmail};
Debug("Certificate request will be sent to $RequestEmail");
}
else {
die "Could not read SSLEmail coniguration key";
}
}
sub GenerateRequest {}
sub InstallKey {}
sub MailRequest {}
sub Cleanup {}
# Entry point:
Debug("Starting program");
ReadConfig; # Read loncapa apache config file.
GenerateRequest; # Generate certificate request.
InstallKey; # Install the user's key.
MailRequest; # Mail certificate request to loncapa
Cleanup; # Cleanup temp files created.
Debug("Done");
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>