Author: bdonlan
Date: 2005-06-22 23:48:58 -0400 (Wed, 22 Jun 2005)
New Revision: 800
Added:
trunk/java/src/org/haverdev/javer2/JaverApplet.form
trunk/java/src/org/haverdev/javer2/JaverApplet.java
Modified:
trunk/java/src/org/haverdev/client/BasicAuthenticationProvider.java
trunk/java/src/org/haverdev/client/Client.java
trunk/java/src/org/haverdev/common/BasicAuthenticationHasher.java
trunk/java/src/org/haverdev/javer2/CMod.java
trunk/java/src/org/haverdev/javer2/JaverForm.java
Log:
Applet! Yay!
Modified: trunk/java/src/org/haverdev/client/BasicAuthenticationProvider.java
===================================================================
--- trunk/java/src/org/haverdev/client/BasicAuthenticationProvider.java
2005-06-22 19:12:40 UTC (rev 799)
+++ trunk/java/src/org/haverdev/client/BasicAuthenticationProvider.java
2005-06-23 03:48:58 UTC (rev 800)
@@ -22,8 +22,8 @@
*/
public abstract class BasicAuthenticationProvider extends AuthProvider {
- static Map algos = null;
-
+ static Set algos = BasicAuthenticationHasher.availableAlgos();
+ /*
static void mapAlgo(Map algos, String havername, String spiname) {
try {
MessageDigest.getInstance(spiname);
@@ -55,7 +55,7 @@
static {
algoInit();
}
-
+ */
/** Creates a new instance of BasicAuthenticationProvider */
public BasicAuthenticationProvider() {
}
@@ -104,7 +104,7 @@
String hash = null;
for (int i = 2; i < args.length; i++) {
- if (!this.algos.containsKey(args[i]))
+ if (!algos.contains(args[i]))
continue;
try {
hash = h.digest(args[i]);
Modified: trunk/java/src/org/haverdev/client/Client.java
===================================================================
--- trunk/java/src/org/haverdev/client/Client.java 2005-06-22 19:12:40 UTC
(rev 799)
+++ trunk/java/src/org/haverdev/client/Client.java 2005-06-23 03:48:58 UTC
(rev 800)
@@ -401,6 +401,7 @@
Object o = writeQ.block();
if (o instanceof WriteLine) {
writer.print(o);
+ System.out.print("C: " + o);
if (!writeQ.hasData())
writer.flush();
} else {
Modified: trunk/java/src/org/haverdev/common/BasicAuthenticationHasher.java
===================================================================
--- trunk/java/src/org/haverdev/common/BasicAuthenticationHasher.java
2005-06-22 19:12:40 UTC (rev 799)
+++ trunk/java/src/org/haverdev/common/BasicAuthenticationHasher.java
2005-06-23 03:48:58 UTC (rev 800)
@@ -36,7 +36,13 @@
static void algoInit() {
if (algos != null) return;
- String algostr = System.getProperty("haver.digestMaps",
"sha512:SHA-512 sha256:SHA-256 sha1:SHA-1");
+ String algostr = "sha512:SHA-512 sha256:SHA-256 sha1:SHA-1";
+ try {
+ // XXX: applets can't access this property
+ String temp = System.getProperty("haver.digestMaps");
+ if (temp != null)
+ algostr = temp;
+ } catch (Throwable t) {}
String[] algolist = HaverEncoding.optionSplit(algostr);
Map algotemp = new LinkedHashMap();
Modified: trunk/java/src/org/haverdev/javer2/CMod.java
===================================================================
--- trunk/java/src/org/haverdev/javer2/CMod.java 2005-06-22 19:12:40 UTC
(rev 799)
+++ trunk/java/src/org/haverdev/javer2/CMod.java 2005-06-23 03:48:58 UTC
(rev 800)
@@ -57,7 +57,7 @@
static final int STATE_VOTE = 3;
static final int joinTimeout = 30;
- static final int chatTimeout = 3; // XXX
+ static final int chatTimeout = 300;
int current_state = 0;
Added: trunk/java/src/org/haverdev/javer2/JaverApplet.form
===================================================================
--- trunk/java/src/org/haverdev/javer2/JaverApplet.form 2005-06-22 19:12:40 UTC
(rev 799)
+++ trunk/java/src/org/haverdev/javer2/JaverApplet.form 2005-06-23 03:48:58 UTC
(rev 800)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.0" type="org.netbeans.modules.form.forminfo.JAppletFormInfo">
+ <AuxValues>
+ <AuxValue name="FormSettings_generateMnemonicsCode"
type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle"
type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean"
value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer"
value="2"/>
+ </AuxValues>
+
+ <Layout
class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+</Form>
Added: trunk/java/src/org/haverdev/javer2/JaverApplet.java
===================================================================
--- trunk/java/src/org/haverdev/javer2/JaverApplet.java 2005-06-22 19:12:40 UTC
(rev 799)
+++ trunk/java/src/org/haverdev/javer2/JaverApplet.java 2005-06-23 03:48:58 UTC
(rev 800)
@@ -0,0 +1,157 @@
+/*
+ * JaverApplet.java
+ *
+ * Created on June 21, 2005, 4:06 PM
+ */
+
+package org.haverdev.javer2;
+import java.security.*;
+import javax.net.ssl.*;
+import javax.net.*;
+import java.io.*;
+import java.net.*;
+
+import javax.swing.*;
+import java.awt.*;
+
+/**
+ *
+ * @author bdonlan
+ */
+public class JaverApplet extends javax.swing.JApplet {
+
+ boolean ssl = false;
+ TrustManager[] ssltrust = null;
+ SocketFactory sf = null;
+
+ String host = null;
+ int port = -1;
+
+ void paramInit() throws Throwable {
+
+ host = getParameter("host");
+ port = Integer.parseInt(getParameter("port"));
+
+ String sslStr = getParameter("ssl");
+ ssl = Boolean.parseBoolean(sslStr);
+ if (ssl) {
+ String sslKeyStore = getParameter("keystore");
+ String storePass = getParameter("keystorePassword");
+ String storeType = getParameter("keystoreType");
+ String factoryAlgo = getParameter("trustFactoryAlgo");
+ if (storeType == null)
+ storeType = KeyStore.getDefaultType();
+ if (factoryAlgo == null)
+ factoryAlgo = TrustManagerFactory.getDefaultAlgorithm();
+ InputStream keyStoreStream = new URL(getCodeBase(),
sslKeyStore).openStream();
+ KeyStore store = KeyStore.getInstance(storeType);
+ store.load(keyStoreStream, storePass.toCharArray());
+
+ TrustManagerFactory factory =
TrustManagerFactory.getInstance(factoryAlgo);
+ factory.init(store);
+
+ TrustManager[] tms = factory.getTrustManagers();
+
+ SSLContext ctx = SSLContext.getInstance("SSL");
+ ctx.init(null, tms, null);
+
+ sf = ctx.getSocketFactory();
+ } else {
+ sf = SocketFactory.getDefault();
+ }
+ }
+
+ void crashAndBurn(Throwable t) {
+ Container contentPane = getContentPane();
+ contentPane.removeAll();
+
+ JScrollPane sp = new JScrollPane();
+ JTextPane tp = new JTextPane();
+
+ sp.setViewportView(tp);
+
+ StringWriter w = new StringWriter();
+ PrintWriter pw = new PrintWriter(w);
+
+ pw.println("Applet initialization failed:");
+ t.printStackTrace(pw);
+ pw.close();
+
+ tp.setText(w.getBuffer().toString());
+
+ contentPane.add(sp);
+ }
+
+ JaverForm f = null;
+
+ /** Initializes the applet JaverApplet */
+ public void init() {
+ System.out.println("init()");
+ try {
+ paramInit();
+ } catch (final Throwable t) {
+ try {
+ EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ crashAndBurn(t);
+ }
+ });
+ } catch (Throwable t2) {
+ t2.printStackTrace();
+ }
+ return;
+ }
+
+
+ try {
+ java.awt.EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ try {
+ getContentPane().add(f = new JaverForm(host, port,
sf));
+ } catch (Throwable t) {
+ crashAndBurn(t);
+ }
+ }
+ });
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public void destroy() {
+ System.out.println("destroy()");
+ try {
+ java.awt.EventQueue.invokeAndWait(new Runnable() {
+ public void run() {
+ if (f != null) {
+ if (f.cli != null) {
+ f.cli.disconnect();
+ }
+ f = null;
+ }
+ getContentPane().removeAll();
+ }
+ });
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
+ /** This method is called from within the init() method to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ *
+ * XXX: not actually used.
+ */
+ // <editor-fold defaultstate="collapsed" desc=" Generated Code
">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ }
+ // </editor-fold>//GEN-END:initComponents
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ // End of variables declaration//GEN-END:variables
+
+}
Property changes on: trunk/java/src/org/haverdev/javer2/JaverApplet.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: trunk/java/src/org/haverdev/javer2/JaverForm.java
===================================================================
--- trunk/java/src/org/haverdev/javer2/JaverForm.java 2005-06-22 19:12:40 UTC
(rev 799)
+++ trunk/java/src/org/haverdev/javer2/JaverForm.java 2005-06-23 03:48:58 UTC
(rev 800)
@@ -22,6 +22,20 @@
*/
public class JaverForm extends javax.swing.JPanel {
+ public static final TrustManager[] trustAllCerts = new TrustManager[]{
+ new X509TrustManager() {
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ public void checkClientTrusted(
+ java.security.cert.X509Certificate[] certs, String authType) {
+ }
+ public void checkServerTrusted(
+ java.security.cert.X509Certificate[] certs, String authType) {
+ }
+ }
+ };
+
String host;
int port;
Thread connectThread = null;
@@ -136,9 +150,6 @@
serverpane = new ServerPane();
addPane(serverpane);
serverpane.putLine("Welcome to haver! Enter your username to login");
- if (factory instanceof SSLSocketFactory) {
- serverpane.putLine("Warning: SSL mode in use. Currently, no server
certificate authentication is performed on SSL connections. There is no
protection against man-in-the-middle attacks.");
- }
setPreferredSize(new java.awt.Dimension(320, 240));
}