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 + -
显示快捷键?