/*
- * (c) 2009 by Art Cancro and citadel.org
+ * (c) 2009-2012 by Art Cancro and citadel.org
* This program is released under the terms of the GNU General Public License v3.
*/
#include <fcntl.h>
#include <errno.h>
#include <string.h>
-#include "ctdlsalearn.h"
+#include <getopt.h>
int verbose = 0;
-int discover_ipgm_secret(char *dirname) {
- int fd;
- struct partial_config ccc;
- char configfile[1024];
-
- sprintf(configfile, "%s/citadel.config", dirname);
- fd = open(configfile, O_RDONLY);
- if (fd < 0) {
- if (verbose) fprintf(stderr, "%s: %s\n", configfile, strerror(errno));
- return(-1);
- }
-
- if (read(fd, &ccc, sizeof(struct partial_config)) != sizeof(struct partial_config)) {
- if (verbose) fprintf(stderr, "%s: %s\n", configfile, strerror(errno));
- return(-1);
- }
- if (close(fd) != 0) {
- if (verbose) fprintf(stderr, "%s: %s\n", configfile, strerror(errno));
- return(-1);
- }
- return(ccc.c_ipgm_secret);
-}
-
-
void do_room(int sock, char *roomname, char *salearnargs)
{
#define MAXMSGS 1000
int server_socket = 0;
char buf[1024];
int ipgm_secret = (-1);
- int c;
- char ctdldir[256];
-
- if ( (argc >= 2) && (!strcmp(argv[1], "-v")) ) {
- verbose = 1;
+ int a, c, i = 0;
+ char *ctdldir = "/usr/local/citadel" ;
+
+ while ((a = getopt(argc, argv, "vh:")) != EOF) switch(a) {
+ case 'v':
+ verbose = 1;
+ break;
+ case 'h':
+ ctdldir = strdup(optarg);
+ break;
+ default:
+ fprintf(stderr, "%s: usage: %s [-v]\n", argv[0], argv[0]);
+ return(1);
}
if (verbose) {
printf("(c) 2009-2011 citadel.org GPLv3\n");
}
- strcpy(ctdldir, "/usr/local/citadel");
- ipgm_secret = discover_ipgm_secret(ctdldir);
- if (ipgm_secret < 0) {
- strcpy(ctdldir, "/appl/citadel");
- ipgm_secret = discover_ipgm_secret(ctdldir);
+ if (chdir(ctdldir) != 0) {
+ fprintf(stderr, "%s: cannot change directory to %s: %s\n", argv[0], ctdldir, strerror(errno));
+ return(errno);
}
- if (ipgm_secret < 0) {
- strcpy(ctdldir, "/root/ctdl/trunk/citadel");
- ipgm_secret = discover_ipgm_secret(ctdldir);
- }
- if (ipgm_secret < 0) {
- exit(1);
+ else if (verbose) {
+ fprintf(stderr, "Changed directory to %s\n", ctdldir);
}
- if (verbose) printf("Connecting to Citadel server...\n");
- fflush(stdout);
- sprintf(buf, "%s/citadel.socket", ctdldir);
- server_socket = uds_connectsock(buf);
+ server_socket = (-1);
+
+ if (verbose) fprintf(stderr, "Connecting to server...\n");
+ server_socket = uds_connectsock("citadel-admin.socket");
+
if (server_socket < 0) {
+ if (verbose) fprintf(stderr, "Could not connect to Citadel server.\n");
exit(1);
}
sock_getln(server_socket, buf, sizeof buf);
if (verbose) printf("%s\n", &buf[4]);
- sock_printf(server_socket, "IPGM %d\n", ipgm_secret);
- sock_getln(server_socket, buf, sizeof buf);
- if (verbose) printf("%s\n", &buf[4]);
-
if (buf[0] == '2') {
- do_room(server_socket, "0000000001.spam", "--spam");
- do_room(server_socket, "0000000001.ham", "--ham");
+ do_room(server_socket, "0000000001.spam", "--dbpath /home/spam/.spamassassin --spam");
+ do_room(server_socket, "0000000001.ham", "--dbpath /home/spam/.spamassassin --ham");
}
sock_puts(server_socket, "QUIT");