aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Frankenberger <simon@fraho.eu>2017-11-07 14:27:02 +0100
committerJakub Jirutka <jakub@jirutka.cz>2017-12-03 16:38:13 +0100
commit9e2e5be3322b4bd8223f4763fdcad630aa4203c9 (patch)
tree1dac391bc8aeb9a5ea672886ca61d8b47246ccf6
parent5912528af0f62188ad05260f7dc790a93e8466c1 (diff)
community/postsrsd: support setting listen address
This patch addes support for specifying the socket listening address using the "-l" startup argument. Original commit found at: https://github.com/roehling/postsrsd/commit/fc2ba94684c99f771ea35f37b29009ba5ec0edb3
-rw-r--r--community/postsrsd/APKBUILD12
-rw-r--r--community/postsrsd/set-socket-listen-address.patch81
2 files changed, 85 insertions, 8 deletions
diff --git a/community/postsrsd/APKBUILD b/community/postsrsd/APKBUILD
index 24d9d80488f..75a5a39aa7c 100644
--- a/community/postsrsd/APKBUILD
+++ b/community/postsrsd/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Kevin Daudt <ops@ikke.info>
pkgname=postsrsd
pkgver=1.4
-pkgrel=0
+pkgrel=1
pkgdesc="Postfix Sender Rewriting Scheme daemon"
url="https://github.com/roehling/postsrsd"
arch="all"
@@ -14,6 +14,7 @@ install="$pkgname.pre-install"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/roehling/postsrsd/archive/$pkgver.tar.gz
10-fix-defaults.patch
+ set-socket-listen-address.patch
postsrsd.initd"
builddir="$srcdir/$pkgname-$pkgver"
@@ -26,7 +27,7 @@ build() {
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/ \
-DCMAKE_BUILD_TYPE=Release \
-DGENERATE_SRS_SECRET=OFF \
- -DCONFIG_DIR=/etc/postsrsd || return 1
+ -DCONFIG_DIR=/etc/postsrsd
make all
}
@@ -41,12 +42,7 @@ package() {
install -Dm0755 "$srcdir/postsrsd.initd" "$pkgdir/etc/init.d/postsrsd"
}
-md5sums="cb6e13a06d6bbd7d383efb9bbf0867ce postsrsd-1.4.tar.gz
-a4104dbe7c6bc88de6a1fa29ee82e531 10-fix-defaults.patch
-575d5c5563def2aabdd752abc54b5e45 postsrsd.initd"
-sha256sums="f3230d57c36ba4688cc3beb90fbb0f199a06381e4df2edbc4ef541a9e8a574ff postsrsd-1.4.tar.gz
-4e8093e8a90f499402f17ea9be253c499f47218bc7918d58825f6a1e2daa2543 10-fix-defaults.patch
-e59e9193998041023f6ef2740fd8ddaa2903d2a88f39e14f638c5ca2ce023b3b postsrsd.initd"
sha512sums="e5b9d2091d562030dd8d35117a3c5fb7d99c0613120fc90f74be57af5e88a3fe0ce73a5ce702708047ae37f70c6aedb4a0df018dccbe480048ccb6ed4debbcef postsrsd-1.4.tar.gz
bdafd3921fac6af21cf099ac63fd06692dca37366e197b23aaedd3cf748652bcc5b54cf545b24c7e6cb48d266233a29e9184481af99aa8d58a80e512d326c788 10-fix-defaults.patch
+886dff5628bf17f0a18cd3d4fc5cd8245b35325c4d6476ba5d39552b102464d77dc8f33117b0c423a7ea776f102670092e75cd9e638ee34f1834865b219a1b54 set-socket-listen-address.patch
bec690156e60a10286f92470420e2caccd0cd8fd5707fefddeb768b36a4697b9651acd707c7de08a99832a8b27a0328560501fb1376fe39bc27f5fbe4dca7797 postsrsd.initd"
diff --git a/community/postsrsd/set-socket-listen-address.patch b/community/postsrsd/set-socket-listen-address.patch
new file mode 100644
index 00000000000..b42ba7a1b00
--- /dev/null
+++ b/community/postsrsd/set-socket-listen-address.patch
@@ -0,0 +1,81 @@
+Add the ability to set the socket listen address for the daemon, thus
+enabling support to run it within a separate container than postfix.
+
+Patch-Origin: upstream
+Patch-Source: https://github.com/roehling/postsrsd/commit/fc2ba94684c99f771ea35f37b29009ba5ec0edb3
+---
+ postsrsd.c | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/postsrsd.c b/postsrsd.c
+index 5a8bd1c..adf65d3 100644
+--- a/postsrsd.c
++++ b/postsrsd.c
+@@ -48,7 +48,7 @@
+
+ static char *self = NULL;
+
+-static size_t bind_service (const char *service, int family, int* socks, size_t max_socks)
++static size_t bind_service (const char *listen_addr, const char *service, int family, int* socks, size_t max_socks)
+ {
+ struct addrinfo *addr, *it;
+ struct addrinfo hints;
+@@ -60,7 +60,7 @@ static size_t bind_service (const char *service, int family, int* socks, size_t
+ hints.ai_family = family;
+ hints.ai_socktype = SOCK_STREAM;
+
+- err = getaddrinfo(NULL, service, &hints, &addr);
++ err = getaddrinfo(listen_addr, service, &hints, &addr);
+ if (err != 0) {
+ fprintf(stderr, "%s: bind_service(%s): %s\n", self, service, gai_strerror(err));
+ return count;
+@@ -219,6 +219,7 @@ static void show_help ()
+ " -s<file> read secrets from file (required)\n"
+ " -d<domain> set domain name for rewrite (required)\n"
+ " -a<char> set first separator character which can be one of: -=+ (default: =)\n"
++ " -l<addr> set socket listen address (default: 127.0.0.1)\n"
+ " -f<port> set port for the forward SRS lookup (default: 10001)\n"
+ " -r<port> set port for the reverse SRS lookup (default: 10002)\n"
+ " -p<pidfile> write process ID to pidfile (default: none)\n"
+@@ -243,7 +244,7 @@ int main (int argc, char **argv)
+ {
+ int opt, timeout = 1800, family = AF_UNSPEC;
+ int daemonize = FALSE;
+- char *forward_service = NULL, *reverse_service = NULL,
++ char *listen_addr = NULL, *forward_service = NULL, *reverse_service = NULL,
+ *user = NULL, *domain = NULL, *chroot_dir = NULL;
+ char separator = '=';
+ char *secret_file = NULL, *pid_file = NULL;
+@@ -264,7 +265,7 @@ int main (int argc, char **argv)
+ tmp = strrchr(argv[0], '/');
+ if (tmp) self = strdup(tmp + 1); else self = strdup(argv[0]);
+
+- while ((opt = getopt(argc, argv, "46d:a:f:r:s:u:t:p:c:X::Dhev")) != -1) {
++ while ((opt = getopt(argc, argv, "46d:a:l:f:r:s:u:t:p:c:X::Dhev")) != -1) {
+ switch (opt) {
+ case '?':
+ return EXIT_FAILURE;
+@@ -280,6 +281,9 @@ int main (int argc, char **argv)
+ case 'a':
+ separator = *optarg;
+ break;
++ case 'l':
++ listen_addr = strdup(optarg);
++ break;
+ case 'f':
+ forward_service = strdup(optarg);
+ break;
+@@ -404,11 +408,11 @@ int main (int argc, char **argv)
+ return EXIT_FAILURE;
+ }
+ /* Bind ports. May require privileges if the config specifies ports below 1024 */
+- sc = bind_service(forward_service, family, &sockets[socket_count], 4 - socket_count);
++ sc = bind_service(listen_addr, forward_service, family, &sockets[socket_count], 4 - socket_count);
+ if (sc == 0) return EXIT_FAILURE;
+ while (sc-- > 0) handler[socket_count++] = handle_forward;
+ free (forward_service);
+- sc = bind_service(reverse_service, family, &sockets[socket_count], 4 - socket_count);
++ sc = bind_service(listen_addr, reverse_service, family, &sockets[socket_count], 4 - socket_count);
+ if (sc == 0) return EXIT_FAILURE;
+ while (sc-- > 0) handler[socket_count++] = handle_reverse;
+ free (reverse_service);