273
|
1 /*
|
|
2 * Copyright (c) 2012-2013 Christian Plattner. All rights reserved.
|
|
3 * Please refer to the LICENSE.txt for licensing details.
|
|
4 */
|
|
5
|
|
6 package ch.ethz.ssh2;
|
|
7
|
|
8 import java.io.IOException;
|
|
9
|
|
10 /**
|
|
11 * The interface for an object that receives events based on requests that
|
|
12 * a client sends on a session channel. Once the session channel has been set up,
|
|
13 * a program is started at the server end. The program can be a shell, an application
|
|
14 * program, or a subsystem with a host-independent name. Only one of these requests
|
|
15 * can succeed per channel.
|
|
16 * <p/>
|
|
17 * <b>CAUTION: These event methods are being called from the receiver thread. The receiving of
|
|
18 * messages will be blocked until your event handler returns. To signal to the client that you
|
|
19 * are willing to accept its request, return a {@link Runnable} object which will be executed
|
|
20 * in a new thread <i>after</i> the acknowledgment has been sent back to the client.</b>
|
|
21 * <p/>
|
|
22 * <b>If a method does not allow you to return a {@link Runnable}, then the
|
|
23 * SSH protocol does not allow to send a status back to the client (more exactly, the client cannot
|
|
24 * request an acknowledgment). In these cases, if you need to invoke
|
|
25 * methods on the {@link ServerSession} or plan to execute long-running activity, then please do this from within a new {@link Thread}.</b>
|
|
26 * <p/>
|
|
27 * If you want to signal a fatal error, then please throw an <code>IOException</code>. Currently, this will
|
|
28 * tear down the whole SSH connection.
|
307
|
29 *
|
273
|
30 * @see ServerSession
|
307
|
31 *
|
273
|
32 * @author Christian
|
|
33 *
|
|
34 */
|
307
|
35 public interface ServerSessionCallback {
|
|
36 public Runnable requestPtyReq(ServerSession ss, PtySettings pty) throws IOException;
|
273
|
37
|
307
|
38 public Runnable requestEnv(ServerSession ss, String name, String value) throws IOException;
|
273
|
39
|
307
|
40 public Runnable requestShell(ServerSession ss) throws IOException;
|
273
|
41
|
307
|
42 public Runnable requestExec(ServerSession ss, String command) throws IOException;
|
273
|
43
|
307
|
44 public Runnable requestSubsystem(ServerSession ss, String subsystem) throws IOException;
|
273
|
45
|
307
|
46 /**
|
|
47 * When the window (terminal) size changes on the client side, it MAY send a message to the other side to inform it of the new dimensions.
|
|
48 *
|
|
49 * @param ss the corresponding session
|
|
50 * @param term_width_columns
|
|
51 * @param term_height_rows
|
|
52 * @param term_width_pixels
|
|
53 */
|
|
54 public void requestWindowChange(ServerSession ss, int term_width_columns, int term_height_rows,
|
|
55 int term_width_pixels, int term_height_pixels) throws IOException;
|
273
|
56
|
307
|
57 /**
|
|
58 * A signal can be delivered to the remote process/service. Some systems may not implement signals, in which case they SHOULD ignore this message.
|
|
59 *
|
|
60 * @param ss the corresponding session
|
|
61 * @param signal (a string without the "SIG" prefix)
|
|
62 * @return
|
|
63 * @throws IOException
|
|
64 */
|
273
|
65
|
|
66 }
|