⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 openacs source for CPE wan management
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * 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 + -