aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssl/inet_proxy_dist.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ssl/inet_proxy_dist.erl')
-rw-r--r--lib/ssl/inet_proxy_dist.erl229
1 files changed, 0 insertions, 229 deletions
diff --git a/lib/ssl/inet_proxy_dist.erl b/lib/ssl/inet_proxy_dist.erl
deleted file mode 100644
index 9e415def3e..0000000000
--- a/lib/ssl/inet_proxy_dist.erl
+++ /dev/null
@@ -1,229 +0,0 @@
-%%%-------------------------------------------------------------------
-%%% @author Dan Gudmundsson <[email protected]>
-%%% @copyright (C) 2010, Dan Gudmundsson
-%%% @doc
-%%%
-%%% @end
-%%% Created : 22 Jun 2010 by Dan Gudmundsson <[email protected]>
-%%%-------------------------------------------------------------------
--module(inet_proxy_dist).
-
--export([childspecs/0, listen/1, accept/1, accept_connection/5,
- setup/5, close/1, select/1, is_node_name/1]).
-
--include_lib("kernel/src/net_address.hrl").
--include_lib("kernel/src/dist.hrl").
--include_lib("kernel/src/dist_util.hrl").
-
--import(error_logger,[error_msg/2]).
-
-childspecs() ->
- io:format("childspecs called~n",[]),
- {ok, [{proxy_server,{proxy_server, start_link, []},
- permanent, 2000, worker, [proxy_server]}]}.
-
-select(Node) ->
- io:format("Select called~n",[]),
- inet_ssl_dist:select(Node).
-
-is_node_name(Name) ->
- io:format("is_node_name~n",[]),
- inet_ssl_dist:is_node_name(Name).
-
-listen(Name) ->
- io:format("listen called~n",[]),
- gen_server:call(proxy_server, {listen, Name}, infinity).
-
-accept(Listen) ->
- io:format("accept called~n",[]),
- gen_server:call(proxy_server, {accept, Listen}, infinity).
-
-accept_connection(AcceptPid, Socket, MyNode, Allowed, SetupTime) ->
- io:format("accept_connection called ~n",[]),
- Kernel = self(),
- spawn_link(fun() -> do_accept(Kernel, AcceptPid, Socket,
- MyNode, Allowed, SetupTime) end).
-
-setup(Node, Type, MyNode, LongOrShortNames,SetupTime) ->
- io:format("setup called~n",[]),
- Kernel = self(),
- spawn(fun() -> do_setup(Kernel, Node, Type, MyNode, LongOrShortNames, SetupTime) end).
-
-do_setup(Kernel, Node, Type, MyNode, LongOrShortNames, SetupTime) ->
- [Name, Address] = splitnode(Node, LongOrShortNames),
- case inet:getaddr(Address, inet) of
- {ok, Ip} ->
- Timer = dist_util:start_timer(SetupTime),
- case erl_epmd:port_please(Name, Ip) of
- {port, TcpPort, Version} ->
- ?trace("port_please(~p) -> version ~p~n",
- [Node,Version]),
- dist_util:reset_timer(Timer),
- case gen_server:call(proxy_server, {connect, Ip, TcpPort}, infinity) of
- {ok, Socket} ->
- HSData = #hs_data{
- kernel_pid = Kernel,
- other_node = Node,
- this_node = MyNode,
- socket = Socket,
- timer = Timer,
- this_flags = 0,
- other_version = Version,
- f_send = fun(S,D) ->
- io:format("Kernel call send~n",[]),
- gen_tcp:send(S,D)
- end,
- f_recv = fun(S,N,T) ->
- io:format("Kernel call receive~n",[]),
- gen_tcp:recv(S,N,T)
- end,
- f_setopts_pre_nodeup =
- fun(S) ->
- io:format("Kernel pre nodeup~n",[]),
- inet:setopts(S, [{active, false}, {packet, 4}])
- end,
- f_setopts_post_nodeup =
- fun(S) ->
- io:format("Kernel post nodeup~n",[]),
- inet:setopts(S, [{deliver, port},{active, true}])
- end,
- f_getll = fun(S) -> inet:getll(S) end,
- f_address =
- fun(_,_) ->
- #net_address{address = {Ip,TcpPort},
- host = Address,
- protocol = proxy,
- family = inet}
- end,
- mf_tick = fun(S) -> gen_tcp:send(S, <<>>) end,
- mf_getstat = fun(S) ->
- {ok, Stats} = inet:getstat(S, [recv_cnt, send_cnt, send_pend]),
- R = proplists:get_value(recv_cnt, Stats, 0),
- W = proplists:get_value(send_cnt, Stats, 0),
- P = proplists:get_value(send_pend, Stats, 0),
- {ok, R,W,P}
- end,
- request_type = Type
- },
- dist_util:handshake_we_started(HSData);
- _ ->
- %% Other Node may have closed since
- %% port_please !
- ?trace("other node (~p) "
- "closed since port_please.~n",
- [Node]),
- ?shutdown(Node)
- end;
- _ ->
- ?trace("port_please (~p) "
- "failed.~n", [Node]),
- ?shutdown(Node)
- end;
- _Other ->
- ?trace("inet_getaddr(~p) "
- "failed (~p).~n", [Node,Other]),
- ?shutdown(Node)
- end.
-
-close(Socket) ->
- try
- erlang:error(foo)
- catch _:_ ->
- io:format("close called ~p ~p~n",[Socket, erlang:get_stacktrace()])
- end,
- gen_tcp:close(Socket),
- ok.
-
-do_accept(Kernel, AcceptPid, Socket, MyNode, Allowed, SetupTime) ->
- process_flag(priority, max),
- io:format("~p: in do_accept~n", [self()]),
- receive
- {AcceptPid, controller} ->
- io:format("~p: do_accept controller~n", [self()]),
- Timer = dist_util:start_timer(SetupTime),
- case check_ip(Socket) of
- true ->
- HSData = #hs_data{
- kernel_pid = Kernel,
- this_node = MyNode,
- socket = Socket,
- timer = Timer,
- this_flags = 0,
- allowed = Allowed,
- f_send = fun(S,D) ->
- io:format("Kernel call send~n",[]),
- gen_tcp:send(S,D) end,
- f_recv = fun(S,N,T) ->
- io:format("Kernel call receive~n",[]),
- gen_tcp:recv(S,N,T) end,
- f_setopts_pre_nodeup =
- fun(S) ->
- io:format("Kernel pre nodeup~n",[]),
- inet:setopts(S, [{active, false}, {packet, 4}])
- end,
- f_setopts_post_nodeup =
- fun(S) ->
- io:format("Kernel post nodeup~n",[]),
- inet:setopts(S, [{deliver, port},{active, true}])
- end,
- f_getll = fun(S) -> inet:getll(S) end,
- f_address = fun get_remote_id/2,
- mf_tick = fun(S) -> gen_tcp:send(S, <<>>) end,
- mf_getstat = fun(S) ->
- {ok, Stats} = inet:getstat(S, [recv_cnt, send_cnt, send_pend]),
- R = proplists:get_value(recv_cnt, Stats, 0),
- W = proplists:get_value(send_cnt, Stats, 0),
- P = proplists:get_value(send_pend, Stats, 0),
- {ok, R,W,P}
- end
- },
- dist_util:handshake_other_started(HSData);
- {false,IP} ->
- error_logger:error_msg("** Connection attempt from "
- "disallowed IP ~w ** ~n", [IP]),
- ?shutdown(no_node)
- end
- end.
-
-get_remote_id(Socket, Node) ->
- gen_server:call(proxy_server, {get_remote_id, {Socket,Node}}, infinity).
-
-check_ip(_) ->
- true.
-
-
-%% If Node is illegal terminate the connection setup!!
-splitnode(Node, LongOrShortNames) ->
- case split_node(atom_to_list(Node), $@, []) of
- [Name|Tail] when Tail =/= [] ->
- Host = lists:append(Tail),
- case split_node(Host, $., []) of
- [_] when LongOrShortNames == longnames ->
- error_msg("** System running to use "
- "fully qualified "
- "hostnames **~n"
- "** Hostname ~s is illegal **~n",
- [Host]),
- ?shutdown(Node);
- [_, _ | _] when LongOrShortNames == shortnames ->
- error_msg("** System NOT running to use fully qualified "
- "hostnames **~n"
- "** Hostname ~s is illegal **~n",
- [Host]),
- ?shutdown(Node);
- _ ->
- [Name, Host]
- end;
- [_] ->
- error_msg("** Nodename ~p illegal, no '@' character **~n",
- [Node]),
- ?shutdown(Node);
- _ ->
- error_msg("** Nodename ~p illegal **~n", [Node]),
- ?shutdown(Node)
- end.
-
-split_node([Chr|T], Chr, Ack) -> [lists:reverse(Ack)|split_node(T, Chr, [])];
-split_node([H|T], Chr, Ack) -> split_node(T, Chr, [H|Ack]);
-split_node([], _, Ack) -> [lists:reverse(Ack)].
-