Further fork on getting things installed.
Also more cleanups.
This commit is contained in:
parent
779e0eeecc
commit
1df29a310b
@ -1,78 +0,0 @@
|
|||||||
diff -up cyrus-imapd-2.4.6/lib/lock_flock.c.flock cyrus-imapd-2.4.6/lib/lock_flock.c
|
|
||||||
--- cyrus-imapd-2.4.6/lib/lock_flock.c.flock 2010-12-20 14:15:49.000000000 +0100
|
|
||||||
+++ cyrus-imapd-2.4.6/lib/lock_flock.c 2011-02-10 12:56:45.262786102 +0100
|
|
||||||
@@ -52,6 +52,10 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "cyr_lock.h"
|
|
||||||
+#include <syslog.h>
|
|
||||||
+
|
|
||||||
+/* Locking timeout parameter */
|
|
||||||
+#define MAXTIME 99
|
|
||||||
|
|
||||||
const char *lock_method_desc = "flock";
|
|
||||||
|
|
||||||
@@ -68,6 +72,18 @@ const char *lock_method_desc = "flock";
|
|
||||||
* 'failaction' is provided, it is filled in with a pointer to a fixed
|
|
||||||
* string naming the action that failed.
|
|
||||||
*
|
|
||||||
+ * Modified by jwade 4/16/2002 to work around seen file locking problem
|
|
||||||
+ * Added locking timeout parameter to allow processes that are
|
|
||||||
+ * waiting for a lock to eventually time out
|
|
||||||
+ *
|
|
||||||
+ * Calls flock() in non-blocking fashion and then retries until a
|
|
||||||
+ * maximum delay is reached or the lock succeeds.
|
|
||||||
+ *
|
|
||||||
+ * As written, uses a quadratic backoff on retries with MAXTIME being
|
|
||||||
+ * the longest interval delay. Total delay time is the sum of the squares
|
|
||||||
+ * of all integers whose square is less than MAXTIME. In the case of
|
|
||||||
+ * MAXTIME = 99 this is 0+1+4+9+16+25+36+49+64+81= 285 Seconds
|
|
||||||
+ * This time is arbitrary and can be adjusted
|
|
||||||
*/
|
|
||||||
int lock_reopen(fd, filename, sbuf, failaction)
|
|
||||||
int fd;
|
|
||||||
@@ -78,17 +94,29 @@ const char **failaction;
|
|
||||||
int r;
|
|
||||||
struct stat sbuffile, sbufspare;
|
|
||||||
int newfd;
|
|
||||||
+ int delay=0, i=0;
|
|
||||||
|
|
||||||
if (!sbuf) sbuf = &sbufspare;
|
|
||||||
|
|
||||||
- for (;;) {
|
|
||||||
- r = flock(fd, LOCK_EX);
|
|
||||||
+ for(i=0,delay=0;;) {
|
|
||||||
+ r = flock(fd, LOCK_EX|LOCK_NB);
|
|
||||||
if (r == -1) {
|
|
||||||
- if (errno == EINTR) continue;
|
|
||||||
- if (failaction) *failaction = "locking";
|
|
||||||
+ if (errno == EINTR) {
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ else if ((errno == EWOULDBLOCK) && (delay < MAXTIME)) {
|
|
||||||
+ syslog(LOG_DEBUG, "lock: reopen-blocked sleeping for %d on interval %d (%d, %s)" , delay, i, fd, filename);
|
|
||||||
+ sleep(delay);
|
|
||||||
+ i++;
|
|
||||||
+ delay = i*i;
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ if (failaction) {
|
|
||||||
+ if (delay >= MAXTIME) *failaction = "locking_timeout";
|
|
||||||
+ else *failaction = "locking";
|
|
||||||
+ }
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
fstat(fd, sbuf);
|
|
||||||
r = stat(filename, &sbuffile);
|
|
||||||
if (r == -1) {
|
|
||||||
@@ -96,9 +124,7 @@ const char **failaction;
|
|
||||||
flock(fd, LOCK_UN);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
if (sbuf->st_ino == sbuffile.st_ino) return 0;
|
|
||||||
-
|
|
||||||
newfd = open(filename, O_RDWR);
|
|
||||||
if (newfd == -1) {
|
|
||||||
if (failaction) *failaction = "opening";
|
|
@ -1,80 +0,0 @@
|
|||||||
diff -up cyrus-imapd-2.4.14/lib/auth_unix.c.authid_normalize cyrus-imapd-2.4.14/lib/auth_unix.c
|
|
||||||
--- cyrus-imapd-2.4.14/lib/auth_unix.c.authid_normalize 2012-03-12 12:47:51.000000000 +0100
|
|
||||||
+++ cyrus-imapd-2.4.14/lib/auth_unix.c 2012-03-14 10:49:50.679822894 +0100
|
|
||||||
@@ -156,10 +156,12 @@ const char *identifier;
|
|
||||||
size_t len;
|
|
||||||
{
|
|
||||||
static char retbuf[81];
|
|
||||||
+ char backup[81];
|
|
||||||
struct group *grp;
|
|
||||||
char sawalpha;
|
|
||||||
char *p;
|
|
||||||
int username_tolower = 0;
|
|
||||||
+ int ic,rbc;
|
|
||||||
|
|
||||||
if(!len) len = strlen(identifier);
|
|
||||||
if(len >= sizeof(retbuf)) return NULL;
|
|
||||||
@@ -211,6 +213,22 @@ size_t len;
|
|
||||||
/* now we don't */
|
|
||||||
/* if (!sawalpha) return NULL; */
|
|
||||||
|
|
||||||
+ if( (libcyrus_config_getswitch(CYRUSOPT_NORMALIZEUID) == 1) ) {
|
|
||||||
+ strcpy(backup,retbuf);
|
|
||||||
+ /* remove leading blanks */
|
|
||||||
+ for(ic=0; isblank(backup[ic]); ic++);
|
|
||||||
+ for(rbc=0; backup[ic]; ic++) {
|
|
||||||
+ retbuf[rbc] = ( isalpha(backup[ic]) ?
|
|
||||||
+ tolower(backup[ic]) : backup[ic] );
|
|
||||||
+ rbc++;
|
|
||||||
+ }
|
|
||||||
+ retbuf[rbc] = '\0';
|
|
||||||
+ /* remove trailing blanks */
|
|
||||||
+ for(--rbc; isblank(retbuf[rbc]); rbc--) {
|
|
||||||
+ retbuf[rbc] = '\0';
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return retbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff -up cyrus-imapd-2.4.14/lib/imapoptions.authid_normalize cyrus-imapd-2.4.14/lib/imapoptions
|
|
||||||
--- cyrus-imapd-2.4.14/lib/imapoptions.authid_normalize 2012-03-12 12:47:51.000000000 +0100
|
|
||||||
+++ cyrus-imapd-2.4.14/lib/imapoptions 2012-03-14 11:01:11.020256349 +0100
|
|
||||||
@@ -844,6 +844,11 @@ Blank lines and lines beginning with ``#
|
|
||||||
/* Set the length of the NNTP server's inactivity autologout timer,
|
|
||||||
in minutes. The minimum value is 3, the default. */
|
|
||||||
|
|
||||||
+{ "normalizeuid", 0, SWITCH }
|
|
||||||
+/* Lowercase uid and strip leading and trailing blanks. It is recommended
|
|
||||||
+ to set this to yes, especially if OpenLDAP is used as authentication
|
|
||||||
+ source. */
|
|
||||||
+
|
|
||||||
{ "notifysocket", "{configdirectory}/socket/notify", STRING }
|
|
||||||
/* Unix domain socket that the mail notification daemon listens on. */
|
|
||||||
|
|
||||||
diff -up cyrus-imapd-2.4.14/lib/libcyr_cfg.c.authid_normalize cyrus-imapd-2.4.14/lib/libcyr_cfg.c
|
|
||||||
--- cyrus-imapd-2.4.14/lib/libcyr_cfg.c.authid_normalize 2012-03-12 12:47:51.000000000 +0100
|
|
||||||
+++ cyrus-imapd-2.4.14/lib/libcyr_cfg.c 2012-03-14 10:49:50.681822910 +0100
|
|
||||||
@@ -158,6 +158,10 @@ struct cyrusopt_s cyrus_options[] = {
|
|
||||||
CFGVAL(long, 1),
|
|
||||||
CYRUS_OPT_SWITCH },
|
|
||||||
|
|
||||||
+ { CYRUSOPT_NORMALIZEUID,
|
|
||||||
+ CFGVAL(long, 1),
|
|
||||||
+ CYRUS_OPT_SWITCH },
|
|
||||||
+
|
|
||||||
{ CYRUSOPT_LAST, { NULL }, CYRUS_OPT_NOTOPT }
|
|
||||||
};
|
|
||||||
|
|
||||||
diff -up cyrus-imapd-2.4.14/lib/libcyr_cfg.h.authid_normalize cyrus-imapd-2.4.14/lib/libcyr_cfg.h
|
|
||||||
--- cyrus-imapd-2.4.14/lib/libcyr_cfg.h.authid_normalize 2012-03-12 12:47:51.000000000 +0100
|
|
||||||
+++ cyrus-imapd-2.4.14/lib/libcyr_cfg.h 2012-03-14 10:49:50.681822910 +0100
|
|
||||||
@@ -116,6 +116,8 @@ enum cyrus_opt {
|
|
||||||
CYRUSOPT_SQL_USESSL,
|
|
||||||
/* Checkpoint after every recovery (OFF) */
|
|
||||||
CYRUSOPT_SKIPLIST_ALWAYS_CHECKPOINT,
|
|
||||||
+ /* Lowercase uid and strip leading and trailing blanks (OFF) */
|
|
||||||
+ CYRUSOPT_NORMALIZEUID,
|
|
||||||
|
|
||||||
CYRUSOPT_LAST
|
|
||||||
|
|
Binary file not shown.
@ -1,21 +0,0 @@
|
|||||||
diff -up cyrus-imapd-2.4.6/cmulocal/berkdb.m4.db4.7 cyrus-imapd-2.4.6/cmulocal/berkdb.m4
|
|
||||||
--- cyrus-imapd-2.4.6/cmulocal/berkdb.m4.db4.7 2010-12-20 14:15:49.000000000 +0100
|
|
||||||
+++ cyrus-imapd-2.4.6/cmulocal/berkdb.m4 2011-02-10 13:43:26.397438481 +0100
|
|
||||||
@@ -214,6 +214,7 @@ AC_DEFUN([CYRUS_BERKELEY_DB_CHK_LIB],
|
|
||||||
|
|
||||||
saved_LIBS=$LIBS
|
|
||||||
for dbname in ${with_bdb} \
|
|
||||||
+ db \
|
|
||||||
db-4.8 db4.8 db48 \
|
|
||||||
db-4.7 db4.7 db47 \
|
|
||||||
db-4.6 db4.6 db46 \
|
|
||||||
@@ -226,8 +227,7 @@ AC_DEFUN([CYRUS_BERKELEY_DB_CHK_LIB],
|
|
||||||
db-3.3 db3.3 db33 \
|
|
||||||
db-3.2 db3.2 db32 \
|
|
||||||
db-3.1 db3.1 db31 \
|
|
||||||
- db-3.0 db3.0 db30 db-3 db3 \
|
|
||||||
- db
|
|
||||||
+ db-3.0 db3.0 db30 db-3 db3
|
|
||||||
do
|
|
||||||
LIBS="$saved_LIBS -l$dbname"
|
|
||||||
AC_TRY_LINK([#include <stdio.h>
|
|
@ -1,29 +0,0 @@
|
|||||||
This is a backport of
|
|
||||||
https://cyrus.foundation/cyrus-imapd/commit/?id=ff4e6c71d932b3e6bbfa67d76f095e27ff21bad0
|
|
||||||
|
|
||||||
The patch is mentioned in http://seclists.org/oss-sec/2015/q3/651 as fixing
|
|
||||||
potential overflows.
|
|
||||||
|
|
||||||
diff --git a/master/master.c b/master/master.c
|
|
||||||
index 3886441..455548b 100644
|
|
||||||
--- a/master/master.c
|
|
||||||
+++ b/master/master.c
|
|
||||||
@@ -197,13 +197,15 @@ void event_free(struct event *a)
|
|
||||||
free(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
-void get_prog(char *path, unsigned size, char *const *cmd)
|
|
||||||
+void get_prog(char *path, size_t size, char *const *cmd)
|
|
||||||
{
|
|
||||||
+ if (!size) return;
|
|
||||||
if (cmd[0][0] == '/') {
|
|
||||||
- /* master lacks strlcpy, due to no libcyrus */
|
|
||||||
- snprintf(path, size, "%s", cmd[0]);
|
|
||||||
+ /* master lacks strlcpy, due to no libcyrus */
|
|
||||||
+ strncpy(path, cmd[0], size - 1);
|
|
||||||
}
|
|
||||||
else snprintf(path, size, "%s/%s", SERVICE_PATH, cmd[0]);
|
|
||||||
+ path[size-1] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
void get_statsock(int filedes[2])
|
|
@ -1,109 +0,0 @@
|
|||||||
diff -up cyrus-imapd-2.4.12/imap/global.c.debugopt cyrus-imapd-2.4.12/imap/global.c
|
|
||||||
--- cyrus-imapd-2.4.12/imap/global.c.debugopt 2011-10-04 21:53:03.000000000 +0200
|
|
||||||
+++ cyrus-imapd-2.4.12/imap/global.c 2011-11-22 14:24:28.272416643 +0100
|
|
||||||
@@ -157,6 +157,10 @@ int cyrus_init(const char *alt_config, c
|
|
||||||
/* don't free the openlog() string! */
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* allow debug logging */
|
|
||||||
+ if (!config_debug)
|
|
||||||
+ setlogmask(~LOG_MASK(LOG_DEBUG));
|
|
||||||
+
|
|
||||||
/* Look up default partition */
|
|
||||||
config_defpartition = config_getstring(IMAPOPT_DEFAULTPARTITION);
|
|
||||||
for (p = (char *)config_defpartition; p && *p; p++) {
|
|
||||||
diff -up cyrus-imapd-2.4.12/imap/tls.c.debugopt cyrus-imapd-2.4.12/imap/tls.c
|
|
||||||
--- cyrus-imapd-2.4.12/imap/tls.c.debugopt 2011-10-04 21:53:03.000000000 +0200
|
|
||||||
+++ cyrus-imapd-2.4.12/imap/tls.c 2011-11-22 14:24:28.272416643 +0100
|
|
||||||
@@ -255,9 +255,9 @@ static DH *load_dh_param(const char *key
|
|
||||||
|
|
||||||
if (ret == NULL) {
|
|
||||||
ret = get_dh1024();
|
|
||||||
- syslog(LOG_NOTICE, "imapd:Loading hard-coded DH parameters");
|
|
||||||
+ syslog(LOG_DEBUG, "imapd:Loading hard-coded DH parameters");
|
|
||||||
} else {
|
|
||||||
- syslog(LOG_NOTICE, "imapd:Loading DH parameters from file");
|
|
||||||
+ syslog(LOG_DEBUG, "imapd:Loading DH parameters from file");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bio != NULL) BIO_free(bio);
|
|
||||||
diff -up cyrus-imapd-2.4.12/lib/imapoptions.debugopt cyrus-imapd-2.4.12/lib/imapoptions
|
|
||||||
--- cyrus-imapd-2.4.12/lib/imapoptions.debugopt 2011-11-22 14:24:28.265416615 +0100
|
|
||||||
+++ cyrus-imapd-2.4.12/lib/imapoptions 2011-11-22 14:24:28.273416647 +0100
|
|
||||||
@@ -388,6 +388,9 @@ Blank lines and lines beginning with ``#
|
|
||||||
hashing done on configuration directories. This is recommended if
|
|
||||||
one partition has a very bushy mailbox tree. */
|
|
||||||
|
|
||||||
+{ "debug", 0, SWITCH }
|
|
||||||
+/* If enabled, allow syslog() to pass LOG_DEBUG messages. */
|
|
||||||
+
|
|
||||||
# Commented out - there's no such thing as "hostname_mechs", but we need
|
|
||||||
# this for the man page
|
|
||||||
# { "hostname_mechs", NULL, STRING }
|
|
||||||
diff -up cyrus-imapd-2.4.12/lib/libconfig.c.debugopt cyrus-imapd-2.4.12/lib/libconfig.c
|
|
||||||
--- cyrus-imapd-2.4.12/lib/libconfig.c.debugopt 2011-10-04 21:53:03.000000000 +0200
|
|
||||||
+++ cyrus-imapd-2.4.12/lib/libconfig.c 2011-11-22 14:24:28.274416650 +0100
|
|
||||||
@@ -84,6 +84,7 @@ int config_auditlog;
|
|
||||||
unsigned config_maxword;
|
|
||||||
unsigned config_maxquoted;
|
|
||||||
int config_qosmarking;
|
|
||||||
+int config_debug;
|
|
||||||
|
|
||||||
/* declared in each binary that uses libconfig */
|
|
||||||
extern const int config_need_data;
|
|
||||||
@@ -350,6 +351,9 @@ void config_read(const char *alt_config)
|
|
||||||
|
|
||||||
ival = config_getenum(IMAPOPT_QOSMARKING);
|
|
||||||
config_qosmarking = qos[ival];
|
|
||||||
+
|
|
||||||
+ /* allow debug logging */
|
|
||||||
+ config_debug = config_getswitch(IMAPOPT_DEBUG);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define GROWSIZE 4096
|
|
||||||
diff -up cyrus-imapd-2.4.12/lib/libconfig.h.debugopt cyrus-imapd-2.4.12/lib/libconfig.h
|
|
||||||
--- cyrus-imapd-2.4.12/lib/libconfig.h.debugopt 2011-10-04 21:53:03.000000000 +0200
|
|
||||||
+++ cyrus-imapd-2.4.12/lib/libconfig.h 2011-11-22 14:24:28.274416650 +0100
|
|
||||||
@@ -82,6 +82,7 @@ extern int config_auditlog;
|
|
||||||
extern unsigned config_maxquoted;
|
|
||||||
extern unsigned config_maxword;
|
|
||||||
extern int config_qosmarking;
|
|
||||||
+extern int config_debug;
|
|
||||||
|
|
||||||
/* config requirement flags */
|
|
||||||
#define CONFIG_NEED_PARTITION_DATA (1<<0)
|
|
||||||
diff -up cyrus-imapd-2.4.12/master/master.c.debugopt cyrus-imapd-2.4.12/master/master.c
|
|
||||||
--- cyrus-imapd-2.4.12/master/master.c.debugopt 2011-10-04 21:53:03.000000000 +0200
|
|
||||||
+++ cyrus-imapd-2.4.12/master/master.c 2011-11-22 14:30:47.243975974 +0100
|
|
||||||
@@ -1984,7 +1984,7 @@ int main(int argc, char **argv)
|
|
||||||
if(pidlock_fd != -1) close(pidlock_fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
- syslog(LOG_NOTICE, "process started");
|
|
||||||
+ syslog(LOG_DEBUG, "process started");
|
|
||||||
|
|
||||||
#if defined(HAVE_UCDSNMP) || defined(HAVE_NETSNMP)
|
|
||||||
/* initialize SNMP agent */
|
|
||||||
@@ -2041,7 +2041,7 @@ int main(int argc, char **argv)
|
|
||||||
init_janitor();
|
|
||||||
|
|
||||||
/* ok, we're going to start spawning like mad now */
|
|
||||||
- syslog(LOG_NOTICE, "ready for work");
|
|
||||||
+ syslog(LOG_DEBUG, "ready for work");
|
|
||||||
|
|
||||||
now = time(NULL);
|
|
||||||
for (;;) {
|
|
||||||
diff -up cyrus-imapd-2.4.12/master/masterconf.c.debugopt cyrus-imapd-2.4.12/master/masterconf.c
|
|
||||||
--- cyrus-imapd-2.4.12/master/masterconf.c.debugopt 2011-10-04 21:53:03.000000000 +0200
|
|
||||||
+++ cyrus-imapd-2.4.12/master/masterconf.c 2011-11-22 14:24:28.276416658 +0100
|
|
||||||
@@ -99,6 +99,10 @@ int masterconf_init(const char *ident, c
|
|
||||||
/* don't free the openlog() string! */
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* drop debug messages locally */
|
|
||||||
+ if (!config_debug)
|
|
||||||
+ setlogmask(~LOG_MASK(LOG_DEBUG));
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -27,16 +27,10 @@ Source11: README.rpm
|
|||||||
Source12: cyrus-imapd.service
|
Source12: cyrus-imapd.service
|
||||||
Source13: cyr_systemd_helper
|
Source13: cyr_systemd_helper
|
||||||
|
|
||||||
#Patch0: cyrus-imapd-2.1.3-flock.patch
|
# There is a conflict between the sched_param structure defined in the source
|
||||||
#Patch1: cyrus-imapd-2.3.1-authid_normalize.patch
|
# and one defined by a system header. Fixed upstream as
|
||||||
|
# https://github.com/cyrusimap/cyrus-imapd/commit/a288b4fea15f843e309dcdf7039a1ebcc3d19616
|
||||||
# fedora/rhel specific, find current db lib, rhbz#461875
|
Patch0: fix-sched_param.patch
|
||||||
#Patch2: cyrus-imapd-2.3.12p2-current-db.patch
|
|
||||||
|
|
||||||
# for c-i <= 2.4.12
|
|
||||||
#Patch3: cyrus-imapd-2.4.12-debugopt.patch
|
|
||||||
|
|
||||||
#Patch4: cyrus-imapd-2.3.18-potential-overflow.patch
|
|
||||||
|
|
||||||
BuildRequires: autoconf automake bison flex groff libtool
|
BuildRequires: autoconf automake bison flex groff libtool
|
||||||
BuildRequires: pkgconfig tcp_wrappers transfig
|
BuildRequires: pkgconfig tcp_wrappers transfig
|
||||||
@ -58,7 +52,7 @@ Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
|
|||||||
%{?perl_default_filter}
|
%{?perl_default_filter}
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The %{name} package contains the core of the Cyrus IMAP server.
|
The cyrus-imapd package contains the core of the Cyrus IMAP server.
|
||||||
It is a scaleable enterprise mail system designed for use from
|
It is a scaleable enterprise mail system designed for use from
|
||||||
small to large enterprise environments using standards-based
|
small to large enterprise environments using standards-based
|
||||||
internet mail technologies.
|
internet mail technologies.
|
||||||
@ -101,13 +95,13 @@ Requires(post): grep, coreutils, make, openssl
|
|||||||
Requires(postun): shadow-utils
|
Requires(postun): shadow-utils
|
||||||
|
|
||||||
%description utils
|
%description utils
|
||||||
The %{name}-utils package contains administrative tools for the
|
The cyrus-imapd-utils package contains administrative tools for the
|
||||||
Cyrus IMAP server. It can be installed on systems other than the
|
Cyrus IMAP server. It can be installed on systems other than the
|
||||||
one running the server.
|
one running the server.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1
|
%autosetup -p1
|
||||||
install -m 644 %{SOURCE11} doc/
|
install -m 644 %SOURCE11 doc/
|
||||||
|
|
||||||
# Modify docs master --> cyrus-master
|
# Modify docs master --> cyrus-master
|
||||||
perl -pi -e "s@master\(8\)@cyrus-master(8)@" man/*5 man/*8 lib/imapoptions
|
perl -pi -e "s@master\(8\)@cyrus-master(8)@" man/*5 man/*8 lib/imapoptions
|
||||||
@ -137,13 +131,13 @@ find . -type f -name "*.pl" -exec chmod 755 {} \;
|
|||||||
|
|
||||||
autoreconf -vi
|
autoreconf -vi
|
||||||
%{configure} \
|
%{configure} \
|
||||||
--with-bdb-incdir=%{_includedir}/libdb \
|
--with-bdb-incdir=%_includedir/libdb \
|
||||||
--with-cyrus-prefix=%{cyrexecdir} \
|
--with-cyrus-prefix=%cyrexecdir \
|
||||||
--with-extraident="Fedora-RPM-%{version}-%{release}" \
|
--with-extraident="Fedora-RPM-%version-%release" \
|
||||||
--with-krbimpl=mit \
|
--with-krbimpl=mit \
|
||||||
--with-ldap=/usr \
|
--with-ldap=/usr \
|
||||||
--with-perl=%{__perl} \
|
--with-perl=%__perl \
|
||||||
--with-service-path=%{cyrexecdir} \
|
--with-service-path=%cyrexecdir \
|
||||||
--with-snmp \
|
--with-snmp \
|
||||||
--with-syslogfacility=MAIL \
|
--with-syslogfacility=MAIL \
|
||||||
--enable-autocreate \
|
--enable-autocreate \
|
||||||
@ -156,47 +150,54 @@ autoreconf -vi
|
|||||||
--enable-replication \
|
--enable-replication \
|
||||||
--enable-unit-tests \
|
--enable-unit-tests \
|
||||||
|
|
||||||
%undefine smp_mflags
|
|
||||||
%make_build
|
%make_build
|
||||||
|
|
||||||
|
# This isn't built by default, but this package has always installed it.
|
||||||
|
make -C notifyd notifytest
|
||||||
|
|
||||||
#make -C man -f Makefile.dist
|
#make -C man -f Makefile.dist
|
||||||
#make -C doc -f Makefile.dist
|
#make -C doc -f Makefile.dist
|
||||||
#make LDFLAGS="$LDFLAGS -pie %{__global_ldflags}"
|
#make LDFLAGS="$LDFLAGS -pie %{__global_ldflags}"
|
||||||
#make -C notifyd notifytest
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
make install DESTDIR=%buildroot
|
||||||
|
|
||||||
|
# Install some additional binaryes
|
||||||
|
|
||||||
|
# Create directories
|
||||||
|
install -d \
|
||||||
|
%buildroot/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig,cron.daily} \
|
||||||
|
%buildroot/%_libdir/sasl \
|
||||||
|
%buildroot/var/spool/imap \
|
||||||
|
%buildroot/var/lib/imap/{user,quota,proc,log,msg,socket,db,sieve,sync,md5,rpm,backup,meta} \
|
||||||
|
%buildroot/var/lib/imap/ptclient \
|
||||||
|
%buildroot/%_datadir/%name/rpm \
|
||||||
|
%buildroot/etc/pki/%name
|
||||||
|
|
||||||
|
|
||||||
|
echo BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
|
||||||
|
ls -lR %buildroot
|
||||||
# This is needed to install the perl files correctly
|
# This is needed to install the perl files correctly
|
||||||
pushd perl/imap
|
#pushd perl/imap
|
||||||
perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor
|
# perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor
|
||||||
popd
|
#popd
|
||||||
pushd perl/sieve/managesieve
|
#pushd perl/sieve/managesieve
|
||||||
perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor
|
# perl Makefile.PL PREFIX=%{buildroot}%{_prefix} INSTALLDIRS=vendor
|
||||||
popd
|
#popd
|
||||||
|
|
||||||
# Do what the regular make install does
|
# Do what the regular make install does
|
||||||
make install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir}
|
make install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir}
|
||||||
make -C man install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir}
|
make -C man install DESTDIR=%{buildroot} PREFIX=%{_prefix} mandir=%{_mandir}
|
||||||
|
|
||||||
install -m 755 imtest/imtest %{buildroot}%{_bindir}/
|
install -m 755 notifyd/notifytest %buildroot%_bindir/
|
||||||
install -m 755 notifyd/notifytest %{buildroot}%{_bindir}/
|
install -m 755 perl/imap/cyradm %buildroot%_bindir/
|
||||||
install -m 755 perl/imap/cyradm %{buildroot}%{_bindir}/
|
|
||||||
|
|
||||||
# Install tools
|
# Install tools
|
||||||
for tool in tools/* ; do
|
for tool in tools/* ; do
|
||||||
test -f ${tool} && install -m 755 ${tool} %{buildroot}%{cyrexecdir}/
|
test -f ${tool} && install -m 755 ${tool} %{buildroot}%{cyrexecdir}/
|
||||||
done
|
done
|
||||||
|
|
||||||
# Create directories
|
|
||||||
install -d \
|
|
||||||
%{buildroot}/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig,cron.daily} \
|
|
||||||
%{buildroot}%{_libdir}/sasl \
|
|
||||||
%{buildroot}%{_var}/spool/imap \
|
|
||||||
%{buildroot}%{_var}/lib/imap/{user,quota,proc,log,msg,socket,db,sieve,sync,md5,rpm,backup,meta} \
|
|
||||||
%{buildroot}%{_var}/lib/imap/ptclient \
|
|
||||||
%{buildroot}%{_datadir}/%{name}/rpm \
|
|
||||||
%{buildroot}/etc/pki/%{name} \
|
|
||||||
doc/contrib
|
|
||||||
|
|
||||||
# Install additional files
|
# Install additional files
|
||||||
install -m 755 %{SOURCE8} %{buildroot}%{cyrexecdir}/cvt_cyrusdb_all
|
install -m 755 %{SOURCE8} %{buildroot}%{cyrexecdir}/cvt_cyrusdb_all
|
||||||
install -m 644 %{SOURCE9} %{buildroot}%{_datadir}/%{name}/rpm/magic
|
install -m 644 %{SOURCE9} %{buildroot}%{_datadir}/%{name}/rpm/magic
|
||||||
|
238
fix-sched_param.patch
Normal file
238
fix-sched_param.patch
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
diff --git a/imap/http_caldav.c b/imap/http_caldav.c
|
||||||
|
index 98c0f70..4520424 100644
|
||||||
|
--- a/imap/http_caldav.c
|
||||||
|
+++ b/imap/http_caldav.c
|
||||||
|
@@ -362,7 +362,7 @@ static int store_resource(struct transaction_t *txn, icalcomponent *ical,
|
||||||
|
struct caldav_db *caldavdb, int overwrite,
|
||||||
|
unsigned flags);
|
||||||
|
|
||||||
|
-static void sched_request(const char *organizer, struct sched_param *sparam,
|
||||||
|
+static void sched_request(const char *organizer, struct caldav_sched_param *sparam,
|
||||||
|
icalcomponent *oldical, icalcomponent *newical,
|
||||||
|
const char *att_update);
|
||||||
|
static void sched_reply(const char *userid,
|
||||||
|
@@ -1154,7 +1154,7 @@ static int caldav_delete_sched(struct transaction_t *txn,
|
||||||
|
const char *userid, *organizer, **hdr;
|
||||||
|
icalcomponent *ical, *comp;
|
||||||
|
icalproperty *prop;
|
||||||
|
- struct sched_param sparam;
|
||||||
|
+ struct caldav_sched_param sparam;
|
||||||
|
|
||||||
|
/* Load message containing the resource and parse iCal data */
|
||||||
|
ical = record_to_ical(mailbox, record);
|
||||||
|
@@ -2441,7 +2441,7 @@ static int caldav_post(struct transaction_t *txn)
|
||||||
|
icalproperty_method meth = 0;
|
||||||
|
icalproperty *prop = NULL;
|
||||||
|
const char *uid = NULL, *organizer = NULL;
|
||||||
|
- struct sched_param sparam;
|
||||||
|
+ struct caldav_sched_param sparam;
|
||||||
|
|
||||||
|
if (!(namespace_calendar.allow & ALLOW_CAL_SCHED) || !txn->req_tgt.flags) {
|
||||||
|
/* POST to regular calendar collection */
|
||||||
|
@@ -2726,7 +2726,7 @@ static int caldav_put(struct transaction_t *txn,
|
||||||
|
/* Scheduling object resource */
|
||||||
|
const char *userid;
|
||||||
|
struct caldav_data *cdata;
|
||||||
|
- struct sched_param sparam;
|
||||||
|
+ struct caldav_sched_param sparam;
|
||||||
|
icalcomponent *oldical = NULL;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
@@ -5359,12 +5359,12 @@ static int store_resource(struct transaction_t *txn, icalcomponent *ical,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-int caladdress_lookup(const char *addr, struct sched_param *param)
|
||||||
|
+int caladdress_lookup(const char *addr, struct caldav_sched_param *param)
|
||||||
|
{
|
||||||
|
const char *userid = addr;
|
||||||
|
int islocal = 1, found = 1;
|
||||||
|
|
||||||
|
- memset(param, 0, sizeof(struct sched_param));
|
||||||
|
+ memset(param, 0, sizeof(struct caldav_sched_param));
|
||||||
|
|
||||||
|
if (!addr) return HTTP_NOT_FOUND;
|
||||||
|
|
||||||
|
@@ -5571,7 +5571,7 @@ struct remote_rock {
|
||||||
|
static void busytime_query_remote(const char *server __attribute__((unused)),
|
||||||
|
void *data, void *rock)
|
||||||
|
{
|
||||||
|
- struct sched_param *remote = (struct sched_param *) data;
|
||||||
|
+ struct caldav_sched_param *remote = (struct caldav_sched_param *) data;
|
||||||
|
struct remote_rock *rrock = (struct remote_rock *) rock;
|
||||||
|
icalcomponent *comp;
|
||||||
|
struct proplist *list;
|
||||||
|
@@ -5673,18 +5673,18 @@ static void busytime_query_remote(const char *server __attribute__((unused)),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-static void free_sched_param(void *data)
|
||||||
|
+static void free_caldav_sched_param(void *data)
|
||||||
|
{
|
||||||
|
- struct sched_param *sched_param = (struct sched_param *) data;
|
||||||
|
+ struct caldav_sched_param *caldav_sched_param = (struct caldav_sched_param *) data;
|
||||||
|
|
||||||
|
- if (sched_param) {
|
||||||
|
+ if (caldav_sched_param) {
|
||||||
|
struct proplist *prop, *next;
|
||||||
|
|
||||||
|
- for (prop = sched_param->props; prop; prop = next) {
|
||||||
|
+ for (prop = caldav_sched_param->props; prop; prop = next) {
|
||||||
|
next = prop->next;
|
||||||
|
free(prop);
|
||||||
|
}
|
||||||
|
- free(sched_param);
|
||||||
|
+ free(caldav_sched_param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5700,14 +5700,14 @@ int sched_busytime_query(struct transaction_t *txn,
|
||||||
|
char mailboxname[MAX_MAILBOX_BUFFER];
|
||||||
|
icalproperty *prop = NULL, *next;
|
||||||
|
const char *uid = NULL, *organizer = NULL;
|
||||||
|
- struct sched_param sparam;
|
||||||
|
+ struct caldav_sched_param sparam;
|
||||||
|
struct auth_state *org_authstate = NULL;
|
||||||
|
xmlNodePtr root = NULL;
|
||||||
|
xmlNsPtr ns[NUM_NAMESPACE];
|
||||||
|
struct propfind_ctx fctx;
|
||||||
|
struct calquery_filter calfilter;
|
||||||
|
struct hash_table remote_table;
|
||||||
|
- struct sched_param *remote = NULL;
|
||||||
|
+ struct caldav_sched_param *remote = NULL;
|
||||||
|
|
||||||
|
if (!calendarprefix) {
|
||||||
|
calendarprefix = config_getstring(IMAPOPT_CALENDARPREFIX);
|
||||||
|
@@ -5811,7 +5811,7 @@ int sched_busytime_query(struct transaction_t *txn,
|
||||||
|
remote = hash_lookup(key, &remote_table);
|
||||||
|
if (!remote) {
|
||||||
|
/* New remote - add it to the hash table */
|
||||||
|
- remote = xzmalloc(sizeof(struct sched_param));
|
||||||
|
+ remote = xzmalloc(sizeof(struct caldav_sched_param));
|
||||||
|
if (sparam.server) remote->server = xstrdup(sparam.server);
|
||||||
|
remote->port = sparam.port;
|
||||||
|
remote->flags = sparam.flags;
|
||||||
|
@@ -5907,7 +5907,7 @@ int sched_busytime_query(struct transaction_t *txn,
|
||||||
|
struct remote_rock rrock = { txn, ical, root, ns };
|
||||||
|
hash_enumerate(&remote_table, busytime_query_remote, &rrock);
|
||||||
|
}
|
||||||
|
- free_hash_table(&remote_table, free_sched_param);
|
||||||
|
+ free_hash_table(&remote_table, free_caldav_sched_param);
|
||||||
|
|
||||||
|
/* Output the XML response */
|
||||||
|
if (!ret) xml_response(HTTP_OK, txn, root->doc);
|
||||||
|
@@ -5945,7 +5945,7 @@ static void free_sched_data(void *data)
|
||||||
|
|
||||||
|
/* Deliver scheduling object to a remote recipient */
|
||||||
|
static void sched_deliver_remote(const char *recipient,
|
||||||
|
- struct sched_param *sparam,
|
||||||
|
+ struct caldav_sched_param *sparam,
|
||||||
|
struct sched_data *sched_data)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
@@ -6250,7 +6250,7 @@ static int deliver_merge_pollstatus(icalcomponent *ical, icalcomponent *request)
|
||||||
|
|
||||||
|
|
||||||
|
static void sched_pollstatus(const char *organizer,
|
||||||
|
- struct sched_param *sparam, icalcomponent *ical,
|
||||||
|
+ struct caldav_sched_param *sparam, icalcomponent *ical,
|
||||||
|
const char *voter)
|
||||||
|
{
|
||||||
|
struct auth_state *authstate;
|
||||||
|
@@ -6376,7 +6376,7 @@ deliver_merge_pollstatus(icalcomponent *ical __attribute__((unused)),
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sched_pollstatus(const char *organizer __attribute__((unused)),
|
||||||
|
- struct sched_param *sparam __attribute__((unused)),
|
||||||
|
+ struct caldav_sched_param *sparam __attribute__((unused)),
|
||||||
|
icalcomponent *ical __attribute__((unused)),
|
||||||
|
const char *voter __attribute__((unused)))
|
||||||
|
{
|
||||||
|
@@ -6708,7 +6708,7 @@ static int deliver_merge_request(const char *attendee,
|
||||||
|
|
||||||
|
/* Deliver scheduling object to local recipient */
|
||||||
|
static void sched_deliver_local(const char *recipient,
|
||||||
|
- struct sched_param *sparam,
|
||||||
|
+ struct caldav_sched_param *sparam,
|
||||||
|
struct sched_data *sched_data,
|
||||||
|
struct auth_state *authstate)
|
||||||
|
{
|
||||||
|
@@ -6986,7 +6986,7 @@ void sched_deliver(const char *recipient, void *data, void *rock)
|
||||||
|
{
|
||||||
|
struct sched_data *sched_data = (struct sched_data *) data;
|
||||||
|
struct auth_state *authstate = (struct auth_state *) rock;
|
||||||
|
- struct sched_param sparam;
|
||||||
|
+ struct caldav_sched_param sparam;
|
||||||
|
int islegal;
|
||||||
|
|
||||||
|
/* Check SCHEDULE-FORCE-SEND value */
|
||||||
|
@@ -7325,7 +7325,7 @@ static unsigned propcmp(icalcomponent *oldical, icalcomponent *newical,
|
||||||
|
|
||||||
|
|
||||||
|
/* Create and deliver an organizer scheduling request */
|
||||||
|
-static void sched_request(const char *organizer, struct sched_param *sparam,
|
||||||
|
+static void sched_request(const char *organizer, struct caldav_sched_param *sparam,
|
||||||
|
icalcomponent *oldical, icalcomponent *newical,
|
||||||
|
const char *att_update)
|
||||||
|
{
|
||||||
|
@@ -7607,7 +7607,7 @@ static icalcomponent *trim_attendees(icalcomponent *comp, const char *userid,
|
||||||
|
prop;
|
||||||
|
prop = nextprop) {
|
||||||
|
const char *att = get_recipient(prop);
|
||||||
|
- struct sched_param sparam;
|
||||||
|
+ struct caldav_sched_param sparam;
|
||||||
|
|
||||||
|
nextprop = icalcomponent_get_next_property(copy, recip_kind);
|
||||||
|
|
||||||
|
diff --git a/imap/http_caldav_sched.h b/imap/http_caldav_sched.h
|
||||||
|
index 5d8b2a9..9b66b81 100644
|
||||||
|
--- a/imap/http_caldav_sched.h
|
||||||
|
+++ b/imap/http_caldav_sched.h
|
||||||
|
@@ -109,7 +109,7 @@ struct proplist {
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Each calendar user address has the following scheduling protocol params */
|
||||||
|
-struct sched_param {
|
||||||
|
+struct caldav_sched_param {
|
||||||
|
char *userid; /* Userid corresponding to calendar address */
|
||||||
|
char *server; /* Remote server user lives on */
|
||||||
|
unsigned port; /* Remote server port, default = 80 */
|
||||||
|
@@ -119,7 +119,7 @@ struct sched_param {
|
||||||
|
|
||||||
|
extern icalarray *rscale_calendars;
|
||||||
|
extern const char *get_icalcomponent_errstr(icalcomponent *ical);
|
||||||
|
-extern int isched_send(struct sched_param *sparam, const char *recipient,
|
||||||
|
+extern int isched_send(struct caldav_sched_param *sparam, const char *recipient,
|
||||||
|
icalcomponent *ical, xmlNodePtr *xml);
|
||||||
|
|
||||||
|
extern int sched_busytime_query(struct transaction_t *txn,
|
||||||
|
@@ -127,6 +127,6 @@ extern int sched_busytime_query(struct transaction_t *txn,
|
||||||
|
extern void sched_deliver(const char *recipient, void *data, void *rock);
|
||||||
|
extern xmlNodePtr xml_add_schedresponse(xmlNodePtr root, xmlNsPtr dav_ns,
|
||||||
|
xmlChar *recipient, xmlChar *status);
|
||||||
|
-extern int caladdress_lookup(const char *addr, struct sched_param *param);
|
||||||
|
+extern int caladdress_lookup(const char *addr, struct caldav_sched_param *param);
|
||||||
|
|
||||||
|
#endif /* HTTP_CALDAV_SCHED_H */
|
||||||
|
diff --git a/imap/http_ischedule.c b/imap/http_ischedule.c
|
||||||
|
index fef11a0..e08bc80 100644
|
||||||
|
--- a/imap/http_ischedule.c
|
||||||
|
+++ b/imap/http_ischedule.c
|
||||||
|
@@ -540,7 +540,7 @@ static int meth_post_isched(struct transaction_t *txn,
|
||||||
|
|
||||||
|
while ((recipient = tok_next(&tok))) {
|
||||||
|
/* Is recipient remote or local? */
|
||||||
|
- struct sched_param sparam;
|
||||||
|
+ struct caldav_sched_param sparam;
|
||||||
|
int r = caladdress_lookup(recipient, &sparam);
|
||||||
|
|
||||||
|
/* Don't allow scheduling with remote users via iSchedule */
|
||||||
|
@@ -583,7 +583,7 @@ static int meth_post_isched(struct transaction_t *txn,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-int isched_send(struct sched_param *sparam, const char *recipient,
|
||||||
|
+int isched_send(struct caldav_sched_param *sparam, const char *recipient,
|
||||||
|
icalcomponent *ical, xmlNodePtr *xml)
|
||||||
|
{
|
||||||
|
int r = 0;
|
1
rpmlint.cf
Normal file
1
rpmlint.cf
Normal file
@ -0,0 +1 @@
|
|||||||
|
addFilter('hardcoded-library-path in %{_prefix}/lib/%{name}')
|
Loading…
Reference in New Issue
Block a user