OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /v/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 01-Nov-2006 15:55:48
Branch: HEAD Handle: 2006110114554800
Added files:
openpkg-src/sks sks-mail.c sks.txt
Modified files:
openpkg-src/sks rc.sks sks-load sks-setup sks.spec
Log:
improve configuration by using separate files; add support for mail
gateway
Summary:
Revision Changes Path
1.2 +0 -16 openpkg-src/sks/rc.sks
1.2 +7 -7 openpkg-src/sks/sks-load
1.1 +29 -0 openpkg-src/sks/sks-mail.c
1.2 +9 -3 openpkg-src/sks/sks-setup
1.2 +66 -12 openpkg-src/sks/sks.spec
1.1 +31 -0 openpkg-src/sks/sks.txt
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/sks/rc.sks
============================================================================
$ cvs diff -u -r1.1 -r1.2 rc.sks
--- openpkg-src/sks/rc.sks 1 Nov 2006 09:23:45 -0000 1.1
+++ openpkg-src/sks/rc.sks 1 Nov 2006 14:55:48 -0000 1.2
@@ -5,15 +5,7 @@
%config
sks_enable="$openpkg_rc_def"
- sks_db_hostname="keyserver.example.com"
- sks_db_bind="127.0.0.1"
- sks_db_port="11371"
- sks_db_debuglevel="5"
sks_db_flags=""
- sks_recon_hostname="keyserver.example.com"
- sks_recon_bind="127.0.0.1"
- sks_recon_port="11370"
- sks_recon_debuglevel="5"
sks_recon_flags=""
sks_log_prolog="true"
sks_log_epilog="true"
@@ -49,10 +41,6 @@
rcService sks active yes && exit 0
( cd $sks_db_rundir || exit $?
cmd="@l_prefix@/sbin/sks"
- cmd="$cmd -hostname \"$sks_db_hostname\""
- cmd="$cmd -hkp_address \"$sks_db_bind\""
- cmd="$cmd -hkp_port \"$sks_db_port\""
- cmd="$cmd -debug -debuglevel \"$sks_db_debuglevel\""
cmd="$cmd $sks_db_flags"
cmd="$cmd db"
eval "nohup $cmd </dev/null >/dev/null 2>&1 &"
@@ -61,10 +49,6 @@
sleep 1
( cd $sks_recon_rundir || exit $?
cmd="@l_prefix@/sbin/sks"
- cmd="$cmd -hostname \"$sks_recon_hostname\""
- cmd="$cmd -recon_address \"$sks_recon_bind\""
- cmd="$cmd -recon_port \"$sks_recon_port\""
- cmd="$cmd -debug -debuglevel \"$sks_recon_debuglevel\""
cmd="$cmd $sks_recon_flags"
cmd="$cmd recon"
eval "nohup $cmd </dev/null >/dev/null 2>&1 &"
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/sks/sks-load
============================================================================
$ cvs diff -u -r1.1 -r1.2 sks-load
--- openpkg-src/sks/sks-load 1 Nov 2006 09:23:45 -0000 1.1
+++ openpkg-src/sks/sks-load 1 Nov 2006 14:55:48 -0000 1.2
@@ -4,8 +4,8 @@
# other SKS commands work relatively to it
cd @l_prefix@/var/sks || exit $?
-# create dumps directory
-test -d dumps || mkdir dumps
+# create dump directory
+test -d dump || mkdir dump
# fetch and load the latest dumps
url_root="http://ftp.prato.linux.it/pub/keyring/dump-latest/"
@@ -14,19 +14,19 @@
dump_file=`printf "sks-dump-%04d.pgp" $i`
dump_url="$url_root$dump_file"
echo "++ downloading $dump_url"
- @l_prefix@/lib/openpkg/curl -s -k -R -o dumps/$dump_file $dump_url
+ @l_prefix@/lib/openpkg/curl -s -k -R -o dump/$dump_file $dump_url
if [ $# -ne 0 ]; then
- rm -f dumps/$dump_file*
+ rm -f dump/$dump_file*
exit 0
fi
echo "++ merging into KDB $dump_file"
- @l_prefix@/sbin/sks merge dumps/$dump_file
+ @l_prefix@/sbin/sks merge dump/$dump_file
if [ $# -ne 0 ]; then
echo "$0:ERROR: failed to merge dump file"
- rm -f dumps/$dump_file*
+ rm -f dump/$dump_file*
exit 1
fi
- rm -f dumps/$dump_file*
+ rm -f dump/$dump_file*
i=$[$i + 1]
done
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/sks/sks-mail.c
============================================================================
$ cvs diff -u -r0 -r1.1 sks-mail.c
--- /dev/null 2006-11-01 15:55:33 +0100
+++ sks-mail.c 2006-11-01 15:55:48 +0100
@@ -0,0 +1,29 @@
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#define RUN_DIR L_PREFIX "/var/sks"
+#define RUN_SCRIPT L_PREFIX "/sbin/sks_add_mail"
+
+int main(int argc, char *argv[])
+{
+ static char *const exec_env[] = {
+ "PATH=/bin:/usr/bin:/sbin:/usr/sbin",
+ NULL
+ };
+ if (chdir(RUN_DIR) == -1) {
+ perror("chdir");
+ exit(1);
+ }
+ if (setuid(geteuid()) == -1) {
+ perror("setuid");
+ exit(1);
+ }
+ if (setgid(getegid()) == -1) {
+ perror("setgid");
+ exit(1);
+ }
+ execve(RUN_SCRIPT, argv, exec_env);
+}
+
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/sks/sks-setup
============================================================================
$ cvs diff -u -r1.1 -r1.2 sks-setup
--- openpkg-src/sks/sks-setup 1 Nov 2006 09:23:45 -0000 1.1
+++ openpkg-src/sks/sks-setup 1 Nov 2006 14:55:48 -0000 1.2
@@ -6,7 +6,7 @@
# create an initial SKS key database (KGB)
echo "++ creating initial SKS key database"
[EMAIL PROTECTED]@/sbin/sks fastbuild -n 10 -cache 100
[EMAIL PROTECTED]@/sbin/sks fastbuild -n 4 -cache 100
# import at least the OpenPKG OpenPGP keys
# into the key database as SKS cleandb and
@@ -33,7 +33,13 @@
rm -f fastbuild.log merge.log clean.log pbuild.log
# generate top-level web page
-echo "++ generating SKS top-level web form"
+echo "++ generating SKS top-level web form symlink"
mkdir web
-cp @l_prefix@/share/sks/sks.html web/index.html
+ln -s ../../../etc/sks/sks.html web/index.html
+
+# generate initial configuration files
+echo "++ generating SKS configuration file symlinks"
+for file in sksconf mailsync membership; do
+ ln -s ../../etc/sks/$file $file
+done
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/sks/sks.spec
============================================================================
$ cvs diff -u -r1.1 -r1.2 sks.spec
--- openpkg-src/sks/sks.spec 1 Nov 2006 09:23:45 -0000 1.1
+++ openpkg-src/sks/sks.spec 1 Nov 2006 14:55:48 -0000 1.2
@@ -40,14 +40,16 @@
Source1: rc.sks
Source2: sks-setup
Source3: sks-load
-Source4: sks.html
+Source4: sks-mail.c
+Source5: sks.html
+Source6: sks.txt
Patch0: sks.patch
# build information
Prefix: %{l_prefix}
BuildRoot: %{l_buildroot}
BuildPreReq: OpenPKG, openpkg >= 20040130, ocaml, gcc, make, perl
-PreReq: OpenPKG, openpkg >= 20040130
+PreReq: OpenPKG, openpkg >= 20040130, MTA
BuildPreReq: db
PreReq: db
AutoReq: no
@@ -82,21 +84,29 @@
%patch -p0
%build
+ # build main program
%{l_make} %{l_mflags} \
BDBINCLUDE="%{l_cppflags}" \
BDBLIB="%{l_ldflags}" \
LIBDB="-ldb" \
MANDIR="%{l_prefix}/man"
+ # build suid wrapper sks-mail
+ %{l_cc} %{l_cflags} %{l_ldflags} '-DL_PREFIX="%{l_prefix}"' \
+ -o sks-mail %{SOURCE sks-mail.c}
+
%install
+ # create installation hierarchy
rm -rf $RPM_BUILD_ROOT
%{l_shtool} mkdir -f -p -m 755 \
+ $RPM_BUILD_ROOT%{l_prefix}/etc/sks \
$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
$RPM_BUILD_ROOT%{l_prefix}/sbin \
- $RPM_BUILD_ROOT%{l_prefix}/share/sks \
$RPM_BUILD_ROOT%{l_prefix}/var/sks
+
+ # install programs
%{l_shtool} install -c -s -m 755 \
- sks sks_add_mail $RPM_BUILD_ROOT%{l_prefix}/sbin/
+ sks sks_add_mail sks-mail $RPM_BUILD_ROOT%{l_prefix}/sbin/
%{l_shtool} install -c -m 755 %{l_value -s -a} \
%{SOURCE sks-setup} %{SOURCE sks-load} \
$RPM_BUILD_ROOT%{l_prefix}/sbin/
@@ -104,12 +114,27 @@
-e 's;/bin/bash;%{l_bash};g' \
-e 's; sks ; %{l_prefix}/sbin/sks ;g' \
sks_build.sh $RPM_BUILD_ROOT%{l_prefix}/sbin/sks_build
+
+ # install run-command script
%{l_shtool} install -c -m 755 %{l_value -s -a} \
%{SOURCE rc.sks} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
- %{l_shtool} install -c -m 755 %{l_value -s -a} \
- %{SOURCE sks.html} $RPM_BUILD_ROOT%{l_prefix}/share/sks/
+
+ # install default web form
+ %{l_shtool} install -c -m 644 %{l_value -s -a} \
+ %{SOURCE sks.html} $RPM_BUILD_ROOT%{l_prefix}/etc/sks/
+
+ for name in `grep "^<file" %{SOURCE sks.txt} | sed -e 's;^.*name=";;' -e
's;".*$;;'`; do
+ (echo ""; cat %{SOURCE sks.txt}; echo "") |\
+ sed -e "1,/^<file name=\"$name\">/d" -e "/<\/file>/,\$d" >$name
+ %{l_shtool} install -c -m 644 %{l_value -s -a} \
+ $name $RPM_BUILD_ROOT%{l_prefix}/etc/sks/
+ done
+
+ # determine installation files
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
%{l_files_std} \
+ '%config %{l_prefix}/etc/sks/*' \
+ '%attr(4755,%{l_rusr},%{l_mgrp}) %{l_prefix}/sbin/sks-mail' \
'%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/sks'
%files -f files
@@ -118,9 +143,27 @@
rm -rf $RPM_BUILD_ROOT
%post
- # on initial install, create database
if [ $1 -eq 1 ]; then
+ # create initial database
su %{l_rusr} -c "$RPM_INSTALL_PREFIX/sbin/sks-setup"
+
+ # activate in MTA configuration
+ aliases_file=`$RPM_INSTALL_PREFIX/etc/rc --query MTA_aliases_file`
+ aliases_update=`$RPM_INSTALL_PREFIX/etc/rc --query
MTA_aliases_update`
+ if [ ".$aliases_file" != . ]; then
+ ( echo "sks: pks-request"
+ echo "sks-request: \"|$RPM_INSTALL_PREFIX/sbin/sks-mail
$RPM_INSTALL_PREFIX/var/sks\""
+ echo "sks-daemon: MAILER-DAEMON"
+ echo "sks-admin: postmaster"
+ echo "pgp-public-keys: sks-request"
+ echo "pgp: sks-request"
+ ) | %{l_rpmtool} config -a -i "$RPM_INSTALL_PREFIX:sks"
$aliases_file
+ fi
+ if [ ".$aliases_update" != . ]; then
+ eval $aliases_update
+ fi
+
+ # display hint
( echo "SKS database initialized. Now you can startup SKS with"
echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc sks start"
echo "and for instance lookup the OpenPKG OpenPGP keys under"
@@ -132,18 +175,29 @@
echo "merge all their latest dumps into your local database:"
echo " su %{l_rusr} -c $RPM_INSTALL_PREFIX/sbin/sks-load"
) | %{l_rpmtool} msg -b -t notice
+ elif [ $1 -eq 2 ]; then
+ # after upgrade, restart service
+ eval `%{l_rc} sks status 2>/dev/null`
+ [ ".$sks_active" = .yes ] && %{l_rc} sks restart
fi
-
- # after upgrade, restart service
- [ $1 -eq 2 ] || exit 0
- eval `%{l_rc} sks status 2>/dev/null`
- [ ".$sks_active" = .yes ] && %{l_rc} sks restart
exit 0
%preun
# before erase, stop service and remove log files
[ $1 -eq 0 ] || exit 0
%{l_rc} sks stop 2>/dev/null
+
+ # deactivate in MTA configuration
+ aliases_file=`$RPM_INSTALL_PREFIX/etc/rc --query MTA_aliases_file`
+ aliases_update=`$RPM_INSTALL_PREFIX/etc/rc --query MTA_aliases_update`
+ if [ ".$aliases_file" != . ]; then
+ %{l_rpmtool} config -r -i "$RPM_INSTALL_PREFIX:sks" $aliases_file
+ fi
+ if [ ".$aliases_update" != . ]; then
+ eval $aliases_update
+ fi
+
+ # remove database files
rm -rf $RPM_INSTALL_PREFIX/var/sks/* >/dev/null 2>&1 || true
exit 0
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/sks/sks.txt
============================================================================
$ cvs diff -u -r0 -r1.1 sks.txt
--- /dev/null 2006-11-01 15:55:33 +0100
+++ sks.txt 2006-11-01 15:55:48 +0100
@@ -0,0 +1,31 @@
+<file name="sksconf">
+##
+## sksconf -- SKS main configuration
+##
+
+debuglevel: 5
+hostname: keyserver.example.com
+hkp_address: 127.0.0.1
+hkp_port: 11371
+recon_address: 127.0.0.1
+recon_port: 11370
+from_addr: [EMAIL PROTECTED]
+sendmail_cmd: @l_prefix@/sbin/sendmail -t -oi
+
+</file>
+<file name="mailsync">
+##
+## mailsync -- SKS mail synchronization to PKS network
+##
+
[EMAIL PROTECTED]
+
+</file>
+<file name="membership">
+##
+## membership -- SKS reconciliation synchronization to SKS network
+##
+
+#keyserver2.example.com 11371
+
+</file>
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [email protected]