📄 client.java
字号:
/*
* client.java
*
* Created on Sekmadienis, 2007, Spalio 28, 19.46
*/
package org.openacs;
import java.io.*;
import java.lang.reflect.Method;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.MessagingException;
import javax.servlet.*;
import javax.servlet.http.*;
import org.openacs.message.GetParameterValuesResponse;
import org.openacs.message.GetRPCMethodsResponse;
import org.openacs.utils.Ejb;
import java.util.Enumeration;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Random;
import org.openacs.message.GetParameterNamesResponse;
/**
*
* @author Administrator
* @version
*/
public class client extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/plain;charset=UTF-8");
PrintWriter out = response.getWriter();
/*
Class c = org.ajax4jsf.component.AjaxComponent.class;
Method [] ms = c.getMethods();
for (Method m : ms) {
out.println(m.getName());
}
ClassLoader cl = c.getClassLoader();
out.println (cl);
java.net.URLClassLoader clp1 = (java.net.URLClassLoader)cl.getParent();
for (URL u : clp1.getURLs()) {
out.println (u);
}
out.println (cl.getParent());
if (true) return;
*/
// org.ajax4jsf.component.AjaxComponent c = new org.ajax4jsf.component.AjaxComponent ();
// org.ajax4jsf.component.AjaxComponent c = (org.ajax4jsf.component.AjaxComponent)Class.forName("org.ajax4jsf.component.AjaxComponent");
if (false) {
HttpAuthentication.Authenticate("testuser", "testpass", HttpAuthentication.AUTHTYPE_MD5, request, response);
}
if (true) {
System.out.println("src: addr="+request.getRemoteAddr()+" port="+request.getRemotePort());
String auth = request.getHeader("Authorization");
if (auth == null) {
System.out.println("CLIENT: PorcessRequest "+response.SC_UNAUTHORIZED+" "+request.getHeader("Authorization"));
// response.setHeader("WWW-Authenticate", "Basic realm=\"OpenACS\"");
byte [] nonce = new byte [16];
Random r = new Random ();
r.nextBytes(nonce);
// dcd98b7102dd2f0e8b11d0f600bfb0c093
response.setHeader("WWW-Authenticate", "Digest realm=\"OpenACS\",qop=\"auth,auth-int\",nonce=\""+ cvtHex(nonce)+"\"");
// response.setHeader("WWW-Authenticate", "Digest realm=\"testrealm@host.com\",qop=\"auth,auth-int\",nonce=\"dcd98b7102dd2f0e8b11d0f600bfb0c093\",opaque=\"5ccc069c403ebaf9f0171e9517f40e41\"");
response.setStatus(response.SC_UNAUTHORIZED);
} else {
if (auth.startsWith("Basic ")) {
String up = auth.substring(6);
String ds = null;
try {
InputStream i = javax.mail.internet.MimeUtility.decode(new ByteArrayInputStream(up.getBytes()), "base64");
byte [] d = new byte [i.available()];
i.read(d);
ds = new String (d);
} catch (MessagingException ex) {
Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
}
if (up.endsWith("==")) {
ds = ds.substring(0, ds.length() - 2);
} else if (up.endsWith("=")) {
ds = ds.substring(0, ds.length() - 1);
}
String [] upa = ds.split(":");
System.out.println("CLIENT: up="+up+" d='"+ds+"' user="+upa[0]+" pass="+upa[1]);
} else if (auth.startsWith("Digest ")) {
if (auth.indexOf("nc=00000001")!=-1) {
byte [] nonce = new byte [16];
Random r = new Random ();
r.nextBytes(nonce);
System.out.println("Saying it is stale: "+auth);
response.setHeader("WWW-Authenticate", "Digest realm=\"OpenACS\",qop=\"auth,auth-int\",stale=true,nonce=\""+ cvtHex(nonce)+"\"");
response.setStatus(response.SC_UNAUTHORIZED);
return;
}
//String [] a = auth.substring(6).split(",");
ByteArrayInputStream bi = new ByteArrayInputStream (auth.substring(6).replace(',', '\n').replaceAll("\"", "").getBytes());
Properties p = new Properties ();
p.load(bi);
p.setProperty("method", request.getMethod());
/*
p.put("method", "POST");
p.put("qop", "auth");
p.put("uri", "/openacs/acs");
p.put("algorithm", "MD5");
p.put("username","mael49");
p.put("nc","00000001");
p.put("realm","OpenACS");
p.put("nonce","ca44f62837a4df15795cc629b2dae130");
InputStream i;
try {
i = javax.mail.internet.MimeUtility.decode(new ByteArrayInputStream("MTIyMzM2AA==".getBytes()), "base64");
byte [] d = new byte [i.available()];
i.read(d);
p.put("cnonce",new String (d));
} catch (MessagingException ex) {
Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
}
p.put ("response", "083c04b1ea861a7ee08b89406fcf5dc3");
*/
for (Entry<Object,Object> e : p.entrySet()) {
System.out.println ("Entry "+e.getKey()+" -> "+e.getValue());
}
MessageDigest digest = null;
try {
digest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
}
postDigest(digest, p);
/*
byte d[] = digest.digest();
for (byte b : d) {
System.out.print (String.format("%02x ", b));
}
System.out.println ();
System.out.println ("Digest "+cvtHex(d));
*/
String udigest = (String) p.getProperty("response");
String dd = cvtHex(digest.digest());
System.out.println ("respone: got='"+udigest+"' expected: '"+dd+"'");
}
}
out.println ("Hello");
out.close ();
return;
}
int i;
String oui = "00147F";
String sn = "CP0713JTP7W";
CPELocal cpe = Ejb.lookupCPEBean();
out.println("Lookup bean .....\n" + cpe);
/* System.out.println ("Calling method ...");
GetParameterNamesResponse r = cpe.GetParameterNames(oui, sn, ".", false);
Object [] names = r.names.keySet().toArray();
Arrays.sort (names);
String [] n = new String [names.length];
for (i = 0; i < names.length; i++) {
out.println (names[i]+"\t"+r.names.get (names[i]));
n[i] = (String)names [i];
}
*/
/*
SetParameterValues sv = new SetParameterValues();
sv.key = "setvalueskey";
sv.AddValue("InternetGatewayDevice.IPPingDiagnostics.Host","192.168.0.1");
sv.AddValue("InternetGatewayDevice.IPPingDiagnostics.NumberOfRepetitions", "2");
sv.AddValue("InternetGatewayDevice.IPPingDiagnostics.DiagnosticsState", "Requested");
SetParameterValuesResponse vr = cpe.SetParameterValues(oui, sn, sv);
out.println ("Set values status: "+vr.Status);
*/
GetParameterNamesResponse gpnr = null; //cpe.GetParameterNames(oui, sn, "InternetGatewayDevice.WANDevice.", true);
Enumeration pnks = gpnr.names.keys();
while (pnks.hasMoreElements()) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -