spfd, możliwość określenia ip na którym ma słuchać oraz detach
romke
romke at estrefa.pl
Thu Jun 9 15:08:48 CEST 2005
Witam, właśnie siadłem do spf i od razu w spfd zabrakło mi funkcjonalności.
1. Mail-SPF-Query-spfd-host.patch
dodaje opcję -host=ip powodującą, iż spfd będzie słuchał
na podanym IP zamiast 127.0.0.1
2. Mail-SPF-Query-spfd-detach.patch
spfd powinien wykonać detach od konsoli, bez tego wywołanie init.d/spfd
daemon spfd ...
powoduje pozostawienie "initlog" i 2 "sh spfd start" czekających na
zakończenie procesu spfd.
Dodatkowa opcja -nodetach nie odłącza konsoli.
Do 2 powyższych diff do speca przesyłam.
3. spfd.init.patch to propozycja:
Dotychczasowe spfd.init nie pozwala zmienić metody z path na port
za pomocą /etc/sysconfig/spfd. Trzeba zmieniać /etc/init.d/spfd
(co jak wiadomo jest niepożądane).
Nowe spfd.init domyślnie używa tych samych opcji, w sysconfig/spfd
można dodać dodatkowe opcje przez OPTIONS="$OPTIONS cośtam" a równie
łatwo można to zastąpić OPTIONS="-port=1111"
pozdrawiam
--
romke Roman Barczyński ~~~~ tel. +48 12 632 7365 ~~~~ www.romke.info
____________________________________________ JID/email: romke at estrefa.pl
-------------- next part --------------
diff -ruN Mail-SPF-Query-1.997/spfd Mail-SPF-Query-1.997.detach/spfd
--- Mail-SPF-Query-1.997/spfd 2005-06-09 14:38:37.000000000 +0200
+++ Mail-SPF-Query-1.997.detach/spfd 2005-06-09 14:33:57.000000000 +0200
@@ -44,6 +44,9 @@
# -setgroup=(gid|groupname)
# Drop privileges to gid or groupname after opening the socket
#
+# -nodetach
+# Do not detach from calling console
+#
# example usage
#
@@ -68,7 +71,7 @@
use POSIX qw(setsid);
use strict;
-use vars qw($port $host $path $pathuser $pathgroup $pathmode $setuser $setgroup);
+use vars qw($port $host $path $pathuser $pathgroup $pathmode $setuser $setgroup $nodetach);
# FIXME
sub usage () {
@@ -144,6 +147,15 @@
DEBUG and print "$$: server is $server\n";
+unless($nodetach) {
+ print "Detaching...\n";
+ fork() and exit();
+ setsid();
+ close(STDIN);
+ close(STDOUT);
+ close(STDERR);
+}
+
if ($setgroup) {
if ($setgroup =~ /\D/) {
$setgroup = getgrnam($setgroup) || die "Group: $setgroup not found\n";
-------------- next part --------------
diff -ruN Mail-SPF-Query-1.997.orig/spfd Mail-SPF-Query-1.997/spfd
--- Mail-SPF-Query-1.997.orig/spfd 2004-01-14 04:40:26.000000000 +0100
+++ Mail-SPF-Query-1.997/spfd 2005-06-09 14:38:37.000000000 +0200
@@ -17,12 +17,15 @@
# spfd [OPTION]...
#
# DEFAULT
-# spfd -port=5970
+# spfd -port=5970 -host 127.0.0.1
#
# OPTIONS
# -port=PORTNUM
# Listen with a tcp socket on port PORTNUM (mutually exlusive with -path)
#
+# -host=LOCALADDR
+# Listen on LOCALADDR IP (mutually exlusive with -path)
+#
# -path=FILESPEC
# Listen with a unix socket at FILESPEC (mutually exlusive with -port)
#
@@ -62,19 +65,25 @@
use Mail::SPF::Query;
use Socket;
+use POSIX qw(setsid);
use strict;
-use vars qw($port $path $pathuser $pathgroup $pathmode $setuser $setgroup);
+use vars qw($port $host $path $pathuser $pathgroup $pathmode $setuser $setgroup);
# FIXME
sub usage () {
- print "usage: spfd ( -port=5970 | -path=/var/spfd ) [-setuser=(uid|username)] [-setgroup=(gid|groupname)]\n";
+ print "usage: spfd ( -port=5970 [-host=ip] | -path=/var/spfd ) [-setuser=(uid|username)] [-setgroup=(gid|groupname)]\n";
print "usage: [ -pathuser=(uid|username)] [ -pathgroup=(gid|groupname)] [-pathmode=mode]\n";
- print "usage: spfd assuming -port=5970\n";
+ print "usage: spfd assuming -port=5970 -host 127.0.0.1\n";
}
sub DEBUG () { $ENV{DEBUG} }
+if (not $host and not $path) {
+ usage;
+ $host='127.0.0.1';
+}
+
if (not $port and not $path) {
usage;
$port=5970;
@@ -93,12 +102,12 @@
if ($port) {
$sock_type = "inet";
@args = (Listen => 1,
- LocalAddr => "127.0.0.1",
+ LocalAddr => $host,
LocalPort => $port,
ReuseAddr => 1
);
- print "$$ will listen on $port\n";
- $0 = "spfd listening on $port";
+ print "$$ will listen on $host:$port\n";
+ $0 = "spfd listening on $host:$port";
} elsif ($path) {
$sock_type = "unix";
unlink $path if -S $path;
-------------- next part --------------
--- perl-Mail-SPF-Query.spec~ 2004-11-30 23:00:05.000000000 +0100
+++ perl-Mail-SPF-Query.spec 2005-06-09 14:43:54.000000000 +0200
@@ -17,6 +17,8 @@
Source0: http://spf.pobox.com/%{pdir}-%{pnam}-%{version}.tar.gz
# Source0-md5: 9e110d00520e0fe174c25c0734a8baf6
Source1: spfd.init
+Patch0: Mail-SPF-Query-spfd-host.patch
+Patch1: Mail-SPF-Query-spfd-detach.patch
URL: http://spf.pobox.com/
%if %{with tests}
BuildRequires: perl-Net-CIDR-Lite >= 0.15
@@ -59,6 +61,8 @@
%prep
%setup -q -n %{pdir}-%{pnam}-%{version}
+%patch0 -p1
+%patch1 -p1
%build
%{__perl} Makefile.PL \
-------------- next part --------------
--- spfd.init 2005-06-09 14:49:25.000000000 +0200
+++ /etc/init.d/spfd 2005-06-09 13:14:24.176726888 +0200
@@ -17,7 +17,7 @@
SPFD_USER="nobody"
SPFD_GROUP="nobody"
SPFD_SOCKET="/var/run/spfd.socket"
-OPTIONS=''
+OPTIONS="-pathuser=\"$SPFD_USER\" -pathgroup=\"$SPFD_GROUP\" -path=\"$SPFD_SOCKET\" -pathmode=666"
# Get service config
[ -f /etc/sysconfig/spfd ] && . /etc/sysconfig/spfd
@@ -40,7 +40,7 @@
# Check if the service is already running?
if [ ! -f /var/lock/subsys/spfd ]; then
msg_starting spf
- daemon spfd $OPTIONS -pathuser="$SPFD_USER" -pathgroup="$SPFD_GROUP" -path="$SPFD_SOCKET" -pathmode=666 &
+ daemon spfd $OPTIONS &
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/spfd
else
More information about the pld-devel-pl
mailing list