#!/usr/local/bin/perl # edit_printer.cgi # Edit or create a printer require './lpadmin-lib.pl'; &ReadParse(); if ($in{'new'}) { $access{'add'} || &error($text{'edit_eadd'}); &ui_print_header(undef, $text{'edit_add'}, ""); $prn{'accepting'}++; $prn{'enabled'}++; $prn{'allow_all'}++; $prn{'dev'} = $device_files[0]; $prn{'ctype'} = [ "postscript" ]; } else { &can_edit_printer($in{'name'}) || &error($text{'edit_eedit'}); &ui_print_header(undef, $text{'edit_edit'}, ""); local $prn = &get_printer($in{'name'}); $prn || &error(&text('save_egone', $in{'name'})); %prn = %$prn; } print "
\n"; print "\n"; print "\n"; print "
$text{'edit_conf'}
\n"; print "\n"; if ($in{'new'}) { print "\n"; print "\n"; } else { print "\n"; print "\n"; } print "\n"; printf "\n", $prn{'accepting_why'}; } else { printf " $text{'no'}\n", $prn{'accepting'} ? "" : "checked"; } if (&printer_support('desc')) { print "\n"; print "\n"; } else { print "\n"; } print "\n"; printf "\n", $prn{'enabled_why'}; } else { printf " $text{'no'}\n", $prn{'enabled'} ? "" : "checked"; } if (&printer_support('allow')) { print "\n"; print "\n"; } if (&printer_support('banner')) { print " ", "\n", $prn{'banner'} ? "" : "checked", $text{'edit_opt'}; } else { print "\n"; } if (&printer_support('default')) { print "\n", $prn{'default'} ? "" : "checked"; } else { print "$text{'edit_already'}\n"; } } elsif (&printer_support('msize')) { print "\n", $prn{'msize'} ? $prn{'msize'} : "", $text{'blocks'}; } else { print "\n"; } if (&printer_support('ctype')) { @ctype = @{$prn{'ctype'}}; print "\n"; } if (&printer_support('alias')) { @alias = @{$prn{'alias'}}; print "\n", join(' ', @alias); } print "
$text{'edit_name'}$prn{'name'}$text{'edit_acc'} $text{'yes'}\n", $prn{'accepting'} ? "checked" : ""; if (&printer_support('why')) { printf " %s\n", $prn{'accepting'} ? "" : "checked", $text{'edit_why'}; printf "
$text{'edit_desc'}
$text{'edit_ena'} $text{'yes'}\n", $prn{'enabled'} ? "checked" : ""; if (&printer_support('why')) { printf " %s\n", $prn{'enabled'} ? "" : "checked", $text{'edit_why'}; printf "
$text{'edit_acl'}\n"; print "\n"; print "
\n"; printf " %s
\n", $prn{'allow_all'} ? "checked" : "", $text{'edit_allow'}; printf " %s
\n", $prn{'deny_all'} ? "checked" : "", $text{'edit_deny'}; printf " %s
\n", $prn{'allow'} ? "checked" : "", $text{'edit_allowu'}; printf " %s\n", $prn{'deny'} ? "checked" : "", $text{'edit_denyu'}; print "
\n"; print "",&user_chooser_button("users",1),"
$text{'edit_banner'}\n"; printf " $text{'yes'}\n", $prn{'banner'} ? "checked" : ""; printf " %s
$text{'edit_default'} \n"; if (!$prn{'default'}) { printf " $text{'yes'}\n", $prn{'default'} ? "checked" : ""; printf " $text{'no'}
$text{'edit_max'} \n"; printf " %s\n", defined($prn{'msize'}) ? "" : "checked", $text{'default'}; printf " %s\n", $prn{'msize'} eq '0' ? "checked" : "", $text{'edit_unlimited'}; printf "\n", $prn{'msize'} ? "checked" : ""; printf " %s
$text{'edit_dacc'} \n"; printf " %s  \n", &indexof("simple", @ctype) < 0 ? "" : "checked", $text{'edit_dtext'}; printf " %s  \n", &indexof("postscript", @ctype) < 0 ? "" : "checked", $text{'edit_dpost'}; @ctypeo = grep { !/^(simple|postscript)$/ } @ctype; printf " %s\n", @ctypeo ? "checked" : "", $text{'edit_dother'}; printf "\n", join(' ', @ctypeo); print "
$text{'edit_alt'} \n"; printf "

