("Symposium on Automatic Control and Computer Science - SACCS'98 Proceedings" - November 1998, Iasi)
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.).
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.
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).
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.
The list of all original and advanced implemented concepts is long. We'll enumerate only the most important of them:
GAEN includes a high-level scripting programming language which offer run commands files executed by the logged on users, user private variables, test (.if) and cycle (.for) statements. Using the flexible .if command we can test the presence of an user, some status flags of an user or talker's flags etc. It's possible to iterate the execution of a command using .for and .execute commands.
A minimal set of UNIX operating system commands is available: ls, more, tail, grep, mkdir, cd, chmod, who, last, cp, mv etc.
Some actions of the users generate an event: log-in, log-out, shout, broadcast of an important message and so on. For each event, the users are able to associate a command to be executed when that event will occur.
The possibility to save/restore some user information flags (such as ignoring all tells flag, ignoring sending of pictures, the tone of the voice etc.) in a special file.
To avoid the waiting of response from name servers to obtain host name of a connected user, we have the facility to consult an internal file with IPs and host names (in the present, the hosts file counts more than 300 entries).
Some examples of commands files using GSL and gsh facilities will follow:
.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).
.arun 0 .if !puzzle { : .smail { You don't like to play Puzzle?
.for 0 users
.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
.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.
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.
[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