Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel
[citadel.git] / citadel / modules / ctdlproto / serv_session.c
index 8fbda5ca78a6135a70027d2a3e3471924242e573..4aaba407226199187b100748f5114bf486e06a92 100644 (file)
@@ -1,7 +1,7 @@
 /* 
  * Server functions which perform operations on user objects.
  *
- * Copyright (c) 1987-2011 by the citadel.org team
+ * Copyright (c) 1987-2015 by the citadel.org team
  *
  * 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.
  * GNU General Public License for more details.
  */
 
-#include "sysdep.h"
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
 #include <stdio.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <pwd.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <syslog.h>
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
-#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 <string.h>
-#include <limits.h>
 #include <libcitadel.h>
-#include "auth.h"
-#include "citadel.h"
-#include "server.h"
-#include "database.h"
-#include "sysdep_decls.h"
-#include "support.h"
-#include "room_ops.h"
-#include "file_ops.h"
-#include "control.h"
-#include "msgbase.h"
-#include "config.h"
+
 #include "citserver.h"
-#include "citadel_dirs.h"
-#include "genstamp.h"
-#include "threads.h"
-#include "citadel_ldap.h"
-#include "context.h"
+#include "svn_revision.h"
 #include "ctdl_module.h"
+#include "config.h"
 
 void cmd_noop(char *argbuf)
 {
@@ -94,15 +53,15 @@ void cmd_asyn(char *argbuf)
 void cmd_info(char *cmdbuf) {
        cprintf("%d Server info:\n", LISTING_FOLLOWS);
        cprintf("%d\n", CC->cs_pid);
-       cprintf("%s\n", config.c_nodename);
-       cprintf("%s\n", config.c_humannode);
-       cprintf("%s\n", config.c_fqdn);
+       cprintf("%s\n", CtdlGetConfigStr("c_nodename"));
+       cprintf("%s\n", CtdlGetConfigStr("c_humannode"));
+       cprintf("%s\n", CtdlGetConfigStr("c_fqdn"));
        cprintf("%s\n", CITADEL);
        cprintf("%d\n", REV_LEVEL);
-       cprintf("%s\n", config.c_site_location);
-       cprintf("%s\n", config.c_sysadm);
+       cprintf("%s\n", CtdlGetConfigStr("c_site_location"));
+       cprintf("%s\n", CtdlGetConfigStr("c_sysadm"));
        cprintf("%d\n", SERVER_TYPE);
-       cprintf("%s\n", config.c_moreprompt);
+       cprintf("%s\n", CtdlGetConfigStr("c_moreprompt"));
        cprintf("1\n"); /* 1 = yes, this system supports floors */
        cprintf("1\n"); /* 1 = we support the extended paging options */
        cprintf("\n");  /* nonce no longer supported */
@@ -114,16 +73,15 @@ void cmd_info(char *cmdbuf) {
        cprintf("0\n"); /* 1 = no, this server is not LDAP-enabled */
 #endif
 
-       if ((config.c_auth_mode == AUTHMODE_NATIVE) &&
-           (config.c_disable_newu == 0))
+       if ((CtdlGetConfigInt("c_auth_mode") == AUTHMODE_NATIVE) && (CtdlGetConfigInt("c_disable_newu") == 0))
        {
-               cprintf("%d\n", config.c_disable_newu);
+               cprintf("%d\n", CtdlGetConfigInt("c_disable_newu"));
        }
        else {
                cprintf("1\n"); /* "create new user" does not work with non-native auth modes */
        }
 
-       cprintf("%s\n", config.c_default_cal_zone);
+       cprintf("%s\n", CtdlGetConfigStr("c_default_cal_zone"));
 
        /* thread load averages -- temporarily disabled during refactoring of this code */
        cprintf("0\n");         /* load average */
@@ -131,17 +89,17 @@ void cmd_info(char *cmdbuf) {
        cprintf("0\n");         /* thread count */
 
        cprintf("1\n");         /* yes, Sieve mail filtering is supported */
-       cprintf("%d\n", config.c_enable_fulltext);
+       cprintf("%d\n", CtdlGetConfigInt("c_enable_fulltext"));
        cprintf("%s\n", svn_revision());
 
-       if (config.c_auth_mode == AUTHMODE_NATIVE) {
+       if (CtdlGetConfigInt("c_auth_mode") == AUTHMODE_NATIVE) {
                cprintf("%d\n", openid_level_supported); /* OpenID is enabled when using native auth */
        }
        else {
                cprintf("0\n"); /* OpenID is disabled when using non-native auth */
        }
 
-       cprintf("%d\n", config.c_guest_logins);
+       cprintf("%d\n", CtdlGetConfigInt("c_guest_logins"));
        
        cprintf("000\n");
 }
@@ -158,7 +116,7 @@ void cmd_echo(char *etext)
  * get the paginator prompt
  */
 void cmd_more(char *argbuf) {
-       cprintf("%d %s\n", CIT_OK, config.c_moreprompt);
+       cprintf("%d %s\n", CIT_OK, CtdlGetConfigStr("c_moreprompt"));
 }
 
 
@@ -167,6 +125,7 @@ void cmd_more(char *argbuf) {
  */
 void cmd_iden(char *argbuf)
 {
+        CitContext *CCC = MyContext();
        int dev_code;
        int cli_code;
        int rev_level;
@@ -183,21 +142,21 @@ void cmd_iden(char *argbuf)
        rev_level = extract_int(argbuf,2);
        extract_token(desc, argbuf, 3, '|', sizeof desc);
 
-       safestrncpy(from_host, config.c_fqdn, sizeof from_host);
+       safestrncpy(from_host, CtdlGetConfigStr("c_fqdn"), sizeof from_host);
        from_host[sizeof from_host - 1] = 0;
        if (num_parms(argbuf)>=5) extract_token(from_host, argbuf, 4, '|', sizeof from_host);
 
-       CC->cs_clientdev = dev_code;
-       CC->cs_clienttyp = cli_code;
-       CC->cs_clientver = rev_level;
-       safestrncpy(CC->cs_clientname, desc, sizeof CC->cs_clientname);
-       CC->cs_clientname[31] = 0;
+       CCC->cs_clientdev = dev_code;
+       CCC->cs_clienttyp = cli_code;
+       CCC->cs_clientver = rev_level;
+       safestrncpy(CCC->cs_clientname, desc, sizeof CCC->cs_clientname);
+       CCC->cs_clientname[31] = 0;
 
        /* For local sockets and public clients, trust the hostname supplied by the client */
-       if ( (CC->is_local_socket) || (is_public_client()) ) {
-               safestrncpy(CC->cs_host, from_host, sizeof CC->cs_host);
-               CC->cs_host[sizeof CC->cs_host - 1] = 0;
-               CC->cs_addr[0] = 0;
+       if ( (CCC->is_local_socket) || (CtdlIsPublicClient()) ) {
+               safestrncpy(CCC->cs_host, from_host, sizeof CCC->cs_host);
+               CCC->cs_host[sizeof CCC->cs_host - 1] = 0;
+               CCC->cs_addr[0] = 0;
        }
 
        syslog(LOG_NOTICE, "Client %d/%d/%01d.%02d (%s) from %s\n",
@@ -206,7 +165,7 @@ void cmd_iden(char *argbuf)
                (rev_level / 100),
                (rev_level % 100),
                desc,
-               CC->cs_host
+               CCC->cs_host
        );
        cprintf("%d Ok\n",CIT_OK);
 }