diff options
author | Ingela Anderton Andin <[email protected]> | 2015-06-26 08:47:38 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2015-06-26 11:35:31 +0200 |
commit | fcbf2e682cedebdf768dc90273889b1f8d4b2ce4 (patch) | |
tree | 28e429fafddc8b5cdb9e2e4141f2730fc3c1b3f9 /lib/ssh/src/ssh_daemon_channel.erl | |
parent | 0f3f8f5871a1ea503cc80ae17adc8dec96c79445 (diff) | |
download | otp-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.erl | 68 |
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). |