snmp_config.erl

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

ERL
2,125
字号
"%% Each row is a 3-tuple:\n""%% {Name, Tag, Type}.\n""%% For example\n""%% {\"standard trap\", \"std_trap\", trap}.\n""%% {\"standard inform\", \"std_inform\", inform}.\n""%%\n\n",    Hdr = header() ++ Comment,     Conf = [{"stadard_trap", "std_trap", NotifyType}],    write_agent_notify_config(Dir, Hdr, Conf).write_agent_notify_config(Dir, Hdr, Conf) ->    snmpa_conf:write_notify_config(Dir, Hdr, Conf).update_agent_notify_config(Dir, Conf) ->    snmpa_conf:append_notify_config(Dir, Conf).%% %% ------ usm.conf ------%% write_agent_snmp_usm_conf(Dir, Vsns, EngineID, SecType, Passwd) ->     case lists:member(v3, Vsns) of	false -> ok;	true -> write_agent_snmp_usm_conf(Dir, EngineID, SecType, Passwd)    end.write_agent_snmp_usm_conf(Dir, EngineID, SecType, Passwd) ->     Comment = "%% This file defines the security parameters for the user-based\n""%% security model.\n""%% The data is inserted into the usmUserTable defined\n""%% in SNMP-USER-BASED-SM-MIB.\n""%% Each row is a 14-tuple:\n""%% {EngineID, UserName, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC,\n""%%  PrivP, PrivKeyC, OwnPrivKeyC, Public, AuthKey, PrivKey}.\n""%% For example\n""%% {\"agentEngine\", \"initial\", \"initial\", zeroDotZero,\n""%%  usmNoAuthProtocol, \"\", \"\", usmNoPrivProtocol, \"\", \"\", \"\",\n""%%  \"\", \"\"}.\n""%%\n\n",    Hdr = header() ++ Comment,    Conf = write_agent_snmp_usm_conf2(EngineID, SecType, Passwd),    write_agent_usm_config(Dir, Hdr, Conf).write_agent_snmp_usm_conf2(EngineID, none, _Passwd) ->    [{EngineID, "initial", "initial", zeroDotZero,       usmNoAuthProtocol, "", "",       usmNoPrivProtocol, "", "",       "", "", ""}];write_agent_snmp_usm_conf2(EngineID, SecType, Passwd) ->    Secret16 = agent_snmp_mk_secret(md5, Passwd, EngineID),    Secret20 = agent_snmp_mk_secret(sha, Passwd, EngineID),    {PrivProt, PrivSecret} = 	case SecType of	    minimum ->		{usmNoPrivProtocol,    ""};	    {semi, des} ->		{usmDESPrivProtocol,   Secret16};	    {semi, aes} ->		{usmAesCfb128Protocol, Secret16}	end,    [{EngineID, "initial", "initial", zeroDotZero,       usmHMACMD5AuthProtocol, "", "",       PrivProt, "", "",       "", Secret16, PrivSecret},          {EngineID, "templateMD5", "templateMD5", zeroDotZero,       usmHMACMD5AuthProtocol, "", "",       PrivProt, "", "",       "", Secret16, PrivSecret},      {EngineID, "templateSHA", "templateSHA", zeroDotZero,       usmHMACSHAAuthProtocol, "", "",       PrivProt, "", "",       "", Secret20, PrivSecret}].write_agent_usm_config(Dir, Hdr, Conf) ->    snmpa_conf:write_usm_config(Dir, Hdr, Conf).update_agent_usm_config(Dir, Conf) ->    snmpa_conf:append_usm_config(Dir, Conf).%% %% ------ vacm.conf ------%% write_agent_snmp_vacm_conf(Dir, Vsns, SecType) ->    Comment = "%% This file defines the Mib Views.\n""%% The data is inserted into the vacm* tables defined\n""%% in SNMP-VIEW-BASED-ACM-MIB.\n""%% Each row is one of 3 tuples; one for each table in the MIB:\n""%% {vacmSecurityToGroup, SecModel, SecName, GroupName}.\n""%% {vacmAccess, GroupName, Prefix, SecModel, SecLevel, Match, RV, WV, NV}.\n""%% {vacmViewTreeFamily, ViewIndex, ViewSubtree, ViewStatus, ViewMask}.\n""%% For example\n""%% {vacmSecurityToGroup, v2c, \"initial\", \"initial\"}.\n""%% {vacmSecurityToGroup, usm, \"initial\", \"initial\"}.\n""%%  read/notify access to system\n""%% {vacmAccess, \"initial\", \"\", any, noAuthNoPriv, exact,\n""%%              \"system\", \"\", \"system\"}.\n""%% {vacmViewTreeFamily, \"system\", [1,3,6,1,2,1,1], included, null}.\n""%% {vacmViewTreeFamily, \"exmib\", [1,3,6,1,3], included, null}."" % for EX1-MIB\n""%% {vacmViewTreeFamily, \"internet\", [1,3,6,1], included, null}.\n""%%\n\n",    Hdr = lists:flatten(header()) ++ Comment,    Groups = 	lists:foldl(	  fun(V, Acc) ->		  [{vacmSecurityToGroup, vacm_ver(V), 		    "initial",    "initial"},		   {vacmSecurityToGroup, vacm_ver(V), 		    "all-rights", "all-rights"}|		   Acc]	  end, [], Vsns),    Acc = 	[{vacmAccess, "initial", "", any, noAuthNoPriv, exact, 	  "restricted", "", "restricted"}, 	 {vacmAccess, "initial", "", usm, authNoPriv, exact, 	  "internet", "internet", "internet"}, 	 {vacmAccess, "initial", "", usm, authPriv, exact, 	  "internet", "internet", "internet"}, 	 {vacmAccess, "all-rights", "", any, noAuthNoPriv, exact, 	  "internet", "internet", "internet"}],    VTF0 = 	case SecType of	    none ->		[{vacmViewTreeFamily, 		  "restricted", [1,3,6,1], included, null}];	    minimum ->		[{vacmViewTreeFamily, 		  "restricted", [1,3,6,1], included, null}];	    {semi, _} ->		[{vacmViewTreeFamily, 		  "restricted", [1,3,6,1,2,1,1], included, null},		 {vacmViewTreeFamily, 		  "restricted", [1,3,6,1,2,1,11], included, null},		 {vacmViewTreeFamily, 		  "restricted", [1,3,6,1,6,3,10,2,1], included, null},		 {vacmViewTreeFamily, 		  "restricted", [1,3,6,1,6,3,11,2,1], included, null},		 {vacmViewTreeFamily, 		  "restricted", [1,3,6,1,6,3,15,1,1], included, null}]	end,    VTF = VTF0 ++ [{vacmViewTreeFamily,"internet",[1,3,6,1],included,null}],    write_agent_vacm_config(Dir, Hdr, Groups ++ Acc ++ VTF).vacm_ver(v1) -> v1;vacm_ver(v2) -> v2c;vacm_ver(v3) -> usm.     write_agent_vacm_config(Dir, Hdr, Conf) ->    snmpa_conf:write_vacm_config(Dir, Hdr, Conf).update_agent_vacm_config(Dir, Conf) ->    snmpa_conf:append_vacm_config(Dir, Conf).%% %% ----- Manager config files generator functions -----%% write_manager_snmp_files(Dir, IP, Port, MMS, EngineID, 			 Users, Agents, Usms) ->    write_manager_snmp_conf(Dir, IP, Port, MMS, EngineID),    write_manager_snmp_users_conf(Dir, Users),    write_manager_snmp_agents_conf(Dir, Agents),    write_manager_snmp_usm_conf(Dir, Usms),      ok.%% %% ------ manager.conf ------%% write_manager_snmp_conf(Dir, IP, Port, MMS, EngineID) ->     Comment = "%% This file defines the Manager local configuration info\n""%% Each row is a 2-tuple:\n""%% {Variable, Value}.\n""%% For example\n""%% {port,             5000}.\n""%% {address,          [127,42,17,5]}.\n""%% {engine_id,        \"managerEngine\"}.\n""%% {max_message_size, 484}.\n""%%\n\n",    Hdr = header() ++ Comment,    Conf = [{port,             Port},             {address,          IP}, 	    {engine_id,        EngineID}, 	    {max_message_size, MMS}],     write_manager_config(Dir, Hdr, Conf).write_manager_config(Dir, Hdr, Conf) ->    snmpm_conf:write_manager_config(Dir, Hdr, Conf).    update_manager_config(Dir, Conf) ->    snmpm_conf:append_manager_config(Dir, Conf).    %% %% ------ users.conf ------%% write_manager_snmp_users_conf(Dir, Users) ->    Comment = "%% This file defines the users the manager handles\n""%% Each row is a 3-tuple:\n""%% {UserId, UserMod, UserData}.\n""%% For example\n""%% {kalle, kalle_callback_user_mod, \"dummy\"}.\n""%%\n\n",    Hdr = header() ++ Comment,    write_manager_users_config(Dir, Hdr, Users).write_manager_users_config(Dir, Hdr, Users) ->    snmpm_conf:write_users_config(Dir, Hdr, Users).update_manager_users_config(Dir, Users) ->    snmpm_conf:append_users_config(Dir, Users).%% %% ------ agents.conf ------%% write_manager_snmp_agents_conf(Dir, Agents) ->    Comment = "%% This file defines the agents the manager handles\n""%% Each row is a 12-tuple:\n""%% {UserId, \n""%%  TargetName, Comm, Ip, Port, EngineID, Timeout, \n""%%  MaxMessageSize, Version, SecModel, SecName, SecLevel}\n""%%\n\n",    Hdr = header() ++ Comment,     write_manager_agents_config(Dir, Hdr, Agents).write_manager_agents_config(Dir, Hdr, Agents) ->    snmpm_conf:write_agents_config(Dir, Hdr, Agents).update_manager_agents_config(Dir, Agents) ->    snmpm_conf:append_agents_config(Dir, Agents).%% %% ------ usm.conf -----%% write_manager_snmp_usm_conf(Dir, Usms) ->    Comment = "%% This file defines the usm users the manager handles\n""%% Each row is a 6 or 7-tuple:\n""%% {EngineID, UserName, AuthP, AuthKey, PrivP, PrivKey}\n""%% {EngineID, UserName, SecName, AuthP, AuthKey, PrivP, PrivKey}\n""%%\n\n",    Hdr = header() ++ Comment,    write_manager_usm_config(Dir, Hdr, Usms).write_manager_usm_config(Dir, Hdr, Usms) ->    snmpm_conf:write_usm_config(Dir, Hdr, Usms).update_manager_usm_config(Dir, Usms) ->    snmpm_conf:append_usm_config(Dir, Usms).%% %% -------------------------------------------------------------------------%% write_sys_config_file(Dir, Services) ->    {ok, Fid} = file:open(filename:join(Dir,"sys.config"),write),    ok = io:format(Fid, "~s", [header()]),    ok = io:format(Fid, "[{snmp, ~n", []),    ok = io:format(Fid, "  [~n", []),    write_sys_config_file_services(Fid, Services),    ok = io:format(Fid, "  ]~n", []),    ok = io:format(Fid, " }~n", []),    ok = io:format(Fid, "].~n", []),    ok.write_sys_config_file_services(Fid, [Service]) ->    write_sys_config_file_service(Fid, Service),    ok = io:format(Fid, "~n", []),    ok;write_sys_config_file_services(Fid, [Service|Services]) ->    write_sys_config_file_service(Fid, Service),    ok = io:format(Fid, ", ~n", []),    write_sys_config_file_services(Fid, Services).write_sys_config_file_service(Fid, {Service, Opts}) ->    ok = io:format(Fid, "   {~w,~n", [Service]),    ok = io:format(Fid, "    [~n", []),    write_sys_config_file_service_opts(Fid, Service, Opts),    ok = io:format(Fid, "    ]~n", []),    ok = io:format(Fid, "   }", []),    true.write_sys_config_file_service_opts(Fid, agent, Opts) ->    write_sys_config_file_agent_opts(Fid, Opts);write_sys_config_file_service_opts(Fid, manager, Opts) ->    write_sys_config_file_manager_opts(Fid, Opts).write_sys_config_file_agent_opts(Fid, [Opt]) ->    write_sys_config_file_agent_opt(Fid, Opt),    ok = io:format(Fid, "~n", []),    ok;write_sys_config_file_agent_opts(Fid, [Opt|Opts]) ->    write_sys_config_file_agent_opt(Fid, Opt),    ok = io:format(Fid, ", ~n", []),    write_sys_config_file_agent_opts(Fid, Opts).write_sys_config_file_agent_opt(Fid, {mibs, []}) ->    ok = io:format(Fid, "     {mibs, []}", []);write_sys_config_file_agent_opt(Fid, {priority, Prio}) ->    ok = io:format(Fid, "     {priority, ~w}", [Prio]);write_sys_config_file_agent_opt(Fid, {error_report_mod, Mod}) ->    ok = io:format(Fid, "     {error_report_mod, ~w}", [Mod]);write_sys_config_file_agent_opt(Fid, {versions, Vsns}) ->    ok = io:format(Fid, "     {versions, ~w}", [Vsns]);write_sys_config_file_agent_opt(Fid, {multi_threaded, B}) ->    ok = io:format(Fid, "     {multi_threaded, ~w}", [B]);write_sys_config_file_agent_opt(Fid, {config, Opts}) ->    ok = io:format(Fid, "     {config, [", []),    write_sys_config_file_agent_config_opts(Fid, Opts),    ok = io:format(Fid, "}", []);write_sys_config_file_agent_opt(Fid, {db_dir, Dir}) ->    ok = io:format(Fid, "     {db_dir, \"~s\"}", [Dir]);write_sys_config_file_agent_opt(Fid, {mib_storage, ets}) ->    ok = io:format(Fid, "     {mib_storage, ets}", []);write_sys_config_file_agent_opt(Fid, {mib_storage, {dets, Dir}}) ->    ok = io:format(Fid, "     {mib_storage, {dets, \"~s\"}}", [Dir]);write_sys_config_file_agent_opt(Fid, {mib_storage, {dets, Dir, Act}}) ->    ok = io:format(Fid, "     {mib_storage, {dets, \"~s\", ~w}}", 		   [Dir, Act]);write_sys_config_file_agent_opt(Fid, {mib_storage, {mnesia, Nodes}}) ->    ok = io:format(Fid, "     {mib_storage, {mnesia, ~w}}", [Nodes]);write_sys_config_file_agent_opt(Fid, {mib_storage, {mnesia, Nodes, Act}}) ->    ok = io:format(Fid, "     {mib_storage, {mnesia, ~w, ~w}}", 		   [Nodes, Act]);write_sys_config_file_agent_opt(Fid, {target_cache, Opts}) ->    ok = io:format(Fid, "     {target_cache, ~w}", [Opts]);write_sys_config_file_agent_opt(Fid, {local_db, Opts}) ->    ok = io:format(Fid, "     {local_db, ~w}", [Opts]);write_sys_config_file_agent_opt(Fid, {note_store, Opts}) ->    ok = io:format(Fid, "     {note_store, ~w}", [Opts]);write_sys_config_file_agent_opt(Fid, {symbolic_store, Opts}) ->    ok = io:format(Fid, "     {symbolic_store, ~w}", [Opts]);write_sys_config_file_agent_opt(Fid, {agent_type, Type}) ->    ok = io:format(Fid, "     {agent_type, ~w}", [Type]);write_sys_config_file_agent_opt(Fid, {agent_verbosity, Verb}) ->    ok = io:format(Fid, "     {agent_verbosity, ~w}", [Verb]);write_sys_config_file_agent_opt(Fid, {audit_trail_log, Opts}) ->    ok = io:format(Fid, "     {audit_trail_log, [", []),    write_sys_config_file_agent_atl_opts(Fid, Opts),    ok = io:format(Fid, "}", []);write_sys_config_file_agent_opt(Fid, {net_if, Opts}) ->    ok = io:format(Fid, "     {net_if, ~w}", [Opts]);write_sys_config_file_agent_opt(Fid, {mib_server, Opts}) ->    ok = io:format(Fid, "     {mib_server, ~w}", [Opts]);write_sys_config_file_agent_opt(Fid, {Key, Val}) ->    ok = io:format(Fid, "     {~w, ~w}", [Key, Val]).    %% Mandatory option dir, means that this is never empty:write_sys_config_file_agent_config_opts(Fid, [Opt]) ->    write_sys_config_file_agent_config_opt(Fid, Opt),    ok = io:format(Fid, "]", []),    ok;write_sys_config_file_agent_config_opts(Fid, [Opt|Opts]) ->    write_sys_config_file_agent_config_opt(Fid, Opt),    ok = io:format(Fid, ", ", []),    write_sys_config_file_agent_config_opts(Fid, Opts).    write_sys_config_file_agent_config_opt(Fid, {dir, Dir}) ->    ok = io:format(Fid, "{dir, \"~s\"}", [Dir]);write_sys_config_file_agent_config_opt(Fid, {force_load, Bool}) ->    ok = io:format(Fid, "{force_load, ~w}", [Bool]);write_sys_config_file_agent_config_opt(Fid, {verbosity, Verb}) ->    ok = io:format(Fid, "{verbosity, ~w}", [Verb]).%% This is only present if there is atleast one optionwrite_sys_config_file_agent_atl_opts(Fid, [Opt]) ->    write_sys_config_file_agent_atl_opt(Fid, Opt),    ok = io:format(Fid, "]", []),    ok;write_sys_config_file_agent_atl_opts(Fid, [Opt|Opts]) ->    write_sys_config_file_agent_atl_opt(Fid, Opt),    ok = io:format(Fid, ", ", []),    write_sys_config_file_agent_atl_opts(Fid, Opts).    write_sys_config_file_agent_atl_opt(Fid, {dir, Dir}) ->    ok = io:format(Fid, "{dir, \"~s\"}", [Dir]);write_sys_config_file_agent_atl_opt(Fid, {type, Type}) ->    ok = io:format(Fid, "{type, ~w}", [Type]);write_sys_config_file_agent_atl_opt(Fid, {size, Size}) ->    ok = io:format(Fid, "{size, ~w}", [Size]);write_sys_config_file_agent_atl_opt(Fid, {repair, Rep}) ->    ok = io:format(Fid, "{repair, ~w}", [Rep]).write_sys_config_file_manager_opts(Fid, [Opt]) ->    write_sys_config_file_manager_opt(Fid, Opt),    ok = io:format(Fid, "~n", []),    ok;write_sys_config_file_manager_opts(Fid, [Opt|Opts]) ->    write_sys_config_file_manager_opt(Fid, Opt),    ok = io:format(Fid, ", ~n", []),    write_sys_config_file_manager_opts(Fid, Opts).write_sys_config_file_manager_opt(Fid, {mibs, []}) ->    ok = io:format(Fid, "     {mibs, []}", []);write_sys_config_file_manager_opt(Fid, {priority, Prio}) ->    ok = io:format(Fid, "     {priority, ~w}", [Prio]);write_sys_config_file_manager_opt(Fid, {versions, Vsns}) ->    ok = io:format(Fid, "     {versions, ~w}", [Vsns]);write_sys_config_file_manager_opt(Fid, {config, Opts}) ->    ok = io:format(Fid, "     {config, [", []),    write_sys_config_file_manager_co

⌨️ 快捷键说明

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