GAEN - An Advanced Concurrent Teleconferencing System

Sabin Corneliu Buraga

("Symposium on Automatic Control and Computer Science - SACCS'98 Proceedings" - November 1998, Iasi)


Abstract:

Keywords: teleconference, concurrency, UNIX, event-driven talker, Internet, scripts

General presentation

Like any other Internet services, GAEN uses the TCP/IP protocols, implemented with BSD sockets. The most important GAEN services are:

GAEN's philosophy is simple: in fact GAEN is a server (daemon) which provide easy to use and powerful commands to facilitate the conversation between users connected to talker via clients, like telnet programs. GAEN needs three open ports: the main port and the auxiliary port (for the administrators) are using to connect users to this teleconferencing service and a netlink port is used for connections between similar GAEN systems. GAEN provides its own communication protocol used by interconnected talkers. This protocol is based on a message passing interface (via netlink ports). GAEN has conferencing rooms and dimensions (collections) of rooms and gives to each user the possibility to execute a set of commands/actions such as .say, .think, .tell, .whisper, .smail etc. to express common natural human behaviour or to move to another room or dimension and so on (all commands are prefixed by a period). Of course, an user can talk to a particular person or a group of persons and he/she can use customizable macros or a built-in set of macros and social commands (e.g. shake hands, smiles, huggles, kisses etc.).

Connecting

The users have a free access, but after connecting they must use .set to complete their personal information (real name, age, gender, e-mail address, country).

Also, the users can enter a profile with additional information. To connect, the users must use telnet and they must type the talker's address followed by a port (e.g. telnet vela.uaic.ro 7000).

At the connecting time, the user must type a name and a password (each user has an account, very similar with UNIX accounts). To avoid the hackers attacks, we use a sophisticated and efficient system to deny insecure (easy to guess and too simple) passwords. The users have the possibility to change their own passwords. The talker's administrators can change other users' passwords, too.

Following the society model, each user has a level (GUEST, SOUL, ..., SPIRIT, SAINT, GOD). The number of levels is nine, but it can be modified. For each level, there are some commands available to use. Of course, a higher level offers more commands and posibilities than an inferior one.

In addition, each user has a short description, some status flags (colour, muzzled, visibility, banned, ignoring other users and so on). Some flags and other information (total login time, last login time, last connecting site) are stored in files. For superior levels, an user has one or more clones (to hear the conversation in multiple rooms).

Like in UNIX environments, there are commands to list all connected users (.who and .people), their status and profiles (.status and .examine), their remote host address etc. We written a command to get the real identity (the account and the real name) of the user, if it's possible.

Also, the talker provides a robuste system to send and receive mail from local or remote (from another linked talker) users. The users may have a number of restrictions (concerning the execution of certain commands: to get help, to review the room conversation, to be promoted or to create clones etc.) and a number of run commands files (a sort of scripts) which contain GAEN commands. These commands files can be executed by user (with .run) or when an event occurs.

Rooms

Each room has a description, a short topic of conversation, the messages board, a review buffer of the conversation, an access: public or private and a state of visibility: hidden or not. Each room has links to another rooms or to an external talker. The rooms' names and descriptions are loaded from configuration files at the boot time. We don't need to recompile the sources to modify the rooms links, dimensions or descriptions of rooms. We can specify a default topic for each room (all of these information are stored in text files and loaded at the booting time).

Administration

A GAEN system has one or more administrators ('superior' users of highest level). Powerful commands assure the clever management of users: promotions and demotions, the possibility to ban/unban sites and users or to delete users using certain criteria, allowing users to use some facilities etc. Also, the administrators can view and modify the internal parameters of the talker using certain commands or changing the configuration files. The superior users can consult the talker log files, too.

Original concepts and development

The list of all original and advanced implemented concepts is long. We'll enumerate only the most important of them:

Examples

