package org.cagrid.gaards.dorian.service.tools; import gov.nih.nci.cagrid.common.Utils; import java.io.File; import java.security.cert.X509Certificate; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.cagrid.gaards.dorian.ca.CertificateAuthority; import org.cagrid.gaards.dorian.service.BeanUtils; import org.cagrid.gaards.pki.CertUtil; import org.springframework.core.io.FileSystemResource; /** * @author <A href="mailto:langella@bmi.osu.edu">Stephen Langella </A> * @author <A href="mailto:oster@bmi.osu.edu">Scott Oster </A> * @author <A href="mailto:hastings@bmi.osu.edu">Shannon Hastings </A> * @version $Id: ArgumentManagerTable.java,v 1.2 2004/10/15 16:35:16 langella * Exp $ */ public class ConfigureGlobusToTrustDorian { public static final String PROPERTIES_FILE_OPT = "p"; public static final String PROPERTIES_FILE_FULL = "properties"; public static final String CONFIG_FILE_OPT = "c"; public static final String CONFIG_FILE_FULL = "conf"; public static final String HELP_OPT = "u"; public static final String HELP_OPT_FULL = "help"; public static void main(String[] args) { Options options = new Options(); Option help = new Option(HELP_OPT, HELP_OPT_FULL, false, "Prints this message."); Option conf = new Option(CONFIG_FILE_OPT, CONFIG_FILE_FULL, true, "The config file for the Dorian CA."); conf.setRequired(true); Option props = new Option(PROPERTIES_FILE_OPT, PROPERTIES_FILE_FULL, true, "The properties file for the Dorian CA."); props.setRequired(true); options.addOption(props); options.addOption(help); options.addOption(conf); try { CommandLineParser parser = new PosixParser(); CommandLine line = parser.parse(options, args); if (line.getOptionValue(HELP_OPT) != null) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp(ConfigureGlobusToTrustDorian.class.getName(), options); System.exit(0); } else { String configFile = line.getOptionValue(CONFIG_FILE_OPT); String propertiesFile = line.getOptionValue(PROPERTIES_FILE_OPT); BeanUtils utils = new BeanUtils(new FileSystemResource(configFile), new FileSystemResource( propertiesFile)); utils.getDatabase().createDatabaseIfNeeded(); CertificateAuthority ca = utils.getCertificateAuthority(); X509Certificate cacert = ca.getCACertificate(); File dir = Utils.getTrustedCerificatesDirectory(); File caFile = new File(dir.getAbsolutePath() + File.separator + CertUtil.getHashCode(cacert) + ".0"); File policyFile = new File(dir.getAbsolutePath() + File.separator + CertUtil.getHashCode(cacert) + ".signing_policy"); CertUtil.writeCertificate(cacert, caFile); CertUtil.writeSigningPolicy(cacert, policyFile); System.out.println("Succesfully configured Globus to trust the Dorian CA: " + cacert.getSubjectDN().getName()); System.out.println("Succesfully wrote CA certificate to " + caFile.getAbsolutePath()); System.out.println("Succesfully wrote CA signing policy to " + policyFile.getAbsolutePath()); } } catch (ParseException exp) { HelpFormatter formatter = new HelpFormatter(); formatter.printHelp(ConfigureGlobusToTrustDorian.class.getName(), options, false); System.exit(1); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } }