don't run this, it's broken
[citadel.git] / citadel / utillib / citadel_dirs.c
index dfaaee8dbd51f708f073c0b8ce32982c7f72981b..3bcff6e399439d532226b8e1dcedf6271284146a 100644 (file)
 #include "citadel.h"
 #include "citadel_dirs.h"
 
-/* our directories... */
-char ctdl_home_directory[PATH_MAX] = "";
-char ctdl_data_dir[PATH_MAX]="data";
-char ctdl_file_dir[PATH_MAX]="files";
-char ctdl_shared_dir[PATH_MAX]="";
-char ctdl_image_dir[PATH_MAX]="images";
-char ctdl_info_dir[PATH_MAX]="info";
-char ctdl_key_dir[PATH_MAX]=SSL_DIR;
-char ctdl_message_dir[PATH_MAX]="messages";
-char ctdl_usrpic_dir[PATH_MAX]="userpics";
-char ctdl_bbsbase_dir[PATH_MAX]="";
-char ctdl_autoetc_dir[PATH_MAX]="";
-/* attention! this may be non volatile on some oses */
-char ctdl_run_dir[PATH_MAX]="";
-char ctdl_spool_dir[PATH_MAX]="network";
-char ctdl_netdigest_dir[PATH_MAX]="network/digest";
-char ctdl_nettmp_dir[PATH_MAX]="network/spooltmp";
-char ctdl_netcfg_dir[PATH_MAX]="netconfigs";
-char ctdl_utilbin_dir[PATH_MAX]="";
-char ctdl_sbin_dir[PATH_MAX]="";
-char ctdl_bin_dir[PATH_MAX]="";
-
-/* some of our files, that are needed in several places */
-char file_citadel_config[PATH_MAX]="";
-char file_lmtp_socket[PATH_MAX]="";
-char file_lmtp_unfiltered_socket[PATH_MAX]="";
-char file_arcq[PATH_MAX]="";
-char file_citadel_socket[PATH_MAX]="";
-char file_citadel_admin_socket[PATH_MAX]="";
-char file_mail_aliases[PATH_MAX]="";
-char file_pid_file[PATH_MAX]="";
-char file_pid_paniclog[PATH_MAX]="";
-char file_crpt_file_key[PATH_MAX]="";
-char file_crpt_file_csr[PATH_MAX]="";
-char file_crpt_file_cer[PATH_MAX]="";
-char file_chkpwd[PATH_MAX]="";
-char file_guesstimezone[PATH_MAX]="";
-
-
-
-
-
-#define COMPUTE_DIRECTORY(SUBDIR) memcpy(dirbuffer,SUBDIR, sizeof dirbuffer);\
-       snprintf(SUBDIR,sizeof SUBDIR,  "%s%s%s%s%s%s%s", \
-                        (home&!relh)?ctdl_home_directory:basedir, \
-             ((basedir!=ctdldir)&(home&!relh))?basedir:"/", \
-             ((basedir!=ctdldir)&(home&!relh))?"/":"", \
-                        relhome, \
-             (relhome[0]!='\0')?"/":"",\
-                        dirbuffer,\
-                        (dirbuffer[0]!='\0')?"/":"");
-
-#define DBG_PRINT(A) if (dbg==1) fprintf (stderr,"%s : %s \n", #A, A)
-
-
-void calc_dirs_n_files(int relh, int home, const char *relhome, char  *ctdldir, int dbg)
-{
-       const char* basedir = "";
-       char dirbuffer[PATH_MAX] = "";
-
-       /*
-        * Ok, we keep our binaries either in the citadel base dir,
-        * or in /usr/sbin / /usr/bin
-        */
-       StripSlashes(ctdldir, 1);
-#ifdef HAVE_ETC_DIR
-       snprintf(ctdl_sbin_dir, sizeof ctdl_sbin_dir, "/usr/sbin/");
-       snprintf(ctdl_bin_dir, sizeof ctdl_bin_dir, "/usr/bin/");
-#else
-       snprintf(ctdl_sbin_dir, sizeof ctdl_sbin_dir, ctdldir);
-       snprintf(ctdl_bin_dir, sizeof ctdl_bin_dir, ctdldir);
-#endif
-       StripSlashes(ctdl_sbin_dir, 1);
-       StripSlashes(ctdl_bin_dir, 1);
-
-#ifndef HAVE_AUTO_ETC_DIR
-       basedir=ctdldir;
-#else
-       basedir=AUTO_ETC_DIR;
-#endif
-       COMPUTE_DIRECTORY(ctdl_autoetc_dir);
-       StripSlashes(ctdl_autoetc_dir, 1);
-
-#ifndef HAVE_ETC_DIR
-       basedir=ctdldir;
-#else
-       basedir=ETC_DIR;
-#endif
-       COMPUTE_DIRECTORY(ctdl_netcfg_dir);
-       StripSlashes(ctdl_netcfg_dir, 1);
-
-#ifndef HAVE_UTILBIN_DIR
-       basedir=ctdldir;
-#else
-       basedir=UTILBIN_DIR;
-#endif
-       COMPUTE_DIRECTORY(ctdl_utilbin_dir);
-       StripSlashes(ctdl_utilbin_dir, 1);
-
-#ifndef HAVE_RUN_DIR
-       basedir=ctdldir;
-#else
-       basedir=RUN_DIR;
-#endif
-       COMPUTE_DIRECTORY(ctdl_run_dir);
-       StripSlashes(ctdl_run_dir, 1);
-
-#ifndef HAVE_STATICDATA_DIR
-       basedir=ctdldir;
-#else
-       basedir=STATICDATA_DIR;
-#endif
-       COMPUTE_DIRECTORY(ctdl_message_dir);
-       StripSlashes(ctdl_message_dir, 1);
-
-#ifndef HAVE_DATA_DIR
-       basedir=ctdldir;
-#else
-       basedir=DATA_DIR;
-#endif
-       COMPUTE_DIRECTORY(ctdl_data_dir);
-       COMPUTE_DIRECTORY(ctdl_file_dir);
-       COMPUTE_DIRECTORY(ctdl_image_dir);
-       COMPUTE_DIRECTORY(ctdl_info_dir);
-       COMPUTE_DIRECTORY(ctdl_usrpic_dir);
-       COMPUTE_DIRECTORY(ctdl_bbsbase_dir);
-
-       StripSlashes(ctdl_data_dir, 1);
-       StripSlashes(ctdl_file_dir, 1);
-       StripSlashes(ctdl_image_dir, 1);
-       StripSlashes(ctdl_info_dir, 1);
-       StripSlashes(ctdl_usrpic_dir, 1);
-       StripSlashes(ctdl_bbsbase_dir, 1);
-
-#ifndef HAVE_SPOOL_DIR
-       basedir=ctdldir;
-#else
-       basedir=SPOOL_DIR;
-#endif
-       COMPUTE_DIRECTORY(ctdl_spool_dir);
-       COMPUTE_DIRECTORY(ctdl_netdigest_dir);
-       COMPUTE_DIRECTORY(ctdl_nettmp_dir);
-
-       StripSlashes(ctdl_spool_dir, 1);
-       StripSlashes(ctdl_netdigest_dir, 1);
-       StripSlashes(ctdl_nettmp_dir, 1);
-
-       /* ok, now we know the dirs, calc some commonly used files */
-
-       snprintf(file_arcq, 
-                        sizeof file_arcq,
-                        "%srefcount_adjustments.dat",
-                        ctdl_autoetc_dir);
-       StripSlashes(file_arcq, 0);
-
-       snprintf(file_citadel_config, 
-                        sizeof file_citadel_config,
-                        "%scitadel.config",
-                        ctdl_autoetc_dir);
-       StripSlashes(file_citadel_config, 0);
-       snprintf(file_lmtp_socket, 
-                        sizeof file_lmtp_socket,
-                        "%slmtp.socket",
-                        ctdl_run_dir);
-       StripSlashes(file_lmtp_socket, 0);
-       snprintf(file_lmtp_unfiltered_socket, 
-                        sizeof file_lmtp_socket,
-                        "%slmtp-unfiltered.socket",
-                        ctdl_run_dir);
-       StripSlashes(file_lmtp_unfiltered_socket, 0);
-       snprintf(file_citadel_socket, 
-                        sizeof file_citadel_socket,
-                               "%scitadel.socket",
-                        ctdl_run_dir);
-       StripSlashes(file_citadel_socket, 0);
-       snprintf(file_citadel_admin_socket, 
-                        sizeof file_citadel_admin_socket,
-                               "%scitadel-admin.socket",
-                        ctdl_run_dir);
-       StripSlashes(file_citadel_admin_socket, 0);
-       snprintf(file_pid_file, 
-                sizeof file_pid_file,
-                "%scitadel.pid",
-                ctdl_run_dir);
-       StripSlashes(file_pid_file, 0);
-       snprintf(file_pid_paniclog, 
-                sizeof file_pid_paniclog, 
-                "%spanic.log",
-                ctdl_home_directory);
-       StripSlashes(file_pid_paniclog, 0);
-       snprintf(file_crpt_file_key,
-                sizeof file_crpt_file_key, 
-                "%s/citadel.key",
-                ctdl_key_dir);
-       StripSlashes(file_crpt_file_key, 0);
-       snprintf(file_crpt_file_csr,
-                sizeof file_crpt_file_csr, 
-                "%s/citadel.csr",
-                ctdl_key_dir);
-       StripSlashes(file_crpt_file_csr, 0);
-       snprintf(file_crpt_file_cer,
-                sizeof file_crpt_file_cer, 
-                "%s/citadel.cer",
-                ctdl_key_dir);
-       StripSlashes(file_crpt_file_cer, 0);
-       snprintf(file_chkpwd,
-                sizeof file_chkpwd, 
-                "%schkpwd",
-                ctdl_utilbin_dir);
-       StripSlashes(file_chkpwd, 0);
-       snprintf(file_guesstimezone,
-                sizeof file_guesstimezone,
-                "%sguesstimezone.sh",
-                ctdl_utilbin_dir);
-
-       /* 
-        * DIRTY HACK FOLLOWS! due to configs in the network dir in the 
-        * legacy installations, we need to calculate ifdeffed here.
-        */
-       snprintf(file_mail_aliases, 
-                sizeof file_mail_aliases,
-                "%smail.aliases",
-                ctdl_spool_dir
-               );
-       StripSlashes(file_mail_aliases, 0);
-
-       DBG_PRINT(ctdl_data_dir);
-       DBG_PRINT(ctdl_file_dir);
-       DBG_PRINT(ctdl_image_dir);
-       DBG_PRINT(ctdl_info_dir);
-       DBG_PRINT(ctdl_key_dir);
-       DBG_PRINT(ctdl_message_dir);
-       DBG_PRINT(ctdl_usrpic_dir);
-       DBG_PRINT(ctdl_run_dir);
-       DBG_PRINT(ctdl_spool_dir);
-       DBG_PRINT(ctdl_netdigest_dir);
-       DBG_PRINT(ctdl_nettmp_dir);
-       DBG_PRINT(ctdl_netcfg_dir);
-       DBG_PRINT(ctdl_bbsbase_dir);
-       DBG_PRINT(ctdl_sbin_dir);
-       DBG_PRINT(ctdl_bin_dir);
-       DBG_PRINT(ctdl_utilbin_dir);
-       DBG_PRINT(file_citadel_config);
-       DBG_PRINT(file_lmtp_socket);
-       DBG_PRINT(file_lmtp_unfiltered_socket);
-       DBG_PRINT(file_arcq);
-       DBG_PRINT(file_citadel_socket);
-       DBG_PRINT(file_mail_aliases);
-       DBG_PRINT(file_pid_file);
-       DBG_PRINT(file_pid_paniclog);
-       DBG_PRINT(file_crpt_file_key);
-       DBG_PRINT(file_crpt_file_csr);
-       DBG_PRINT(file_crpt_file_cer);
-       DBG_PRINT(file_chkpwd);
-       DBG_PRINT(file_guesstimezone);
-}
+/* all our directories */
+char *ctdl_home_directory = ".";
+char *ctdl_db_dir = "data";
+char *ctdl_file_dir = "files";
+char *ctdl_shared_dir = ".";
+char *ctdl_image_dir = "images";
+char *ctdl_info_dir = "info";
+char *ctdl_key_dir = "keys";
+char *ctdl_message_dir = "messages";
+char *ctdl_usrpic_dir = "userpics";
+char *ctdl_autoetc_dir = ".";
+char *ctdl_run_dir = ".";
+char *ctdl_netcfg_dir = "netconfigs";
+char *ctdl_bbsbase_dir = ".";
+char *ctdl_sbin_dir = ".";
+char *ctdl_bin_dir = ".";
+char *ctdl_utilbin_dir = ".";
+
+/* some of the frequently used files */
+char *file_citadel_config = "citadel.config";
+char *file_lmtp_socket = "lmtp.socket";
+char *file_lmtp_unfiltered_socket = "lmtp-unfiltered.socket";
+char *file_arcq = "refcount_adjustments.dat";
+char *file_citadel_socket = "citadel.socket";
+char *file_citadel_admin_socket = "citadel-admin.socket";
+char *file_pid_file = "/var/run/citserver.pid";
+char *file_pid_paniclog = "panic.log";
+char *file_crpt_file_key = "keys/citadel.key";
+char *file_crpt_file_csr = "keys/citadel.csr";
+char *file_crpt_file_cer = "keys/citadel.cer";
+char *file_chkpwd = "chkpwd";
+char *file_guesstimezone = "guesstimezone.sh";
 
 
 /*
@@ -290,36 +66,6 @@ size_t assoc_file_name(char *buf, size_t n, struct ctdlroom *qrbuf, const char *
 }
 
 
-void remove_digest_file(struct ctdlroom *room) {
-       char buf[PATH_MAX];
-
-       snprintf(buf, PATH_MAX, "%s/%ld.eml", ctdl_netdigest_dir, room->QRnumber);
-       StripSlashes(buf, 0);
-       unlink(buf);
-}
-
-
-FILE *create_digest_file(struct ctdlroom *room, int forceCreate) {
-       struct stat stbuf;
-       char fn[PATH_MAX];
-       int exists;
-       FILE *fp;
-
-       snprintf(fn, PATH_MAX, "%s/%ld.eml", ctdl_netdigest_dir, room->QRnumber);
-       StripSlashes(fn, 0);
-
-       exists = stat(fn, &stbuf); 
-       if (!forceCreate && (exists == -1))
-               return NULL;
-       
-       fp = fopen(fn, "w+");
-       if (fp == NULL) {
-               syslog(LOG_ERR, "failed to create digest file %s: %s", fn, strerror(errno));
-       }
-       return fp;
-}
-
-
 int create_dir(char *which, long ACCESS, long UID, long GID) {
        int rv;
        rv = mkdir(which, ACCESS);
@@ -354,9 +100,6 @@ int create_run_directories(long UID, long GID) {
        int rv = 0;
        rv += create_dir(ctdl_message_dir   , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
        rv += create_dir(ctdl_file_dir      , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
-       rv += create_dir(ctdl_spool_dir     , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
-       rv += create_dir(ctdl_netdigest_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
-       rv += create_dir(ctdl_nettmp_dir    , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
        rv += create_dir(ctdl_key_dir       , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1);
        rv += create_dir(ctdl_run_dir       , S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, UID, GID);
        return rv;