home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 024 / psi110g.zip / MAILBOX.H < prev    next >
C/C++ Source or Header  |  1994-08-26  |  12KB  |  307 lines

  1. #ifndef _MAILBOX_H
  2. #define _MAILBOX_H
  3. /* Defines for the ax.25 mailbox facility */
  4.   
  5. #ifndef _SMTP_H
  6. #include "smtp.h"
  7. #endif
  8.   
  9. #ifndef _TIMER_H
  10. #include "timer.h"
  11. #endif
  12.   
  13. #ifndef _AX25_h
  14. #include "ax25.h"
  15. #endif
  16.   
  17. #ifndef _CONFIG_H
  18. #include "config.h"
  19. #endif
  20.   
  21. #ifndef _TIPMAIL_H
  22. #include "tipmail.h"
  23. #endif
  24.   
  25. #ifndef _INDEX_H
  26. #include "index.h"
  27. #endif
  28.   
  29. /* a mailbox entry */
  30. struct let {
  31.     long    start;
  32.     long    size;
  33.     int     status;
  34. #ifdef USERLOG
  35.     long    msgid;
  36. #endif
  37. };
  38.   
  39. #define MAXPWDLEN 30
  40. #define MBXLINE 128         /* max length of line */
  41. #define MBXNAME 20          /* max length of user name */
  42. #define CNAMELEN 10         /* max lenght of convers names */
  43. #define AREALEN 64
  44.   
  45. struct mbx {
  46.     struct mbx *next;       /* next one on list */
  47.     int state ;             /* mailbox state */
  48. #define MBX_LOGIN       0               /* trying to log in */
  49. #define MBX_CMD         1               /* in command mode */
  50. #define MBX_SUBJ        2               /* waiting for a subject line */
  51. #define MBX_DATA        3               /* collecting the message */
  52. #define MBX_REVFWD      4               /* reverse forwarding in progress */
  53. #define MBX_TRYING      5               /* pending forwarding connection */
  54. #define MBX_FORWARD     6               /* established forwarding connection */
  55. #define MBX_GATEWAY 7       /* gatewaying somewhere */
  56. #define MBX_READ    8       /* reading a message */
  57. #define MBX_UPLOAD  9       /* uploading a file */
  58. #define MBX_DOWNLOAD 10     /* downloading a file */
  59. #define MBX_CONVERS 11      /* Using convers mode */
  60. #define MBX_CHAT    12      /* Chatting with sysop */
  61. #define MBX_WHAT    13      /* Listing files */
  62. #define MBX_SYSOPTRY 14     /* Trying sysop */
  63. #define MBX_SYSOP   15      /* Is sysop */
  64. #define MBX_XMODEM_RX 16    /* receiving xmodem */
  65. #define MBX_XMODEM_TX 17    /* sending xmodem */
  66.     int family;             /* Type of incoming connection */
  67.     char name[MBXNAME+1];   /* Name of remote station */
  68.     char call[AXALEN];      /* User call in shifted form, if applicable*/
  69. #ifdef USERLOG
  70.     char *username;         /* User's name from registration */
  71.     char *homebbs;          /* User's homebbs address */
  72.     char *IPemail;          /* User's email address */
  73.     long last;              /* Time of last login */
  74. #endif
  75. #ifdef MAILCMDS
  76.     char *to ;          /* To-address in form user or user@host */
  77.     char *origto ;                  /* Original To-address, if rewritten */
  78.     char *tofrom ;                  /* Optional <from in to-address */
  79.     char *origbbs ;         /* Original bbs, if tracing R: lines */
  80.     char *tomsgid ;         /* Optional $msgid in to-address */
  81.     char *subject ;         /* Message subject */
  82.     char *date ;            /* Date of the message */
  83.     FILE *mfile;            /* Used during reverse forwarding */
  84.     FILE *tfile ;           /* Temporary file for message, or */
  85.                             /* forwarding script file. */
  86.     FILE *tfp;              /* Temporary file when reading R: headers */
  87. #endif
  88.     char line[MBXLINE+1] ;  /* Room for null at end */
  89.     int sid ;               /* Characteristics indicated by the SID */
  90.                             /* banner of the attaching station.  If */
  91.                             /* no SID was sent, this is zero.  If an */
  92.                             /* SID of any kind was received, it is */
  93.                             /* assumed that the station supports */
  94.                             /* abbreviated mail forwarding mode. */
  95. #define MBX_SID         0x01    /* Got any SID */
  96. #define MBX_RLI_SID     0x02    /* This is an RLI BBS, disconnect after F> */
  97. #define MBX_HIER_SID    0x04    /* The BBS supports hierarchical routing */
  98. #define MBX_EXPERT  0x08        /* expert user status */
  99. #define MBX_AREA    0x10        /* show area in prompt */
  100. #define MBX_NRID    0x20        /* use netrom ident */
  101. #define MBX_LL      0x80        /* LAN-LINK system */
  102. #define MBX_MID     0x0100      /* BBS supports MID's */
  103. #define MBX_FBB     0x0200      /* F6FBB bbs */
  104. #define MBX_REPLYADDR 0x0400    /* Include a 'Reply-to:' line in mail */
  105. #define MBX_LINEMODE 0x1000     /* set (by XP) to disable attempts to read single char responses */
  106.     char stype ;            /* BBS send command type (B,P,T, etc.) */
  107.     int type ;              /* Type of session when invoking "chat" */
  108.     int user;               /* User linkage area */
  109.     struct proc *proc;      /* My process */
  110.     char escape;            /* Escape character */
  111.     long privs;             /* Privileges (taken from Ftpusers file) */
  112. #define FTP_READ        1L       /* Read files */
  113. #define FTP_CREATE      2L       /* Create new files */
  114. #define FTP_WRITE       4L       /* Overwrite or delete existing files */
  115. #define AX25_CMD        8L       /* AX.25 gateway operation allowed */
  116. #define TELNET_CMD      16L      /* Telnet gateway operation allowed */
  117. #define NETROM_CMD      32L      /* NET/ROM gateway operation allowed */
  118. #define SYSOP_CMD       64L      /* Remote sysop access allowed */
  119. #define EXCLUDED_CMD    128L     /* This user is banned from the BBS */
  120. /* 256 and 512 are used in PPP*/
  121. #define NO_SENDCMD      1024L    /* Disallow send command */
  122. #define NO_READCMD      2048L    /* Disallow read command */
  123. #define NO_3PARTY       4096L    /* Disallow third-party mail */
  124. #define IS_BBS          8192L    /* This user is a bbs */
  125. #define IS_EXPERT       16384L   /* This user is an expert */
  126. #define NO_CONVERS      32768L   /* Disallow convers command */
  127. #define NO_ESCAPE       65536L   /* Default is no escape */
  128. #define NO_LISTS        131072L  /* No lists displayed from mailbox */
  129. #define NO_LINKEDTO     262144L  /* No '*** LINKED TO' allowed */
  130.   
  131.     char *path;             /* Directory path */
  132.     char *startmsg;         /* Message to be sent at connect */
  133. #ifdef MAILCMDS
  134.     long mboxsize;          /* size of mailbox when opened */
  135.     int mycnt;              /* number of msgs in my private mailbox */
  136.     struct let *mbox;
  137.     int current;            /* the current message number */
  138.     int nmsgs;              /* number of messages in this mail box */
  139.     int newmsgs;            /* number of new messages in mail box */
  140.     int change;             /* mail file changed */
  141.     int anyread;            /* true if any message has been read */
  142.     char area[AREALEN+1];          /* name of current mail area */
  143.     int areatype;           /* is the current mail area private or public ? */
  144. #define USER    0           /* Sysop checking other personal areas */
  145. #define PRIVATE 1
  146. #define AREA    2
  147.     int lockcnt;        /* of associated mbox */
  148. #endif
  149.     int morerows;           /* Number of lines before -more- prompt */
  150. /* Next two are used by userlog code - WG7J */
  151. #ifdef USERLOG
  152.     long lastread;          /* number of last read message in area */
  153.     long newlastread;       /* id of new last listed message in area */
  154. #endif
  155. #ifdef MAILCMDS
  156.     char *stdinbuf;         /* the stdio buffer for the mail file */
  157.     char *stdoutbuf;        /* the stdio file io buffer for the temp file */
  158. #endif
  159. #ifdef TIPSERVER
  160.     struct tipcb *tip;       /* tip structure if tip mail incoming */
  161. #endif
  162. } ;
  163. #define         NULLMBX         (struct mbx *)0
  164.   
  165. /* Structure used for automatic flushing of gateway sockets */
  166. struct gwalarm {
  167.     int s1;
  168.     int s2;
  169.     struct timer t;
  170. };
  171.   
  172. #ifdef MBFWD
  173. /* A forward entry */
  174. struct fwd {
  175.     struct mbx *m;
  176.     char bid[15];
  177.     struct mailindex ind;
  178. };
  179. #endif
  180.   
  181. #define MSG_MODIFY  0
  182. #define MSG_READ    1
  183.   
  184. struct alias {
  185.     struct alias *next;
  186.     char *name;
  187.     char *cmd;
  188. };
  189. extern struct alias *AliasList;
  190.   
  191. struct alias *findalias(char *cmd);
  192. struct alias *findalias(char *cmd);
  193. int dombalias(int argc,char *argv[],void *p);
  194. int doaliases(int argc,char *argv[],void *p);
  195.   
  196. /* In converse.c */
  197. extern void mbox_converse(struct mbx *m,int channel);
  198. extern int ShowConfLinks __ARGS((int s,int full));
  199. extern int ShowConfUsers __ARGS((int s,int quick,char *name));
  200.   
  201. /* In mailbox.c */
  202. extern char Noperm[];
  203. extern char Nosock[];
  204. extern char Mbpasswd[];
  205. extern char MboxId[];
  206. extern char Badmsg[];
  207. extern char Nomail[];
  208. extern char Mbnrid[];
  209. extern char Mbwarning[];
  210. extern char Howtoend[];
  211. extern char MsgAborted[];
  212. extern char *Mtmsg;
  213.   
  214. extern struct mbx *Mbox;
  215. extern void (*Listusers) __ARGS((int s));
  216.   
  217. extern int ThirdParty;
  218. extern int Mtrace;
  219. extern int MbRegister;
  220. extern int MAttended;
  221. extern int Mbloophold;
  222. extern int NoBid;
  223. extern int Mbnewmail;
  224. extern int Usenrid;
  225. extern int MBSecure;
  226. extern int Mbsendquery;
  227.   
  228. extern int32 Mbtdiscinit;
  229. extern unsigned Tiptimeout;
  230.   
  231. int dombescape __ARGS((int argc,char *argv[],void *p));
  232. int mbxrecvline __ARGS((struct mbx *m));
  233. int gw_connect __ARGS((struct mbx *m,int s,struct sockaddr *fsocket,int len));
  234.   
  235. void mbx_incom __ARGS((int s,void *t,void *p));
  236. int domboxdisplay __ARGS((int argc,char *argv[],void *p));
  237. struct mbx *newmbx __ARGS((void));
  238. void exitbbs __ARGS((struct mbx *m));
  239. int domboxbye __ARGS((int argc,char *argv[],void *p));
  240. int mbx_parse __ARGS((struct mbx *m));
  241. void changearea __ARGS((struct mbx *m,char *area));
  242. char *rewrite_address __ARGS((char *addr));
  243. void listusers __ARGS((int s));
  244. void putprompt __ARGS((struct mbx *m));
  245. int doxmodem __ARGS((char mode,char *filename,void *p));
  246. int uuencode __ARGS((FILE *infile,int s,char *infilename));
  247. int dombports __ARGS((int argc,char *argv[],void *p));
  248. int charmode_ok __ARGS((struct mbx *m));
  249.   
  250. /* in mboxcmd.c */
  251. int dombuserinfo __ARGS((int argc,char *argv[],void *p));
  252. void loguser __ARGS((struct mbx *m));
  253. void setmbnrid __ARGS((void));
  254. void updatedefaults __ARGS((struct mbx *));
  255. char *cmd_line __ARGS((int argc,char *argv[],char stype));
  256. void listnewmail(struct mbx *m,int silent);
  257.   
  258. /* In forward.c: */
  259. int dorevfwd __ARGS((int argc,char *argv[],void *p));
  260. int dombtimer __ARGS((int argc,char *argv[],void *p));
  261. int dombkick __ARGS((int argc,char *argv[],void *p));
  262.   
  263. int dombconnect __ARGS((int argc,char *argv[],void *p));
  264. int dombconvers __ARGS((int argc,char *argv[],void *p));
  265. int dodownload __ARGS((int argc,char *argv[],void *p));
  266. int dombupload __ARGS((int argc,char *argv[],void *p));
  267. int dowhat __ARGS((int argc,char *argv[],void *p));
  268. int dozap __ARGS((int argc,char *argv[],void *p));
  269. int dosend __ARGS((int argc,char *argv[],void *p));
  270. int dosid __ARGS((int argc,char *argv[],void *p));
  271. int dosysop __ARGS((int argc,char *argv[],void *p));
  272. int dostars __ARGS((int argc,char *argv[],void *p));
  273. int dombhelp __ARGS((int argc,char *argv[],void *p));
  274. int dombiproute __ARGS((int argc,char *argv[],void *p));
  275. int dombtelnet __ARGS((int argc,char *argv[],void *p));
  276. int dombfinger __ARGS((int argc,char *argv[],void *p));
  277. int dombexpert __ARGS((int argc,char *argv[],void *p));
  278. int dombjheard __ARGS((int argc,char *argv[],void *p));
  279. int dombmovemail __ARGS((int argc,char *argv[],void *p));
  280. void gw_alarm __ARGS((void *p));
  281. void gw_input __ARGS((int s,void *notused,void *p));
  282. void gw_superv __ARGS((int null,void *proc,void *p));
  283. int mbx_to __ARGS((int argc,char *argv[],void *p));
  284. int mbx_data __ARGS((struct mbx *m,struct list *cclist,char *extra));
  285. int msgidcheck __ARGS((char *string));
  286. int thirdparty __ARGS((struct mbx *m));
  287. int dombsemicolon __ARGS((int argc,char *argv[],void *p));
  288. int dombping __ARGS((int argc,char *argv[],void *p));
  289. int dombnrnodes __ARGS((int argc,char *argv[],void *p));
  290. int donrneighbour __ARGS((int argc,char *argv[],void *p));
  291. int dombnrneighbour __ARGS((int argc,char *argv[],void *p));
  292. int doarea __ARGS((int argc,char *argv[],void *p));
  293. int doregister  __ARGS((int argc,char *argv[],void *p));
  294. int dombusers __ARGS((int argc,char *argv[],void *p));
  295. int dombpast __ARGS((int argc,char *argv[],void *p));
  296. int dombstatus __ARGS((int argc,char *argv[],void *p));
  297. int dombmailstats __ARGS((int argc,char *argv[],void *p));
  298. int doipheard __ARGS((int argc,char *argv[],void *p));
  299. int dombipheard __ARGS((int argc,char *argv[],void *p));
  300. int mbx_getname __ARGS((struct mbx *m));
  301. int dochat __ARGS((int argc,char *argv[],void *p));
  302.   
  303. void eout(char *s);
  304.   
  305. #endif  /* _MAILBOX_H */
  306.   
  307.