!Igor - 0.01 (20 Aug 2004)

-----------------------------------------------------------------------------

Igor is a simple Telnet Server. It allows people to connect to your computer
remotely and execute commands within the CLI environment provided by RISC OS.

WARNING: Using this program could allow people to have unlimited access to
your computer across a network or the internet. Please be careful using this
program, and I'm afraid you use it at your own risk.

See the licence at the end of this document.

This is a pre-alpha version. It's not intended to be complete and is
certainly not bug free. The only reason it has been made public is on the off
chance that somebody may find it useful, and in the hope that other people
may be able to improve it. It is being released under a BSD style licence
(see below), and I encourage anyone to improve and make modifications to the
program.

Because this is a pre-alpha version, I'm already aware that it contains
numerous bugs (for example, it has a tendency to disconnect for no reason
that I can find), so I'm not especially interested in knowing about any more.
Sorry! However, if you'd like to help to improve it in any way, then please
do. If you want any info about the sourcecode etc.. then I'll be happy to
help.

Igor has only been tested on an Iyonix, but it has been compiled as 32/26 bit
neutral and hopefully should work on other machines too.

I can be contacted by email:

david@flypig.co.uk

or visit my website at:

http://www.flypig.co.uk

-----------------------------------------------------------------------------

Usage:

Starting
--------

The program is pretty self explanatory if you know what a telnet server is.
After running it for the first time, you should open the Control window from
the iconbar menu and set a username and password. At the moment only one user
can be set up, but this hopefully will be changed in the future.

If you do that, and tick the "Accept incoming connections" option, then the
program is basically ready to run. If you want to know more about the
program, then I've tried to give an outline of its functions below.

Control Window
--------------

If you leave the "Password" option blank, it will not be changed from its
current state.

There are a number of other options available in this window. The server will
only work if "Accept incoming connections" is ticked. This can also be
changed by Adjust clicking on the iconbar icon. The icon will change to
indicate the server's current status:

 (1) A broken link indicates that incoming connections will be ignored
 (2) A black connected link indicates that incoming connections will be
     replied to, but that nobody is currently connected
 (3) A red link indicates that there is a session currently in progress

When the link is broken, incoming connections will be ignored. In theory,
when in this state your computer will be as "safe" as if the program were not
running at all, but I'm afraid I can't guarantee this.

If the "Notify on connect/disconnect" option is ticked, an annoying window
will pop up whenever anyone connects or disconnects from the server. This is
useful if you're worried about other people connecting without you realising.

If the "Hide icon when sleeping" option is ticked, then the icon will only
appear on the iconbar if there is actually someone connected to the server
(state 3 indicated above). This can be useful if you want to leave the
program running all the time but don't want it to get in the way.

If the program is running with a hidden iconbar icon, it can be difficult
changing the options. In this case, either connect to the server locally to
make the icon reappear, or run the program a second time. It won't let you
run two copies, but instead will un-hide itself.

Set the "Port" option to the port that you'd like to accept incoming telnet
connections on. This is usually port 23 and can be left alone.

It is usually sensible to set the "Inactivity disconnect" time to something
like 300 seconds (5 minutes). If there is no activity for this length of
time, the server will disconnect itself. If this is set to zero, the server
will never purposely disconnect for this reason.

The "Close all connections" option has been added as a safety precaution. If
you notice somebody is connected when they shouldn't be, click this button to
immediately disconnect them. This is important, because when connected you
have total control, including doing nasty things like deleting files.

Console Window
--------------

If you Select click on the iconbar icon a console window will appear. This
shows what the telnet server is currently doing. Messages about who is
connecting/disconnecting and so on will also be displayed in this window.

Clicking Menu in this window will open a menu with three options. These will
allow you to save the contents of the window as a text file, open the Control
window, and clear the console window, respectively.

Accessing the Igor server
-------------------------

You should use a telnet client to access the server. Give the telnet client
the IP address of the computer you're running Igor on, and set the port to
the same one that you chose in Igor's Control window. Usually this will be
23, and if you don't tell it otherwise the telnet client will probably assume
this anyway.

For RISC OS machines, Nettle is a good client to use. Under Windows 2000/XP
there is a telnet client built in. Just type "telnet" at the DOS command line
(then "open <IP address>" to connect). Putty is another Windows telnet client
that many people seem to like.

If you want to test out the program on a single machine, run Nettle on the
same computer that's running Igor and enter 127.0.0.1 as the Host. This
should be set to local loopback, and so will allow you to connect to Igor.

Firewalls
---------

If you are behind a firewall or NAT then bear in mind that you'll likely have
to open a port to your computer before you can access the telnet server
remotely. How this is done will depend on exactly how you network access is
set up.

Source Code
-----------

The source code is included with the distribution. The program can be
compiled using GCC along with the OSLib, StubsG and UnixLib libraries. To
compile the program from scratch, execute the obey files included:

BuildMD5
BuildMem
Build

in that order. The main sourcefile is Igor.c and if you change this, you only
need to execute the "Build" obey file. Basically, this is for want of a
proper makefile, which will have to wait until I or someone else creates one.

I'm very keen for people to make changes to the program if they want to, but
the code isn't especially well commented. If you want to alter the program,
then by all means get in contact and I'll be happy to help.

-----------------------------------------------------------------------------

Copyright (c) 2004 David Llewellyn-Jones
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

