snmpa_conf.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 937 行 · 第 1/2 页
ERL
937 行
"%% e.g. an empty string. However, if Informs are sent, it is essential\n""%% that the value of EngineId matches the value of the target's\n""%% actual snmpEngineID.\n""%% For example\n""%% {\"1.2.3.4 v1\", [1,2,3,4], 162, \n""%% 1500, 3, \"std_inform\", \"otp_v2\", \"\",\n""%% [127,0,0,0], 2048}.\n""%%\n\n", Hdr = header() ++ Comment, write_target_addr_config(Dir, Hdr, Conf).write_target_addr_config(Dir, Hdr, Conf) when is_list(Dir) and is_list(Hdr) and is_list(Conf) -> Verify = fun() -> verify_target_addr_conf(Conf) end, Write = fun(Fd) -> write_target_addr_conf(Fd, Hdr, Conf) end, write_config_file(Dir, "target_addr.conf", Verify, Write).append_target_addr_config(Dir, Conf) when is_list(Dir) and is_list(Conf) -> Verify = fun() -> verify_target_addr_conf(Conf) end, Write = fun(Fd) -> write_target_addr_conf(Fd, Conf) end, append_config_file(Dir, "target_addr.conf", Verify, Write).read_target_addr_config(Dir) -> Verify = fun(Entry) -> verify_target_addr_conf_entry(Entry) end, read_config_file(Dir, "target_addr.conf", Verify). verify_target_addr_conf([]) -> ok;verify_target_addr_conf([H|T]) -> verify_target_addr_conf_entry(H), verify_target_addr_conf(T);verify_target_addr_conf(X) -> error({bad_target_addr_config, X}).verify_target_addr_conf_entry(Entry) -> {ok, _} = snmp_target_mib:check_target_addr(Entry), ok.write_target_addr_conf(Fd, "", Conf) -> write_target_addr_conf(Fd, Conf);write_target_addr_conf(Fd, Hdr, Conf) -> io:format(Fd, "~s~n", [Hdr]), write_target_addr_conf(Fd, Conf).write_target_addr_conf(Fd, Conf) -> Fun = fun(Entry) -> do_write_target_addr_conf(Fd, Entry) end, lists:foreach(Fun, Conf).do_write_target_addr_conf(Fd, {Name, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}) -> io:format(Fd, "{\"~s\", ~w, ~w, ~w, ~w, \"~s\", \"~s\", \"~s\", ~w, ~w}.~n", [Name, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize]);do_write_target_addr_conf(_Fd, Crap) -> error({bad_target_addr_config, Crap}).%%%% ------ target_params.conf ------%%target_params_entry(Name, Vsn) -> SecName = "initial", SecLevel = noAuthNoPriv, target_params_entry(Name, Vsn, SecName, SecLevel).target_params_entry(Name, Vsn, SecName, SecLevel) -> MPModel = if Vsn == v1 -> v1; Vsn == v2 -> v2c; Vsn == v3 -> v3 end, SecModel = if Vsn == v1 -> v1; Vsn == v2 -> v2c; Vsn == v3 -> usm end, target_params_entry(Name, MPModel, SecModel, SecName, SecLevel).target_params_entry(Name, MPModel, SecModel, SecName, SecLevel) -> {Name, MPModel, SecModel, SecName, SecLevel}. write_target_params_config(Dir, Conf) -> Comment ="%% This file defines the target parameters.\n""%% The data is inserted into the snmpTargetParamsTable defined\n""%% in SNMP-TARGET-MIB.\n""%% Each row is a 5-tuple:\n""%% {Name, MPModel, SecurityModel, SecurityName, SecurityLevel}.\n""%% For example\n""%% {\"target_v3\", v3, usm, \"\", noAuthNoPriv}.\n""%%\n\n", Hdr = header() ++ Comment, write_target_params_config(Dir, Hdr, Conf).write_target_params_config(Dir, Hdr, Conf) when is_list(Dir) and is_list(Hdr) and is_list(Conf) -> Verify = fun() -> verify_target_params_conf(Conf) end, Write = fun(Fd) -> write_target_params_conf(Fd, Hdr, Conf) end, write_config_file(Dir, "target_params.conf", Verify, Write).append_target_params_config(Dir, Conf) when is_list(Dir) and is_list(Conf) -> Verify = fun() -> verify_target_params_conf(Conf) end, Write = fun(Fd) -> write_target_params_conf(Fd, Conf) end, append_config_file(Dir, "target_params.conf", Verify, Write).read_target_params_config(Dir) -> Verify = fun(Entry) -> verify_target_params_conf_entry(Entry) end, read_config_file(Dir, "target_params.conf", Verify).verify_target_params_conf([]) -> ok;verify_target_params_conf([H|T]) -> verify_target_params_conf_entry(H), verify_target_params_conf(T);verify_target_params_conf(X) -> error({bad_target_params_config, X}).verify_target_params_conf_entry(Entry) -> {ok, _} = snmp_target_mib:check_target_params(Entry), ok.write_target_params_conf(Fd, "", Conf) -> write_target_params_conf(Fd, Conf);write_target_params_conf(Fd, Hdr, Conf) -> io:format(Fd, "~s~n", [Hdr]), write_target_params_conf(Fd, Conf).write_target_params_conf(Fd, Conf) -> Fun = fun(Entry) -> do_write_target_params_conf(Fd, Entry) end, lists:foreach(Fun, Conf).do_write_target_params_conf(Fd, {Name, MpModel, SecModel, SecName, SecLevel}) -> io:format(Fd, "{\"~s\", ~w, ~w, \"~s\", ~w}.~n", [Name, MpModel, SecModel, SecName, SecLevel]);do_write_target_params_conf(_Fd, Crap) -> error({bad_target_params_config, Crap}).%%%% ------ notify.conf ------%%notify_entry(Name, Tag, Type) -> {Name, Tag, Type}.write_notify_config(Dir, Conf) -> Comment ="%% This file defines the notification parameters.\n""%% The data is inserted into the snmpNotifyTable defined\n""%% in SNMP-NOTIFICATION-MIB.\n""%% The Name is used as CommunityString for v1 and v2c.\n""%% 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, write_notify_config(Dir, Hdr, Conf).write_notify_config(Dir, Hdr, Conf) when is_list(Dir) and is_list(Hdr) and is_list(Conf) -> Verify = fun() -> verify_notify_conf(Conf) end, Write = fun(Fd) -> write_notify_conf(Fd, Hdr, Conf) end, write_config_file(Dir, "notify.conf", Verify, Write).append_notify_config(Dir, Conf) when is_list(Dir) and is_list(Conf) -> Verify = fun() -> verify_notify_conf(Conf) end, Write = fun(Fd) -> write_notify_conf(Fd, Conf) end, append_config_file(Dir, "notify.conf", Verify, Write).read_notify_config(Dir) -> Verify = fun(Entry) -> verify_notify_conf_entry(Entry) end, read_config_file(Dir, "notify.conf", Verify).verify_notify_conf([]) -> ok;verify_notify_conf([H|T]) -> verify_notify_conf_entry(H), verify_notify_conf(T);verify_notify_conf(X) -> error({bad_notify_config, X}).verify_notify_conf_entry(Entry) -> {ok, _} = snmp_notification_mib:check_notify(Entry), ok.write_notify_conf(Fd, "", Conf) -> write_notify_conf(Fd, Conf);write_notify_conf(Fd, Hdr, Conf) -> io:format(Fd, "~s~n", [Hdr]), write_notify_conf(Fd, Conf).write_notify_conf(Fd, Conf) -> Fun = fun(Entry) -> do_write_notify_conf(Fd, Entry) end, lists:foreach(Fun, Conf).do_write_notify_conf(Fd, {Name, Tag, Type}) -> io:format(Fd, "{\"~s\", \"~s\", ~w}.~n", [Name, Tag, Type]);do_write_notify_conf(_Fd, Crap) -> error({bad_notify_config, Crap}).%%%% ------ usm.conf ------%%usm_entry(EngineID) -> UserName = "initial", SecName = "initial", Clone = zeroDotZero, AuthP = usmNoAuthProtocol, AuthKeyC = "", OwnAuthKeyC = "", PrivP = usmNoPrivProtocol, PrivKeyC = "", OwnPrivKeyC = "", Public = "", AuthKey = "", PrivKey = "", usm_entry(EngineID, UserName, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC, PrivP, PrivKeyC, OwnPrivKeyC, Public, AuthKey, PrivKey).usm_entry(EngineID, UserName, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC, PrivP, PrivKeyC, OwnPrivKeyC, Public, AuthKey, PrivKey) -> {EngineID, UserName, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC, PrivP, PrivKeyC, OwnPrivKeyC, Public, AuthKey, PrivKey}. write_usm_config(Dir, Conf) -> 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 13-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, write_usm_config(Dir, Hdr, Conf).write_usm_config(Dir, Hdr, Conf) when is_list(Dir) and is_list(Hdr) and is_list(Conf) -> Verify = fun() -> verify_usm_conf(Conf) end, Write = fun(Fd) -> write_usm_conf(Fd, Hdr, Conf) end, write_config_file(Dir, "usm.conf", Verify, Write).append_usm_config(Dir, Conf) when is_list(Dir) and is_list(Conf) -> Verify = fun() -> verify_usm_conf(Conf) end, Write = fun(Fd) -> write_usm_conf(Fd, Conf) end, append_config_file(Dir, "usm.conf", Verify, Write).read_usm_config(Dir) -> Verify = fun(Entry) -> verify_usm_conf_entry(Entry) end, read_config_file(Dir, "usm.conf", Verify).verify_usm_conf([]) -> ok;verify_usm_conf([H|T]) -> verify_usm_conf_entry(H), verify_usm_conf(T);verify_usm_conf(X) -> error({bad_usm_conf, X}).verify_usm_conf_entry(Entry) -> {ok, _} = snmp_user_based_sm_mib:check_usm(Entry), ok.write_usm_conf(Fd, "", Conf) -> write_usm_conf(Fd, Conf);write_usm_conf(Fd, Hdr, Conf) -> io:format(Fd, "~s~n", [Hdr]), write_usm_conf(Fd, Conf).write_usm_conf(Fd, Conf) -> Fun = fun(Entry) -> do_write_usm_conf(Fd, Entry) end, lists:foreach(Fun, Conf).do_write_usm_conf(Fd, {EngineID, UserName, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC, PrivP, PrivKeyC, OwnPrivKeyC, Public, AuthKey, PrivKey}) -> io:format(Fd, "{", []), io:format(Fd, "\"~s\", ", [EngineID]), io:format(Fd, "\"~s\", ", [UserName]), io:format(Fd, "\"~s\", ", [SecName]), io:format(Fd, "~w, ", [Clone]), io:format(Fd, "~w, ", [AuthP]), do_write_usm2(Fd, AuthKeyC, ", "), do_write_usm2(Fd, OwnAuthKeyC, ", "), io:format(Fd, "~w, ", [PrivP]), do_write_usm2(Fd, PrivKeyC, ", "), do_write_usm2(Fd, OwnPrivKeyC, ", "), do_write_usm2(Fd, Public, ", "), do_write_usm2(Fd, AuthKey, ", "), do_write_usm2(Fd, PrivKey, ""), io:format(Fd, "}.~n", []);do_write_usm_conf(_Fd, Crap) -> error({bad_usm_config, Crap}).do_write_usm2(Fd, "", P) -> io:format(Fd, "\"\"~s", [P]);do_write_usm2(Fd, X, P) -> io:format(Fd, "~w~s", [X, P]).%%%% ------ vacm.conf ------%%vacm_s2g_entry(SecModel, SecName, GroupName) -> {vacmSecurityToGroup, SecModel, SecName, GroupName}.vacm_acc_entry(GroupName, Prefix, SecModel, SecLevel, Match, RV, WV, NV) -> {vacmAccess, GroupName, Prefix, SecModel, SecLevel, Match, RV, WV, NV}.vacm_vtf_entry(ViewIndex, ViewSubtree) -> vacm_vtf_entry(ViewIndex, ViewSubtree, included, null).vacm_vtf_entry(ViewIndex, ViewSubtree, ViewStatus, ViewMask) -> {vacmViewTreeFamily, ViewIndex, ViewSubtree, ViewStatus, ViewMask}.write_vacm_config(Dir, Conf) -> 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 = header() ++ Comment, write_vacm_config(Dir, Hdr, Conf).write_vacm_config(Dir, Hdr, Conf) when is_list(Dir) and is_list(Hdr) and is_list(Conf) -> Verify = fun() -> verify_vacm_conf(Conf) end, Write = fun(Fd) -> write_vacm_conf(Fd, Hdr, Conf) end, write_config_file(Dir, "vacm.conf", Verify, Write).append_vacm_config(Dir, Conf) when is_list(Dir) and is_list(Conf) -> Verify = fun() -> verify_vacm_conf(Conf) end, Write = fun(Fd) -> write_vacm_conf(Fd, Conf) end, append_config_file(Dir, "vacm.conf", Verify, Write).read_vacm_config(Dir) -> Verify = fun(Entry) -> verify_vacm_conf_entry(Entry) end, read_config_file(Dir, "vacm.conf", Verify).verify_vacm_conf([]) -> ok;verify_vacm_conf([H|T]) -> verify_vacm_conf_entry(H), verify_vacm_conf(T);verify_vacm_conf(X) -> error({bad_vacm_conf, X}).verify_vacm_conf_entry(Entry) -> {ok, _} = snmp_view_based_acm_mib:check_vacm(Entry), ok.write_vacm_conf(Fd, "", Conf) -> write_vacm_conf(Fd, Conf);write_vacm_conf(Fd, Hdr, Conf) -> io:format(Fd, "~s~n", [Hdr]), write_vacm_conf(Fd, Conf).write_vacm_conf(Fd, Conf) -> Fun = fun(Entry) -> do_write_vacm_conf(Fd, Entry) end, lists:foreach(Fun, Conf).do_write_vacm_conf(Fd, {vacmSecurityToGroup, SecModel, SecName, GroupName}) -> io:format(Fd, "{vacmSecurityToGroup, ~w, \"~s\", \"~s\"}.~n", [SecModel, SecName, GroupName]);do_write_vacm_conf(Fd, {vacmAccess, GroupName, Prefix, SecModel, SecLevel, Match, RV, WV, NV}) -> io:format(Fd, "{vacmAccess, \"~s\", \"~s\", ~w, ~w, ~w, " "\"~s\", \"~s\", \"~s\"}.~n", [GroupName, Prefix, SecModel, SecLevel, Match, RV, WV, NV]);do_write_vacm_conf(Fd, {vacmViewTreeFamily, ViewIndex, ViewSubtree, ViewStatus, ViewMask}) -> io:format(Fd, "{vacmViewTreeFamily, \"~s\", ~w, ~w, ~w}.~n", [ViewIndex, ViewSubtree, ViewStatus, ViewMask]);do_write_vacm_conf(_Fd, Crap) -> error({bad_vacm_config, Crap}).%% ---- config file wrapper functions ----write_config_file(Dir, File, Verify, Write) -> snmp_config:write_config_file(Dir, File, Verify, Write).append_config_file(Dir, File, Verify, Write) -> snmp_config:append_config_file(Dir, File, Verify, Write).read_config_file(Dir, File, Verify) -> snmp_config:read_config_file(Dir, File, Verify).%% ---- config file utility functions ----header() -> {Y,Mo,D} = date(), {H,Mi,S} = time(), io_lib:format("%% This file was generated by " "~w (version-~s) ~w-~2.2.0w-~2.2.0w " "~2.2.0w:~2.2.0w:~2.2.0w\n", [?MODULE, ?version, Y, Mo, D, H, Mi, S]).error(R) -> throw({error, R}).
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?