]> code.citadel.org Git - citadel.git/blobdiff - citadel/control.c
* Changed the comments at the beginning of each file to a consistent format
[citadel.git] / citadel / control.c
index 2f1302fa3d8c37a59105025a7812270ca6dda3d3..e9452d4e498c9df8825e9f8aac59b37bc842cc95 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * control.c
+ * $Id$
  *
  * This module handles states which are global to the entire server.
  *
- * $Id$
- *
  */
 
 #include "sysdep.h"
@@ -125,6 +123,8 @@ void cmd_conf(char *argbuf) {
        char cmd[256];
        char buf[256];
        int a;
+       char *confptr;
+       char confname[256];
 
        if (!(CC->logged_in)) {
                cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN);
@@ -161,7 +161,11 @@ void cmd_conf(char *argbuf) {
                cprintf("%s\n", config.c_logpages);
                cprintf("%d\n", config.c_createax);
                cprintf("%d\n", config.c_maxmsglen);
-               cprintf("%d\n", config.c_worker_threads);
+               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("000\n");
                }
 
@@ -238,7 +242,15 @@ void cmd_conf(char *argbuf) {
                                        config.c_maxmsglen = atoi(buf);
                                break;
                        case 21: if (atoi(buf) >= 2)
-                                       config.c_worker_threads = atoi(buf);
+                                       config.c_min_workers = atoi(buf);
+                       case 22: if (atoi(buf) >= config.c_min_workers)
+                                       config.c_max_workers = atoi(buf);
+                       case 23: config.c_pop3_port = atoi(buf);
+                               break;
+                       case 24: config.c_smtp_port = atoi(buf);
+                               break;
+                       case 25: config.c_default_filter = atoi(buf);
+                               break;
                        }
                    ++a;
                    }
@@ -249,11 +261,36 @@ void cmd_conf(char *argbuf) {
                aide_message(buf);
 
                if (strlen(config.c_logpages) > 0)
-                       create_room(config.c_logpages, 4, "", 0);
+                       create_room(config.c_logpages, 3, "", 0);
                }
 
+       else if (!strcasecmp(cmd, "GETSYS")) {
+               extract(confname, argbuf, 1);
+               confptr = CtdlGetSysConfig(confname);
+               if (confptr != NULL) {
+                       cprintf("%d %s\n", LISTING_FOLLOWS, confname);
+                       client_write(confptr, strlen(confptr));
+                       if (confptr[strlen(confptr)-1] != 10)
+                               client_write("\n", 1);
+                       cprintf("000\n");
+                       phree(confptr);
+               }
+               else {
+                       cprintf("%d No such configuration.\n",
+                               ERROR+ILLEGAL_VALUE);
+               }
+       }
+
+       else if (!strcasecmp(cmd, "PUTSYS")) {
+               extract(confname, argbuf, 1);
+               cprintf("%d %s\n", SEND_LISTING, confname);
+               confptr = CtdlReadMessageBody("000", config.c_maxmsglen, NULL);
+               CtdlPutSysConfig(confname, confptr);
+               phree(confptr);
+       }
+
        else {
-               cprintf("%d The only valid options are GET and SET.\n",
+               cprintf("%d Illegal option(s) specified.\n",
                        ERROR+ILLEGAL_VALUE);
                }
        }