/*
- * control.c
+ * $Id$
*
* This module handles states which are global to the entire server.
*
- * $Id$
- *
*/
+#ifdef DLL_EXPORT
+#define IN_LIBCIT
+#endif
+
#include "sysdep.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
-#include <time.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 <ctype.h>
#include <string.h>
#include <errno.h>
#include <limits.h>
#include <syslog.h>
+#include <sys/types.h>
#include "citadel.h"
#include "server.h"
#include "control.h"
+#include "dynloader.h"
#include "sysdep_decls.h"
#include "support.h"
#include "config.h"
#include "msgbase.h"
+#include "citserver.h"
#include "tools.h"
#include "room_ops.h"
+#ifndef HAVE_SNPRINTF
+#include "snprintf.h"
+#endif
+
struct CitControl CitControl;
struct config config;
FILE *control_fp = NULL;
* to zero.
*/
memset(&CitControl, 0, sizeof(struct CitControl));
- if (control_fp == NULL)
+ if (control_fp == NULL) {
control_fp = fopen("citadel.control", "rb+");
+ if (control_fp != NULL) {
+ fchown(fileno(control_fp), config.c_bbsuid, -1);
+ }
+ }
if (control_fp == NULL) {
control_fp = fopen("citadel.control", "wb+");
if (control_fp != NULL) {
+ fchown(fileno(control_fp), config.c_bbsuid, -1);
memset(&CitControl, 0, sizeof(struct CitControl));
fwrite(&CitControl, sizeof(struct CitControl),
1, control_fp);
* Get or set global configuration options
*/
void cmd_conf(char *argbuf) {
- char cmd[256];
- char buf[256];
+ char cmd[SIZ];
+ char buf[SIZ];
int a;
char *confptr;
- char confname[256];
+ char confname[SIZ];
- if (!(CC->logged_in)) {
- cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN);
- return;
- }
-
- if (CC->usersupp.axlevel < 6) {
- cprintf("%d Higher access required.\n",
- ERROR+HIGHER_ACCESS_REQUIRED);
- return;
- }
+ if (CtdlAccessCheck(ac_aide)) return;
extract(cmd, argbuf, 0);
if (!strcasecmp(cmd, "GET")) {
cprintf("%d\n", config.c_roompurge);
cprintf("%s\n", config.c_logpages);
cprintf("%d\n", config.c_createax);
- cprintf("%d\n", config.c_maxmsglen);
+ cprintf("%ld\n", config.c_maxmsglen);
cprintf("%d\n", config.c_min_workers);
cprintf("%d\n", config.c_max_workers);
cprintf("%d\n", config.c_pop3_port);
cprintf("%d\n", config.c_smtp_port);
+ cprintf("%d\n", config.c_default_filter);
+ cprintf("%d\n", config.c_aide_zap);
+ cprintf("%d\n", config.c_imap_port);
+ cprintf("%ld\n", config.c_net_freq);
+ cprintf("%d\n", config.c_disable_newu);
+ cprintf("%d\n", config.c_aide_mailboxes);
cprintf("000\n");
}
break;
case 24: config.c_smtp_port = atoi(buf);
break;
+ case 25: config.c_default_filter = atoi(buf);
+ break;
+ case 26: config.c_aide_zap = atoi(buf);
+ if (config.c_aide_zap != 0)
+ config.c_aide_zap = 1;
+ break;
+ case 27: config.c_imap_port = atoi(buf);
+ break;
+ case 28: config.c_net_freq = atol(buf);
+ break;
+ case 29: config.c_disable_newu = atoi(buf);
+ if (config.c_disable_newu != 0)
+ config.c_disable_newu = 1;
+ break;
+ case 30: config.c_aide_mailboxes = atoi(buf);
+ if (config.c_aide_mailboxes != 0)
+ config.c_aide_mailboxes = 1;
+ break;
}
++a;
}
aide_message(buf);
if (strlen(config.c_logpages) > 0)
- create_room(config.c_logpages, 3, "", 0);
+ create_room(config.c_logpages, 3, "", 0, 1, 1);
}
else if (!strcasecmp(cmd, "GETSYS")) {