]> code.citadel.org Git - citadel.git/blobdiff - citadel/control.c
* Get/save arbitrary configs
[citadel.git] / citadel / control.c
index e71c5bbe652a1c66144a509d534ac9440144f57c..2d2c9533400d93600cfa19f2b7045354b2ba9d98 100644 (file)
@@ -125,6 +125,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,6 +163,8 @@ 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_min_workers);
+               cprintf("%d\n", config.c_max_workers);
                cprintf("000\n");
                }
 
@@ -236,6 +240,10 @@ void cmd_conf(char *argbuf) {
                        case 20: if (atoi(buf) >= 8192)
                                        config.c_maxmsglen = atoi(buf);
                                break;
+                       case 21: if (atoi(buf) >= 2)
+                                       config.c_min_workers = atoi(buf);
+                       case 22: if (atoi(buf) >= config.c_min_workers)
+                                       config.c_max_workers = atoi(buf);
                        }
                    ++a;
                    }
@@ -249,8 +257,33 @@ void cmd_conf(char *argbuf) {
                        create_room(config.c_logpages, 4, "", 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);
                }
        }