snmp_config.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 2,125 行 · 第 1/5 页
ERL
2,125 行
if IsAgentDir and IsManagerDir -> "Note that the default directory contains both agent and manager config files"; IsAgentDir -> "Note that the default directory contains agent config files"; IsManagerDir -> "Note that the default directory contains manager config files"; true -> "" end, {DefDir, Warning} end.%% ------------------------------------------------------------------ask_auth_key(_Prefix, usmNoAuthProtocol) -> "";ask_auth_key(Prefix, usmHMACSHAAuthProtocol) -> ask(Prefix ++ " Authentication [sha] key (length 0 or 20)?", "\"\"", fun verify_usm_auth_sha_key/1);ask_auth_key(Prefix, usmHMACMD5AuthProtocol) -> ask(Prefix ++ " Authentication [md5] key (length 0 or 16)?", "\"\"", fun verify_usm_auth_md5_key/1).ask_priv_key(_Prefix, usmNoPrivProtocol) -> "";ask_priv_key(Prefix, usmDESPrivProtocol) -> ask(Prefix ++ " Priv [des] key (length 0 or 16)?", "\"\"", fun verify_usm_priv_des_key/1);ask_priv_key(Prefix, usmAesCfb128Protocol) -> ask(Prefix ++ " Priv [aes] key (length 0 or 16)?", "\"\"", fun verify_usm_priv_aes_key/1).%% ------------------------------------------------------------------verify_yes_or_no("y") -> {ok, yes};verify_yes_or_no("yes") -> {ok, yes};verify_yes_or_no("n") -> {ok, no};verify_yes_or_no("no") -> {ok, no};verify_yes_or_no(YON) -> {error, "invalid yes or no: " ++ YON}.verify_prio("low") -> {ok, low};verify_prio("normal") -> {ok, normal};verify_prio("high") -> {ok, high};verify_prio(Prio) -> {error, "invalid process priority: " ++ Prio}.verify_system_name(Name) -> {ok, Name}.verify_engine_id(Name) -> {ok, Name}.verify_max_message_size(MMS) -> case (catch list_to_integer(MMS)) of I when integer(I), I >= 484 -> {ok, I}; I when integer(I) -> {error, "invalid max message size (must be atleast 484): " ++ MMS}; _ -> {error, "invalid max message size: " ++ MMS} end. verify_port_number(P) -> case (catch list_to_integer(P)) of N when integer(N), N > 0 -> {ok, N}; _ -> {error, "invalid port number: " ++ P} end.verify_versions("1") -> {ok, [v1]};verify_versions("2") -> {ok, [v2]};verify_versions("3") -> {ok, [v3]};verify_versions("1&2") -> {ok, [v1,v2]};verify_versions("1&3") -> {ok, [v1,v3]};verify_versions("2&3") -> {ok, [v2,v3]};verify_versions("1&2&3") -> {ok, [v1,v2,v3]};verify_versions(V) -> {error, "incorrect version(s): " ++ V}.verify_version("1") -> {ok, v1};verify_version("2") -> {ok, v2};verify_version("3") -> {ok, v3};verify_version(V) -> {error, "incorrect version: " ++ V}. verify_passwd(Passwd) when length(Passwd) >= 8 -> {ok, Passwd};verify_passwd(_P) -> {error, "invalid password"}.verify_dir(Dir) -> case filename:pathtype(Dir) of absolute -> case file:read_file_info(Dir) of {ok, #file_info{type = directory}} -> {ok, snmp_misc:ensure_trailing_dir_delimiter(Dir)}; {ok, _FileInfo} -> {error, Dir ++ " is not a directory"}; _ -> {error, "invalid directory: " ++ Dir} end; _E -> {error, "invalid directory (not absolute): " ++ Dir} end. verify_notif_type("trap") -> {ok, trap};verify_notif_type("inform") -> {ok, inform};verify_notif_type(NT) -> {error, "invalid notifcation type: " ++ NT}.verify_sec_type("none") -> {ok, none};verify_sec_type("minimum") -> {ok, minimum};verify_sec_type("semi_des") -> {ok, {semi, des}};verify_sec_type("semi_aes") -> {ok, {semi, aes}};verify_sec_type(ST) -> {error, "invalid security type: " ++ ST}. verify_address(A) -> case (catch snmp_misc:ip(A)) of {ok, IP} -> {ok, tuple_to_list(IP)}; {error, _} -> {error, "invalid address: " ++ A}; _E -> {error, "invalid address: " ++ A} end.verify_mib_storage_type("m") -> {ok, mnesia};verify_mib_storage_type("mnesia") -> {ok, mnesia};verify_mib_storage_type("d") -> {ok, dets};verify_mib_storage_type("dets") -> {ok, dets};verify_mib_storage_type("e") -> {ok, ets};verify_mib_storage_type("ets") -> {ok, ets};verify_mib_storage_type(T) -> {error, "invalid mib storage type: " ++ T}.verify_mib_storage_action("default") -> {ok, default};verify_mib_storage_action("clear") -> {ok, clear};verify_mib_storage_action("keep") -> {ok, keep};verify_mib_storage_action(A) -> {error, "invalid mib storage action: " ++ A}.verify_verbosity("silence") -> {ok, silence};verify_verbosity("info") -> {ok, info};verify_verbosity("log") -> {ok, log};verify_verbosity("debug") -> {ok, debug};verify_verbosity("trace") -> {ok, trace};verify_verbosity(V) -> {error, "invalid verbosity: " ++ V}.verify_dets_repair("true") -> {ok, true};verify_dets_repair("false") -> {ok, false};verify_dets_repair("force") -> {ok, force};verify_dets_repair(R) -> {error, "invalid repair: " ++ R}.verify_dets_auto_save("infinity") -> {ok, infinity};verify_dets_auto_save(I0) -> case (catch list_to_integer(I0)) of I when integer(I), I > 0 -> {ok, I}; _ -> {error, "invalid auto save timeout time: " ++ I0} end.%% I know that this is a little of the edge, but...verify_module(M0) -> case (catch list_to_atom(M0)) of M when atom(M) -> {ok, M}; _ -> {error, "invalid module: " ++ M0} end. verify_agent_type("master") -> {ok, master};verify_agent_type("sub") -> {ok, sub};verify_agent_type(AT) -> {error, "invalid agent type: " ++ AT}.verify_bool("true") -> {ok, true};verify_bool("false") -> {ok, false};verify_bool(B) -> {error, "invalid boolean: " ++ B}.verify_timeout(T0) -> case (catch list_to_integer(T0)) of T when integer(T), T > 0 -> {ok, T}; _ -> {error, "invalid timeout time: '" ++ T0 ++ "'"} end.verify_retransmission_timeout("infinity") -> {ok, infinity};verify_retransmission_timeout([${|R] = Timer) -> case lists:reverse(R) of [$}|R2] -> case string:tokens(lists:reverse(R2), ", ") of [WaitForStr, FactorStr, IncrStr, RetryStr] -> WaitFor = incr_timer_value(WaitForStr, 1), Factor = incr_timer_value(FactorStr, 1), Incr = incr_timer_value(IncrStr, 0), Retry = incr_timer_value(RetryStr, 0), {ok, {WaitFor, Factor, Incr, Retry}}; _ -> {error, "invalid retransmission timer: '" ++ Timer ++ "'"} end; _ -> {error, "invalid retransmission timer: '" ++ Timer ++ "'"} end;verify_retransmission_timeout(T0) -> case (catch list_to_integer(T0)) of T when integer(T), T > 0 -> {ok, T}; _ -> {error, "invalid timeout time: '" ++ T0 ++ "'"} end.incr_timer_value(Str, Min) -> case (catch list_to_integer(Str)) of I when integer(I), I >= Min -> I; I when integer(I) -> E = lists:flatten(io_lib:format("invalid incremental timer value " "(min value is ~w): " ++ Str, [Min])), error(E); _ -> error("invalid incremental timer value: " ++ Str) end. %% verify_atl_type("read") ->%% {ok, read};verify_atl_type("write") -> {ok, write};verify_atl_type("read_write") -> {ok, read_write};verify_atl_type(T) -> {error, "invalid log type: " ++ T}.verify_atl_repair("true") -> {ok, true};verify_atl_repair("false") -> {ok, false};verify_atl_repair("truncate") -> {ok, truncate};verify_atl_repair("snmp_repair") -> {ok, snmp_repair};verify_atl_repair(R) -> {error, "invalid audit trail log repair: " ++ R}.verify_pos_integer(I0) -> case (catch list_to_integer(I0)) of I when integer(I), I > 0 -> {ok, I}; _ -> {error, "invalid integer value: " ++ I0} end.verify_netif_req_limit("infinity") -> {ok, infinity};verify_netif_req_limit(I0) -> case (catch list_to_integer(I0)) of I when integer(I), I > 0 -> {ok, I}; _ -> {error, "invalid network interface request limit: " ++ I0} end.verify_netif_recbuf(Val) -> verify_netif_recbuf_or_sndbuf(Val, "recbuf").verify_netif_sndbuf(Val) -> verify_netif_recbuf_or_sndbuf(Val, "sndbuf").verify_netif_recbuf_or_sndbuf("default", _) -> {ok, default};verify_netif_recbuf_or_sndbuf(I0, Buf) -> case (catch list_to_integer(I0)) of I when integer(I), I > 0 -> {ok, I}; _ -> {error, "invalid network interface " ++ Buf ++ " size: " ++ I0} end.verify_irb("auto") -> {ok, auto};verify_irb("user") -> {ok, user};verify_irb(IRB) -> E = lists:flatten(io_lib:format("invalid irb: ~p", [IRB])), {error, E}.verify_irb_user("default") -> {ok, default};verify_irb_user(TO) -> case (catch list_to_integer(TO)) of I when integer(I), I > 0 -> {ok, I*1000}; % Time is given in seconds _ -> {error, "invalid IRB GC time: " ++ TO} end. verify_user_id(UserId) when list(UserId) -> case (catch list_to_atom(UserId)) of A when atom(A) -> {ok, A}; _ -> {error, "invalid user id: " ++ UserId} end;verify_user_id(UserId) when atom(UserId) -> {ok, UserId};verify_user_id(UserId) -> E = lists:flatten(io_lib:format("invalid user id: ~p", [UserId])), {error, E}.verify_user_data("undefined") -> {ok, undefined};verify_user_data(UserData) -> {ok, UserData}.verify_community("\"\"") -> {ok, ""};verify_community(Comm) -> {ok, Comm}.% verify_context_name("\"\"") ->% {ok, ""};% verify_context_name(Ctx) ->% {ok, Ctx}.% verify_mp_model("v1") ->% {ok, v1};% verify_mp_model("v2c") ->% {ok, v2c};% verify_mp_model("v3") ->% {ok, v3};% verify_mp_model(M) ->% {error, "invalid mp model: " ++ M}.verify_sec_model("any") -> {ok, any};verify_sec_model("v1") -> {ok, v1};verify_sec_model("v2c") -> {ok, v2c};verify_sec_model("usm") -> {ok, usm};verify_sec_model(M) -> {error, "invalid sec model: " ++ M}.verify_sec_name("\"initial\"") -> {ok, "initial"};verify_sec_name(N) -> {ok, N}.verify_sec_level("noAuthNoPriv") -> {ok, noAuthNoPriv};verify_sec_level("authNoPriv") -> {ok, authNoPriv};verify_sec_level("authPriv") -> {ok, authPriv};verify_sec_level(L) -> {error, "invalid sec level: " ++ L}.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?