==========
= README =
==========

1.OVERVIEW

From the beginning ssh was designed to be a replacement for the rsh/rcp/rlogin
progmrams on UNIX computers to basically do what they do (i.e. remote login and
copying files between UNIX hosts) but in a secure way, basically using strong
cryptography to protect traffic from eavesdropping and optionally offering
stronger authentication with RSA-keys. Symmetric-key exchange aswell as
ssh-server authentication is allways done using RSA public key encryption. The
ability to provide transparently encrypted tunnels was also added. With this
ability other, non-secure programs, based on tcp-connections, could also be used
securely over insecure networks. For more detailed information about how the
ssh-protocol works and what benefits it provides see here:

http://www.employees.org/~satch/ssh/faq/ssh-faq-2.html
http://www.sunworld.com/sunworldonline/swol-02-1998/swol-02-security.html

SSH has overtime become a defacto standard for remote administration and access
to all sorts of systems. With that has also come the need for clients for other
platforms than UNIX. This need has only partly been fulfilled with the great
variety of free and commercial clients, mostly for Win95/98/NT, that have
emerged. The goal of MindTerm is to provide a single client for all platforms
that can be used in a simple way to leverage the benefits of the ssh-protocol.

Not only does MindTerm offer the ability to run on many different platforms, it
also offers the unique advantage of beeing accessible through a normal
web-browser as a java-applet. This is invaluable for persons who are mobile and
can't install ssh-clients wherever they go. This means that an
organization/company can give its members/employees access to a secure
login-shell aswell as secure tunnels for e.g. ftp, smtp, pop, imap from "the
road" using only a normal web-browser, hence no installation is required on the
client side.

Apart from this MindTerm also offers some other unique features, such as
ftp-proxying, built in scp file-transfer, functionality for usage on multi-homed
hosts, connection keep-alive et.c. which is not part of standard ssh-clients. It
can also be used to automate ssh-access with scripts running it
non-interactively without a GUI, much like the standard unix ssh-client.

MindTerm can be heavily customized for specific needs, e.g. slimmed-down to
support only one block-cipher and have no menus (size can shrink to <150k). When
the local file system is not accessible or local configuration files are not
desired, one can set all parameters on the command-line or through
applet-parameters. Optionally MindTerm can execute a single command (e.g. pine
or Midnight Commander) on the ssh-server, when the command completes MindTerm
exits. This can be done both when running it stand-alone (like when running the
normal unix ssh-client) AND when run as an applet.


2.QUICKSTART

