/* * [Signed.java] * * Summary: Generate the html to explain how to run a signed Applet or JWS application. * * Copyright: (c) 2009-2017 Roedy Green, Canadian Mind Products, http://mindprod.com * * Licence: This software may be copied and used freely for any purpose but military. * http://mindprod.com/contact/nonmil.html * * Requires: JDK 1.8+ * * Created with: JetBrains IntelliJ IDEA IDE http://www.jetbrains.com/idea/ * * Version History: * 1.8 2009-02-06 include go package in ZIP bundle. */ package com.mindprod.htmlmacros.macro; import com.mindprod.fastcat.FastCat; import com.mindprod.htmlmacros.support.Tools; import com.mindprod.prices.AppCat; import java.io.File; import static com.mindprod.htmlmacros.macro.Global.configuration; import static com.mindprod.htmlmacros.support.JDKandJREVersions.JDK_PATH; import static com.mindprod.htmlmacros.support.JDKandJREVersions.JRE_PATH; import static com.mindprod.htmlmacros.support.JDKandJREVersions.OLD_JDK_PATH; import static com.mindprod.htmlmacros.support.JDKandJREVersions.OLD_JRE_PATH; import static java.lang.System.*; /** * Generate the html to explain how to run a signed Applet or JWS application. *

* No longer used. NeedsJava handle this function. * * @author Roedy Green, Canadian Mind Products * @version 1.8 2009-02-06 include go package in ZIP bundle. * @since 2009 */ public final class Signed extends Macro { /** * how to use the macro */ private static final String USAGE = "\nSigned macro needs mainClass (Applet/weblet)"; /** * guts to Generate the explanation of how to use a signed applet * * @param mainClass name of class we will run * @param type type APPLET HYBRID etc * @param fileBeingProcessed the file currently being processed. * * @return expanded explanation */ private static String expand( String mainClass, AppCat type, File fileBeingProcessed ) { final String br = configuration.getBr(); FastCat kt = new FastCat( 5 ); kt.append( "keytool -import -keystore cacerts -alias " ); kt.append( configuration.getCodeSigningCert() ); kt.append( " -file " ); kt.append( configuration.getCodeSigningCert() ); kt.append( ".cer\n" ).toString(); final String keytool = kt.toString(); final FastCat sb = new FastCat( 115 ); sb.append( "You should be able to run this " ); sb.append( type.getLongCategoryDescription( true ) ); sb.append( " just by clicking OK to accept the certificate, but\n" ); sb.append( "if you have trouble, you may have to install my code signing certificate in your\n" ); sb.append( "cacerts certificate repository. To do this just click install\n" ); sb.append( "and follow your nose. If that does not work, you can install it manually:\n" ); sb.append( "

    \n" ); sb.append( "
  1. " ); sb.append( "Download my X.509 DSA Java Codesigning certificate " ); sb.append( configuration.getCodeSigningCert() ); sb.append( ".cer.\n" ); sb.append( "
  2. \n" ); sb.append( "
  3. " ); sb.append( "Then import it into you cacerts files with one or more of the relevant following commands:\n" ); sb.append( br ); sb.append( "
    \n" ); sb.append( "REM The default password for the\n" ); sb.append( br ); sb.append( "REM cacerts file is changeit.\n" ); sb.append( br ); sb.append( "REM keytool and cd commands should be all on one line when you type them" + ".\n" ); sb.append( br ); sb.append( "REM import into the current JRE\n" ); sb.append( br ); sb.append( "E:\n" ); sb.append( br ); sb.append( "cd "" ); sb.append( JRE_PATH ); sb.append( "\\lib\\security"\n" ); sb.append( br ); sb.append( keytool ); sb.append( br ); sb.append( "REM import into the current JDK\n" ); sb.append( br ); sb.append( "J:\n" ); sb.append( br ); sb.append( "cd "" ); sb.append( JDK_PATH ); sb.append( "\\jre\\lib\\security"\n" ); sb.append( br ); sb.append( keytool ); sb.append( br ); sb.append( "REM import into the previous JRE\n" ); sb.append( br ); sb.append( "E:\n" ); sb.append( br ); sb.append( "cd "" ); sb.append( OLD_JRE_PATH ); sb.append( "\\lib\\security"\n" ); sb.append( br ); sb.append( "keytool -import -keystore cacerts;-alias " ); sb.append( configuration.getCodeSigningCert() ); sb.append( " -file " ); sb.append( configuration.getCodeSigningCert() ); sb.append( ".cer\n" ); sb.append( br ); sb.append( "REM import into the previous JDK\n" ); sb.append( br ); sb.append( "J:\n" ); sb.append( br ); sb.append( "cd "" ); sb.append( OLD_JDK_PATH ); sb.append( "\\jre\\lib\\security"\n" ); sb.append( br ); sb.append( keytool ); sb.append( "
    \n" ); sb.append( "
  4. \n" ); if ( type == AppCat.APPLET || type == AppCat.HYBRID ) { sb.append( "
  5. " ); sb.append( "Restart your browser and try the " ); sb.append( mainClass ); sb.append( " Applet again.\n" ); sb.append( "
  6. \n" ); } if ( type == AppCat.JWS ) { sb.append( "
  7. " ); sb.append( "Restart your browser and try the " ); sb.append( mainClass ); sb.append( " Java WebStart again.\n" ); sb.append( "
  8. \n" ); sb.append( "
  9. " ); sb.append( " If the download fails, install " ); sb.append( mainClass ); sb.append( " manually by typing at the command prompt:\n" ); sb.append( "
    " ); sb.append( "rem On Windows" ); sb.append( br ); sb.append( "javaws.exe " ); sb.append( "http://mindprod.com/webstart/" ); sb.append( mainClass.toLowerCase() ); sb.append( ".jnlp" ); sb.append( br ); sb.append( "# on Linux/BASH" ); sb.append( br ); sb.append( "javaws " ); sb.append( "http://mindprod.com/webstart/" ); sb.append( mainClass.toLowerCase() ); sb.append( ".jnlp" ); sb.append( "
    " ); sb.append( "
  10. \n" ); } sb.append( "
  11. " ); sb.append( " You can also modify your policy file to\n" ); sb.append( " give automatic permission.\n" ); sb.append( "
  12. \n" ); if ( type == AppCat.HYBRID ) { sb.append( "
  13. Alternatively you can download " ); sb.append( mainClass ); sb.append( " and run\n" + " it as an application.\n" + "
  14. \n" ); } sb.append( "
\n" ); sb.append( "\n" ); return sb.toString(); } /** * Generate the html to explain how to run a signed Applet or JWS application. * * @param parms mainClass type Applet or Weblet * @param quiet true if want output suppressed. * @param verbose @return expanded macro HTML */ public String expandMacro( String[] parms, final boolean quiet, final boolean verbose ) { if ( !quiet ) { out.print( "S" ); } if ( parms.length != 2 ) { throw new IllegalArgumentException( USAGE ); } String mainClass = parms[ 0 ]; AppCat type = AppCat.valueOfAlias( parms[ 1 ] ); return expand( mainClass, type, fileBeingProcessed ); } }