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

📄 configurator.java

📁 openacs source for CPE wan management
💻 JAVA
字号:
/* *  *  */package org.openacs;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.util.Calendar;import java.util.Iterator;import java.util.logging.Level;import java.util.logging.Logger;import javax.ejb.FinderException;import org.openacs.js.Script;import org.openacs.message.Download;import org.openacs.message.GetParameterNames;import org.openacs.message.GetParameterNamesResponse;import org.openacs.message.GetParameterValues;import org.openacs.message.GetParameterValuesResponse;import org.openacs.message.Inform;import org.openacs.message.SetParameterValues;import org.openacs.message.TransferComplete;import org.openacs.utils.Ejb;import org.openacs.utils.Version;import org.openacs.vendors.Vendor;/** * * @author Administrator */public class Configurator extends Thread {    private Inform lastInform;    private HostsLocal host;    private TransferComplete transferComplete;    private String fwpath;    private String urlServer;    private CPELocal cpe;    private String paramConfigVersion;    private long timeout;    private String KEY_SOFTWARE = "dlSoftware";    private String KEY_CONFIG = "dlConfig";    private String paramConfigName;    //private static final String OUI_Thomson = "00147F";    //private static final String OUI_Thomson2 = "0090D0";    public Configurator(Inform lastInform, HostsLocal host, TransferComplete transferComplete, String fwpath, String urlServer) {        this.lastInform = lastInform;        this.host = host;        this.transferComplete = transferComplete;        this.fwpath = fwpath;        this.urlServer = urlServer;        this.cpe = Ejb.lookupCPEBean();        String vcf = lastInform.getRoot() + ".DeviceInfo.VendorConfigFile.1.";        this.paramConfigVersion = vcf + "Version";        this.paramConfigName = vcf + "Name";        timeout = 120 * 1000;    }    @Override    public void run() {        HardwareModelLocal hw = host.getModel();        if (transferComplete != null) {            onTransferComplete();        } else if (!lastInform.isEvent(Inform.EVENT_CONNECTION_REQUEST)) {            if (lastInform.isEvent(Inform.EVENT_PERIODIC)) { //                updateSoftware();                Vendor vendor = Vendor.getVendor(lastInform.oui, hw.getHclass(), hw.getVersion());                switch (vendor.getConfigUpdateMethod()) {                    case Vendor.CFG_UPDATE_METHOD_2:                        System.out.println("Configurator: UPDATE by name/version");                        updateConfigThomson();                        break;                    case Vendor.CFG_UPDATE_METHOD_1:                    default:                        System.out.println("Configurator: UPDATE ProvisioningCode");                        updateConfigByProvisioningCode();                        break;                }                /*                FileOutputStream fout = null;                try {                    GetParameterNames nreq = new GetParameterNames();                    nreq.nextLevel = false;                    nreq.parameterPath = "";                    GetParameterNamesResponse nrsp = (GetParameterNamesResponse) cpe.Call (host, nreq, 120);                    System.out.println ("Got "+nrsp.names.size()+" names ");                    fout = new FileOutputStream("c:/tmp/780.names.xml");                    nrsp.writeTo(fout);                    fout.close ();                                        String[] ns = new String[0];                    ns = nrsp.names.keySet().toArray(ns);                    System.out.println ("Got "+ns.length+" names ");                    GetParameterValues vreq = new GetParameterValues("InternetGatewayDevice");                    //GetParameterValues vreq = new GetParameterValues(nrsp.names.keySet().toArray(ns));                    GetParameterValuesResponse vrsp = (GetParameterValuesResponse) cpe.Call (host, vreq, 120);                    System.out.println ("Got "+vrsp.values.size()+" values ");                    fout = new FileOutputStream("c:/tmp/780.xml");                    vrsp.writeTo(fout);                } catch (Exception ex) {                    Logger.getLogger(Configurator.class.getName()).log(Level.SEVERE, null, ex);                } finally {                    try {                        fout.close();                    } catch (IOException ex) {                        Logger.getLogger(Configurator.class.getName()).log(Level.SEVERE, null, ex);                    }                }                */            } else if (lastInform.isEvent(Inform.EVENT_VALUE_CHANGE) || lastInform.isEvent(Inform.EVENT_BOOT)) {                // cache parameter values for browsing            }        }        String scriptName = (transferComplete == null) ? "Default" : "OnTransferComplete";        try {            ScriptLocal sb;            sb = Ejb.lookupScriptBean(scriptName);            Script script = new Script(lastInform, new String(sb.getScript()), host, transferComplete);            script.run();        } catch (FinderException ex) {        }    }    protected void updateConfigThomson() {        Logger logger = Logger.getLogger(getClass().getName());        ConfigurationLocalHome cs = Ejb.lookupConfigurationBean();        try {            String vl = "";            GetParameterValues gpv = new GetParameterValues(new String[]{paramConfigName, paramConfigVersion});            Message m = cpe.Call(host, gpv, 120 * 1000);            if (m instanceof GetParameterValuesResponse) {                GetParameterValuesResponse gpvr = (GetParameterValuesResponse) m;                vl = gpvr.values.get(paramConfigVersion);                String nl = gpvr.values.get(paramConfigName);                logger.log(Level.INFO, "Got cfg version: " + vl + " name=" + nl);                host.setCfgversion(vl);            } else {                logger.log(Level.SEVERE, m.toString());            }            Version vh = new Version(vl);            if (host.getConfigname() != null) {                System.out.println("Find config: hwid=" + host.getHwid() + " name=" + host.getConfigname());                ConfigurationLocal cfg = cs.findByPrimaryKey(new ConfigurationPK(host.getHwid(), host.getConfigname()));                System.out.println("Found config version: " + cfg.getVersion());                Version vc = new Version(cfg.getVersion());                if (!vc.isUptodate(vh)) {                    DownloadConfig(cfg, null);                }            }        } catch (FinderException e) {            host.setCfgupdres(e.getMessage());            host.setCfgupdtime(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis()));            logger.log(Level.WARNING, "Config lookup: " + e.getMessage());        } catch (Exception e) {            logger.log(Level.SEVERE, e.getMessage());        }    }    protected void DownloadConfig(ConfigurationLocal cfg, String key) {        Logger.getLogger(getClass().getName()).log(Level.INFO, "Update config '" + cfg.getName() + "' to " + cfg.getVersion() + " key=" + key);        host.setCfgupdtime(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis()));        String urlConfig = urlServer + "/cfg";        Download d = new Download(KEY_CONFIG + ((key != null) ? ("." + key) : ""), urlConfig, Download.FT_CONFIG);        d.TargetFileName = cfg.getFilename();        d.FileSize = cfg.getConfig().length;        cpe.Call(host, d, timeout);    }    protected void updateConfigByProvisioningCode() {        Logger logger = Logger.getLogger(getClass().getName());        ConfigurationLocalHome cs = Ejb.lookupConfigurationBean();        try {            String cfgname = host.getConfigname();            if (cfgname != null) {                ConfigurationLocal cfg = cs.findByPrimaryKey(new ConfigurationPK(host.getHwid(), host.getConfigname()));                String version = cfg.getVersion();                if (version == null) {                    version = "";                }                System.out.println("ProvisioningCode=" + lastInform.getProvisiongCode());                if (!version.equals(lastInform.getProvisiongCode())) {                    DownloadConfig(cfg, getProvisioningCode(cfgname, version));                }            }        } catch (FinderException e) {            host.setCfgupdres(e.getMessage());            host.setCfgupdtime(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis()));            logger.log(Level.WARNING, "Config lookup: " + e.getMessage());        }    }    protected void updateSoftware() {        Logger logger = Logger.getLogger(getClass().getName());        SoftwareLocalHome sh = Ejb.lookupSoftwareBean();        String vl = lastInform.getSoftwareVersion();        Version CurrentVersion = new Version(vl);        try {            //String hw = lastInform.getHardwareVersion();            //Collection clc = sh.findByHardware(hw);            //Collection clc = sh.findByHardware((Integer)host.getModel().getId());            //Iterator<SoftwareLocal> itSoftware = host.getModel().getFirmware().iterator();//            Iterator<SoftwareLocal> itSoftware = sh.findByHardware((Integer)host.getModel().getId()).iterator();            Iterator<SoftwareLocal> itSoftware = sh.findByHardware(host.getHwid()).iterator();            SoftwareLocal swUpdate = null;            while (itSoftware.hasNext()) {                SoftwareLocal sw = (SoftwareLocal) itSoftware.next();                System.out.println("v=" + sw.getVersion());                Version v2 = new Version(sw.getVersion());                if (!v2.isUptodate(CurrentVersion)) {                    Version v = null;                    if (swUpdate != null) {                        if (!(v = new Version(swUpdate.getVersion())).isUptodate(v2)) {                            swUpdate = sw;                        //System.out.println ("Yet newer soft found");                        }                    } else {                        //System.out.println ("Update software");                        swUpdate = sw;                    }                }            }            //System.out.println ("swUpdate="+swUpdate);            if (swUpdate != null) {                logger.log(Level.INFO, "Update software to " + swUpdate.getVersion() + /*" hw=" + swUpdate.getHardware() +*/ " size=" + swUpdate.getSize());                host.setSfwupdtime(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis()));                String url = urlServer + "/firmware/" + swUpdate.getFilename();                File f = new File(fwpath + swUpdate.getFilename());                Download d = new Download(KEY_SOFTWARE, url, Download.FT_FIRMWARE);//                    d.TargetFileName = swUpdate.getFileName ();                d.FileSize = swUpdate.getSize();                d.FileSize = f.length();                logger.log(Level.INFO, "Update software to " + swUpdate.getVersion() + /*" hw=" + swUpdate.getHardware() + */ " size=" + d.FileSize + " url=" + url);                cpe.Call(host, d, timeout);            }        } catch (FinderException e) {            logger.log(Level.WARNING, "Software lookup: " + e.getMessage());//                ex.printStackTrace();        }    }    public static String getProvisioningCode(String name, String version) {//        return Integer.toString(name.hashCode(), 16) + "." + Integer.toString(version.hashCode(), 16);        return version;    }    private void onTransferComplete() {        String result = (transferComplete.FaultCode != 0) ? transferComplete.FaultCode + ": " + transferComplete.FaultString : "OK";        if (transferComplete.CommandKey.startsWith(KEY_CONFIG)) {            host.setCfgupdres(result);        /*        if (transferComplete.FaultCode == 0) {        String pc[] = transferComplete.CommandKey.split("\\.");        if (pc.length == 3) {        SetParameterValues spv = new SetParameterValues();        String code = pc[1] + "." + pc[2];        spv.AddValue(lastInform.getRoot() + ".DeviceInfo.ProvisioningCode", code);        cpe.Call(host, spv, timeout);        }        }         */        } else if (transferComplete.CommandKey.equals(KEY_SOFTWARE)) {            host.setSfwupdres(result);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -