4 char RRname[ROOMNAMELEN]; /* Name of room */
5 long RRunread; /* Number of unread messages */
6 long RRtotal; /* Total number of messages in room */
7 char RRinfoupdated; /* Nonzero if info was updated */
8 unsigned RRflags; /* Various flags (see LKRN) */
9 long RRhighest; /* Highest message number in room */
10 long RRlastread; /* Highest message user has read */
11 char RRismailbox; /* Is this room a mailbox room? */
12 char RRaide; /* User can do aide commands in room */
13 long RRnewmail; /* Number of new mail messages */
14 char RRfloor; /* Which floor this room is on */
20 char number[16]; /* part number */
21 char name[PATH_MAX]; /* Name */
22 char filename[PATH_MAX]; /* Suggested filename */
23 char mimetype[SIZ]; /* MIME type */
24 char disposition[SIZ]; /* Content disposition */
25 unsigned long length; /* Content length */
29 struct ctdlipcmessage {
30 char msgid[SIZ]; /* Original message ID */
31 char path[SIZ]; /* Return path to sender */
32 char zaps[SIZ]; /* Message ID that this supersedes */
33 char subject[SIZ]; /* Message subject */
34 char email[SIZ]; /* Email address of sender */
35 char author[USERNAME_SIZE]; /* Sender of message */
36 char recipient[USERNAME_SIZE]; /* Recipient of message */
37 char room[ROOMNAMELEN]; /* Originating room */
38 char node[16]; /* Short nodename of origin system */
39 char hnod[21]; /* Humannode of origin system */
40 struct parts *attachments; /* Available attachments */
41 char *text; /* Message text */
42 int type; /* Message type */
43 time_t time; /* Time message was posted */
44 char nhdr; /* Suppress message header? */
45 char anonymous; /* An anonymous message */
46 char mime_chosen[SIZ]; /* Chosen MIME part to output */
47 char content_type[SIZ]; /* How would you like that? */
52 long newmail; /* Number of new Mail messages */
53 char needregis; /* Nonzero if user needs to register */
54 char needvalid; /* Nonzero if users need validation */
61 int CtdlIPCNoop(void);
62 int CtdlIPCEcho(const char *arg, char *cret);
63 int CtdlIPCQuit(void);
64 int CtdlIPCLogout(void);
65 int CtdlIPCTryLogin(const char *username, char *cret);
66 int CtdlIPCTryPassword(const char *passwd, char *cret);
67 int CtdlIPCCreateUser(const char *username, int selfservice, char *cret);
68 int CtdlIPCChangePassword(const char *passwd, char *cret);
69 int CtdlIPCKnownRooms(int which, int floor, struct march **listing, char *cret);
70 int CtdlIPCGetConfig(struct usersupp **uret, char *cret);
71 int CtdlIPCSetConfig(struct usersupp *uret, char *cret);
72 int CtdlIPCGotoRoom(const char *room, const char *passwd,
73 struct ctdlipcroom **rret, char *cret);
74 int CtdlIPCGetMessages(int which, int whicharg, const char *template,
75 long **mret, char *cret);
76 int CtdlIPCGetSingleMessage(long msgnum, int headers, int as_mime,
77 struct ctdlipcmessage **mret, char *cret);
78 int CtdlIPCWhoKnowsRoom(char **listing, char *cret);
79 int CtdlIPCServerInfo(struct CtdlServInfo *ServInfo, char *cret);
80 int CtdlIPCReadDirectory(char **listing, char *cret);
81 int CtdlIPCSetLastRead(long msgnum, char *cret);
82 int CtdlIPCInviteUserToRoom(const char *username, char *cret);
83 int CtdlIPCKickoutUserFromRoom(const char *username, char *cret);
84 int CtdlIPCGetRoomAttributes(struct quickroom **qret, char *cret);
85 int CtdlIPCSetRoomAttributes(int forget, struct quickroom *qret, char *cret);
86 int CtdlIPCGetRoomAide(char *cret);
87 int CtdlIPCSetRoomAide(const char *username, char *cret);
88 int CtdlIPCPostMessage(int flag, const struct ctdlipcmessage *mr, char *cret);
89 int CtdlIPCRoomInfo(char **iret, char *cret);
90 int CtdlIPCDeleteMessage(long msgnum, char *cret);
91 int CtdlIPCMoveMessage(int copy, long msgnum, const char *destroom, char *cret);
92 int CtdlIPCDeleteRoom(int for_real, char *cret);
93 int CtdlIPCCreateRoom(int for_real, const char *roomname, int type,
94 const char *password, int floor, char *cret);
95 int CtdlIPCForgetRoom(char *cret);
96 int CtdlIPCSystemMessage(const char *message, char **mret, char *cret);
97 int CtdlIPCNextUnvalidatedUser(char *cret);
98 int CtdlIPCGetUserRegistration(const char *username, char **rret, char *cret);
99 int CtdlIPCValidateUser(const char *username, int axlevel, char *cret);
100 int CtdlIPCSetRoomInfo(int for_real, const char *info, char *cret);
101 int CtdlIPCUserListing(char **list, char *cret);
102 int CtdlIPCSetRegistration(const char *info, char *cret);
103 int CtdlIPCMiscCheck(struct ctdlipcmisc *chek, char *cret);
104 int CtdlIPCDeleteFile(const char *filename, char *cret);
105 int CtdlIPCMoveFile(const char *filename, const char *destroom, char *cret);
106 int CtdlIPCNetSendFile(const char *filename, const char *destnode, char *cret);
107 int CtdlIPCOnlineUsers(char **listing, time_t *stamp, char *cret);
108 int CtdlIPCFileDownload(const char *filename, void **buf, char *cret);
109 int CtdlIPCAttachmentDownload(long msgnum, const char *part, void **buf,
111 int CtdlIPCImageDownload(const char *filename, void **buf, char *cret);
112 int CtdlIPCFileUpload(const char *filename, const char *comment, void *buf,
113 size_t bytes, char *cret);
114 int CtdlIPCImageUpload(int for_real, const char *filename, size_t bytes,
116 int CtdlIPCQueryUsername(const char *username, char *cret);
117 int CtdlIPCFloorListing(char **listing, char *cret);
118 int CtdlIPCCreateFloor(int for_real, const char *name, char *cret);
119 int CtdlIPCDeleteFloor(int for_real, int floornum, char *cret);
120 int CtdlIPCEditFloor(int floornum, const char *floorname, char *cret);
121 int CtdlIPCIdentifySoftware(int developerid, int clientid, int revision,
122 const char *software_name, const char *hostname, char *cret);
123 int CtdlIPCSendInstantMessage(const char *username, const char *text,
125 int CtdlIPCGetInstantMessage(char **listing, char *cret);
126 int CtdlIPCEnableInstantMessageReceipt(int mode, char *cret);
127 int CtdlIPCSetBio(char *bio, char *cret);
128 int CtdlIPCGetBio(const char *username, char **listing, char *cret);
129 int CtdlIPCListUsersWithBios(char **listing, char *cret);
130 int CtdlIPCStealthMode(int mode, char *cret);
131 int CtdlIPCTerminateSession(int sid, char *cret);
132 int CtdlIPCTerminateServerNow(char *cret);
133 int CtdlIPCTerminateServerScheduled(int mode, char *cret);
134 int CtdlIPCEnterSystemMessage(const char *filename, const char *text,
136 int CtdlIPCChangeHostname(const char *hostname, char *cret);
137 int CtdlIPCChangeRoomname(const char *roomname, char *cret);
138 int CtdlIPCChangeUsername(const char *username, char *cret);
139 time_t CtdlIPCServerTime(char *crert);
140 int CtdlIPCAideGetUserParameters(const char *who,
141 struct usersupp **uret, char *cret);
142 int CtdlIPCAideSetUserParameters(const struct usersupp *uret, char *cret);
143 int CtdlIPCGetMessageExpirationPolicy(int which, char *cret);
144 int CtdlIPCSetMessageExpirationPolicy(int which, int policy, int value,
146 int CtdlGetSystemConfig(char **listing, char *cret);
147 int CtdlSetSystemConfig(const char *listing, char *cret);
148 int CtdlIPCModerateMessage(long msgnum, int level, char *cret);
149 int CtdlIPCRequestClientLogout(int session, char *cret);
150 int CtdlIPCSetMessageSeen(long msgnum, int seen, char *cret);
151 int CtdlIPCStartEncryption(char *cret);
152 int CtdlIPCDirectoryLookup(const char *address, char *cret);
153 int CtdlIPCSpecifyPreferredFormats(char *cret, char *formats);
155 /* ************************************************************************** */
156 /* Stuff below this line is not for public consumption */
157 /* ************************************************************************** */
159 inline void netio_lock(void);
160 inline void netio_unlock(void);
161 char *CtdlIPCReadListing(char *dest);
162 int CtdlIPCSendListing(const char *listing);
163 size_t CtdlIPCPartialRead(void **buf, size_t offset, size_t bytes, char *cret);
164 int CtdlIPCEndUpload(char *cret);
165 int CtdlIPCWriteUpload(void *buf, size_t bytes, char *cret);
166 int CtdlIPCEndDownload(char *cret);
167 int CtdlIPCReadDownload(void **buf, size_t bytes, char *cret);
168 int CtdlIPCGenericCommand(const char *command, const char *to_send,
169 size_t bytes_to_send, char **to_receive,
170 size_t *bytes_to_receive, char *proto_response);