]> code.citadel.org Git - citadel.git/blob - citadel/citadel_ipc.h
* Added in some infrastructure to switch the client's message reading from
[citadel.git] / citadel / citadel_ipc.h
1 /* $Id$ */
2
3 struct ctdlipcroom {
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 */
15 };
16
17
18 struct parts {
19         struct parts *next;
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 */
26 };
27
28
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 };
48
49
50 struct ctdlipcmisc {
51         long newmail;                   /* Number of new Mail messages */
52         char needregis;                 /* Nonzero if user needs to register */
53         char needvalid;                 /* Nonzero if users need validation */
54 };
55
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59
60 int CtdlIPCNoop(void);
61 int CtdlIPCEcho(const char *arg, char *cret);
62 int CtdlIPCQuit(void);
63 int CtdlIPCLogout(void);
64 int CtdlIPCTryLogin(const char *username, char *cret);
65 int CtdlIPCTryPassword(const char *passwd, char *cret);
66 int CtdlIPCCreateUser(const char *username, int selfservice, char *cret);
67 int CtdlIPCChangePassword(const char *passwd, char *cret);
68 int CtdlIPCKnownRooms(int which, int floor, struct march **listing, char *cret);
69 int CtdlIPCGetConfig(struct usersupp **uret, char *cret);
70 int CtdlIPCSetConfig(struct usersupp *uret, char *cret);
71 int CtdlIPCGotoRoom(const char *room, const char *passwd,
72                 struct ctdlipcroom **rret, char *cret);
73 int CtdlIPCGetMessages(int which, int whicharg, const char *template,
74                 long **mret, char *cret);
75 int CtdlIPCGetSingleMessage(long msgnum, int headers, int as_mime,
76                 struct ctdlipcmessage **mret, char *cret);
77 int CtdlIPCWhoKnowsRoom(char **listing, char *cret);
78 int CtdlIPCServerInfo(struct CtdlServInfo *ServInfo, char *cret);
79 int CtdlIPCReadDirectory(char **listing, char *cret);
80 int CtdlIPCSetLastRead(long msgnum, char *cret);
81 int CtdlIPCInviteUserToRoom(const char *username, char *cret);
82 int CtdlIPCKickoutUserFromRoom(const char *username, char *cret);
83 int CtdlIPCGetRoomAttributes(struct quickroom **qret, char *cret);
84 int CtdlIPCSetRoomAttributes(int forget, struct quickroom *qret, char *cret);
85 int CtdlIPCGetRoomAide(char *cret);
86 int CtdlIPCSetRoomAide(const char *username, char *cret);
87 int CtdlIPCPostMessage(int flag, const struct ctdlipcmessage *mr, char *cret);
88 int CtdlIPCRoomInfo(char **iret, char *cret);
89 int CtdlIPCDeleteMessage(long msgnum, char *cret);
90 int CtdlIPCMoveMessage(int copy, long msgnum, const char *destroom, char *cret);
91 int CtdlIPCDeleteRoom(int for_real, char *cret);
92 int CtdlIPCCreateRoom(int for_real, const char *roomname, int type,
93                 const char *password, int floor, char *cret);
94 int CtdlIPCForgetRoom(char *cret);
95 int CtdlIPCSystemMessage(const char *message, char **mret, char *cret);
96 int CtdlIPCNextUnvalidatedUser(char *cret);
97 int CtdlIPCGetUserRegistration(const char *username, char **rret, char *cret);
98 int CtdlIPCValidateUser(const char *username, int axlevel, char *cret);
99 int CtdlIPCSetRoomInfo(int for_real, const char *info, char *cret);
100 int CtdlIPCUserListing(char **list, char *cret);
101 int CtdlIPCSetRegistration(const char *info, char *cret);
102 int CtdlIPCMiscCheck(struct ctdlipcmisc *chek, char *cret);
103 int CtdlIPCDeleteFile(const char *filename, char *cret);
104 int CtdlIPCMoveFile(const char *filename, const char *destroom, char *cret);
105 int CtdlIPCNetSendFile(const char *filename, const char *destnode, char *cret);
106 int CtdlIPCOnlineUsers(char **listing, time_t *stamp, char *cret);
107 int CtdlIPCFileDownload(const char *filename, void **buf, char *cret);
108 int CtdlIPCAttachmentDownload(long msgnum, const char *part, void **buf,
109                 char *cret);
110 int CtdlIPCImageDownload(const char *filename, void **buf, char *cret);
111 int CtdlIPCFileUpload(const char *filename, const char *comment, void *buf,
112                 size_t bytes, char *cret);
113 int CtdlIPCImageUpload(int for_real, const char *filename, size_t bytes,
114                 char *cret);
115 int CtdlIPCQueryUsername(const char *username, char *cret);
116 int CtdlIPCFloorListing(char **listing, char *cret);
117 int CtdlIPCCreateFloor(int for_real, const char *name, char *cret);
118 int CtdlIPCDeleteFloor(int for_real, int floornum, char *cret);
119 int CtdlIPCEditFloor(int floornum, const char *floorname, char *cret);
120 int CtdlIPCIdentifySoftware(int developerid, int clientid, int revision,
121                 const char *software_name, const char *hostname, char *cret);
122 int CtdlIPCSendInstantMessage(const char *username, const char *text,
123                 char *cret);
124 int CtdlIPCGetInstantMessage(char **listing, char *cret);
125 int CtdlIPCEnableInstantMessageReceipt(int mode, char *cret);
126 int CtdlIPCSetBio(char *bio, char *cret);
127 int CtdlIPCGetBio(const char *username, char **listing, char *cret);
128 int CtdlIPCListUsersWithBios(char **listing, char *cret);
129 int CtdlIPCStealthMode(int mode, char *cret);
130 int CtdlIPCTerminateSession(int sid, char *cret);
131 int CtdlIPCTerminateServerNow(char *cret);
132 int CtdlIPCTerminateServerScheduled(int mode, char *cret);
133 int CtdlIPCEnterSystemMessage(const char *filename, const char *text,
134                 char *cret);
135 int CtdlIPCChangeHostname(const char *hostname, char *cret);
136 int CtdlIPCChangeRoomname(const char *roomname, char *cret);
137 int CtdlIPCChangeUsername(const char *username, char *cret);
138 time_t CtdlIPCServerTime(char *crert);
139 int CtdlIPCAideGetUserParameters(const char *who,
140                                  struct usersupp **uret, char *cret);
141 int CtdlIPCAideSetUserParameters(const struct usersupp *uret, char *cret);
142 int CtdlIPCGetMessageExpirationPolicy(int which, char *cret);
143 int CtdlIPCSetMessageExpirationPolicy(int which, int policy, int value,
144                 char *cret);
145 int CtdlGetSystemConfig(char **listing, char *cret);
146 int CtdlSetSystemConfig(const char *listing, char *cret);
147 int CtdlIPCModerateMessage(long msgnum, int level, char *cret);
148 int CtdlIPCRequestClientLogout(int session, char *cret);
149 int CtdlIPCSetMessageSeen(long msgnum, int seen, char *cret);
150 int CtdlIPCStartEncryption(char *cret);
151 int CtdlIPCDirectoryLookup(const char *address, char *cret);
152
153 /* ************************************************************************** */
154 /*             Stuff below this line is not for public consumption            */
155 /* ************************************************************************** */
156
157 inline void netio_lock(void);
158 inline void netio_unlock(void);
159 char *CtdlIPCReadListing(char *dest);
160 int CtdlIPCSendListing(const char *listing);
161 size_t CtdlIPCPartialRead(void **buf, size_t offset, size_t bytes, char *cret);
162 int CtdlIPCEndUpload(char *cret);
163 int CtdlIPCWriteUpload(void *buf, size_t bytes, char *cret);
164 int CtdlIPCEndDownload(char *cret);
165 int CtdlIPCReadDownload(void **buf, size_t bytes, char *cret);
166 int CtdlIPCGenericCommand(const char *command, const char *to_send,
167                 size_t bytes_to_send, char **to_receive,
168                 size_t *bytes_to_receive, char *proto_response);
169
170 #ifdef __cplusplus
171 }
172 #endif