snmpa_conf.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 937 行 · 第 1/2 页

ERL
937
字号
%% ``The contents of this file are subject to the Erlang Public License,%% Version 1.1, (the "License"); you may not use this file except in%% compliance with the License. You should have received a copy of the%% Erlang Public License along with this software. If not, it can be%% retrieved via the world wide web at http://www.erlang.org/.%% %% Software distributed under the License is distributed on an "AS IS"%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See%% the License for the specific language governing rights and limitations%% under the License.%% %% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings%% AB. All Rights Reserved.''%% %%     $Id$%%-module(snmpa_conf).-export([	 %% agent.conf	 agent_entry/2,	 write_agent_config/2, write_agent_config/3, 	 append_agent_config/2, 	 read_agent_config/1,	 	 %% context.conf	 context_entry/1, 	 write_context_config/2, write_context_config/3, 	 append_context_config/2, 	 read_context_config/1, 	 %% community.conf	 community_entry/1, community_entry/5, 	 write_community_config/2, write_community_config/3, 	 append_community_config/2, 	 read_community_config/1, 	 	 %% standard.conf	 standard_entry/2,  	 write_standard_config/2, write_standard_config/3,  	 append_standard_config/2, 	 read_standard_config/1, 	 %% target_addr.conf	 target_addr_entry/5, target_addr_entry/6, 	 target_addr_entry/8, target_addr_entry/10, 	 write_target_addr_config/2, write_target_addr_config/3, 	 append_target_addr_config/2, 	 read_target_addr_config/1, 	 %% target_params.conf	 target_params_entry/2, target_params_entry/4, target_params_entry/5, 	 write_target_params_config/2, write_target_params_config/3, 	 append_target_params_config/2, 	 read_target_params_config/1, 	 %% xyz.conf	 notify_entry/3, 	 write_notify_config/2, write_notify_config/3, 	 append_notify_config/2, 	 read_notify_config/1, 	 %% xyz.conf	 usm_entry/1, usm_entry/13, 	 write_usm_config/2, write_usm_config/3, 	 append_usm_config/2, 	 read_usm_config/1, 	 %% xyz.conf	 vacm_s2g_entry/3, 	 vacm_acc_entry/8, 	 vacm_vtf_entry/2, vacm_vtf_entry/4, 	 write_vacm_config/2, write_vacm_config/3, 	 append_vacm_config/2,  	 read_vacm_config/1	]).%%%% ------ agent.conf ------%%agent_entry(Tag, Val) ->    {Tag, Val}.write_agent_config(Dir, Conf) ->    Comment = "%% This file defines the Agent local configuration info\n""%% The data is inserted into the snmpEngine* variables defined\n""%% in SNMP-FRAMEWORK-MIB, and the intAgent* variables defined\n""%% in OTP-SNMPEA-MIB.\n""%% Each row is a 2-tuple:\n""%% {AgentVariable, Value}.\n""%% For example\n""%% {intAgentUDPPort, 4000}.\n""%% The ip address for the agent is sent as id in traps.\n""%% {intAgentIpAddress, [127,42,17,5]}.\n""%% {snmpEngineID, \"agentEngine\"}.\n""%% {snmpEngineMaxMessageSize, 484}.\n""%%\n\n",    Hdr = header() ++ Comment,     write_agent_config(Dir, Hdr, Conf).write_agent_config(Dir, Hdr, Conf)   when is_list(Dir) and is_list(Hdr) and is_list(Conf) ->    Verify = fun()   -> verify_agent_conf(Conf)          end,    Write  = fun(Fd) -> write_agent_conf(Fd, Hdr, Conf)  end,    write_config_file(Dir, "agent.conf", Verify, Write).    append_agent_config(Dir, Conf)   when is_list(Dir) and is_list(Conf) ->    Verify = fun()   -> verify_agent_conf(Conf)          end,    Write  = fun(Fd) -> write_agent_conf(Fd, Conf)  end,    append_config_file(Dir, "agent.conf", Verify, Write).    read_agent_config(Dir) ->    Verify = fun(Entry) -> verify_agent_conf_entry(Entry) end,    read_config_file(Dir, "agent.conf", Verify).    verify_agent_conf([]) ->    ok;verify_agent_conf([H|T]) ->    verify_agent_conf_entry(H),    verify_agent_conf(T);verify_agent_conf(X) ->    error({bad_agent_config, X}).verify_agent_conf_entry(Entry) ->    ok = snmp_framework_mib:check_agent(Entry),    ok.write_agent_conf(Fd, "", Conf) ->    write_agent_conf(Fd, Conf);write_agent_conf(Fd, Hdr, Conf) ->    io:format(Fd, "~s~n", [Hdr]),    write_agent_conf(Fd, Conf).write_agent_conf(_Fd, []) ->    ok;write_agent_conf(Fd, [H|T]) ->    do_write_agent_conf(Fd, H),    write_agent_conf(Fd, T).do_write_agent_conf(Fd, {intAgentIpAddress = Tag, Val}) ->    io:format(Fd, "{~w, ~w}.~n", [Tag, Val]);do_write_agent_conf(Fd, {intAgentUDPPort = Tag, Val} ) ->    io:format(Fd, "{~w, ~w}.~n", [Tag, Val]);do_write_agent_conf(Fd, {intAgentMaxPacketSize = Tag, Val} ) ->    io:format(Fd, "{~w, ~w}.~n", [Tag, Val]);do_write_agent_conf(Fd, {snmpEngineMaxMessageSize = Tag, Val} ) ->    io:format(Fd, "{~w, ~w}.~n", [Tag, Val]);do_write_agent_conf(Fd, {snmpEngineID = Tag, Val} ) ->    io:format(Fd, "{~w, \"~s\"}.~n", [Tag, Val]);do_write_agent_conf(_Fd, Crap) ->    error({bad_agent_config, Crap}).%%%% ------ context.conf ------%%context_entry(Ctx) ->    Ctx.write_context_config(Dir, Conf) ->    Comment ="%% This file defines the contexts known to the agent.\n""%% The data is inserted into the vacmContextTable defined\n""%% in SNMP-VIEW-BASED-ACM-MIB.\n""%% Each row is a string:\n""%% ContextName.\n""%%\n""%% The empty string is the default context.\n""%% For example\n""%% \"bridge1\".\n""%% \"bridge2\".\n""%%\n\n",    Hdr = header() ++ Comment,    write_context_config(Dir, Hdr, Conf).write_context_config(Dir, Hdr, Conf)   when is_list(Dir) and is_list(Hdr) and is_list(Conf) ->    Verify = fun()   -> verify_context_conf(Conf)         end,    Write  = fun(Fd) -> write_context_conf(Fd, Hdr, Conf) end,    write_config_file(Dir, "context.conf", Verify, Write).    append_context_config(Dir, Conf)   when is_list(Dir) and is_list(Conf) ->    Verify = fun()   -> verify_context_conf(Conf)         end,    Write  = fun(Fd) -> write_context_conf(Fd, Conf) end,    append_config_file(Dir, "context.conf", Verify, Write).    read_context_config(Dir) ->    Verify = fun(Entry) -> verify_context_conf_entry(Entry) end,    read_config_file(Dir, "context.conf", Verify).    verify_context_conf([]) ->    ok;verify_context_conf([H|T]) ->    verify_context_conf_entry(H),    verify_context_conf(T);verify_context_conf(X) ->    error({error_context_config, X}).verify_context_conf_entry(Context) ->    {ok, _} = snmp_framework_mib:check_context(Context),    ok.write_context_conf(Fd, "", Conf) ->    write_context_conf(Fd, Conf);write_context_conf(Fd, Hdr, Conf) ->    io:format(Fd, "~s~n", [Hdr]),    write_context_conf(Fd, Conf).write_context_conf(_Fd, []) ->    ok;write_context_conf(Fd, [H|T]) when is_list(H) ->    io:format(Fd, "\"~s\".~n", [H]),    write_context_conf(Fd, T);write_context_conf(_Fd, X) ->    error({invalid_context_config, X}).%%%% ------ community.conf ------%%community_entry(CommIndex) when CommIndex == "public" ->    CommName     = CommIndex,    SecName      = "initial",    CtxName      = "",    TransportTag = "",    community_entry(CommIndex, CommName, SecName, CtxName, TransportTag);community_entry(CommIndex) when CommIndex == "all-rights" ->    CommName     = CommIndex,    SecName      = CommIndex,    CtxName      = "",    TransportTag = "",    community_entry(CommIndex, CommName, SecName, CtxName, TransportTag).community_entry(CommIndex, CommName, SecName, CtxName, TransportTag) ->    {CommIndex, CommName, SecName, CtxName, TransportTag}.write_community_config(Dir, Conf) ->    Comment ="%% This file defines the community info which maps to VACM parameters.\n""%% The data is inserted into the snmpCommunityTable defined\n""%% in SNMP-COMMUNITY-MIB.\n""%% Each row is a 5-tuple:\n""%% {CommunityIndex, CommunityName, SecurityName, ContextName, TransportTag}.\n""%% For example\n""%% {\"1\", \"public\", \"initial\", \"\", \"\"}.\n""%% {\"2\", \"secret\", \"secret_name\", \"\", \"tag\"}.\n""%% {\"3\", \"bridge1\", \"initial\", \"bridge1\", \"\"}.\n""%%\n\n",    Hdr = header() ++ Comment,    write_community_config(Dir, Hdr, Conf).write_community_config(Dir, Hdr, Conf)   when is_list(Dir) and is_list(Hdr) and is_list(Conf) ->    Verify = fun()   -> verify_community_conf(Conf)         end,    Write  = fun(Fd) -> write_community_conf(Fd, Hdr, Conf) end,    write_config_file(Dir, "community.conf", Verify, Write).append_community_config(Dir, Conf)   when is_list(Dir) and is_list(Conf) ->    Verify = fun()   -> verify_community_conf(Conf)         end,    Write  = fun(Fd) -> write_community_conf(Fd, Conf) end,    append_config_file(Dir, "community.conf", Verify, Write).read_community_config(Dir) ->    Verify = fun(Entry) -> verify_community_conf_entry(Entry) end,    read_config_file(Dir, "community.conf", Verify).    verify_community_conf([]) ->    ok;verify_community_conf([H|T]) ->    verify_community_conf_entry(H),    verify_community_conf(T);verify_community_conf(X) ->    error({invalid_community_config, X}).verify_community_conf_entry(Context) ->    {ok, _} = snmp_community_mib:check_community(Context),    ok.write_community_conf(Fd, "", Conf) ->    write_community_conf(Fd, Conf);write_community_conf(Fd, Hdr, Conf) ->    io:format(Fd, "~s~n", [Hdr]),    write_community_conf(Fd, Conf).write_community_conf(Fd, Conf) ->    Fun = fun({Idx, Name, SecName, CtxName, TranspTag}) ->		  io:format(Fd, "{\"~s\", \"~s\", \"~s\", \"~s\", \"~s\"}.~n",			    [Idx, Name, SecName, CtxName, TranspTag]);	     (Crap) ->		  error({bad_community_config, Crap})	end,    lists:foreach(Fun, Conf).		%%%% ------ standard.conf ------%%standard_entry(Tag, Val) ->    {Tag, Val}.write_standard_config(Dir, Conf) ->    Comment ="%% This file defines the STANDARD-MIB info.\n""%% Each row is a 2-tuple:\n""%% {StandardVariable, Value}.\n""%% For example\n""%% {sysDescr, \"Erlang SNMP agent\"}.\n""%% {sysObjectID, [1,2,3]}.\n""%% {sysContact, \"{mbj,eklas}@erlang.ericsson.se\"}.\n""%% {sysName, \"test\"}.\n""%% {sysLocation, \"erlang\"}.\n""%% {sysServices, 72}.\n""%% {snmpEnableAuthenTraps, enabled}.\n""%%\n\n",    Hdr = header() ++ Comment,    write_standard_config(Dir, Hdr, Conf).write_standard_config(Dir, Hdr, Conf)   when is_list(Dir) and is_list(Hdr) and is_list(Conf) ->    Verify = fun()   -> verify_standard_conf(Conf)         end,    Write  = fun(Fd) -> write_standard_conf(Fd, Hdr, Conf) end,    write_config_file(Dir, "standard.conf", Verify, Write).append_standard_config(Dir, Conf)   when is_list(Dir) and is_list(Conf) ->    Verify = fun()   -> verify_standard_conf(Conf)    end,    Write  = fun(Fd) -> write_standard_conf(Fd, Conf) end,    append_config_file(Dir, "standard.conf", Verify, Write).read_standard_config(Dir) ->    Verify = fun(Entry) -> verify_standard_conf_entry(Entry) end,    read_config_file(Dir, "standard.conf", Verify).    verify_standard_conf([]) ->    ok;verify_standard_conf([H|T]) ->    verify_standard_conf_entry(H),    verify_standard_conf(T);verify_standard_conf(X) ->    error({bad_standard_config, X}).verify_standard_conf_entry(Std) ->    case snmp_standard_mib:check_standard(Std) of	ok ->	    ok;	{ok, _} ->	    ok    end.write_standard_conf(Fd, "", Conf) ->    write_standard_conf(Fd, Conf);write_standard_conf(Fd, Hdr, Conf) ->    io:format(Fd, "~s~n", [Hdr]),    write_standard_conf(Fd, Conf).write_standard_conf(Fd, Conf) ->     Fun = fun({Tag, Val}) -> do_write_standard_conf(Fd, Tag, Val) end,    lists:foreach(Fun, Conf).		do_write_standard_conf(Fd, sysDescr = Tag, Val) ->    io:format(Fd, "{~w, \"~s\"}.~n", [Tag, Val]);do_write_standard_conf(Fd, sysObjectID = Tag, Val) ->    io:format(Fd, "{~w, ~w}.~n", [Tag, Val]);do_write_standard_conf(Fd, sysContact = Tag,  Val) ->    io:format(Fd, "{~w, \"~s\"}.~n", [Tag, Val]);do_write_standard_conf(Fd, sysName = Tag,     Val) ->    io:format(Fd, "{~w, \"~s\"}.~n", [Tag, Val]);do_write_standard_conf(Fd, sysLocation = Tag, Val) ->    io:format(Fd, "{~w, \"~s\"}.~n", [Tag, Val]);do_write_standard_conf(Fd, sysServices = Tag, Val) ->    io:format(Fd, "{~w, ~w}.~n", [Tag, Val]);do_write_standard_conf(Fd, snmpEnableAuthenTraps = Tag, Val) ->    io:format(Fd, "{~w, ~w}.~n", [Tag, Val]);do_write_standard_conf(_Fd, Tag, Val) ->    error({bad_standard_config, {Tag, Val}}).%%%% ------ target_addr.conf ------%%target_addr_entry(Name, 		  Ip, 		  TagList, 		  ParamsName, 		  EngineId) ->    target_addr_entry(Name, Ip, TagList, ParamsName, EngineId, []).target_addr_entry(Name, 		  Ip, 		  TagList, 		  ParamsName, 		  EngineId,		  TMask) ->    target_addr_entry(Name, Ip, 162, TagList, 		      ParamsName, EngineId, TMask, 2048).target_addr_entry(Name, 		  Ip, 		  Udp, 		  TagList, 		  ParamsName, 		  EngineId,		  TMask, 		  MaxMessageSize) ->    target_addr_entry(Name, Ip, Udp, 1500, 3, TagList, 		      ParamsName, EngineId, TMask, MaxMessageSize).target_addr_entry(Name, 		  Ip, 		  Udp, 		  Timeout, 		  RetryCount, 		  TagList, 		  ParamsName, 		  EngineId,		  TMask, 		  MaxMessageSize) ->    {Name,      Ip,      Udp,      Timeout,      RetryCount,      TagList,      ParamsName,      EngineId,      TMask,      MaxMessageSize}.write_target_addr_config(Dir, Conf) ->    Comment = "%% This file defines the target address parameters.\n""%% The data is inserted into the snmpTargetAddrTable defined\n""%% in SNMP-TARGET-MIB, and in the snmpTargetAddrExtTable defined\n""%% in SNMP-COMMUNITY-MIB.\n""%% Each row is a 10-tuple:\n""%% {Name, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId,\n""%%        TMask, MaxMessageSize}.\n""%% The EngineId value is only used if Inform-Requests are sent to this\n""%% target.  If Informs are not sent, this value is ignored, and can be\n"

⌨️ 快捷键说明

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