|
|
- -module(ntCom).
-
- -compile([export_all, nowarn_export_all]).
-
- -spec mergeOpts(Defaults :: list(), Options :: list()) -> list().
- mergeOpts(Defaults, Options) ->
- lists:foldl(
- fun({Opt, Val}, Acc) ->
- lists:keystore(Opt, 1, Acc, {Opt, Val});
- (Opt, Acc) ->
- lists:usort([Opt | Acc])
- end,
- Defaults, Options).
-
- mergeAddr({Addr, _Port}, SockOpts) ->
- lists:keystore(ip, 1, SockOpts, {ip, Addr});
- mergeAddr(_Port, SockOpts) ->
- SockOpts.
-
- getPort({_Addr, Port}) -> Port;
- getPort(Port) -> Port.
-
- fixIpPort(IpOrStr, Port) ->
- if
- is_list(IpOrStr), is_integer(Port) ->
- {ok, IP} = inet:parse_address(v),
- {IP, Port};
- is_tuple(IpOrStr), is_integer(Port) ->
- case isIpv4OrIpv6(IpOrStr) of
- true ->
- {IpOrStr, Port};
- false ->
- error({invalid_ip, IpOrStr})
- end;
- true ->
- error({invalid_ip_port, IpOrStr, Port})
- end.
-
- parseAddr({Addr, Port}) when is_list(Addr), is_integer(Port) ->
- {ok, IPAddr} = inet:parse_address(Addr),
- {IPAddr, Port};
- parseAddr({Addr, Port}) when is_tuple(Addr), is_integer(Port) ->
- case isIpv4OrIpv6(Addr) of
- true ->
- {Addr, Port};
- false ->
- error(invalid_ipaddr)
- end;
- parseAddr(Port) ->
- Port.
-
- isIpv4OrIpv6({A, B, C, D}) ->
- A >= 0 andalso A =< 255 andalso
- B >= 0 andalso B =< 255 andalso
- C >= 0 andalso C =< 255 andalso
- D >= 0 andalso D =< 255;
- isIpv4OrIpv6({A, B, C, D, E, F, G, H}) ->
- A >= 0 andalso A =< 65535 andalso
- B >= 0 andalso B =< 65535 andalso
- C >= 0 andalso C =< 65535 andalso
- D >= 0 andalso D =< 65535 andalso
- E >= 0 andalso E =< 65535 andalso
- F >= 0 andalso F =< 65535 andalso
- G >= 0 andalso G =< 65535 andalso
- H >= 0 andalso H =< 65535;
- isIpv4OrIpv6(_) ->
- false.
-
- %% @doc Return true if the value is an ipv4 address
- isIpv4({A, B, C, D}) ->
- A >= 0 andalso A =< 255 andalso
- B >= 0 andalso B =< 255 andalso
- C >= 0 andalso C =< 255 andalso
- D >= 0 andalso D =< 255;
- isIpv4(_) ->
- false.
-
- %% @doc Return true if the value is an ipv6 address
- isIpv6({A, B, C, D, E, F, G, H}) ->
- A >= 0 andalso A =< 65535 andalso
- B >= 0 andalso B =< 65535 andalso
- C >= 0 andalso C =< 65535 andalso
- D >= 0 andalso D =< 65535 andalso
- E >= 0 andalso E =< 65535 andalso
- F >= 0 andalso F =< 65535 andalso
- G >= 0 andalso G =< 65535 andalso
- H >= 0 andalso H =< 65535;
- isIpv6(_) ->
- false.
-
- getListValue(Key, List, Default) ->
- case lists:keyfind(Key, 1, List) of
- false ->
- Default;
- {Key, Value} ->
- Value
- end.
-
- serverName(PoolName, Index) ->
- list_to_atom(atom_to_list(PoolName) ++ "_" ++ integer_to_list(Index)).
-
- asName(tcp, PrName) ->
- binary_to_atom(<<(atom_to_binary(PrName))/binary, "TAs">>);
- asName(ssl, PrName) ->
- binary_to_atom(<<(atom_to_binary(PrName))/binary, "SAs">>);
- asName(udp, PrName) ->
- binary_to_atom(<<(atom_to_binary(PrName))/binary, "UOs">>).
-
-
- lsName(tcp, PrName) ->
- binary_to_atom(<<(atom_to_binary(PrName))/binary, "TLs">>);
- lsName(ssl, PrName) ->
- binary_to_atom(<<(atom_to_binary(PrName))/binary, "SLs">>);
- lsName(udp, PrName) ->
- binary_to_atom(<<(atom_to_binary(PrName))/binary, "URs">>).
-
-
-
|