/*
* [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( "- " );
sb.append( "Download my X.509 DSA Java Codesigning certificate " );
sb.append( configuration.getCodeSigningCert() );
sb.append( ".cer.\n" );
sb.append( "
\n" );
sb.append( "- " );
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( " \n" );
if ( type == AppCat.APPLET || type == AppCat.HYBRID )
{
sb.append( "- " );
sb.append( "Restart your browser and try the " );
sb.append( mainClass );
sb.append( " Applet again.\n" );
sb.append( "
\n" );
}
if ( type == AppCat.JWS )
{
sb.append( "- " );
sb.append( "Restart your browser and try the " );
sb.append( mainClass );
sb.append( " Java WebStart again.\n" );
sb.append( "
\n" );
sb.append( " - " );
sb.append( " If the download fails, install " );
sb.append( mainClass );
sb.append( " manually by typing at the command prompt:\n" );
sb.append( "
" );
sb.append( "" );
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( "" );
sb.append( br );
sb.append( "javaws " );
sb.append( "http://mindprod.com/webstart/" );
sb.append( mainClass.toLowerCase() );
sb.append( ".jnlp" );
sb.append( "
" );
sb.append( " \n" );
}
sb.append( "- " );
sb.append( " You can also modify your policy file to\n" );
sb.append( " give automatic permission.\n" );
sb.append( "
\n" );
if ( type == AppCat.HYBRID )
{
sb.append( "- Alternatively you can download " );
sb.append( mainClass );
sb.append( " and run\n" + " it as an application.\n" + "
\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 );
}
}