summaryrefslogtreecommitdiffstats
path: root/perl-install/printer.pm
diff options
context:
space:
mode:
authorTill Kamppeter <tkamppeter@mandriva.com>2001-09-14 10:25:11 +0000
committerTill Kamppeter <tkamppeter@mandriva.com>2001-09-14 10:25:11 +0000
commit7823fbdcea8e109da2a7d8c4a12e5b92ff3d9ba3 (patch)
tree4a3520d570de57b54ea04e0460153d84ec6fa583 /perl-install/printer.pm
parente95b9b6b7c56d240df9304331fb1b2efcba848ae (diff)
downloaddrakx-backup-do-not-use-7823fbdcea8e109da2a7d8c4a12e5b92ff3d9ba3.tar
drakx-backup-do-not-use-7823fbdcea8e109da2a7d8c4a12e5b92ff3d9ba3.tar.gz
drakx-backup-do-not-use-7823fbdcea8e109da2a7d8c4a12e5b92ff3d9ba3.tar.bz2
drakx-backup-do-not-use-7823fbdcea8e109da2a7d8c4a12e5b92ff3d9ba3.tar.xz
drakx-backup-do-not-use-7823fbdcea8e109da2a7d8c4a12e5b92ff3d9ba3.zip
Now it is checked whether the network is configured and running.
draknet is called when the network is not configured. It is checked whether the spooler is automatically started at boot. The oki4daemon is started when needed. Lexmarks inkjet drivers are fully integrated. The permissions of the device files are set so that normal users can print with PDQ.
Diffstat (limited to 'perl-install/printer.pm')
-rw-r--r--perl-install/printer.pm86
1 files changed, 84 insertions, 2 deletions
diff --git a/perl-install/printer.pm b/perl-install/printer.pm
index 0d4871529..aba21b392 100644
--- a/perl-install/printer.pm
+++ b/perl-install/printer.pm
@@ -50,12 +50,21 @@ my $FOOMATIC_DEFAULT_SPOOLER = "$FOOMATICCONFDIR/defaultspooler";
%printer_type_inv = reverse %printer_type;
#------------------------------------------------------------------------------
+
sub set_prefix($) { $prefix = $_[0]; }
sub default_printer_type($) { "LOCAL" }
+
sub spooler {
- return @spooler_inv{qw(cups lpd lprng pdq)};
+ # LPD is taken from the menu for the moment because the classic LPD is
+ # highly unsecure. Depending on how the GNU lpr development is going on
+ # LPD support can be reactivated by uncommenting the line which is
+ # commented out now.
+
+ #return @spooler_inv{qw(cups lpd lprng pdq)};
+ return @spooler_inv{qw(cups lprng pdq)};
}
+
sub printer_type($) {
my ($printer) = @_;
for ($printer->{SPOOLER}) {
@@ -98,6 +107,22 @@ sub set_default_spooler ($) {
close DEFSPOOL;
}
+sub set_permissions {
+ my ($file, $perms, $owner, $group) = @_;
+ if ($owner && $group) {
+ run_program::rooted($prefix, "/bin/chown", "$owner.$group", $file)
+ || die "Could not restart chown!";
+ } elsif ($owner) {
+ run_program::rooted($prefix, "/bin/chown", $owner, $file)
+ || die "Could not restart chown!";
+ } elsif ($group) {
+ run_program::rooted($prefix, "/bin/chgrp", $group, $file)
+ || die "Could not restart chgrp!";
+ }
+ run_program::rooted($prefix, "/bin/chmod", $perms, $file)
+ || die "Could not restart chmod!";
+}
+
sub restart_service ($) {
my ($service) = @_;
run_program::rooted($prefix, "/etc/rc.d/init.d/$service", "restart")
@@ -116,6 +141,53 @@ sub stop_service ($) {
|| die "Could not stop $service!";
}
+sub service_starts_on_boot ($) {
+ my ($service) = @_;
+ local *F;
+ open F, ($::testing ? "$prefix" : "chroot $prefix/ ") .
+ "/sbin/chkconfig --list $service 2>&1 |" ||
+ die "Could not run chkconfig!";
+ while (<F>) {
+ chomp;
+ if ($_ =~ /:on/) {
+ close F;
+ return 1;
+ }
+ }
+ close F;
+ return 0;
+}
+
+sub start_service_on_boot ($) {
+ my ($service) = @_;
+ run_program::rooted($prefix, "/sbin/chkconfig", "--add", $service)
+ || die "Could not start chkconfig!";
+}
+
+sub network_status {
+ # If the network is not running or not running as configured,
+ # return 0, otherwise 1.
+ local *F;
+ open F, ($::testing ? "$prefix" : "chroot $prefix/ ") .
+ "/etc/rc.d/init.d/network status |" ||
+ die "Could not run \"/etc/rc.d/init.d/network status\"!";
+ while(<F>) {
+ if (($_ =~ /Devices.*down/) || # Are there configured devices which
+ # are down
+ ($_ =~ /Devices.*modified/)) { # Configured devices which are not
+ # running as configured
+ my $devices = <F>;
+ chomp $devices;
+ if ($devices !~ /^\s*$/) { # Blank line
+ close F;
+ return 0;
+ }
+ }
+ }
+ close F;
+ return 1;
+}
+
sub files_exist {
my @files = @_;
for (@files) {
@@ -378,7 +450,9 @@ sub read_foomatic_options ($) {
"foomatic-configure -P -p $printer->{currentqueue}{'printer'}" .
" -d $printer->{currentqueue}{'driver'}" .
($printer->{OLD_QUEUE} ?
- " -s $printer->{SPOOLER} -n $printer->{OLD_QUEUE}" : "")
+ " -s $printer->{SPOOLER} -n $printer->{OLD_QUEUE}" : "") .
+ ($printer->{SPECIAL_OPTIONS} ?
+ " $printer->{SPECIAL_OPTIONS}" : "")
. " |" ||
die "Could not run foomatic-configure";
eval (join('',(<F>)));
@@ -812,6 +886,14 @@ sub configure_queue($) {
setVarsInSh($f, \%usb);
}
+ # Open permissions for device file when PDQ is chosen as spooler
+ # so normal users can print.
+ if ($printer->{SPOOLER} eq 'pdq') {
+ if ($printer->{currentqueue}{'connect'} =~ m!^\s*file:(\S*)\s*$!) {
+ set_permissions($1,"666");
+ }
+ }
+
# Make a new printer entry in the $printer structure
$printer->{configured}{$printer->{currentqueue}{'queue'}}{'queuedata'}=
$printer->{currentqueue};