#endif
-extern int msock; /* master listening socket */
-extern int verbosity; /* Logging level */
+extern int msock; /* master listening socket */
+extern int verbosity; /* Logging level */
extern char static_icon_dir[PATH_MAX]; /* where should we find our mime icons */
-int is_https = 0; /* Nonzero if I am an HTTPS service */
-int follow_xff = 0; /* Follow X-Forwarded-For: header */
-int home_specified = 0; /* did the user specify a homedir? */
+int is_https = 0; /* Nonzero if I am an HTTPS service */
+int follow_xff = 0; /* Follow X-Forwarded-For: header? */
int DisableGzip = 0;
-struct redirector *redir = NULL;
-char *default_landing_page = NULL;
-int num_redir = 0;
+char *default_landing_page = NULL; /* FIXME we need to populate this somehow */
extern pthread_mutex_t SessionListMutex;
extern pthread_key_t MyConKey;
extern void worker_entry(void);
extern void drop_root(uid_t UID);
-char socket_dir[PATH_MAX]; /* where to talk to our citadel server */
-
+char socket_dir[PATH_MAX]; /* where to talk to our citadel server */
char *server_cookie = NULL; /* our Cookie connection to the client */
int http_port = PORT_NUM; /* Port to listen on */
-char *ctdlhost = DEFAULT_HOST; /* our name */
-char *ctdlport = DEFAULT_PORT; /* our Port */
-int setup_wizard = 0; /* should we run the setup wizard? \todo */
-char wizard_filename[PATH_MAX]; /* where's the setup wizard? */
+char *ctdlhost = DEFAULT_HOST; /* Host name or IP address of Citadel server */
+char *ctdlport = DEFAULT_PORT; /* Port number of Citadel server */
+int setup_wizard = 0; /* should we run the setup wizard? */
+char wizard_filename[PATH_MAX]; /* location of file containing the last webcit version against which we ran setup wizard */
int running_as_daemon = 0; /* should we deamonize on startup? */
-
/* #define DBG_PRINNT_HOOKS_AT_START */
#ifdef DBG_PRINNT_HOOKS_AT_START
extern HashList *HandlerHash;
-/*
- * Handle redirects to legacy web servers
- */
-void handle_redir(void) {
- if (num_redir > 0) {
- int i;
- const char *req = ChrPtr(WC->Hdr->this_page);
- if (!req) {
- do_404();
- return;
- }
- if (req[0] == '/') ++req;
- syslog(9, "handle_redir() called; redirect this: %s", req);
- for (i=0; i<num_redir; ++i) {
- if (!strncmp(redir[i].urlpart, req, strlen(redir[i].urlpart))) {
- char go_here[1024];
- snprintf(go_here, sizeof go_here, redir[i].redirect_to, req);
- syslog(9, "redirecting to: %s", go_here);
- http_redirect(go_here);
- return;
- }
- }
- }
- do_404();
-}
-
-
-
-/*
- * load redirect strings (for supporting transition of legacy web servers to citadel on the same host)
- */
-void load_redirs(char *filename) {
- char buf[1024];
- int num_redir_alloc = num_redir;
- FILE *fp = fopen(filename, "r");
- if (!fp) {
- syslog(1, "Cannot open %s: %s", filename, strerror(errno));
- return;
- }
-
- while (fgets(buf, sizeof buf, fp) != NULL) {
- char *ch;
-
- buf[strlen(buf)-1] = 0;
-
- ch = strchr(buf, '#');
- if (ch) strcpy(ch, "");
- striplt(buf);
- if (!IsEmptyStr(buf)) {
-
- if (num_redir >= num_redir_alloc) {
- if (num_redir_alloc == 0) {
- num_redir_alloc = 10;
- }
- else {
- num_redir_alloc = num_redir_alloc * 2;
- }
- redir = realloc(redir, sizeof(struct redirector) * num_redir_alloc );
- }
-
- extract_token(redir[num_redir].urlpart, buf, 0, '|', sizeof(redir[num_redir].urlpart));
- extract_token(redir[num_redir].redirect_to, buf, 1, '|', sizeof(redir[num_redir].redirect_to));
- WebcitAddUrlHandler(redir[num_redir].urlpart, strlen(redir[num_redir].urlpart), "", 0, handle_redir, ANONYMOUS|COOKIEUNNEEDED|ISSTATIC);
- if (!strcasecmp(redir[num_redir].urlpart, "home")) {
- default_landing_page = redir[num_redir].redirect_to ;
- }
- ++num_redir;
- }
-
- }
- fclose(fp);
-}
-
-
-
/*
* Here's where it all begins.
*/
char ip_addr[256]="*";
int relh=0;
int home=0;
- int home_specified=0;
char relhome[PATH_MAX]="";
char webcitdir[PATH_MAX] = DATADIR;
char *pidfile = NULL;
/* Parse command line */
#ifdef HAVE_OPENSSL
- while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:dD:G:r:cfsS:Z")) != EOF)
+ while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:g:dD:G:cfsS:Z")) != EOF)
#else
- while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:dD:G:r:cfZ")) != EOF)
+ while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:g:dD:G:cfZ")) != EOF)
#endif
switch (a) {
case 'u':
UID = atol(optarg);
break;
- case 'r':
- load_redirs(optarg);
- break;
case 'h':
hdir = strdup(optarg);
relh=hdir[0]!='/';
safestrncpy(relhome, relhome, sizeof relhome);
}
/* free(hdir); TODO: SHOULD WE DO THIS? */
- home_specified = 1;
home=1;
break;
case 'd':
pidfile = strdup(optarg);
running_as_daemon = 1;
break;
+ case 'g':
+ default_landing_page = strdup(optarg);
+ break;
case 'B': /* Basesize */
basesize = atoi(optarg);
if (basesize > 2)
/* Become a worker thread. More worker threads will be spawned as they are needed. */
worker_entry();
- ShutDownLibCitadel ();
+ ShutDownLibCitadel();
return 0;
}