]> code.citadel.org Git - citadel.git/blobdiff - citadel/control.c
* When sending a page that results in the receiver's Sent/Received Pages>
[citadel.git] / citadel / control.c
index e9452d4e498c9df8825e9f8aac59b37bc842cc95..62b0ac2885bf8d12f245e656c9ed44a8901f42c5 100644 (file)
@@ -5,28 +5,50 @@
  *
  */
 
+#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;
@@ -41,11 +63,16 @@ void get_control(void) {
         * 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);
@@ -120,22 +147,13 @@ long get_new_room_number(void) {
  * 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];
-
-       if (!(CC->logged_in)) {
-               cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN);
-               return;
-               }
+       char confname[SIZ];
 
-       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")) {
@@ -160,12 +178,17 @@ void cmd_conf(char *argbuf) {
                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");
                }
 
@@ -251,6 +274,22 @@ void cmd_conf(char *argbuf) {
                                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;
                    }
@@ -261,7 +300,7 @@ void cmd_conf(char *argbuf) {
                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")) {