This will be necessary regardless of which 'connector' product we use.
serv_vcard.o vcard.o \
serv_mrtg.o \
serv_imap.o imap_fetch.o imap_misc.o imap_search.o \
- imap_store.o imap_tools.o \
+ imap_store.o imap_acl.o imap_tools.o \
serv_fulltext.o ft_wordbreaker.o crc16.o \
serv_network.o \
serv_listsub.o \
serv_newuser.c serv_pas2.c serv_pop3.c serv_rwho.c serv_smtp.c \
serv_spam.c serv_test.c serv_mrtg.c serv_spam.c serv_upgrade.c \
serv_vandelay.c serv_vcard.c serv_managesieve.c server_main.c \
- serv_sieve.c setup.c snprintf.c \
+ serv_sieve.c setup.c snprintf.c imap_acl.c \
stress.c support.c sysdep.c tools.c user_ops.c userlist.c \
whobbs.c vcard.c serv_notes.c serv_fulltext.c ft_wordbreaker.c \
crc16.c journaling.c citadel_dirs.c
--- /dev/null
+/*
+ * $Id: $
+ *
+ * Functions which implement RFC 2086 (IMAP ACL extension)
+ *
+ */
+
+
+#include "sysdep.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <pwd.h>
+#include <errno.h>
+#include <sys/types.h>
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
+#include <sys/wait.h>
+#include <ctype.h>
+#include <string.h>
+#include <limits.h>
+#include "citadel.h"
+#include "server.h"
+#include "sysdep_decls.h"
+#include "citserver.h"
+#include "support.h"
+#include "config.h"
+#include "serv_extensions.h"
+#include "room_ops.h"
+#include "user_ops.h"
+#include "policy.h"
+#include "database.h"
+#include "msgbase.h"
+#include "tools.h"
+#include "internet_addressing.h"
+#include "serv_imap.h"
+#include "imap_tools.h"
+#include "imap_fetch.h"
+#include "imap_misc.h"
+#include "genstamp.h"
+
+
+
+/*
+ * Implements the SETACL command.
+ */
+void imap_setacl(int num_parms, char *parms[]) {
+
+ cprintf("%s BAD not yet implemented FIXME\r\n", parms[0]);
+ return;
+}
+
+
+/*
+ * Implements the DELETEACL command.
+ */
+void imap_deleteacl(int num_parms, char *parms[]) {
+
+ cprintf("%s BAD not yet implemented FIXME\r\n", parms[0]);
+ return;
+}
+
+
+/*
+ * Implements the GETACL command.
+ */
+void imap_getacl(int num_parms, char *parms[]) {
+
+ cprintf("%s BAD not yet implemented FIXME\r\n", parms[0]);
+ return;
+}
+
+
+/*
+ * Implements the LISTRIGHTS command.
+ */
+void imap_listrights(int num_parms, char *parms[]) {
+
+ cprintf("%s BAD not yet implemented FIXME\r\n", parms[0]);
+ return;
+}
+
+
+/*
+ * Implements the MYRIGHTS command.
+ */
+void imap_myrights(int num_parms, char *parms[]) {
+
+ cprintf("%s BAD not yet implemented FIXME\r\n", parms[0]);
+ return;
+}
+
+
--- /dev/null
+/*
+ * $Id: $
+ *
+ */
+
+void imap_setacl(int num_parms, char *parms[]);
+void imap_deleteacl(int num_parms, char *parms[]);
+void imap_getacl(int num_parms, char *parms[]);
+void imap_listrights(int num_parms, char *parms[]);
+void imap_myrights(int num_parms, char *parms[]);
+
#include "imap_fetch.h"
#include "imap_search.h"
#include "imap_store.h"
+#include "imap_acl.h"
#include "imap_misc.h"
#ifdef HAVE_OPENSSL
* output this stuff in other places as well)
*/
void imap_output_capability_string(void) {
- cprintf("CAPABILITY IMAP4REV1 NAMESPACE ID AUTH=LOGIN");
+ cprintf("CAPABILITY IMAP4REV1 NAMESPACE ID ACL AUTH=LOGIN");
#ifdef HAVE_OPENSSL
if (!CC->redirect_ssl) cprintf(" STARTTLS");
#endif
imap_close(num_parms, parms);
}
+ else if (!strcasecmp(parms[1], "SETACL")) {
+ imap_setacl(num_parms, parms);
+ }
+
+ else if (!strcasecmp(parms[1], "DELETEACL")) {
+ imap_deleteacl(num_parms, parms);
+ }
+
+ else if (!strcasecmp(parms[1], "GETACL")) {
+ imap_getacl(num_parms, parms);
+ }
+
+ else if (!strcasecmp(parms[1], "LISTRIGHTS")) {
+ imap_listrights(num_parms, parms);
+ }
+
+ else if (!strcasecmp(parms[1], "MYRIGHTS")) {
+ imap_myrights(num_parms, parms);
+ }
+
/* End of commands. If we get here, the command is either invalid
* or unimplemented.
*/