X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fexpire%2Fexpire_policy.c;h=0c9471bbf5cf21f432ed13a3c47704b556b532b1;hb=7a9b0685e406cc83597171cc39d008c7e5459ca8;hp=9b2faf1a52999e85f80c5b4a865161723b2832e3;hpb=0a73d05f8a5fc4d37c2c7ae9b16daba304e37c6e;p=citadel.git diff --git a/citadel/modules/expire/expire_policy.c b/citadel/modules/expire/expire_policy.c index 9b2faf1a5..0c9471bbf 100644 --- a/citadel/modules/expire/expire_policy.c +++ b/citadel/modules/expire/expire_policy.c @@ -1,7 +1,14 @@ /* - * $Id$ + * Functions which manage expire policy for rooms + * Copyright (c) 1987-2015 by the citadel.org team * - * Functions which manage policy for rooms (such as message expiry) + * 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. */ #include "sysdep.h" @@ -11,17 +18,7 @@ #include #include -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - +#include #include #include #include "citadel.h" @@ -33,7 +30,6 @@ #include "support.h" #include "msgbase.h" #include "citserver.h" - #include "ctdl_module.h" #include "user_ops.h" @@ -64,15 +60,16 @@ void GetExpirePolicy(struct ExpirePolicy *epbuf, struct ctdlroom *qrbuf) { * If there is a default policy for mailbox rooms, return it */ if (qrbuf->QRflags & QR_MAILBOX) { - if (config.c_mbxep.expire_mode != 0) { - memcpy(epbuf, &config.c_mbxep, - sizeof(struct ExpirePolicy)); + if (CtdlGetConfigInt("c_mbxep_mode") != 0) { + epbuf->expire_mode = CtdlGetConfigInt("c_mbxep_mode"); + epbuf->expire_value = CtdlGetConfigInt("c_mbxep_value"); return; } } /* Otherwise, fall back on the system default */ - memcpy(epbuf, &config.c_ep, sizeof(struct ExpirePolicy)); + epbuf->expire_mode = CtdlGetConfigInt("c_ep_mode"); + epbuf->expire_value = CtdlGetConfigInt("c_ep_value"); } @@ -84,22 +81,22 @@ void cmd_gpex(char *argbuf) { struct floor *fl; char which[128]; + memset(&exp, 0, sizeof(struct ExpirePolicy)); extract_token(which, argbuf, 0, '|', sizeof which); - if (!strcasecmp(which, strof(room))) { + if (!strcasecmp(which, strof(roompolicy)) || !strcasecmp(which, "room")) { memcpy(&exp, &CC->room.QRep, sizeof(struct ExpirePolicy)); } - else if (!strcasecmp(which, strof(floorpolicy))|| - !strcasecmp(which, "floor")) { /* Deprecated version */ + else if (!strcasecmp(which, strof(floorpolicy)) || !strcasecmp(which, "floor")) { fl = CtdlGetCachedFloor(CC->room.QRfloor); memcpy(&exp, &fl->f_ep, sizeof(struct ExpirePolicy)); } - else if (!strcasecmp(which, strof(mailboxespolicy))|| - !strcasecmp(which, "mailboxes")) {/* Deprecated version */ - memcpy(&exp, &config.c_mbxep, sizeof(struct ExpirePolicy)); + else if (!strcasecmp(which, strof(mailboxespolicy)) || !strcasecmp(which, "mailboxes")) { + exp.expire_mode = CtdlGetConfigInt("c_mbxep_mode"); + exp.expire_value = CtdlGetConfigInt("c_mbxep_value"); } - else if (!strcasecmp(which, strof(sitepolicy))|| - !strcasecmp(which, "site")) {/* Deprecated version */ - memcpy(&exp, &config.c_ep, sizeof(struct ExpirePolicy)); + else if (!strcasecmp(which, strof(sitepolicy)) || !strcasecmp(which, "site")) { + exp.expire_mode = CtdlGetConfigInt("c_ep_mode"); + exp.expire_value = CtdlGetConfigInt("c_ep_value"); } else { cprintf("%d Invalid keyword \"%s\"\n", ERROR + ILLEGAL_VALUE, which); @@ -128,27 +125,31 @@ void cmd_spex(char *argbuf) { return; } - if (!strcasecmp(which, "room")) { + if ((!strcasecmp(which, strof(roompolicy))) || (!strcasecmp(which, "room"))) + { if (!is_room_aide()) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); + cprintf("%d Higher access required.\n", ERROR + HIGHER_ACCESS_REQUIRED); return; } CtdlGetRoomLock(&CC->room, CC->room.QRname); memcpy(&CC->room.QRep, &exp, sizeof(struct ExpirePolicy)); CtdlPutRoomLock(&CC->room); - cprintf("%d Room expire policy has been updated.\n", CIT_OK); + cprintf("%d Room expire policy for '%s' has been updated.\n", CIT_OK, CC->room.QRname); + syslog(LOG_DEBUG, "Room: %s , Policy: %d , Value: %d", + CC->room.QRname, + exp.expire_mode, + exp.expire_value + ); return; } if (CC->user.axlevel < AxAideU) { - cprintf("%d Higher access required.\n", - ERROR + HIGHER_ACCESS_REQUIRED); + cprintf("%d Higher access required.\n", ERROR + HIGHER_ACCESS_REQUIRED); return; } - if (!strcasecmp(which, strof(floorpolicy))|| - !strcasecmp(which, "floor")) { /* deprecated version */ + if ((!strcasecmp(which, strof(floorpolicy))) || (!strcasecmp(which, "floor"))) + { lgetfloor(&flbuf, CC->room.QRfloor); memcpy(&flbuf.f_ep, &exp, sizeof(struct ExpirePolicy)); lputfloor(&flbuf, CC->room.QRfloor); @@ -156,32 +157,25 @@ void cmd_spex(char *argbuf) { return; } - else if (!strcasecmp(which, strof(mailboxespolicy))|| - !strcasecmp(which, "mailboxes")) { - memcpy(&config.c_mbxep, &exp, sizeof(struct ExpirePolicy)); - put_config(); - cprintf("%d Default expire policy for mailboxes set.\n", - CIT_OK); + else if ((!strcasecmp(which, strof(mailboxespolicy))) || (!strcasecmp(which, "mailboxes"))) + { + CtdlSetConfigInt("c_mbxep_mode", exp.expire_mode); + CtdlSetConfigInt("c_mbxep_value", exp.expire_value); + cprintf("%d Default expire policy for mailboxes set.\n", CIT_OK); return; } - else if (!strcasecmp(which, strof(sitepolicy))|| - !strcasecmp(which, "site")) {/* deprecated version */ + else if ((!strcasecmp(which, strof(sitepolicy))) || (!strcasecmp(which, "site"))) + { if (exp.expire_mode == EXPIRE_NEXTLEVEL) { - cprintf("%d Invalid policy (no higher level)\n", - ERROR + ILLEGAL_VALUE); + cprintf("%d Invalid policy (no higher level)\n", ERROR + ILLEGAL_VALUE); return; } - memcpy(&config.c_ep, &exp, sizeof(struct ExpirePolicy)); - put_config(); + CtdlSetConfigInt("c_ep_mode", exp.expire_mode); + CtdlSetConfigInt("c_ep_value", exp.expire_value); cprintf("%d Site expire policy has been updated.\n", CIT_OK); return; } - else { - cprintf("%d Invalid keyword \"%s\"\n", ERROR + ILLEGAL_VALUE, which); - return; - } - + cprintf("%d Invalid keyword '%s'\n", ERROR + ILLEGAL_VALUE, which); } -