rpms/cups/devel cups.spec,1.371,1.372 dnssd,1.1,1.2
Tim Waugh (twaugh)
fedora-extras-commits at redhat.com
Tue Nov 27 13:57:24 UTC 2007
- Previous message (by thread): rpms/cups/F-8 cups.spec,1.375,1.376 dnssd,1.1,1.2
- Next message (by thread): rpms/kbd/devel kbd.spec, 1.49, 1.50 kbdrate.apps, 1.2, NONE kbdrate.pam, 1.2, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: twaugh
Update of /cvs/pkgs/rpms/cups/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv28160
Modified Files:
cups.spec dnssd
Log Message:
* Tue Nov 27 2007 Tim Waugh <twaugh at redhat.com>
- Updated to improved dnssd backend from Till Kamppeter.
Index: cups.spec
===================================================================
RCS file: /cvs/pkgs/rpms/cups/devel/cups.spec,v
retrieving revision 1.371
retrieving revision 1.372
diff -u -r1.371 -r1.372
--- cups.spec 13 Nov 2007 14:54:12 -0000 1.371
+++ cups.spec 27 Nov 2007 13:56:52 -0000 1.372
@@ -449,6 +449,9 @@
%{cups_serverbin}/daemon/cups-lpd
%changelog
+* Tue Nov 27 2007 Tim Waugh <twaugh at redhat.com>
+- Updated to improved dnssd backend from Till Kamppeter.
+
* Tue Nov 13 2007 Tim Waugh <twaugh at redhat.com>
- Fixed CVE-2007-4045 patch; has no effect with shipped packages since they
are linked with gnutls.
Index: dnssd
===================================================================
RCS file: /cvs/pkgs/rpms/cups/devel/dnssd,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- dnssd 19 Sep 2007 11:28:11 -0000 1.1
+++ dnssd 27 Nov 2007 13:56:52 -0000 1.2
@@ -45,11 +45,12 @@
# IPs which are for computers, consider their printer entries as queues
# set up with the local printing system (CUPS, LPD, Windows/Samba SMB, ...)
-my @ipblacklist = ();
+my @computerips = ();
my $output;
+my $hosts;
my ($interface, $nettype, $ip, $host, $make, $model, $description, $cmd, $makemodel, $deviceid, $protocol, $port, $uriext, $uri);
-open (AVAHI, "$avahicmd |") or die "Could not call \"$avahicmd\"\n";
+open (AVAHI, "$avahicmd |") or exit 0;
while (my $line = <AVAHI>) {
chomp ($line);
if ($line =~ /^\s*=\s+(\S+)\s+(\S+)\s+(.*?)\s+(\S+)\s+(\S+)\s*$/) {
@@ -73,7 +74,7 @@
} elsif ($line =~ /^\s*address\s*=\s*\[([^\]]+)\]\s*$/) {
$ip = $1;
if ($protocol eq "computer") {
- push (@ipblacklist, $ip);
+ push (@computerips, $ip);
$protocol = "";
}
} elsif ($line =~ /^\s*port\s*=\s*\[([^\]]+)\]\s*$/) {
@@ -124,7 +125,7 @@
$usb_DES ||= $product;
if ($usb_MFG) {
$make = $usb_MFG;
- } elsif ($usb_DES =~ /^KONICA\s+MINOLTA\b/i) {
+ } elsif ($usb_DES =~ /^KONICA\s*MINOLTA\b/i) {
$make = "KONICA MINOLTA";
} elsif ($usb_DES) {
$usb_DES =~ /^\s*(\S*)\b/;
@@ -138,7 +139,11 @@
$usb_CMD ||= $pdls;
my $extra;
if ($protocol eq "socket") {
- $uri = "socket://$ip:$port";
+ if ($port eq "9100") {
+ $uri = "socket://$ip";
+ } else {
+ $uri = "socket://$ip:$port";
+ }
$extra = "Port $port";
} elsif ($protocol eq "lpd") {
$uri = "lpd://$ip" . ($uriext ? "/$uriext" : "");
@@ -164,7 +169,8 @@
($usb_DES ? "DES:$usb_DES;" : "") .
($usb_CMD ? "CMD:$usb_CMD;" : "");
$deviceid .= "CLS:PRINTER;" if $deviceid;
- $output->{$ip}{$protocol}{$extra} =
+ $hosts->{$ip} = $hostname if ($hostname);
+ $output->{$ip}{$protocol}{$uriext} =
"network $uri \"$makemodel\" \"$makemodel $ip ($extra)\" \"$deviceid\"\n";
($interface, $nettype, $ip, $host, $make, $model, $description, $cmd, $makemodel, $deviceid, $protocol, $port, $uriext, $uri) =
("", "", "", "", "", "", "", "", "", "", "", "", "", "");
@@ -172,31 +178,87 @@
}
}
+my $localqueues = {};
+my $queue = undef;
+if (open LPSTAT, "LC_ALL=C lpstat -l -p -v |") {
+ while (my $line = <LPSTAT>) {
+ chomp $line;
+ if ($line =~ /^printer\s+(\S+)/i) {
+ $queue = $1;
+ $localqueues->{$queue} = {};
+ } elsif ($queue) {
+ if ($line =~ /^\s+Connection:\s+remote/i) {
+ $localqueues->{$queue}{remote} = 1;
+ } elsif ($line =~ /^\s+Interface:\s+(\S+)/i) {
+ $localqueues->{$queue}{interface} = $1;
+ } elsif ($line =~ /^device\s+for\s+(\S+)\s*:\s*(\S+)/i) {
+ $localqueues->{$1}{uri} = $2;
+ }
+ }
+ }
+ close LPSTAT
+}
+
+my @localips = ();
+if (open IFCONFIG, "LC_ALL=C /sbin/ifconfig |") {
+ while (my $line = <IFCONFIG>) {
+ chomp $line;
+ if ($line =~ /^\s*inet\s+addr:\s*(\S+)/i) {
+ push (@localips, $1);
+ }
+ }
+ close IFCONFIG;
+}
+
foreach my $ip (keys(%{$output})) {
- next if member($ip, @ipblacklist);
+ # Do not list print queues of the local machine
+ next if member($ip, @localips);
if ($output->{$ip}{"socket"}) {
- foreach my $extra (keys(%{$output->{$ip}{"socket"}})) {
- if (keys(%{$output->{$ip}{"socket"}}) = 1) {
- $output->{$ip}{"socket"}{$extra} =~
+ foreach my $uriext (keys(%{$output->{$ip}{"socket"}})) {
+ if (keys(%{$output->{$ip}{"socket"}}) == 1) {
+ $output->{$ip}{"socket"}{$uriext} =~
s/^(\s*\S*\s*\S*\s*\"[^\"]*\"\s*\"[^\"\(]*?)\s*\([^\)]*\)\s*(\"\s*.*)$/$1$2/;
}
- print $output->{$ip}{"socket"}{$extra};
+ print $output->{$ip}{"socket"}{$uriext};
}
} elsif ($output->{$ip}{"lpd"}) {
- foreach my $extra (keys(%{$output->{$ip}{"lpd"}})) {
- if (keys(%{$output->{$ip}{"lpd"}}) = 1) {
- $output->{$ip}{"lpd"}{$extra} =~
+ foreach my $uriext (keys(%{$output->{$ip}{"lpd"}})) {
+ if (keys(%{$output->{$ip}{"lpd"}}) == 1) {
+ $output->{$ip}{"lpd"}{$uriext} =~
s/^(\s*\S*\s*\S*\s*\"[^\"]*\"\s*\"[^\"\(]*?)\s*\([^\)]*\)\s*(\"\s*.*)$/$1$2/;
}
- print $output->{$ip}{"lpd"}{$extra};
+ print $output->{$ip}{"lpd"}{$uriext};
}
} elsif ($output->{$ip}{"ipp"}) {
- foreach my $extra (keys(%{$output->{$ip}{"ipp"}})) {
+ foreach my $uriext (keys(%{$output->{$ip}{"ipp"}})) {
+ if ($uriext =~ /^(printers|classes)\/(\S+)$/) {
+ # Queue from a CUPS server. We should suppress it if it
+ # is a queue received via CUPS broadcast
+ $queue=$2;
+ if (defined($localqueues->{"$queue\@$ip"})) {
+ $queue = "$queue\@$ip";
+ } elsif (defined($localqueues->{"$queue\@$hosts->{$ip}"})) {
+ $queue = "$queue\@$hosts->{$ip}";
+ }
+ if (defined($localqueues->{$queue})) {
+ if ($localqueues->{$queue}{remote} &&
+ ($localqueues->{$queue}{uri} =~
+ /^ipp:\/\/([^\/:]+)(:\d+|)\/(\S+)/)) {
+ my $host = $1;
+ my $ue = $3;
+ if ($host !~ /\d+\.\d+\.\d+\.\d+/) {
+ $host =
+ join(".", unpack("C4", gethostbyname($host)));
+ }
+ next if ($host eq $ip) && ($ue eq $uriext);
+ }
+ }
+ }
if (keys(%{$output->{$ip}{"ipp"}}) == 1) {
- $output->{$ip}{"ipp"}{$extra} =~
+ $output->{$ip}{"ipp"}{$uriext} =~
s/^(\s*\S*\s*\S*\s*\"[^\"]*\"\s*\"[^\"]*?)\s*\([^\)]*\)\s*(\"\s*.*)$/$1$2/;
}
- print $output->{$ip}{"ipp"}{$extra};
+ print $output->{$ip}{"ipp"}{$uriext};
}
}
}
- Previous message (by thread): rpms/cups/F-8 cups.spec,1.375,1.376 dnssd,1.1,1.2
- Next message (by thread): rpms/kbd/devel kbd.spec, 1.49, 1.50 kbdrate.apps, 1.2, NONE kbdrate.pam, 1.2, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list