packages icon
README for flash 0.9.4
----------------------

Flash is an attempt to create a secure menu-driver shell for UNIX-derived OSes, 
while providing user-friendliness and easy configurability. An ideal situation 
requiring the use of flash would be a student-run telnet server which needs to:

a) shelter the users from some of the nastinesses of UNIX
b) shelter the system from nasty users
c) provide an easy way to launch applications
d) support multitasking/job control as elegantly as possible
e) support easy-to-get-right configuration by administrators

-->

Flash offers the following features:

* uses NCURSES menus driven by cursor keys 
* offers 'hotkey' functionality for program invocation
* loadable modules for "NEW MAIL" and clock functions
* password lockable screen saver support

It currently compiles nicely under RedHat 5.x & 6.x, SuSe 6.x (x86), RedHat Alpha,
and Solaris 5.5 upwards. However for Solaris please read the Makefile, and you will 
need to use GNU make for this version.
If you manage to get it to compile elsewhere, please let us know.

-->

History: flash was developed by Stephen Fegan of the UCD Internet Society
(steve@netsoc.ucd.ie) when the UCD Netsoc were just beginning. It was
used with great success to shelter non-computer-literate users from
the complicated operating system as well as protecting our setup from
hackers of all kinds. Unfortunately the original developer no longer
responds to our emails about the program so we have decided to release
the program as open source to ensure it will be developed. The original
developer did actually intend to do this at some point (the GPL
declarations are his) but just didn't get around to it. Kudos to Steve
for his work, which built on a very old menu driven shell called 'flin'.
Steve almost totally rewrote it during the course of the development.

   >why did you call your program "Flash" ..aren't there enough programs out
   >there with the same name already???  Ever hear of Macromedia Flash?

From Niall R. Murphy:
There was actually a naming conflict from the beginning, since
Steve already had another program called flash (which did nasty
things to world writable ttys). I persuaded him that flash was
the right name since the menus and backgrounds and so on and forth
were... well... flashy :)
This flash was around in 1996. I don't know if that's before
Macromedia. I don't think either of us had heard of it by then
anyway.

-->

Installation:

The creation of the binaries should be as simple as "./configure;make" on a Linux
system. This should also work for Solaris.
The flash binary should go somewhere safe, we like /usr/slocal/bin.
Users who will have flash as their shell should have it changed
by standard means to the location of the flash executable.
./configure /might/ work on other systems; if it does, drop us a line.
We have a report that a port has been added to FreeBSD-CURRENT for flash,
this is flash version 0.9.1, while it is not the most up to date version
there are no major differences and the version in FreeBSD is safe to use.
I will be working on fixing the FreeBSD port in the next release.
Talk to Will Andrews (andrews@technologist.com) for more information.

The difficult bit is configuring flash to behave as you want it to.
There are two directories worth looking at when the source has been
unpacked. 'sample-config' contains some sample configuration files
which are meant to illustrate certain features of flash. You might
like to try extending these when you are building your own setup.
Secondly, the directory orcasetup/ contains some configuration
files that we use for UCD Netsoc. These are much more developed and
complicated than the other ones but contain a lot of netsoc-isms
which probably wouldn't be appropriate for your environment. Nevertheless
we include them for illustrative purposes.

There are a few important things to remember: 

* config.h defines a few important things such as LIBPREFIX,
  which is where to put startup rc files and menu definition files

* system.flashlogin is the file executed by flash upon login.
  You can set environment variables, check the return codes from
  executed programs and so on.

* system.menu is the menu definition file. In here you can define what
  programs are executed with what arguments. It should be fairly easy
  to figure out what's going on here. Better documentation would be 
  a help. You can also include other definition files; we include
  module configuration files here.

* This can't be stressed enough - when you are adding programs to
  the system.menu AUDIT THEM FOR SHELL ESCAPES FIRST. It is /no/
  use giving people flash as a shell and then allowing them access
  to vi, tin or even pine. These programs can all be manipulated
  into giving the user a full shell, some trivially, some not so
  trivially. Heavy source code review (removing all system() and
  most exec() calls for example) is the minimum necessary for peace
  of mind.      

There is also a man page included in the distribution but it's of
dubious usefulness. Knock up a better one...

-->

Known bugs:

* Flash doesn't like being straced under Linux (ncurses?).
* You have to be quite careful with your terminal type sometimes.
* flash -v segfaults

We expect this list to grow larger :-)


-->

Contact details:

The latest stable version of flash should always be available at 
ftp://ftp.netsoc.ucd.ie/pub/computing/flash/flash-stable-latest.tgz -- there
might be later development versions but you should look at the 
FTP site for them.

If you want to communicate patches, configuration difficulties, bugs
or so on to the maintainers, please send an empty message to 
"flash-subscribe@netsoc.ucd.ie". The actual name of the mailing list is
"flash@netsoc.ucd.ie".

Finally if you are using flash someone we would really appreciate
notification. It helps give us warm fuzzies.          

-->

Albert White
albertw@netsoc.ucd.ie