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

📄 defaultusmagent.java

📁 snmp zip 包开发snmp协议
💻 JAVA
字号:
// NAME//      $RCSfile: DefaultUsmAgent.java,v $// DESCRIPTION//      [given below in javadoc format]// DELTA//      $Revision: 3.9 $// CREATED//      $Date: 2006/03/23 14:54:10 $// COPYRIGHT//      Westhawk Ltd// TO DO///* * Copyright (C) 2001 - 2006 by Westhawk Ltd * <a href="www.westhawk.co.uk">www.westhawk.co.uk</a> * * Permission to use, copy, modify, and distribute this software * for any purpose and without fee is hereby granted, provided * that the above copyright notices appear in all copies and that * both the copyright notice and this permission notice appear in * supporting documentation. * This software is provided "as is" without express or implied * warranty. * author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a> */package uk.co.westhawk.snmp.stack;import uk.co.westhawk.snmp.beans.UsmDiscoveryBean;/** * This implementation of UsmAgent tries to discover the parameters by * doing the default USM discovery process on localhost.  * * <p> * Note that it is not guaranteed that the agent will allow discovery  * by itself. Also, if the SNMP agent reboots while the stack is * running, it will not pick up the new boots and time. * </p> * * <p> * Users are advised and encouraged to provide a better, more accurate * implementation of UsmAgent. * </p> * * <p> * See <a href="http://www.ietf.org/rfc/rfc3414.txt">SNMP-USER-BASED-SM-MIB</a>. * </p> * @see SnmpContextv3 * * @author <a href="mailto:snmp@westhawk.co.uk">Birgit Arkesteijn</a> * @version $Revision: 3.9 $ $Date: 2006/03/23 14:54:10 $ */public class DefaultUsmAgent implements UsmAgent{    static final String version_id =        "@(#)$Id: DefaultUsmAgent.java,v 3.9 2006/03/23 14:54:10 birgit Exp $ Copyright Westhawk Ltd";      /**       * The default name of the local host, <em>localhost</em>.       */      public final static String LOCAL_HOST = "localhost";      /**       * The default port number of the local host, <em>161</em>.       */      public final static int LOCAL_PORT = 161;      private SnmpContextv3Basis context;      private String hostname;      private String hostaddress;      private int port;public DefaultUsmAgent(){    try    {        setAgentName(LOCAL_HOST);    }    catch (java.net.UnknownHostException exc)    {        hostname = LOCAL_HOST;        hostaddress = "127.0.0.1";    }    setAgentPort(LOCAL_PORT);}/** * Returns the authoritative SNMP Engine ID. If the discovery failed, * <em>null</em> will be returned. * * @return The Engine ID */public String getSnmpEngineId(){    TimeWindow tWindow = TimeWindow.getCurrent();    String engineId = tWindow.getSnmpEngineId(hostaddress, port);    return engineId;}/** * Returns the authoritative Engine Boots. If the discovery failed, * <em>1</em> will be returned. * * @return The Engine Boots */public int getSnmpEngineBoots(){    int boots = 1;    TimeWindowNode node = null;    TimeWindow tWindow = TimeWindow.getCurrent();    String engineId = tWindow.getSnmpEngineId(hostaddress, port);    if (engineId != null)    {        node = tWindow.getTimeLine(engineId);    }    if (node != null)    {        boots = node.getSnmpEngineBoots();    }    return boots;}/** * Returns the authoritative Engine Time. If the discovery failed, * <em>1</em> will be returned. * * @return The Engine Time */public int getSnmpEngineTime(){    int time = 1;    TimeWindowNode node = null;    TimeWindow tWindow = TimeWindow.getCurrent();    String engineId = tWindow.getSnmpEngineId(hostaddress, port);    if (engineId != null)    {        node = tWindow.getTimeLine(engineId);    }    if (node != null)    {        time = node.getSnmpEngineTime();    }    return time;}/** * Sets the SNMP context. It will do a discovery if needed. */public void setSnmpContext(SnmpContextv3Basis c) {    context = c;    try    {        discoverIfNeeded();    }    catch (PduException exc)    {        if (AsnObject.debug > 4)        {            System.out.println(getClass().getName() + ".setSnmpContext(): "                + exc.getMessage());         }    }    catch (java.io.IOException exc)    {        if (AsnObject.debug > 4)        {            System.out.println(getClass().getName() + ".setSnmpContext(): "                + exc.getMessage());         }    }}/** * Sets my own hostname, i.e. the name of the agent or authoritative * engine. By default <em>localhost</em> is used. * Sets the hostaddress as well, using java.net.InetAddress. * * @see #LOCAL_HOST * @exception java.net.UnknownHostException Thrown when java.net.InetAddress cannot * resolve the name */public void setAgentName(String host)throws java.net.UnknownHostException{    hostname = host;    java.net.InetAddress ipAddr = java.net.InetAddress.getByName(hostname);    hostaddress = ipAddr.getHostAddress();}/** * Sets my own port number, i.e. the port number of the agent  * or authoritative engine. By default <em>161</em> is used. * * @see #LOCAL_PORT */public void setAgentPort(int p){    port = p;}/** * This discovers the USM timeliness of hostname and port as set by * setAgentName() and setAgentPort(), but with all the other details * taken from the SNMPv3 context. * * @see #setAgentName * @see #setAgentPort */void discoverIfNeeded()throws java.io.IOException, PduException{    uk.co.westhawk.snmp.beans.UsmDiscoveryBean discBean = null;    boolean isNeeded = false;    TimeWindow tWindow = TimeWindow.getCurrent();    String engineId = tWindow.getSnmpEngineId(hostaddress, port);    if (engineId == null)    {        isNeeded = true;        discBean = new uk.co.westhawk.snmp.beans.UsmDiscoveryBean(hostname,               port, context.getBindAddress(), context.getTypeSocket());    }    if (context.isUseAuthentication())    {        if (isNeeded)        {            discBean.setAuthenticationDetails(context.getUserName(),                context.getUserAuthenticationPassword(),                context.getAuthenticationProtocol());        }        else if (tWindow.isTimeLineKnown(engineId) == false)        {            isNeeded = true;            discBean = new uk.co.westhawk.snmp.beans.UsmDiscoveryBean(                    hostname, port, context.getBindAddress(),                     context.getTypeSocket());            discBean.setAuthenticationDetails(context.getUserName(),                context.getUserAuthenticationPassword(),                context.getAuthenticationProtocol());        }        if (isNeeded && context.isUsePrivacy())        {            discBean.setPrivacyDetails(context.getUserPrivacyPassword());        }    }    if (isNeeded)    {        discBean.startDiscovery();        discBean.freeResources();    }}/** * @since 4_14 */public long getUsmStatsUnknownEngineIDs(){    return 0;}/** * @since 4_14 */public long getUsmStatsNotInTimeWindows(){    return 0;}}

⌨️ 快捷键说明

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