+ my $site;
+ my $count;
+ my $i;
+ my @newupdate = submitupdate(@body);
+ my @time;
+
+ $count = 0;
+ foreach $i (@{$config{'syncsites'}}) {
+ if (! defined($seenby{$i})) {
+ $count++;
+ }
+ }
+
+ open (LOG, ">>$config{'logfile'}");
+ @time = localtime(time);
+ print LOG "[";
+ print LOG sprintf "%02d/%02d/%04d %02d:%02d:%02d",
+ $time[3], $time[4] + 1, $time[5] + 1900,
+ $time[2], $time[1], $time[0];
+ print LOG "] onak-mail[$$]: Syncing with $count sites.\n";
+ close LOG;
+
+ if ((! defined($newupdate[0])) || $newupdate[0] eq '') {
+ open (LOG, ">>$config{'logfile'}");
+ print LOG "[";
+ print LOG sprintf "%02d/%02d/%04d %02d:%02d:%02d",
+ $time[3], $time[4] + 1, $time[5] + 1900,
+ $time[2], $time[1], $time[0];
+ print LOG "] onak-mail[$$]: Nothing to sync.\n";
+ close LOG;
+ $count = 0;
+ }
+
+ if ($count > 0) {
+ open(MAIL, "|$config{mta}");
+ print MAIL "From: $config{adminemail}\n";
+ print MAIL "To: ";
+ foreach $i (@{$config{'syncsites'}}) {
+ if (! defined($seenby{$i})) {
+ print MAIL "$i";
+ $count--;
+ if ($count > 0) {
+ print MAIL ", ";
+ }
+ }
+ }
+ print MAIL "\n";
+ print MAIL "Subject: incremental\n";
+ foreach $site (keys %seenby) {
+ print MAIL "X-KeyServer-Sent: $site\n";
+ }
+ print MAIL "X-KeyServer-Sent: $config{thissite}\n";
+ print MAIL "Precedence: list\n";
+ print MAIL "MIME-Version: 1.0\n";
+ print MAIL "Content-Type: application/pgp-keys\n";
+ print MAIL "\n";
+ print MAIL @newupdate;
+ close MAIL;
+ }
+} elsif ($subject =~ /^(VERBOSE )?INDEX (.*)$/i) {
+ my (@indexdata, $command);
+
+ $command = "index";
+ if (defined($1)) {
+ $command = "vindex";
+ }
+
+ open3(\*INDEXIN, \*INDEXOUT, \*INDEXERR,
+ $config{'pks_bin_dir'}."/onak", $command, "$2");
+ close INDEXIN;
+ @indexdata = <INDEXOUT>;
+ close INDEXOUT;
+ close INDEXERR;
+
+ open(MAIL, "|$config{mta}");
+ print MAIL "From: $config{adminemail}\n";
+ print MAIL "To: $replyto\n";
+ print MAIL "Subject: Reply to INDEX $2\n";
+ print MAIL "Precedence: list\n";
+ print MAIL "MIME-Version: 1.0\n";
+ print MAIL "Content-Type: text/plain\n";
+ print MAIL "\n";
+ print MAIL "Below follows the reply to your recent keyserver query:\n";
+ print MAIL "\n";
+ print MAIL @indexdata;
+ close MAIL;