X7ROOT File Manager
Current Path:
/usr/libexec/webmin/lpadmin
usr
/
libexec
/
webmin
/
lpadmin
/
📁
..
📄
CHANGELOG
(1.16 KB)
📄
acl_security.pl
(4.4 KB)
📄
aix-lib.pl
(9.45 KB)
📄
ascii.txt
(4.19 KB)
📄
base_coas_driver
(560 B)
📄
bw.fig
(2.75 KB)
📄
bw.ps
(6.46 KB)
📄
caldera-driver.pl
(12.31 KB)
📄
cancel_all.cgi
(535 B)
📄
catalog.devices
(12.34 KB)
📄
cgi_args.pl
(284 B)
📄
cluster.cgi
(2.06 KB)
📄
cluster_add.cgi
(2.13 KB)
📄
cluster_delete.cgi
(529 B)
📄
colour.fig
(2.91 KB)
📄
colour.ps
(6.63 KB)
📄
config-AlmaLinux-7.0-ALL
(323 B)
📄
config-Amazon-Linux-2-ALL
(323 B)
📄
config-CentOS-Linux-7.0-ALL
(323 B)
📄
config-CentOS-Stream-Linux-8.0-ALL
(323 B)
📄
config-Oracle-Linux-8.0-ALL
(323 B)
📄
config-Redhat-Enterprise-Linux-7.0-ALL
(323 B)
📄
config-Rocky-Linux-7.0-ALL
(323 B)
📄
config-Scientific-Linux-7.0-ALL
(323 B)
📄
config-aix
(281 B)
📄
config-coherent-linux
(323 B)
📄
config-corel-linux
(228 B)
📄
config-debian-linux
(228 B)
📄
config-debian-linux-3.1-3.9
(327 B)
📄
config-debian-linux-4.0-ALL
(333 B)
📄
config-freebsd
(230 B)
📄
config-generic-linux
(228 B)
📄
config-gentoo-linux
(248 B)
📄
config-hpux
(323 B)
📄
config-irix
(213 B)
📄
config-macos
(230 B)
📄
config-mandrake-linux
(245 B)
📄
config-mandrake-linux-8.0-ALL
(276 B)
📄
config-msc-linux
(228 B)
📄
config-netbsd
(230 B)
📄
config-open-linux
(309 B)
📄
config-open-linux-3.1e
(239 B)
📄
config-openbsd
(230 B)
📄
config-openmamba-linux
(229 B)
📄
config-pardus-linux
(228 B)
📄
config-redhat-linux
(228 B)
📄
config-redhat-linux-24.0-ALL
(339 B)
📄
config-redhat-linux-7.0
(283 B)
📄
config-redhat-linux-7.1
(286 B)
📄
config-redhat-linux-7.2-8.1
(394 B)
📄
config-redhat-linux-9.0-23.0
(337 B)
📄
config-slackware-linux
(228 B)
📄
config-slackware-linux-8.1-ALL
(246 B)
📄
config-solaris
(304 B)
📄
config-solaris-10-ALL
(330 B)
📄
config-solaris-9
(296 B)
📄
config-suse-linux
(226 B)
📄
config-suse-linux-8.2-ALL
(322 B)
📄
config-trustix-linux
(313 B)
📄
config-turbo-linux
(228 B)
📄
config-united-linux
(322 B)
📄
config-unixware
(302 B)
📄
config.info
(1.31 KB)
📄
config.info.ca
(1.53 KB)
📄
config.info.cs
(1.25 KB)
📄
config.info.de
(1.43 KB)
📄
config.info.es
(1.17 KB)
📄
config.info.fr
(1.63 KB)
📄
config.info.hu
(707 B)
📄
config.info.ja
(823 B)
📄
config.info.nl
(1.41 KB)
📄
config.info.no
(1.37 KB)
📄
config.info.pl
(1.45 KB)
📄
config.info.pt_BR
(1.58 KB)
📄
config.info.ru
(1.74 KB)
📄
config.info.sv
(651 B)
📄
config.info.tr
(1.39 KB)
📄
config.info.uk
(1.81 KB)
📄
config.info.zh
(573 B)
📄
config.info.zh_TW
(539 B)
📄
cups-driver.pl
(6.37 KB)
📄
cups-lib.pl
(8.67 KB)
📄
defaultacl
(73 B)
📄
delete_printer.cgi
(690 B)
📄
delete_printers.cgi
(839 B)
📄
drivers
(18.34 KB)
📄
edit_printer.cgi
(10.08 KB)
📄
freebsd-lib.pl
(7.26 KB)
📄
hpux-driver.pl
(3.13 KB)
📄
hpux-lib.pl
(9.83 KB)
📁
images
📄
index.cgi
(5.83 KB)
📄
irix-driver.pl
(3.13 KB)
📄
irix-lib.pl
(10.68 KB)
📁
lang
📄
linux-lib.pl
(8.97 KB)
📄
list_jobs.cgi
(2.25 KB)
📄
log_parser.pl
(1021 B)
📄
lpadmin-lib.pl
(19.89 KB)
📄
lprng-lib.pl
(10.26 KB)
📄
module.info
(494 B)
📄
module.info.af
(0 B)
📄
module.info.af.auto
(159 B)
📄
module.info.ar
(0 B)
📄
module.info.ar.auto
(223 B)
📄
module.info.be
(0 B)
📄
module.info.be.auto
(290 B)
📄
module.info.bg
(0 B)
📄
module.info.bg.auto
(306 B)
📄
module.info.ca
(167 B)
📄
module.info.ca.auto
(16 B)
📄
module.info.cs
(31 B)
📄
module.info.cs.auto
(155 B)
📄
module.info.da
(0 B)
📄
module.info.da.auto
(168 B)
📄
module.info.de
(148 B)
📄
module.info.de.auto
(16 B)
📄
module.info.el
(0 B)
📄
module.info.el.auto
(362 B)
📄
module.info.es
(38 B)
📄
module.info.es.auto
(157 B)
📄
module.info.eu
(0 B)
📄
module.info.eu.auto
(217 B)
📄
module.info.fa
(0 B)
📄
module.info.fa.auto
(246 B)
📄
module.info.fi
(0 B)
📄
module.info.fi.auto
(168 B)
📄
module.info.fr
(39 B)
📄
module.info.fr.auto
(176 B)
📄
module.info.he
(0 B)
📄
module.info.he.auto
(205 B)
📄
module.info.hr
(0 B)
📄
module.info.hr.auto
(188 B)
📄
module.info.hu
(19 B)
📄
module.info.hu.auto
(173 B)
📄
module.info.it
(0 B)
📄
module.info.it.auto
(177 B)
📄
module.info.ja
(27 B)
📄
module.info.ja.auto
(213 B)
📄
module.info.ko
(25 B)
📄
module.info.ko.auto
(176 B)
📄
module.info.lt
(0 B)
📄
module.info.lt.auto
(219 B)
📄
module.info.lv
(0 B)
📄
module.info.lv.auto
(189 B)
📄
module.info.ms
(152 B)
📄
module.info.ms.auto
(16 B)
📄
module.info.mt
(0 B)
📄
module.info.mt.auto
(196 B)
📄
module.info.nl
(33 B)
📄
module.info.nl.auto
(133 B)
📄
module.info.no
(31 B)
📄
module.info.no.auto
(137 B)
📄
module.info.pl
(160 B)
📄
module.info.pl.auto
(16 B)
📄
module.info.pt
(39 B)
📄
module.info.pt.auto
(149 B)
📄
module.info.pt_BR
(42 B)
📄
module.info.pt_BR.auto
(155 B)
📄
module.info.ro
(0 B)
📄
module.info.ro.auto
(199 B)
📄
module.info.ru
(25 B)
📄
module.info.ru.auto
(245 B)
📄
module.info.sk
(0 B)
📄
module.info.sk.auto
(184 B)
📄
module.info.sl
(0 B)
📄
module.info.sl.auto
(192 B)
📄
module.info.sv
(30 B)
📄
module.info.sv.auto
(141 B)
📄
module.info.th
(0 B)
📄
module.info.th.auto
(393 B)
📄
module.info.tr
(27 B)
📄
module.info.tr.auto
(166 B)
📄
module.info.uk
(0 B)
📄
module.info.uk.auto
(281 B)
📄
module.info.ur
(0 B)
📄
module.info.ur.auto
(304 B)
📄
module.info.vi
(0 B)
📄
module.info.vi.auto
(189 B)
📄
module.info.zh
(24 B)
📄
module.info.zh.auto
(136 B)
📄
module.info.zh_TW
(30 B)
📄
module.info.zh_TW.auto
(142 B)
📄
old-caldera-driver.pl
(9.74 KB)
📄
openbsd-lib.pl
(7.26 KB)
📄
prefs.info
(40 B)
📄
printconf-driver.pl
(9.52 KB)
📄
rbac-mapping
(248 B)
📄
redhat-driver.pl
(12.42 KB)
📄
restart.cgi
(301 B)
📄
save_printer.cgi
(5.85 KB)
📄
solaris-driver.pl
(4.03 KB)
📄
solaris-lib.pl
(12.17 KB)
📄
sortdrivers-by-drv.pl
(222 B)
📄
sortdrivers.pl
(242 B)
📄
start.cgi
(377 B)
📄
stop.cgi
(374 B)
📄
stp
(2.45 KB)
📄
suse-driver.pl
(10.62 KB)
📄
test_form.cgi
(887 B)
📄
test_print.cgi
(1.19 KB)
📄
unixware-lib.pl
(7.81 KB)
📄
view_job.cgi
(909 B)
📄
webmin-driver.pl
(1.04 KB)
Editing: suse-driver.pl
# suse-driver.pl # Functions for APS print filters, as used by SUSE @paper_sizes = ( [ 'a4', 'A4' ], [ 'a4dj', 'A4 inkjet' ], [ 'a3', 'A3' ], [ 'letter', 'US Letter' ], [ 'letterdj', 'US Letter inkjet' ], [ 'note', 'Note' ], [ 'legal', 'Legal' ], [ 'ledger', 'Ledger' ], [ 'a0', 'A0' ], [ 'a1', 'A1' ], [ 'a2', 'A2' ], [ 'a5', 'A5' ], [ 'a6', 'A6' ], [ 'a7', 'A7' ], [ 'a8', 'A8' ], [ 'a9', 'A9' ], [ 'a10', 'A10' ], [ 'b0', 'B0' ], [ 'b1', 'B1' ], [ 'b2', 'B2' ], [ 'b3', 'B3' ], [ 'b4', 'B4' ], [ 'b5', 'B5' ], [ 'archE', 'archE' ], [ 'archD', 'archD' ], [ 'archC', 'archC' ], [ 'archB', 'archB' ], [ 'archA', 'archA' ], [ 'flsa', 'flsa' ], [ 'flse', 'flse' ], [ 'halfletter', 'Half Letter' ], [ '11x17', '11x17' ] ); $apsfilter_dir = "/var/lib/apsfilter/bin"; $apsfilter_prog = "/var/lib/apsfilter/apsfilter"; $apsfilter_config = "/var/lib/apsfilter/template/apsfilterrc.gs_device_name"; $apsfilter_base = "/etc/apsfilterrc"; $driver_dir = "/etc/gs.upp"; $webmin_windows_driver = 1; open(DRIVERS, "<$module_root_directory/drivers"); while(<DRIVERS>) { if (/^(\S+)\s+(.*)/) { $driver{$1} = $2 if (!$driver{$1}); } } close(DRIVERS); open(STP, "<stp"); while(<STP>) { if (/^(\S+)\s+(.*)/) { $stp{$1} = $2 if (!$stp{$1}); } } close(STP); foreach $u (&list_uniprint()) { $u->[1] =~ s/,.*$//; $driver{"$u->[0].upp"} = $u->[1]; } # is_windows_driver(path, %driver) # Returns a driver structure if some path is a windows driver sub is_windows_driver { return &is_webmin_windows_driver(@_); } # is_driver(path, &printer) # Returns a structure containing the details of a driver sub is_driver { if (!$_[0]) { return { 'mode' => 0, 'desc' => "$text{'suse_none'}" }; } elsif ($_[0] =~ /$apsfilter_dir\/([^-]+)-([^-]+)-([^-]+)-([^-]+)-([^-]+)$/) { # Looks like an APS driver from suse (old style) local $rv = { 'mode' => 1, 'device' => $1, 'paper' => $2, 'method' => $3, 'colour' => $4, 'res' => $5 }; local $desc = $driver{$rv->{'device'}} ? $driver{$rv->{'device'}} : $rv->{'device'} =~ /^PS_/ ? "Postscript" : $rv->{'device'}; $rv->{'desc'} = $rv->{'res'} ? "$desc ($rv->{'res'} DPI)" : $desc; return $rv; } #elsif ($_[0] =~ /$apsfilter_dir\/([^-]+)--([^-]+)-([^-]+)$/ && # -r "$driver_dir/$1") { # # Looks like a new-style APS suse driver # local $rv = { 'mode' => 3, # 'method' => $2 }; # open(GS, "$driver_dir/$1"); # while(<GS>) { # s/\r|\n//g; # if (/^-sDEVICE=(\S+)/) { $rv->{'device'} = $1; } # elsif (/^-sPAPERSIZE=(\S+)/) { $rv->{'paper'} = $1; } # elsif (/^-sCOLOR=(\S+)/) { $rv->{'colour'} = $1; } # elsif (/^-r(\S+)/) { $rv->{'res'} = $1; } # elsif (/^-supModel="(.*)"/) { $rv->{'desc'} = $1; } # elsif (/^-sModel="(.*)"/) { $rv->{'model'} = $1; } # elsif (/^\@(\S+\.upp)/) { $rv->{'device'} = $1; } # else { push(@{$rv->{'extra'}}, $_); } # } # close(GS); # return $rv; # } elsif ($_[0] =~ /$apsfilter_dir\/([^-]+)-([^-]+)-([^-]+)$/) { # Null APS driver? return { 'mode' => 0, 'desc' => 'None' }; } else { # Some other kind of driver return { 'mode' => 2, 'file' => $_[0], 'desc' => $_[0] }; } } # create_windows_driver(&printer, &driver) # Creates a new windows printer driver sub create_windows_driver { return &create_webmin_windows_driver(@_); } # create_driver(&printer, &driver) # Creates a new local printer driver and returns the path sub create_driver { local ($prn, $drv) = @_; if ($drv->{'mode'} == 0) { return undef; } elsif ($drv->{'mode'} == 2) { return $drv->{'file'}; } else { local $device; if ($drv->{'device'} eq 'ps') { $device = "PS_$drv->{'res'}dpi"; } else { $device = $drv->{'device'}; } local $aps = "$apsfilter_dir/$device-$drv->{'paper'}-". "$drv->{'method'}-$drv->{'colour'}-$drv->{'res'}"; &lock_file($aps); symlink($apsfilter_prog, $aps); &unlock_file($aps); if (!-r "$apsfilter_base.$device") { &lock_file("$apsfilter_base.$device"); local $conf = &read_file_contents($apsfilter_config); $conf =~ s/<gs_device_name>/$device/g; &open_tempfile(CONF, ">$apsfilter_base.$device"); &print_tempfile(CONF, $conf); &close_tempfile(CONF); &unlock_file("$apsfilter_base.$device"); } return $aps; } } # delete_driver(name) sub delete_driver { } # driver_input(&printer, &driver) sub driver_input { local ($prn, $drv) = @_; local ($found, $d); printf "<tr> <td><input type=radio name=mode value=0 %s> %s</td>\n", $drv->{'mode'} == 0 ? "checked" : "", $text{'suse_none'}; print "<td>($text{'suse_nonemsg'})</td> </tr>\n"; printf "<tr> <td><input type=radio name=mode value=2 %s> %s</td>\n", $drv->{'mode'} == 2 ? "checked" : "", $text{'suse_prog'}; printf "<td><input name=iface value=\"%s\" size=35></td> </tr>\n", $drv->{'mode'} == 2 ? $drv->{'file'} : ""; if ($drv->{'mode'} == 2 || 1) { # Show input for old-style suse printer printf "<tr> <td valign=top><input type=radio name=mode value=1 %s>\n", $drv->{'mode'} == 1 ? "checked" : ""; print "$text{'suse_driver'}</td> <td><table width=100%>"; print "<tr> <td valign=top><b>$text{'suse_printer'}</b></td>\n"; print "<td colspan=3><select size=10 name=device>\n"; printf "<option value=ps %s>Postscript</option>\n", $drv->{'device'} =~ /^PS_/ ? 'selected' : ''; $found++ if ($drv->{'device'} =~ /^PS_/); foreach $d (&list_uniprint()) { local $u = "$d->[0].upp"; printf "<option value=%s %s>%s</option>\n", $u, $drv->{'device'} eq $u ? 'selected' : '', $d->[1]; $found++ if ($drv->{'device'} eq $u); } local $out = &backquote_command("$config{'gs_path'} -help 2>&1", 1); $out =~ /Available devices:\n((\s+.*\n)+)/i; foreach $d (split(/\s+/, $1)) { if ($driver{$d}) { printf "<option value=%s %s>%s</option>\n", $d, $drv->{'device'} eq $d ? 'selected' : '', $driver{$d}; $found++ if ($drv->{'device'} eq $d); } } print "<option selected value=$drv->{'device'}>$drv->{'device'}</option>\n" if (!$found && $drv->{'device'}); print "</select></td> </tr>\n"; print "<tr> <td><b>$text{'suse_res'}</b></td>\n"; print "<td><input name=res size=8 value='$drv->{'res'}'></td>\n"; print "<td><b>$text{'suse_colour'}</b></td>\n"; printf "<td><input name=colour type=radio value=color %s> %s\n", $drv->{'colour'} eq 'mono' ? '' : 'checked', $text{'yes'}; printf "<input name=colour type=radio value=color %s> %s</td> </tr>\n", $drv->{'colour'} eq 'mono' ? 'checked' : '', $text{'no'}; print "<tr> <td><b>$text{'suse_paper'}</b></td>\n"; print "<td><select name=paper>\n"; foreach $p (@paper_sizes) { printf "<option value=%s %s>%s</option>\n", $p->[0], $drv->{'paper'} eq $p->[0] ? 'selected' : '', $p->[1]; } print "</select></td>\n"; print "<td><b>$text{'suse_method'}</b></td>\n"; printf "<td><input type=radio name=method value=auto %s> %s\n", $drv->{'method'} eq 'ascii' ? '' : 'checked', $text{'suse_auto'}; printf "<input type=radio name=method value=ascii %s> %s</td> </tr>\n", $drv->{'method'} eq 'ascii' ? 'checked' : '', $text{'suse_ascii'}; print "</table></td> </tr>\n"; } else { # Show input for new-style suse printer (NOT DONE YET!) printf "<tr> <td valign=top><input type=radio name=mode value=3 %s>\n", $drv->{'mode'} == 3 ? "checked" : ""; print "$text{'suse_yast2'}</td> <td><table width=100%>"; print "<tr> <td valign=top><b>$text{'suse_printer'}</b></td>\n"; print "<td colspan=3><select size=10 name=device>\n"; printf "<option value=ps %s>Postscript</option>\n", $drv->{'device'} eq 'PS' ? 'selected' : ''; $found++ if ($drv->{'device'} eq 'PS'); local $out = &backquote_command("$config{'gs_path'} -help 2>&1", 1); $out =~ /Available devices:\n((\s+.*\n)+)/i; foreach $d (split(/\s+/, $1)) { if ($d ne 'stp' && $driver{$d}) { printf "<option value=%s %s>%s</option>\n", $d, $drv->{'device'} eq $d ? 'selected' : '', $driver{$d}; $found++ if ($drv->{'device'} eq $d); } } foreach $d (&list_uniprint()) { local $u = "$d->[0].upp"; printf "<option value=%s %s>%s</option>\n", $u, $drv->{'device'} eq $u ? 'selected' : '', $d->[1]; $found++ if ($drv->{'device'} eq $u); } foreach $s (sort { $a cmp $b } keys %stp) { printf "<option value=%s.stp %s>%s</option>\n", $s, $drv->{'device'} eq 'stp' && $drv->{'model'} eq $s ? 'selected' : '', $stp{$s}; $found++ if ($drv->{'device'} eq 'stp' && $drv->{'model'} eq $s); } print "<option selected value=$drv->{'device'}>$drv->{'device'}</option>\n" if (!$found && $drv->{'device'}); print "</select></td> </tr>\n"; print "<tr> <td><b>$text{'suse_colour'}</b></td>\n"; printf "<td><input name=colour type=radio value=color %s> %s\n", $drv->{'colour'} eq 'mono' ? '' : 'checked', $text{'yes'}; printf "<input name=colour type=radio value=color %s> %s</td>\n", $drv->{'colour'} eq 'mono' ? 'checked' : '', $text{'no'}; print "<td><b>$text{'suse_paper'}</b></td>\n"; print "<td><select name=paper>\n"; foreach $p (@paper_sizes) { printf "<option value=%s %s>%s</option>\n", $p->[0], $drv->{'paper'} eq $p->[0] ? 'selected' : '', $p->[1]; } print "</select></td> </tr>\n"; print "<tr> <td><b>$text{'suse_res'}</b></td>\n"; printf "<td><input type=radio name=res_def value=1 %s> %s\n", $drv->{'res'} ? '' : 'checked', $text{'suse_auto'}; printf "<input type=radio name=res_def value=0 %s>\n", $drv->{'res'} ? 'checked' : ''; print "<input name=res size=8 value='$drv->{'res'}'></td>\n"; print "<td><b>$text{'suse_method'}</b></td>\n"; print "<td><select name=method>\n"; foreach $m ('auto', 'ascii', 'raw') { printf "<option value=%s %s>%s</option>\n", $m, $drv->{'method'} eq $m ? 'selected' : '', $text{"suse_$m"}; } print "</select></td> </tr>\n"; print "<tr> <td><b>$text{'suse_extra'}</b></td>\n"; print "<td colspan=3><input name=extra size=50 value='", join(" ", @{$drv->{'extra'}}),"'></td> </tr>\n"; print "</table></td> </tr>\n"; } } # parse_driver() # Parse driver selection from %in and return a driver structure sub parse_driver { if ($in{'mode'} == 0) { return { 'mode' => 0 }; } elsif ($in{'mode'} == 2) { (-x $in{'iface'}) || &error(&text('suse_eprog', $in{'iface'})); return { 'mode' => 2, 'file' => $in{'iface'} }; } elsif ($in{'mode'} == 3) { # New suse printer (NOT DONE YET!) # All the other odd files created by yast2 need to be supported $in{'device'} || &error($text{'suse_edriver'}); $in{'res_def'} || $in{'res'} =~ /^\d+$/ || $in{'res'} =~ /^\d+x\d+$/ || &error($text{'suse_eres'}); } elsif ($in{'mode'} == 1) { # Old-style suse printer $in{'device'} || &error($text{'suse_edriver'}); $in{'res'} =~ /^\d+$/ || &error(&text('suse_eres', $in{'res'})); return { 'mode' => 1, 'device' => $in{'device'}, 'paper' => $in{'paper'}, 'method' => $in{'method'}, 'colour' => $in{'colour'}, 'res' => $in{'res'} }; } } 1;
Upload File
Create Folder