Some examples of commands files using GSL and gsh facilities will follow:

  1. This script file is useful to delete all users without profiles:
    	.set =} userfiles
    	.gsh scan } .if !entpro { : .delete {
    

    The .gsh scan command scans all entries of a directory (in this case, the directory name is stored in a variable).

  2. A script to send mail only to users who are not playing Puzzle:
    	.arun 0 .if !puzzle { : .smail { You don't like to play Puzzle?
    	.for 0 users
    
  3. A backup utility script to save the user(s) files to another location:
    	.arun 1 .note This script expects in { the user name 
    	.arun 1 .set =} {
    	.arun 1 .note Copy in } variable because { is modified by .gsh scan 
    	.arun 1 .gsh scan userfiles .run 2
    	.arun 2 .note Copy the filename stored in { into backup directory...
    	.arun 2 .note ...if filename contains the username stored in }
    	.arun 2 .gsh cd userfiles
    	.arun 2 .if in{ } : .gsh cp { ../backup
    	.arun 2 .gsh cd ..
    

    We can run the commands file 1 only to backup the files of Sabin, Mituc and Beavis:

    	.for 1 Sabin Mituc Beavis
    

    To backup files of all connected users we just are writing:

    	.for 1 users
    

    To run the script only for an user:

    	.set ={ Lumi
    	.run 1
    
  4. Some actions automatically executed when an event occurs:
    	.event shout .run 7
    	.arun 7 .social shake *
    	.arun 7 .tell * I'm happy, but it's not necessary to shout too much!
    	.arun 7 .macro cga
    

    The * variable contains the name of user who commit an event and .macro cga means a colorful 'Congratulations!' message.

Users and distribution

Without users, GAEN cannot exists. Since august 1996, we are continuing to experiment with some versions of GAEN. In the present, the GAEN teleconferencing systems are running on the sites of 'A.I.Cuza' University of Iasi, at the Faculty of Computer Science (fenrir.infoiasi.ro 3300) and the Faculty of Geography and Geology (vela.uaic.ro 7000) and the sites of 'G.Asachi' Technical University of Iasi, at the Faculty of Automatic Control and Computer Science (hal.cs.tuiasi.ro 7777) and the Faculty of Electronics and Telecommunications (zeta.etc.tuiasi.ro 7000). The enumerated talkers build the GAEN system network, very popular among students and professors.

The researchers of the Institute for Information Science - Iasi branch are using a version of GAEN system, too (on iit.iit.tuiasi.ro 7000).

We do not have a strict control of number of installed GAEN systems because the sources and the additional files are distributed freely on Internet at this Web address: http://www.infoiasi.ro/~busaco/gaen/. GAEN distribution package includes the source files (more than 15000 lines of code) written in standard C for UNIX systems (to compile them we are using the GNU C compilers), configuration, additional (quotes, pictures etc.) and help files. The OS/2 version of GAEN is available on request.

There are more than 700 frequent 15-50 aged users from Romania (Iasi, Bucuresti, Craiova, Brasov, Cluj, Bacau, Galati, Suceava), United States of America, Great Britain, Finland, Denmark, Moldova Republic, Israel etc.

The current version of the teleconferencing system is GAEN Goya 12, which includes the changed logs files notify facility. In the future, we intend to develop an AI support tool to extract the conclusions from the conversation lines based on some predefined keywords.

Slides

REFERENCES

[1] W.Richard Stevens, Advanced Programming in the UNIX Environments, Addison-Wesley, 1992

[2] Marc J.Rochkind, Advanced UNIX Programming, Prentice-Hall, New Jersey, 1985

[3] K.Blakeslee, I.Sugarbread, The Evolution of Personal Computing and Communication, IFIP, 1994

[4] Andrew S.Tanenbaum, Retele de calculatoare, Computer Press Agora, Tg.Mures, 1997

[5] Charles L.Hedrick, Introduction to the Internet Protocols, CSFG, Rutgers University, 1987

[6] Jean-Marie Rifflet, UNIX - 99 exercices corigees, Ediscience, Paris, 1996