By default MindTerm handles most things automatically for you. Settings are by
default handled on a per-server basis automatically saved and loaded as
needed. MindTerm saves all its settings in its home-directory, this is by
default set to the users home-directory appended with "/mindterm/",
(e.g. /home/mats/mindterm). Apart from settings-files this directory contains
the 'known_hosts' file (used for server identification) and the RSA identity
files (used with the RSA authentication method). To change the home-directory of
MindTerm you must give the directory to use as a command-line parameter
(e.g. --h /home/mats/.ssh) or with an applet parameter (e.g. <param name=sshhome
value="c:\ssh\">).

For convenience you can start MindTerm with all settings needed on the
command-line (or as applet-parameters). This can be useful for example to create
double-clickable short-cuts for running MindTerm with a specific setting. If you
don't want to list all parameters you can also just point to a file which
contains the settings you need, as an example in Win95/98/NT:

javaw -cp c:\mindterm\mindtermfull.jar --q --f c:\mindterm\companyssh.mtp --p none --m no pine

This will launch MindTerm with the settings found in the file
'c:\mindterm\companyssh.mtp', directly connecting to the server (not prompting
for server/username) and running the pine mail program to read mail, when you
exit the pine program MindTerm is exited. (NOTE: in this example the
settings-file must contain the line 'forcpty=true' since otherwise we can't run
a command which needs a non-dumb console see 4.3.1).

The above command can of course be saved as a windows-shortcut (note that the
javaw runtime from Javasoft does not start a DOS-shell for console which might
be convenient). If you for some reason don't want to download the JDK from
Javasoft, many operating systems come with a java-runtime preinstalled
(e.g. Win95/98/NT that have IE4 or later has the jview runtime, MacOS 8 and
later have the MRJ runtime installed). The above example from windows could be
rewritten as:

jview /cp:p c:\mindterm\mindtermfull.jar --q --f c:\mindterm\companyssh.mtp --p none --m no pine

And saved as a shortcut, and it would run on most windows-machines without
having to download a separate java runtime. However, for windows we recommend
using the runtimes supplied from Javasoft for best results (see paragraph 3. for
more info on where to get java runtimes and paragraph 6. for more info on how to
run MindTerm stand-alone).

To create a short-name for a server (and/or multiple settings for a single
server) you can disable autosave/load (Settings -> Auto Save/Load Settings) and
create a new session (e.g. with menu-choices File -> Connect... -> New Server),
connect to the server (optionally setting up tunnels as neeeded, see 4.4). Then
you can save the settings to file with a short name using (File -> Save As...),
don't forget the extension '.mtp'. If you choose to save the file in the
home-directory (see below) of MindTerm, this settings-file can be used by giving
the name of it (without the '.mtp' extension) at the "SSH-server:" prompt or
with (File -> Connect...) where it will automatically show up. Another way to
create a new settings-file is of course to connect to an existing server (one
which you allready have a settings-file for) and do (File -> Save As...), then
you can manually edit the file to your need. Just remember, settings-files must
have the extension '.mtp' and reside in the home-directory of MindTerm.

All settings in MindTerm have decent default values, normally you can run it
without any parameters. One thing you might want to enable for convenience
though is the quiet-mode (see paragraph 6. and 7.).


3.INSTALLATION

In order to use this program as a standalone client please download the file
'mindtermbin.zip' or compile the source-files (optionally bundling them into a
jar-file). You also need the java-runtime (jdk or jre) from Javasoft or any
other party providing a port for your platform. It should work with any 1.1.x or
1.2 jdk/jre (it also works with Netscape's and Microsofs's browser-supplied
java-runtimes). Please read the installation notes for your respective platform
before trying to run MindTerm (also read about running java-programs with the
runtime including running programs residing in a jar-file). See paragraph 6. for
further details about how to run MindTerm stand-alone.

Examples of where java-runtimes can be found:

Linux:
	http://www.blackdown.org/java-linux.html
	http://www.alphaworks.ibm.com/tech/linuxjvm

Win32 and Solaris:
	http://www.javasoft.com/products/

Macintosh:
	http://www.apple.com/java/

Other platforms:
	http://java.sun.com/cgi-bin/java-ports.cgi

To use as an applet please download file 'mindtermbin.zip' or compile the
source-files (optionally bundling them into a jar-file). Assuming you have the
jar-file (e.g. mindterm.jar) you must write an html-page as in the example in
paragraph 7. below. If you are using a cryptographically signed binary version
of MindTerm as an applet from your Netscape or IE browser you will be able to
use it exactly as the stand-alone version (or any other ssh-client),
i.e. connect to any host, set up tunnels, save/load settings from file, use
system clip-board etc. The applet might also be given these permissions
"manually" depending on your browser/appletviewer.

Please read this entire text before starting to use MindTerm! Good luck, some
would say you'll need it! :-)


4.MENUS

The easiest way to learn how MindTerm works and what features it provides is to
look through this brief walk-through of all menus in MindTerm. Given within
parentheses is the keyboard short-cut for each menu item where one exists.

4.1 File
4.1.1 New Terminal (Ctrl+Shift+N)
This will create a new MindTerm window with the same settings as the first
MindTerm window of this session, i.e. all parameters (command-line or applet)
given to MindTerm at startup will have effect in each new terminal created.

4.1.2 Clone Terminal (Ctrl+Shift+O)
This will create a new MindTerm window with the exact same settings as the
window it is created from. If the window contains a connected session, the new
window will be automatically logged in to the same ssh-server (using the same
authentication as was used in the original window). Note that the new window
will not have any open tunnels since the window from where it is created have
the tunnels opened allready (preventing the new window from opening them).

4.1.3 Connect... (Ctrl+Shift+C)
This launches the Connect dialog. From this dialog you may either select to
connect to a host whose settings you have saved or you may create settings for a
new host. Note when selecting "New Server" a new dialog is shown which is
identical to the one described in '4.3.1 SSH Connection...'.

4.1.4 Disconnect (Ctrl+Shift+D)
This forces the current session to be disconnected. Note that this will cause
all tunnels to be closed and the shell to be abandonded without logging out. The
preferred way to disconnect is to logout in the shell.

4.1.5 Load Settings...
Loads settings from a file (extension .mtp) without connecting to the server.

4.1.6 Save Settings (Ctrl+Shift+S)
Saves current settings.

4.1.7 Save Settings As...
Creates a new settings file and saves current settings to it. Useful for
creating a short name for a server, or for having more than one set of settings
for a specific server.

4.1.8 Create RSA Identity...
Creates an RSA identity to be used with authentication type 'rsa' or
'rhostsrsa'. Two files are created, one containing the private key (default name
'identity') and one containing only the public key (default name
'identity.pub'). The contents in the file with the extension .pub must be copied
to the file 'authorized_keys' on the server (typically found in ~/.ssh/). These
RSA key-files are identical to the ones used with the unix version of ssh.

4.1.9 SCP File Transfer...
In this dialog you can choose files and/or directories to transfer to or from
the ssh-server. Local file(s)/dir(s) is a space-separated list of files and/or
directories (if a name contains a space enclose it in quotes like: "a file with
spaces"). Normal regexp's can't be used for local files/dirs, however names can
be given with ONE wild-card ('*') in it (e.g. '*.foo' or foo*bar). If absolute
path-names are not given the current directory is assumed (defaults to
MindTerm's home-directory). If the first file/directory given conatains an
absolute path-name this directory is used as current-directory for the rest of
the list (e.g. the list '/tmp/foo* *.bar' will expand to all files starting with
'foo' or ending with '.bar' in the directory '/tmp'). Remote files(s)/dir(s) are
given EXACTLY as they would be with the standard unix scp-client (i.e. regexps
can be used). The directory assumed on the remote side is the user's
home-directory (i.e. just like with the standard unix scp-client).

To change direction of the copy-operation press the "Change Direction" button
(the direction is indicated with the strings '(source)' and '(destination)'
after the respective side.

If directories are to be traversed enable "Recursive copy". To make the
copy-operation use as little bandwidth/CPU as possible set it to be "Low
priority". Press "Start Copy" to start the copy operation. This will launch a
small window with progress and statistics of the copy operation. A
copy-operation can be canceled at any time by pressing the "Cancel" button in
this window.

4.1.10 Capture To File...
Captures terminal-output to a file. Capture starts immediately when the file has
been selected and ends when this menu item is selected again. Note that while
capturing is active this is indicated by the menu item beeing selected.

4.1.11 Send ASCII File...
This will send the contents of the selected file to the terminal as input
(i.e. would be the same as if the contents were typed from the keyboard)

4.1.12 Close (Ctrl+Shift+E)
Closes this window. Note that when closing a window without logging out you are
aborting the ssh-connection abnormally, i.e. it is advisable to logout in the
shell before closing/exiting MindTerm.

4.1.13 Exit (Ctrl+Shift+X)
Closes all windows and exits MindTerm. Note that when closing windows without
logging out you are aborting the ssh-connection abnormally, i.e. it is advisable
to logout in the shell before closing/exiting MindTerm.


4.2 Edit
Note, the system clip-board is not available to applets by default. In this case
a local (to MindTerm) clip-board is used. Also note that in some implementations
of the java runtime the clip-board does not work with the system clip-board.

4.2.1 Copy (Ctrl+Ins)
Copies selected text to clipboard. Selection is done by clicking and holding down
left mouse-button while dragging the mouse over the area to select.

4.2.2 Paste (Shift+Ins)
Pastes the contents of the clipboard to the terminal as input (i.e. would be the
same as if typed from keyboard)

4.2.3 Copy & Paste
Does a copy followed by a paste.

4.2.4 Select All (Ctrl+Shift+A)
Selects all content in scrollback buffer and in terminal. Note, this operation
is very time-consuming right now.

4.2.5 Find... (Ctrl+Shift+F)
Shows Find dialog from which the scrollback buffer and terminal contents can be
searched for words. The search can be done case sensitive or case
insensitive. Each word found is hightlighted. The "bell" is sounded when no more
matches is found.

4.2.6 Clear Screen
Clears screen and sets cursor position to upper left corner.

4.2.7 Clear Scrollback
Clears contents of scrollback buffer.

4.2.8 VT Reset
Resets terminal-settings to default (e.g. clears line-draw graphics mode which
might be mistakenly set by displaying a binary file).


4.3 Settings
4.3.1 SSH Connection... (Ctrl+Shift+H)
In this dialog you can set all ssh parameters. To view all options click the
button "More options...". When connected you can set the parameters for the
current session. Note that some changes wont take effect until the next time you
connect to this server. When not connected a new session is created if one is
not found with the name of the server. In this case it is the same dialog that
is shown when selecting "New Server..." from the Connection dialog (see 4.1.3).

  The parameters set in this dialog are (names as given in paragraph 5.):

  server    Name (ip-address) of ssh-server
  port      Port which ssh-server listens on
  usrname   User name to login as on ssh-server
  cipher    Name of block-cipher to use, or if 'none' is selected no encryption
            (note, no encryption is normally not supported by the ssh-server)
  authtyp   Method of authentication, or if 'custom...' is selected a comma-
            separated list of methods to try in order given
  x11fwd    Selects whether to allow X11-connections to be forwarded or not
  display   The local X11 display to forward X11 connections to
  mtu       Maximum packet size to use
  alive     Keep alive interval in seconds to use
  portftp   Enables port-commands to be used with FTP-tunnels, don't enable this
            if you are not sure what you are doing
  realsrv   Real ip-address of ssh server if it is behind address translation
            (used when 'portftp' is enabled)
  localhst  Address to listen on for local tunnels (see 4.4)
  idhost    Sets whether to verify identity of the ssh-server using its host-key
            through matching with saved value in the file 'known_hosts'
  forcpty   Force allocation of PTY, e.g. necessary to enable when executing a
            single command on the ssh-server that requires a non-dumb terminal
  prvport   Used to force the local outgoing port of the connection to the ssh-
            server to use a so called privileged port (i.e. < 1024)
  remfwd    Enables other hosts than the one running MindTerm to connect through
            ssh-tunnels


4.3.2 Terminal... (Ctrl+Shift+T)
In this dialog you can set the basic terminal parameters, such as terminal type,
size, font and colors. The initial window position can optionally also be
set. It is given as a string with the syntax <+/-><x-position><+/-><y-position>
a negative sign means it's relative to the right or bottom. A value of zero
means aligned to the border (i.e. left, right, top, bottom) e.g. +0-0 means
aligned to bottom right corner.

  The parameters set in this dialog are (names as given in paragraph 5.):

  te    Terminal type
  gm    Terminal geometry, number of lines, columns and optionally initial position
  fg    Foreground color, name or when 'custom rgb' is selected an rgb-value
  bg    Foreground color, name or when 'custom rgb' is selected an rgb-value
  cc    Cursor color, name or when 'custom rgb' is selected an rgb-value


4.3.3 Terminal Misc... (Ctrl+Shift+M)
This dialog contains some extra settings for the terminal.

  The parameters set in this dialog are (names as given in paragraph 5.):

  sl    Number of lines to save in scrollback buffer
  sb    Position of scrollbar, or disable scrollbar
  sd    String containing delimeter characters that are used when "click-selecting"
        "words", i.e. which characters functions as word-delimeters
  bs    Indicates whether backaspace or delete should be sent when backspace-key is
        pressed
  de    Indicates whether backaspace or delete should be sent when delete-key is
        pressed


4.3.4 Local Command-Shell
Starts the local command-shell from which one can view and set all parameters of
MindTerm. The command-shell is really only useful if you don't have menus
(e.g. when running without a GUI) but for completeness it is available
here. Note, the command-shell is only available if enabled with command-line
option '--c' or applet-parameter 'cmdsh'.

4.3.5 Auto Save Settings
Enables/disables automatic saving of settings, when disabled you must explicitly
save settings to file when needed. When enabled settings are saved whenever you
disconnect from a server or when you exit MindTerm. Note that when both
auto-save and auto-load is enabled (which is default), settings-files are
created automatically and the user never have to worry about saving/loading
them.

4.3.6 Auto Load Settings
Enables/disables automatic loading of settings. When disabled you must
explicitly load settings from file if you need to. When enabled, MindTerm tries
to load a settings-file with the same name as what you give at the "SSH Server:"
prompt or in the (Settings -> SSH Connection...) dialog. These files are located
in the MindTerm home-directory. Thus the "server" you give at the prompt does
not necessarily have to be the name of the server, it is mainly the name of the
settings-file to load. Normally the user does not have to worry about the
settings-files since it is handled automatically. Though to create short-names
for servers and to create multiple settings-files for a single server you have
to explicitly create settings-files.


4.4 Tunnels

4.4.1 Basic...
In this dialog you can set up (local) tunnels to use. When connected the tunnel
is created instantly and ready to use. Tunnels you create here are saved in the
settings-file of the current session if you are using settings-files. The
protocol selection is mostly a convenience function, note however that to create
FTP-tunnels the protocol should be set to ftp (otherwise the tunnel wont have
the ftp-plugin enabled). The local port to set is any unused port, this will be
the port that you point programs that want to use the tunnel to. By default
tunnels will be set up to listen on all local addresses (i.e. 127.0.0.1 and the
local host address). In the dialog "SSH Connection..." under "More options..."
you can set the address to use as local address, i.e. if you want the tunnels to
listen on 127.0.0.1 only you can set that there. Also, using the "Advanced..."
tunnels dialog (see 4.4.2) you can set the local address on a per tunnel basis,
i.e. have more than one tunnel on a single port using different local
addresses. The remote host is the address of the server that will answer
connections to the tunnel in the ssh-server end of the connection, likewise the
remote port is the port on which it answers. To remove a tunnel just select it
and click "Delete". To add a tunnel fill in all the fields and click
"Add". Note, you can double-click on a tunnel-specification to copy its values
to the fields making it convenient to add/delete/edit tunnels.

4.4.2 Advanced...
This dialog is mainly for advanced users who know the details about using
ssh-tunnels and their capabilities/limitations. With it you have can set up both
local (as with the "Basic..." dialog) and remote tunnels, note that remote
tunnels are not opened until the next time you connect. The syntax for defining
tunnels in this dialog is the same as with entering them on the command-line or
as applet-parameters (see 5.). Note, for local tunnels you can here set the
explicit local address that the tunnel will listen on, regardless of the setting
of the "localhst" parameter. As in the "Basic..." dialog you can double-click to
copy a definition-string to the edit-box.

4.4.3 Tunnel Wizard...
Huh, do we need wizards around here, any magic needed?!? :-)

4.4.4 Current Connections...
This dialog lists the currently open connections through the tunnels you have
set up. Note that it doesn't list the tunnels themselves, only active
connections through them. You can close a tunnel by selecting it and clicking
close.


4.5 Help

4.5.1 Help Topics...
Well, you have this file haven't you? :-)

4.5.2 About MindTerm
Check here for info, especially build date/version and which platform you are
running on when reporting bugs.


5.PARAMETERS

When started either as an applet or as a stand-alone program MindTerm is fully
configurable. You may supply all settable parameters (see below) on the
command-line (see 6.) or as applet-params (see 7.). Additionally when access to
the local file system is available you can choose to save all settings to file
on a per server basis, i.e. each new ssh-server you connect to will have its
settings in a separate file, note this is by default done automatically if local
file system is accessible.

SSH-parameters:
(all these can be set to values in parenthesis where applicable)
server   : name of server to connect to (N/A)
realsrv  : real address of sshd if it is behind a firewall, only used with
           protocol-plugins (N/A)
localhst : address to use as localhost (N/A)
port     : port on server to connect to (0-65535)
usrname  : username to login as (N/A)
cipher   : name of block cipher to use ( none idea des 3des rc4 blowfish )
authtyp  : method of authentication ( rhosts rsa passwd rhostsrsa tis kerberos kerbtgt )
idfile   : name of file containing identity, rsa-keys (N/A)
display  : display definition, i.e <host>:<screen> (N/A)
mtu      : maximum packet size to use, 0 means use default (4096 - 256k or 0)
escseq   : sequence of characters to type to enter local command-shell (N/A)
secrand  : level of security in random-seed, for generating session-key (0-2,
           0 is lowest (default) and 2 is highest (very slow :-))
(all these can be set to either 'true' or 'false')
alive    : Connection keep-alive interval in seconds (0-600, 0 means none)
x11fwd   : indicates whether X11 display is forwarded or not (true/false)
prvport  : indicates whether to use a privileged source port or not (true/false)
forcpty  : indicates whether to allocate a pty or not (true/false)
remfwd   : indicates whether we allow remote connects to local forwards (true/false)
idhost   : indicates whether to check hosts host-key in 'known_hosts' (true/false)
portftp  : indicates whether to enable ftp 'PORT' command support (true/false)

Terminal-parameters:
(all these can be set to either 'true' or 'false')
rv       : reverse video
aw       : autowrap of line if output reaches edge of window
rw       : reverse autowrap when going off left edge of window
im       : insert mode
al       : do auto-linefeed
sk       : reposition scroll-area to bottom on keyboard input
si       : reposition scroll-area to bottom on output to screen
lp       : use PgUp, PgDn, Home, End keys locally or escape them to shell
sc       : put <CR><NL> instead of <NL> at end of lines when selecting
vi       : visible cursor
ad       : ASCII Line-draw-characters
le       : do local echo
sf       : scale font when resizing window
vb       : visual bell
ct       : map <ctrl>+<space> to <NUL>
dc       : toggle 80/132 columns
da       : enable 80/132 switching
cs       : copy on mouse-selection

(all these can be set to values in parenthesis where applicable)
fn       : name of font to use in terminal (N/A)
fs       : size of font to use in terminal (N/A)
gm       : geometry of terminal (as x geometry string)
te       : name of terminal to emulate ( xterm linux scoansi att6386 sun vt220
           vt100 ansi vt52 xterm-color linux-lat  at386   vt102 )
sl       : number of lines to save in "scrollback" buffer (0-8192)
sb       : scrollbar position (left, right, none)
bg       : background color (black, red, green, yellow, blue,
           magenta, cyan, white, or one of these with 'i_' before
           for intensified version e.g. i_white, OR you may use an
           arbitrary RGB-value such as: 125,102,247)
fg       : foreground color (same as 'bg')
cc       : cursor color (same as 'fg'/'bg')
rg       : resize gravity, fixpoint of screen when resizing (top, bottom)
bs       : character to send on BACKSPACE (BS, DEL)
de       : character to send on DELETE (BS, DEL)
sd       : delimeter characters for click-selection (N/A)

There are also special parameters to configure the tunnels, these are:

local0, local1, ... ,localN
remote0, remote1, ... ,remoteN

Their syntax is as follows:

localN   : [/<plugin>/][<local-ip>:]<local-port>:<remote-ip>:<remote-port>
remoteN  : [/<plugin>/]<remote-port>:<local-ip>:<local-port>

They are enumerated, i.e. if you have three local-forward-definitions they will
be local0, local1 and local2. The same goes for remoteN. These properties are
used in the exact same way as all other properties (i.e. they can either be
entered on the command-line, as applet-params or in the settings-files).

For example to set up tunnels to telnet, imap and smtp on the local ports 4711,
4712 and 4713 to the remote side:

java -cp mindbright.jar mindbright.application.MindTerm -server www.mindbright.se
	-local0 4711:localhost:23 -local1 4712:localhost:143 -local2 4713:localhost:25

(NOTE: 'localhost' here means "locally" on the ssh-server, i.e. the telnet,
imap, and smtp servers all run on the same machine as the ssh-server)

There is also an optional (activated with '--c' or 'cmdsh') local command shell
where all settings can be viewed and/or altered.  To enter this command-shell
you press ctrl-D at the prompt (i.e. before having logged in) or you can select
the 'Local Command Shell' option in the 'Settings' menu.  If you are running in
"dumb" mode you might have to press ENTER after pressing ctrl-D.

This is what is displayed when entering the command-shell:

...entering local command-shell (type 'h' for help).

mindterm> h

The following commands are available in the command-shell:

go                                    Start SSH-session with current settings.
quit                                  Quit program (or disconnect if connected).
add <l|r> [/<plug>/]<port>:<host>:<port>  (see below).
del <l|r> <listen-port>|*             Delete local/remote forward (* = all).
list [ssh | term]                     Lists ssh- and/or terminal-settings.
set [<parameter> <value>]             Set value of a ssh-parameter.
tset [<parameter> <value>]            Set value of a terminal-parameter.
key [<bits>]                          Generate RSA key-pair (of length <bits>).
help                                  Display this list, but you knew that :-).


6.STANDALONE USAGE

6.1
When run as a standalone application MindTerm takes two types of command-line
options. One type is preceeded with a single hyphen ('-').  These are the
parameters (see 5.) followed by their respective value, for example:

java -cp mindbright.jar mindbright.application.MindTerm -server www.mindbright.se -port 22 -x11fwd true -authtyp rsa

The other type of options are given with two preceeding hyphens ('--'). These
are the special standalone options. When run with the standalone option '--?'
the following is displayed:

usage: MindTerm [options] [properties] [command]
Options:
  --c            Enable local command-shell.
  --d            No terminal-window, only dumb command-line and port-forwarding.
  --f <file>     Use settings from the given file.
  --h dir        Name of the MindTerm home-dir (default: ~/mindterm/).
  --m <no | pop | popN>
                 Use no menus or popup (on mouse-button N) menu instead of menubar.
  --p <save | load | both | none>
                 Sets automatic save/load flags for property-files.
  --q            Quiet; don't query for server/username if given.
  --v            Verbose; display verbose messages.
  --D            Debug; display extra debug info.
  --V            Version; display version number only.
  --?            Help; display this help.

These are the valid standalone options.

The standalone options MUST be first among the java command-line options
(right AFTER the java class-name). For example:

java -cp mindbright.jar mindbright.application.MindTerm --p both --h /home/mats/mindterm
	 -server www.mindbright.se -port 22 -x11fwd true -authtyp rsa

(NOTE: '-cp' in this example is a command-line option to the java runtime)

The parameters (the ones given with one preceding hyphen) are by default saved
in settings files on a per server basis. The settings files are automatically
loaded when connecting to a specific server. The automatic save and load feature
can be disabled in which case settings must be explicitly loaded/saved. The
settings file can also be manually edited, it's an ordinary text-file (java
properties file).

Examples of how to start MindTerm as a standalone program:

Linux/jdk1.1.x:

/usr/local/java/bin/java -classpath /usr/local/java/lib/classes.zip:mindtermfull.jar mindbright.application.MindTerm


Win32/jdk1.1.x:

c:\jdk1.1.x\bin\java -classpath c:\jdk1.1.6\lib\classes.zip;c:\mindbright\mindtermfull.jar mindbright.application.MindTerm


Win32/jre1.1.x:

c:\jdk1.1.x\bin\java -cp c:\mindbright\mindtermfull.jar mindbright.application.MindTerm


Win32/jdk/jre1.2:

c:\jdk1.2.x\bin\java -cp c:\mindbright\mindtermfull.jar mindbright.application.MindTerm

c:\jdk1.2.x\bin\javaw -cp c:\mindbright\mindtermfull.jar mindbright.application.MindTerm

(NOTE: The javaw runtime version does not create a DOS-shell window for the
console making it more convenient for "real" usage)


Win32/jview: (microsoft's JVM supplied with IE4 and later)

jview /cp:p mindtermfull.jar mindbright.application.MindTerm


MacOS/MRJ:

First get the JBindery application, it is found in the MRJ SDK here:
http://developer.apple.com/java/text/download.html#sdk

Then drop the mindtermfull.jar file onto the JBindery icon and give it the
class name mindbright.application.MindTerm. Save it and you are set to run
MindTerm with just a double-click.


Epoc32/jdk1.1.4 (e.g. on Psion5mx):
TODO:
For now see http://www.mindbright.se/mindterm/epochowto.txt


6.2 STANDALONE FILETRANSFER (SCP)

MindTerm contains an scp-client for file-transfer it can be used either
interactively (see 4.1.9) or directly from the comand-line (just like the
standard unix scp-client). To use it from the command-line you use the
command-line option '--s' which takes an argument to determine direction of
copy-operation 'toremote' or 'tolocal'. The command-line option '--r' is used to
indicate that directories are to be recursed. All other command-line options
work as described in (6.1). The command-line options given AFTER all MindTerm
options are taken as the list of source-files and target-file/dir.  The LAST
command-line option ALLWAYS denotes the target-file/dir. The biggest difference
from the unix scp-client is that you can only copy to/from one remote host
to/from localhost. To clarify, here are some examples (from unix):

java -cp mindtermfull.jar mindbright.application.MindTerm --s toremote localfile remotefile

This will copy file localfile to file remotefile on ssh-server.

java -cp mindtermfull.jar mindbright.application.MindTerm --s toremote --r localdir1 localdir2/*.mtp remotedir/

This will copy localdir1 and localdir2/*.mtp to the directory remotedir on the
ssh-server (in the user's home-directory).

java -cp mindtermfull.jar mindbright.application.MindTerm --s tolocal --r remotedir/\*.mtp localdir/

This will copy remotedir/*.mtp from the ssh-server to the local directory localdir


7.APPLET USAGE

See page <http://www.mindbright.se/newssh.html> for an example on how to use the
applet. As stated above all settable parameters may be set with applet-params,
for example:

<applet archive="mindterm.jar" code=mindbright.application.MindTerm.class width=580 height=400>
<!-- These parameters are parameters that are listed in paragraph 5. -->
<param name=port value="22">
<param name=cipher value="blowfish">
<param name=gm value="80x32+0-0">
<param name=forcpty value="true">
<param name=local0 value="4711:wintermute:23">
<param name=local1 value="/ftp/4712:wintermute:21">
<!-- Any parameters listed in paragraph 5. can be included here -->

<!-- These parameters are special for the applet, most have an equivalent -->
<!-- command-line option when run as a stand-alone client -->
<param name=sepframe value="false"><!-- wheter to run in a separate frame or not -->
<param name=verbose value="true"><!-- output verbose debug-info to java-console -->
<param name=debug value="true"><!-- give more debug-info to java-console -->
<param name=quiet value="true"><!-- quiet mode, don't query for server/username if given -->
<param name=cmdsh value="true"><!-- enable/disable local command-shell -->
<param name=menus value="pop2"><!-- enable/disable pulldown or popup menus -->
<param name=autoprops value="both"><!-- enable/disable automatic save/load of settings -->
<param name=propsfile value="c:\ssh\ourserver.mtp"><!-- file containing settings (properties) to load -->
<param name=commandline value="mc -x -c"><!-- complete commandline if running a single command only -->
<param name=sshhome value="c:\ssh\"><!-- If authorized to access local files, this is home-dir -->
<param name=appletbg value="black"><!-- Color of unused space in Applet's Panel -->
</applet>

You may give any number of parameters to the applet. You only have to supply the
ones you want, all parameters have default values so you need not supply any
parameters if you choose.

An applet may be run in basically three ways, namely; with an applet-enabled
browser, with a java-plugin installed in a browser or with a standalone
appletviewer. All three ways are perfectly legal ways of running MindTerm, note
however that the html-code for running an applet using a java-plugin is not the
same as for running it with an appletviewer or an applet-enabled browser.

Normally applets are for security reasons restricted to run within the so called
java-sandbox. This puts some restrictions on what it can do. Basically when
beeing run as an applet MindTerm can only provide a login-shell to the same
ip-address that served the applet. In many cases this can manually be extended
so that it can access local files and provide ssh-tunnels et.c.

Another way to make the applet have these restrictions lifted is to use a
cryptographically signed applet. In this case the applet will function more or
less as a normal stand-alone program.

(TODO: more on java-plugins, differences between browser-versions, signed
applets)


8.USING FTP TUNNELS

To use the FTP-tunneling feature all you have to do is define a (local) tunnel
that uses the ftp-plugin. Then you connect to the tunnel using a ftp-client that
can be set to use "passive mode" transfers (most can do that). The easiest way
to do this is to go to the (Tunnels -> Basic...) dialog and add a new tunnel
with protocol set to ftp, this automatically sets the remote port to 21 which is
the standard port on a UNIX server. The local port is set to an arbitrary unused
local port. The remote host is the address of the ftp-server (as it is addressed
from the ssh-server). When you have connected to the ssh-server you can use
almost any ftp-client to access the ftp-server. For example in WS_Ftp on
windows:

1) Define a new "site" with address localhost (or the address you uses for
   localhost, see 4.3.1 and 4.4.)
2) Go to "Site properties"
3) In "folder" advanced set "Remote Port:" to local port selected in MindTerm
4) Enable "Passive transfers"

When WS_Ftp connects to this new site, it connects through the ssh-tunnel in
MindTerm, hence the ftp-server need not be reachable, e.g. if it is behind a
firewall. To set up more than one ftp-server behind the same ssh-server, repeat
the same procedure selecting different local ports for each new server (in both
MindTerm and WS_Ftp).

Some ftp-clients can only use what is called ftp PORT-commands, these
ftp-clients can only be used in a limited way with the ftp-tunneling in MindTerm
(due to restrictions in the implementation, this might be changed in a future
version of MindTerm). With these clients you must enable FTP Port
command-support in MindTerm. This is done in the settings menu (see 4.3.1). If
your ssh-server is behind a firewall that does address translations you must
also set the real ip-address of the ssh-server for FTP Port commands to
work. This is also done in the settings menu (see 4.3.1). When using FTP Port
commands you can only do about 10 directory listings/downloads per minute
(cumbersome but only way to do it if you don't want to make a lot of new
connects to the ssh-server). All in all using FTP clients which don't support
passive mode is possible but should be avoided if possible.


9.TESTED PLATFORMS

See the file PLATFORMS for a list of tested platforms.


10.MindTunnel SSH-Server
TODO:
For now check <http://www.mindbright.se/mindtunnel.html>


11.MindVNC VNC CLIENT
TODO:
For now check <http://www.mindbright.se/english/technology/products/mindvnc.html>


12.OTHER

All comments and bug-reports should be sent to:
<mindterm@mindbright.se>

Information about this program and its source code can be found at:
<http://www.mindbright.se/mindterm/>

This software is written and maintained by Mats Andersson
<mats@mindbright.se> of Mindbright Technology AB in Sweden.


13.RSA LICENSE

MindTerm contains code implementing the RSA algorithm which is patented and
subject to licensing in certain countries (e.g. the United States). It is
therefore illegal to use MindTerm (for ANY purpose, even non-commercial) without
proper licensing from RSA in these countries. We have been in contact with RSA
on this matter and might be able to provide a licensed version of MindTerm for
non-commercial use, and, for a fee, for commercial use, should we reach an
agreement with them. More information will appear here when available.
