%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2005-2009. 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 : Backwards compatibility wrapper -module(ssh_cm). -include("ssh.hrl"). -include("ssh_connect.hrl"). %% -define(DEFAULT_PACKET_SIZE, 32768). %% -define(DEFAULT_WINDOW_SIZE, 2*?DEFAULT_PACKET_SIZE). %%-define(DEFAULT_TIMEOUT, 5000). -export([connect/1, connect/2, connect/3]). -export([listen/2, listen/3, listen/4, stop_listener/1]). -export([stop/1]). -deprecated({connect, 1, next_major_release}). -deprecated({connect, 2, next_major_release}). -deprecated({connect, 3, next_major_release}). -deprecated({listen, 2, next_major_release}). -deprecated({listen, 3, next_major_release}). -deprecated({listen, 4, next_major_release}). -deprecated({stop_listener, 1, next_major_release}). -deprecated({stop, 1, next_major_release}). -export([adjust_window/3, attach/2, attach/3, detach/2, tcpip_forward/3, cancel_tcpip_forward/3, direct_tcpip/6, direct_tcpip/8, close/2, shell/2, exec/4, send/3, send/4, send_ack/3, send_ack/4, send_ack/5, send_eof/2, session_open/2, session_open/4, subsystem/4, open_pty/3, open_pty/7, open_pty/9, set_user_ack/4, setenv/5, signal/3, winch/4]). -deprecated({adjust_window, 3, next_major_release}). -deprecated({attach, 2, next_major_release}). -deprecated({attach, 3, next_major_release}). -deprecated({detach, 2, next_major_release}). -deprecated({tcpip_forward, 3, next_major_release}). -deprecated({cancel_tcpip_forward, 3, next_major_release}). -deprecated({direct_tcpip, 6, next_major_release}). -deprecated({direct_tcpip, 8, next_major_release}). -deprecated({close, 2, next_major_release}). -deprecated({shell, 2, next_major_release}). -deprecated({exec, 4, next_major_release}). -deprecated({send, 3, next_major_release}). -deprecated({send, 4, next_major_release}). -deprecated({send_ack, 3, next_major_release}). -deprecated({send_ack, 4, next_major_release}). -deprecated({send_ack, 5, next_major_release}). -deprecated({send_eof, 2, next_major_release}). -deprecated({session_open, 2, next_major_release}). -deprecated({session_open, 4, next_major_release}). -deprecated({subsystem, 4, next_major_release}). -deprecated({open_pty, 3, next_major_release}). -deprecated({open_pty, 7, next_major_release}). -deprecated({open_pty, 9, next_major_release}). -deprecated({set_user_ack, 4, next_major_release}). -deprecated({setenv, 5, next_major_release}). -deprecated({signal, 3, next_major_release}). -deprecated({winch, 4, next_major_release}). -export([info/1, info/2, recv_window/3, send_window/3, renegotiate/1, renegotiate/2, get_peer_addr/1]). %%==================================================================== %% API %%==================================================================== connect(Host) -> connect(Host, []). connect(Host, Opts) -> connect(Host, ?SSH_DEFAULT_PORT, Opts). connect(Host, Port, Opts) -> ssh:connect(Host, Port, Opts). listen(ChannelSpec, Port) -> listen(ChannelSpec, Port, []). listen(ChannelSpec, Port, Opts) -> listen(ChannelSpec, any, Port, Opts). listen(ChannelSpec, "localhost", Port, Opts) -> listen(ChannelSpec, any, Port, Opts); listen(_ChannelSpec, Host, Port, Opts) -> ssh:daemon(Host, Port, Opts). stop_listener(SysSup) -> ssh_system_sup:stop_listener(SysSup). stop(Cm) -> ssh:close(Cm). %% CM Client commands session_open(Cm, Timeout) -> session_open(Cm, ?DEFAULT_WINDOW_SIZE, ?DEFAULT_PACKET_SIZE, Timeout). session_open(Cm, InitialWindowSize, MaxPacketSize, Timeout) -> ssh_connection:session_channel(Cm, InitialWindowSize, MaxPacketSize, Timeout). setenv(Cm, Channel, Var, Value, Timeout) -> ssh_connection:setenv(Cm, Channel, Var, Value, Timeout). shell(Cm, Channel) -> ssh_connection:shell(Cm, Channel). exec(Cm, Channel, Command, Timeout) -> ssh_connection:exec(Cm, Channel, Command, Timeout). subsystem(Cm, Channel, SubSystem, Timeout) -> ssh_connection:subsystem(Cm, Channel, SubSystem, Timeout). %% Not needed for backwards compatibility for now attach(_Cm, _Timeout) -> ok. attach(_Cm, _ChannelPid, _Timeout) -> ok. detach(_Cm, _Timeout) -> ok. %% Not needed, send_ack is now call! Temp backwardcompability set_user_ack(_, _, _, _) -> ok. adjust_window(Cm, Channel, Bytes) -> ssh_connection:adjust_window(Cm, Channel, Bytes). close(Cm, Channel) -> ssh_connection:close(Cm, Channel). send_eof(Cm, Channel) -> ssh_connection:send_eof(Cm, Channel). send(Cm, Channel, Data) -> ssh_connection:send(Cm, Channel, 0, Data). send(Cm, Channel, Type, Data) -> ssh_connection:send(Cm, Channel, Type, Data). %% Send ack is not needed send_ack(Cm, Channel, Data) -> send_ack(Cm, Channel, 0, Data, infinity). send_ack(Cm, Channel, Type, Data) -> send_ack(Cm, Channel, Type, Data, infinity). send_ack(Cm, Channel, Type, Data, Timeout) -> ssh_connection:send(Cm, Channel, Type, Data, Timeout). %% ---------------------------------------------------------------------- %% These functions replacers are not officially supported but proably will be %% when we had time to test them. %% ---------------------------------------------------------------------- direct_tcpip(Cm, RemoteHost, RemotePort, OrigIP, OrigPort, Timeout) -> direct_tcpip(Cm, RemoteHost, RemotePort, OrigIP, OrigPort, ?DEFAULT_WINDOW_SIZE, ?DEFAULT_PACKET_SIZE, Timeout). direct_tcpip(Cm, RemoteIP, RemotePort, OrigIP, OrigPort, InitialWindowSize, MaxPacketSize, Timeout) -> ssh_connection:direct_tcpip(Cm, RemoteIP, RemotePort, OrigIP, OrigPort, InitialWindowSize, MaxPacketSize, Timeout). tcpip_forward(Cm, BindIP, BindPort) -> ssh_connection:tcpip_forward(Cm, BindIP, BindPort). cancel_tcpip_forward(Cm, BindIP, Port) -> ssh_connection:cancel_tcpip_forward(Cm, BindIP, Port). open_pty(Cm, Channel, Timeout) -> open_pty(Cm, Channel, os:getenv("TERM"), 80, 24, [], Timeout). open_pty(Cm, Channel, Term, Width, Height, PtyOpts, Timeout) -> open_pty(Cm, Channel, Term, Width, Height, 0, 0, PtyOpts, Timeout). open_pty(Cm, Channel, Term, Width, Height, PixWidth, PixHeight, PtyOpts, Timeout) -> ssh_connection:open_pty(Cm, Channel, Term, Width, Height, PixWidth, PixHeight, PtyOpts, Timeout). winch(Cm, Channel, Width, Height) -> winch(Cm, Channel, Width, Height, 0, 0). winch(Cm, Channel, Width, Height, PixWidth, PixHeight) -> ssh_connection:window_change(Cm, Channel, Width, Height, PixWidth, PixHeight). signal(Cm, Channel, Sig) -> ssh_connection:signal(Cm, Channel, Sig). %% ---------------------------------------------------------------------- %% These functions replacers are not officially supported and %% the format of them will proably change when and %% if they get supported. %% ---------------------------------------------------------------------- info(Cm) -> info(Cm, all). info(Cm, ChannelPid) -> ssh_connection_manager:info(Cm, ChannelPid). send_window(Cm, Channel, Timeout) -> ssh_connection_manager:send_window(Cm, Channel, Timeout). recv_window(Cm, Channel, Timeout) -> ssh_connection_manager:recv_window(Cm, Channel, Timeout). renegotiate(Cm) -> renegotiate(Cm, []). renegotiate(Cm, _Opts) -> %%TODO: How should this work, backwards compat? ssh_connection_manager:renegotiate(Cm). get_peer_addr(Cm) -> ssh_connection_manager:peer_addr(Cm).