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