* as this draft expires with this writing, you might need to search for
* the new one.
*
- * Copyright (c) 2007-2009 by the citadel.org team
+ * Copyright (c) 2007-2018 by the citadel.org team
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*/
#include "sysdep.h"
#include "clientsocket.h"
#include "locate_host.h"
#include "citadel_dirs.h"
-
-#ifndef HAVE_SNPRINTF
-#include "snprintf.h"
-#endif
-
-
#include "ctdl_module.h"
#include "serv_sieve.h"
-/**
+/*
* http://tools.ietf.org/html/draft-martin-managesieve-06
*
* this is the draft this code tries to implement.
/* todo, check length*/
{
char auth[SIZ];
- int retval;
char *message;
char *username;
message = ReadString(GetSizeToken(parms[2]), parms[0]);
if (message != NULL) {/**< do we have tokenized login? */
- retval = CtdlDecodeBase64(auth, MGSVE->transmitted_message, SIZ);
+ CtdlDecodeBase64(auth, MGSVE->transmitted_message, strlen(MGSVE->transmitted_message));
}
else
- retval = CtdlDecodeBase64(auth, parms[2], SIZ);
+ CtdlDecodeBase64(auth, parms[2], strlen(parms[2]));
username = auth;
if ((*username == '\0') && (*(username + 1) != '\0'))
username ++;
- if (login_ok == CtdlLoginExistingUser(NULL, username))
+ if (login_ok == CtdlLoginExistingUser(username))
{
char *pass;
slen = strlen(script_content);
outbuf = malloc (slen + 64);
snprintf(outbuf, slen + 64, "{%ld+}\r\n%s\r\nOK\r\n",slen, script_content);
- cprintf(outbuf);
+ cprintf("%s", outbuf);
}
else
cprintf("No \"there is no script by that name %s \"\r\n", parms[1]);
if (strlen(argbuf) >= 7) {
}
else {
- CtdlEncodeBase64(username_prompt, "Username:", 9, 0);
+ size_t len = CtdlEncodeBase64(username_prompt, "Username:", 9, 0);
+ if (username_prompt[len - 1] == '\n') {
+ username_prompt[len - 1] = '\0';
+ }
cprintf("334 %s\r\n", username_prompt);
}
return;
length = strlen(parms[0]);
}
if (length < 1) {
- syslog(LOG_CRIT, "Client disconnected: ending session.\n");
+ syslog(LOG_CRIT, "managesieve: client disconnected: ending session.\n");
CC->kill_me = KILLME_CLIENT_DISCONNECTED;
return;
}
{
if (!threading)
{
- CtdlRegisterServiceHook(config.c_managesieve_port,
+ CtdlRegisterServiceHook(CtdlGetConfigInt("c_managesieve_port"),
NULL,
managesieve_greeting,
managesieve_command_loop,
NULL,
CitadelServiceManageSieve);
- CtdlRegisterSessionHook(managesieve_cleanup_function, EVT_STOP);
+ CtdlRegisterSessionHook(managesieve_cleanup_function, EVT_STOP, PRIO_STOP + 30);
}
- /* return our Subversion id for the Log */
+ /* return our module name for the log */
return "managesieve";
}