\n"; if ($in{'new'} || &printer_support('editdest')) { print "\n"; print "\n"; print "
$text{'edit_dest'}
\n"; $isdev = &indexof($prn{'dev'}, @device_files) >= 0; if (!$webmin_windows_driver) { $wdrv = &is_webmin_windows_driver($prn{'iface'}, \%prn); $webmin++ if ($wdrv); } $wdrv = &is_windows_driver($prn{'iface'}, \%prn) if (!$wdrv); $hdrv = &is_hpnp_driver($prn{'iface'}, \%prn); if ($wdrv) { $prn{'iface'} = $wdrv->{'program'}; } elsif ($hdrv) { $prn{'iface'} = $hdrv->{'program'}; } printf "\n", $prn{'dev'} && $isdev && !$wdrv && !$hdrv ? "checked" : "", $text{'edit_dev'}; print "\n"; printf "\n", $prn{'dev'} && !$isdev && !$wdrv && !$hdrv ? "checked" : "", $text{'edit_file'}; printf "\n", $isdev || $wdrv || $hdrv ? "" : $prn{'dev'}; printf "\n"; print "\n"; print "\n"; if (&printer_support("direct")) { printf "\n"; print "\n"; print "\n"; } if (&has_smbclient()) { printf " ". "\n", $wdrv->{'server'}; printf "\n", $wdrv->{'share'}; print "\n"; printf "\n"; } if (&has_hpnp()) { printf "\n"; printf "\n", $hdrv->{'server'}; printf "\n", $hdrv->{'port'}; } print "\n"; print "
%s
%s
\n", $prn{'rhost'} ? "checked" : ""; print "$text{'edit_remote'}$text{'edit_rqueue'} ", "\n"; if (defined(&remote_printer_types)) { @rtypes = &remote_printer_types(); } elsif (&printer_support('sysv')) { @rtypes = ( [ 'bsd', 'BSD' ], [ 's5', 'SysV' ] ); } elsif (&printer_support('ipp')) { @rtypes = ( [ 'bsd', 'BSD' ], [ 'ipp', 'IPP' ] ); } if (@rtypes) { print "$text{'edit_type'} \n"; } print "
\n", $prn{'dhost'} ? "checked" : ""; print "$text{'edit_direct'}$text{'edit_dport'} ", "\n"; print "
\n", $wdrv ? "checked" : ""; printf "$text{'edit_smb'}$text{'edit_share'} ". "
$text{'edit_user'}\n", $wdrv->{'user'}; printf "$text{'edit_pass'} ". "\n", $wdrv->{'pass'}; printf "$text{'edit_wgroup'} ". "\n", $wdrv->{'workgroup'}; print "
\n", $hdrv ? "checked" : ""; print "$text{'edit_hpnp'}$text{'edit_port'} ". "
    ", " ", "$text{'edit_check'}

\n"; print "\n"; print "\n"; print "
$text{'edit_driver'}
\n"; if (!$webmin_print_driver) { $drv = &is_webmin_driver($prn{'iface'}, \%prn); } if ($drv->{'mode'} != 0 && $drv->{'mode'} != 2 || $webmin) { $webmin++; $after = &webmin_driver_input(\%prn, $drv); } else { $drv = &is_driver($prn{'iface'}, \%prn); $after = &driver_input(\%prn, $drv); } print "

\n"; } print "\n"; if ($in{'new'}) { print "

\n"; } else { print "\n"; print "\n"; if ($access{'delete'}) { print "\n"; print "\n"; print "\n"; } print "
\n"; } print $after; &ui_print_footer("", $text{'index_return'});