aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssh/src/ssh_daemon_channel.erl
diff options
context:
space:
mode:
authorIngela Anderton Andin <[email protected]>2015-06-26 08:47:38 +0200
committerIngela Anderton Andin <[email protected]>2015-06-26 11:35:31 +0200
commitfcbf2e682cedebdf768dc90273889b1f8d4b2ce4 (patch)
tree28e429fafddc8b5cdb9e2e4141f2730fc3c1b3f9 /lib/ssh/src/ssh_daemon_channel.erl
parent0f3f8f5871a1ea503cc80ae17adc8dec96c79445 (diff)
downloadotp-fcbf2e682cedebdf768dc90273889b1f8d4b2ce4.tar.gz
otp-fcbf2e682cedebdf768dc90273889b1f8d4b2ce4.tar.bz2
otp-fcbf2e682cedebdf768dc90273889b1f8d4b2ce4.zip
ssh: Use old crypto with newer ssh
Many issues with previous process design, causing for instance process leaks, are compleatly gone in the redesigned ssh-3.0 and later. This is a backport of newer ssh design to R15B
Diffstat (limited to 'lib/ssh/src/ssh_daemon_channel.erl')
-rw-r--r--lib/ssh/src/ssh_daemon_channel.erl68
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/ssh/src/ssh_daemon_channel.erl b/lib/ssh/src/ssh_daemon_channel.erl
new file mode 100644
index 0000000000..ab3efbcaff
--- /dev/null
+++ b/lib/ssh/src/ssh_daemon_channel.erl
@@ -0,0 +1,68 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2013. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+%%
+%% Description: a gen_server implementing a simple
+%% terminal (using the group module) for a CLI
+%% over SSH
+
+-module(ssh_daemon_channel).
+
+%% API to special server side channel that can be pluged into the erlang ssh daemeon
+-callback init(Args :: term()) ->
+ {ok, State :: term()} | {ok, State :: term(), timeout() | hibernate} |
+ {stop, Reason :: term()} | ignore.
+
+-callback terminate(Reason :: (normal | shutdown | {shutdown, term()} |
+ term()),
+ State :: term()) ->
+ term().
+
+-callback handle_msg(Msg ::term(), State :: term()) ->
+ {ok, State::term()} | {stop, ChannelId::integer(), State::term()}.
+-callback handle_ssh_msg({ssh_cm, ConnectionRef::term(), SshMsg::term()},
+ State::term()) -> {ok, State::term()} |
+ {stop, ChannelId::integer(),
+ State::term()}.
+
+%%% API
+-export([start/4, start/5, start_link/4, start_link/5, enter_loop/1]).
+
+%% gen_server callbacks
+-export([init/1, terminate/2]).
+
+start(ConnectionManager, ChannelId, CallBack, CbInitArgs) ->
+ ssh_channel:start(ConnectionManager, ChannelId, CallBack, CbInitArgs, undefined).
+
+start(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec) ->
+ ssh_channel:start(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec).
+
+start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs) ->
+ ssh_channel:start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs, undefined).
+
+start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec) ->
+ ssh_channel:start_link(ConnectionManager, ChannelId, CallBack, CbInitArgs, Exec).
+
+enter_loop(State) ->
+ ssh_channel:enter_loop(State).
+
+init(Args) ->
+ ssh_channel:init(Args).
+terminate(Reason, State) ->
+ ssh_channel:terminate(Reason, State).