pgplus/bin/
pgplus/help_files/
pgplus/port_redirector/
pgplus/src/configure/makefiles/
/*
 * intercom.h
 * Grims intercom header file
 * ---------------------------------------------------------------------------
 */

#ifndef _INTERCOM_H
#define _INTERCOM_H

#ifndef MAX_NAME
#include "player.h"
#endif

#define INTERCOM_VERSION "1.1.6"
#define INTERCOM_STACK 20480

#define COLOUR_TERMINATOR "^N"

#define MAX_TALKER_NAME 40
#define MAX_TALKER_ABBR 10
#define MAX_PACKET 200
#ifdef WALT
#define VARARGS
#endif

typedef struct _packet
{
  char data[MAX_PACKET + 1];
  int length;
  struct _packet *next;
} packet;

typedef struct 
{
  int packets_in;
  int packets_out;
  int chars_in;
  int chars_out;
  int established;
  int up_clicks;
} net_usage;

typedef struct _talker_list
{
  char name[MAX_TALKER_NAME];
  char abbr[MAX_TALKER_ABBR];
  char addr[MAX_INET_ADDR];
  char dynamic[MAX_INET_ADDR];
  int num[4];
  int port;
  int fd;
  int flags;
  time_t timeout;
  signed int validation;
  time_t last_seen;
  net_usage net_stats;
  packet *packet_anchor;
  struct _talker_list *next;
} talker_list;

typedef struct _job_list
{
  long unsigned int job_id;
  long unsigned int job_ref;
  char sender[MAX_NAME];
  char msg[256];
  time_t timeout;
  int command_type;
  char target[MAX_NAME];
  char originator[MAX_TALKER_ABBR];
  char destination[MAX_TALKER_ABBR];
  struct _job_list *next;
  struct _job_list *prev;
} job_list;

typedef struct _nameban
{
  char name[MAX_NAME];
  short type;
  struct _nameban *next;
} nameban;

/*
 * Protocol for messages between walt and the intercom
 */

#define BANISH_SITE 1
#define OPEN_ALL_LINKS 2
#define CLOSE_ALL_LINKS 3
#define UNBAR_LINK 4
#define CLOSE_LINK 5
#define ADD_NEW_LINK 6
#define USER_COMMAND 7
#define NAME_IGNORED 8
#define NAME_BLOCKED 9
#define REQUEST_PORTNUMBER 10
#define LINK_REQUESTED_UNKNOWN 11
#define SHOW_LINKS 12
#define SU_MESSAGE 13
#define DELETE_LINK 15
#define PERSONAL_MESSAGE 16
#define HIGHLIGHT_RETURN 17
#define HELLO_I_AM 18
#define REQUEST_VALIDATION_AS 19
#define VALIDATION_IS 20
#define BAD_HELLO 21
#define BAD_VALIDATION 22
#define PERSONAL_MESSAGE_TAG 23
#define PERSONAL_MESSAGE_AND_RETURN 24
#define REPLY_IS 25
#define NO_SUCH_PLAYER 26
#define COMMAND_SUCCESSFUL 27
#define PORTNUMBER_FOLLOWS 28
#define OPEN_LINK 29
#define CHANGE_NAME 30
#define CHANGE_ABBR 31
#define CHANGE_ADDRESS 32
#define CHANGE_PORT 33
#define TALKER_IGNORED 34
#define TALKER_BLOCKED 35
#define REQUEST_SERVER_LIST 36
#define I_KNOW_OF 37
#define INTERCOM_DIE 38
#define PING 39
#define REQUEST_STATS 40
#define NAME_BANISHED 41
#define MULTIPLE_NAME_MATCH 42
#define STARTING_CONNECT 43
#define SHOW_ALL_LINKS_SHORT 44
#define HIDE_ENTRY 45
#define FORMAT_MESSAGE_TAG 46
#define UNHIDE_ENTRY 47
#define BARRING_YOU 48
#define INTERCOM_ROOM_MESSAGE 49
#define INTERCOM_ROOM_LOOK 50
#define INTERCOM_ROOM_LIST 51
#define WE_ARE_MOVING 52
#define USER_ACTION 53
#define USE_DYNAMIC 54
/*RESERVED ALL VALUES UP TO &inc 100 FOR CENTRAL INTERCOM DEVELOPMENT*/
#define ICHAN_MESSAGE 102
#define INTERCOM_ICHAN_WHO 103
#define INTERCOM_ICHAN_LIST 104
#define COMMAND_UPDATE 105

/*User actions*/
#define ENTER_ROOM 1
#define LEAVE_ROOM 2

/*RESERVED ALL VALUES ABOVE 0xEF FOR CENTRAL DEVELOPMENT*/
#define END_MESSAGE (0xFE)
#define INCOMPLETE_MESSAGE (0xFF)


/*Command codes*/
#define COMMAND_WHO 1
#define COMMAND_FINGER 2
#define COMMAND_EXAMINE 3
#define COMMAND_TELL 4
#define COMMAND_REMOTE 5
#define COMMAND_LSU 6
#define COMMAND_LOCATE 7
/*Ack, buggered up the protocol, have to miss a few out*/
#define COMMAND_IDLE 10
#define COMMAND_SAY 11
#define COMMAND_EMOTE 12
/*RESERVED ALL VALUES UP TO 100 FOR CENTRAL INTERCOM DEVELOPMENT*/

#define ICHAN_SAY 101
#define ICHAN_EMOTE 102
#define ICHAN_ACTION 103

/*List codes*/
#define LIST_ALL 1
#define LIST_HIDDEN 2
#define LIST_UP 3
/*RESERVED ALL VALUES UP TO 50 FOR CENTRAL INTERCOM DEVELOPMENT*/

/*Intercom status*/
#define INTERCOM_HIGHLIGHT (1<<0)
#define BAR_ALL_CONNECTIONS (1<<1)
#define INTERCOM_PERSONAL_MSG (1<<2)
#define INTERCOM_BOOTING (1<<3)
#define INTERCOM_FORMAT_MSG (1<<4)
/*RESERVED ALL VALUES UP TO (1<<25) FOR CENTRAL INTERCOM DEVELOPMENT*/

/*FD status*/
#define NO_CONNECT_TRIED -23
#define ERROR_FD -69
#define BARRED -99
#define BARRED_REMOTE -123
#define P_BARRED -999
#define NO_SYNC_TALKER -9999
/*RESERVED ALL VALUES DOWN TO  -10000 FOR CENTRAL INTERCOM DEVELOPMENT*/

/*talker flags*/
#define WAITING_CONNECT (1<<0)
#define HELLO_AFTER_CONNECT (1<<1)
#define INVIS (1<<2)
#define VALIDATE_AFTER_CONNECT (1<<3)
#define FIRST_CONTACT (1<<4)
/*RESERVED ALL VALUES UP TO (1<<25) FOR CENTRAL INTERCOM DEVELOPMENT*/

#endif