#!/usr/bin/perl # save_printer.cgi # Create or modify a printer require './lpadmin-lib.pl'; &ReadParse(); &error_setup($text{'save_err'}); if ($in{'delete'}) { # Redirect to delete page &redirect("delete_printer.cgi?name=".&urlize($in{'name'})); return; } # Check ACL if ($in{'new'}) { $access{'add'} || &error($text{'save_eadd'}); } else { &can_edit_printer($in{'name'}) || &error($text{'save_eedit'}); } # validate and store printer details $in{'name'} =~ /^[A-z0-9\-\_\.]+$/ || &error(&text('save_ename', $in{'name'})); if ($in{'new'} && &get_printer($in{'name'})) { &error(&text('save_edup', $in{'name'})); } $prn{'name'} = $in{'name'}; $prn{'accepting'} = $in{'accepting'}; if (!$prn{'accepting'}) { $prn{'accepting_why'} = $in{'accepting_why'}; } $prn{'enabled'} = $in{'enabled'}; if (!$prn{'enabled'}) { $prn{'enabled_why'} = $in{'enabled_why'}; } $prn{'desc'} = $in{'desc'}; if (&printer_support('allow')) { @ul = split(/\s+/, $in{'users'}); if ($in{'access'} == 0) { $prn{'allow_all'}++; } elsif ($in{'access'} == 1) { $prn{'deny_all'}++; } else { $w = $in{'access'} == 2 ? "allow" : "deny"; if (!@ul) { &error($text{"save_e$w"}); } foreach $u (@ul) { if ($u !~ /^\S+\!\S+$/ && !(@dummy=getpwnam($u))) { &error(&text('save_euser', $u)); } } $prn{$w} = \@ul; } } if (&printer_support('banner')) { $prn{'banner'} = $in{'prbanner'}; } if (&printer_support('ctype')) { if ($in{'ctype_simple'}) { push(@ctype, "simple"); } if ($in{'ctype_postscript'}) { push(@ctype, "postscript"); } if ($in{'ctype_other'}) { push(@ctype, split(/\s+/, $in{'ctype_olist'})); } &error($text{'save_etype'}) if (!@ctype && $in{'dest'} != 2); $prn{'ctype'} = \@ctype; } $prn{'default'} = $in{'default'}; if (&printer_support('msize')) { if ($in{'msize_def'} == 2) { $prn{'msize'} = 0; } elsif ($in{'msize_def'} == 0) { $in{'msize'} =~ /^\d+$/ || &error($text{'save_emax'}); $prn{'msize'} = $in{'msize'}; } } if (&printer_support('alias')) { @alias = split(/\s+/, $in{'alias'}); $prn{'alias'} = \@alias; } if ($in{'new'} || &printer_support('editdest')) { if ($in{'webmin'}) { $drv = &parse_webmin_driver(); $dfunc = \&create_webmin_driver; } else { $drv = &parse_driver(); $dfunc = \&create_driver; } # validate and store destination section $SIG{'ALRM'} = \&connect_time_out; if ($in{'dest'} == 0) { # printing to some device $prn{'dev'} = $in{'dev'}; $prn{'iface'} = &$dfunc(\%prn, $drv); } elsif ($in{'dest'} == 1) { # printing to some file (-r $in{'file'}) || ($in{'file'} =~ /^\|(.*)/ && -r $1) || &error(&text('save_efile', $in{'file'})); $prn{'dev'} = $in{'file'}; $prn{'iface'} = &$dfunc(\%prn, $drv); } elsif ($in{'dest'} == 2) { # printing to a unix host local ($rhost, $rport); if ($in{'rhost'} =~ /^(\S+):(\d+)$/) { $rhost = $1; $rport = $2; } else { $rhost = $in{'rhost'}; $rport = 515; } &to_ipaddress($rhost) || &to_ip6address($rhost) || &error(&text('save_erhost', $rhost)); $rport =~ /^\d+$/ || &error(&text('save_erport', $rport)); $in{'rqueue'} =~ /^[A-z0-9\-\_\.\/]+$/ || (!$in{'rqueue'} && &printer_support('rnoqueue')) || &error(&text('save_erqueue', $in{'rqueue'})); $prn{'rhost'} = $in{'rhost'}; $prn{'rqueue'} = $in{'rqueue'}; $prn{'rtype'} = $in{'rtype'}; if ($drv->{'mode'} && !&printer_support('riface')) { &error($text{'save_eremote'}); } if ($in{'check'} && (!$in{'rtype'} || $in{'rtype'} eq 'bsd')) { # Try connecting to the LPR port alarm(10); &open_socket($rhost, 515, TEST); close(TEST); alarm(0); } $prn{'iface'} = &$dfunc(\%prn, $drv); } elsif ($in{'dest'} == 3) { # printing to windows $sdrv = { 'server' => $in{'server'}, 'share' => $in{'share'}, 'user' => $in{'suser'}, 'pass' => $in{'spass'}, 'workgroup' => $in{'wgroup'}, 'program' => &$dfunc(\%prn, $drv) }; $prn{'dev'} = "/dev/null"; $prn{'iface'} = $in{'webmin'} ? &create_webmin_windows_driver(\%prn, $sdrv) : &create_windows_driver(\%prn, $sdrv); if ($in{'check'}) { # Try connecting to the SMB port alarm(10); &open_socket($sdrv->{'server'}, 139, TEST); close(TEST); alarm(0); } } elsif ($in{'dest'} == 4) { # printing to hpnp server $hdrv = { 'server' => $in{'hpnp'}, 'port' => $in{'port'}, 'program' => &$dfunc(\%prn, $drv) }; $prn{'iface'} = &create_hpnp_driver(\%prn, $hdrv); $prn{'dev'} = "/dev/null"; } elsif ($in{'dest'} == 5) { # direct connection printing &to_ipaddress($in{'dhost'}) || &to_ip6address($in{'dhost'}) || &error(&text('save_edhost', $in{'dhost'})); $in{'dport'} =~ /^\d+$/ || &error($text{'save_edport'}); $prn{'dhost'} = $in{'dhost'}; $prn{'dport'} = $in{'dport'}; $prn{'iface'} = &$dfunc(\%prn, $drv); if ($in{'check'}) { # Try connecting to the port alarm(10); &open_socket($prn{'dhost'}, $prn{'dport'}, TEST); close(TEST); alarm(0); } } } # Call os-specific validation function if (defined(&validate_printer)) { $err = &validate_printer(\%prn); &error($err) if ($err); } # Create the printer if ($in{'new'}) { &create_printer(\%prn); &system_logged("$config{'apply_cmd'} >/dev/null 2>&1 </dev/null") if ($config{'apply_cmd'}); &webmin_log("create", "printer", $prn{'name'}, &log_info(\%prn)); } else { &modify_printer(\%prn); &system_logged("$config{'apply_cmd'} >/dev/null 2>&1 </dev/null") if ($config{'apply_cmd'}); &webmin_log("modify", "printer", $prn{'name'}, &log_info(\%prn)); } # Update ACL if ($in{'new'} && $access{'printers'} ne '*') { $access{'printers'} .= " ".$in{'name'}; &save_module_acl(\%access); } # Create on cluster @slaveerrs = &save_on_cluster($in{'new'}, \%prn, $drv, $sdrv || $hdrv, $in{'webmin'}, $in{'dest'}); if (@slaveerrs) { &error(&text('save_errslave', "<p>".join("<br>", map { "$_->[0]->{'host'} : $_->[1]" } @slaveerrs))); } &redirect(""); sub connect_time_out { $connect_timed_out++; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 1.16 KB | 0644 |
|
acl_security.pl | File | 4.4 KB | 0755 |
|
aix-lib.pl | File | 9.45 KB | 0755 |
|
ascii.txt | File | 4.19 KB | 0644 |
|
base_coas_driver | File | 560 B | 0755 |
|
bw.fig | File | 2.75 KB | 0644 |
|
bw.ps | File | 6.46 KB | 0644 |
|
caldera-driver.pl | File | 12.31 KB | 0755 |
|
cancel_all.cgi | File | 535 B | 0755 |
|
catalog.devices | File | 12.34 KB | 0644 |
|
cgi_args.pl | File | 284 B | 0755 |
|
cluster.cgi | File | 2.06 KB | 0755 |
|
cluster_add.cgi | File | 2.13 KB | 0755 |
|
cluster_delete.cgi | File | 529 B | 0755 |
|
colour.fig | File | 2.91 KB | 0644 |
|
colour.ps | File | 6.63 KB | 0644 |
|
config-AlmaLinux-7.0-ALL | File | 323 B | 0644 |
|
config-Amazon-Linux-2-ALL | File | 323 B | 0644 |
|
config-CentOS-Linux-7.0-ALL | File | 323 B | 0644 |
|
config-CentOS-Stream-Linux-8.0-ALL | File | 323 B | 0644 |
|
config-CloudLinux-8.0-ALL | File | 323 B | 0644 |
|
config-Oracle-Linux-8.0-ALL | File | 323 B | 0644 |
|
config-Redhat-Enterprise-Linux-7.0-ALL | File | 323 B | 0644 |
|
config-Rocky-Linux-7.0-ALL | File | 323 B | 0644 |
|
config-Scientific-Linux-7.0-ALL | File | 323 B | 0644 |
|
config-aix | File | 281 B | 0644 |
|
config-coherent-linux | File | 323 B | 0644 |
|
config-corel-linux | File | 228 B | 0644 |
|
config-debian-linux | File | 228 B | 0644 |
|
config-debian-linux-3.1-3.9 | File | 327 B | 0644 |
|
config-debian-linux-4.0-ALL | File | 333 B | 0644 |
|
config-freebsd | File | 230 B | 0644 |
|
config-generic-linux | File | 228 B | 0644 |
|
config-gentoo-linux | File | 248 B | 0644 |
|
config-hpux | File | 323 B | 0644 |
|
config-irix | File | 213 B | 0644 |
|
config-macos | File | 230 B | 0644 |
|
config-mandrake-linux | File | 245 B | 0644 |
|
config-mandrake-linux-8.0-ALL | File | 276 B | 0644 |
|
config-msc-linux | File | 228 B | 0644 |
|
config-netbsd | File | 230 B | 0644 |
|
config-open-linux | File | 309 B | 0644 |
|
config-open-linux-3.1e | File | 239 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 318 B | 0644 |
|
config-openbsd | File | 230 B | 0644 |
|
config-openmamba-linux | File | 229 B | 0644 |
|
config-pardus-linux | File | 228 B | 0644 |
|
config-redhat-linux | File | 228 B | 0644 |
|
config-redhat-linux-24.0-ALL | File | 339 B | 0644 |
|
config-redhat-linux-7.0 | File | 283 B | 0644 |
|
config-redhat-linux-7.1 | File | 286 B | 0644 |
|
config-redhat-linux-7.2-8.1 | File | 394 B | 0644 |
|
config-redhat-linux-9.0-23.0 | File | 337 B | 0644 |
|
config-slackware-linux | File | 228 B | 0644 |
|
config-slackware-linux-8.1-ALL | File | 246 B | 0644 |
|
config-solaris | File | 304 B | 0644 |
|
config-solaris-10-ALL | File | 330 B | 0644 |
|
config-solaris-9 | File | 296 B | 0644 |
|
config-suse-linux | File | 226 B | 0644 |
|
config-suse-linux-8.2-ALL | File | 322 B | 0644 |
|
config-trustix-linux | File | 313 B | 0644 |
|
config-turbo-linux | File | 228 B | 0644 |
|
config-united-linux | File | 322 B | 0644 |
|
config-unixware | File | 302 B | 0644 |
|
config.info | File | 1.31 KB | 0644 |
|
config.info.ca | File | 1.53 KB | 0644 |
|
config.info.cs | File | 1.25 KB | 0644 |
|
config.info.de | File | 1.43 KB | 0644 |
|
config.info.es | File | 1.17 KB | 0644 |
|
config.info.fr | File | 1.63 KB | 0644 |
|
config.info.hu | File | 707 B | 0644 |
|
config.info.ja | File | 823 B | 0644 |
|
config.info.nl | File | 1.41 KB | 0644 |
|
config.info.no | File | 1.37 KB | 0644 |
|
config.info.pl | File | 1.45 KB | 0644 |
|
config.info.pt_BR | File | 1.58 KB | 0644 |
|
config.info.ru | File | 1.74 KB | 0644 |
|
config.info.sv | File | 651 B | 0644 |
|
config.info.tr | File | 1.39 KB | 0644 |
|
config.info.uk | File | 1.81 KB | 0644 |
|
config.info.zh | File | 573 B | 0644 |
|
config.info.zh_TW | File | 539 B | 0644 |
|
cups-driver.pl | File | 6.37 KB | 0755 |
|
cups-lib.pl | File | 8.67 KB | 0755 |
|
defaultacl | File | 73 B | 0644 |
|
delete_printer.cgi | File | 690 B | 0755 |
|
delete_printers.cgi | File | 839 B | 0755 |
|
drivers | File | 18.34 KB | 0644 |
|
edit_printer.cgi | File | 10.08 KB | 0755 |
|
freebsd-lib.pl | File | 7.26 KB | 0755 |
|
hpux-driver.pl | File | 3.13 KB | 0755 |
|
hpux-lib.pl | File | 9.83 KB | 0755 |
|
index.cgi | File | 5.83 KB | 0755 |
|
irix-driver.pl | File | 3.13 KB | 0755 |
|
irix-lib.pl | File | 10.68 KB | 0755 |
|
linux-lib.pl | File | 8.97 KB | 0755 |
|
list_jobs.cgi | File | 2.25 KB | 0755 |
|
log_parser.pl | File | 1021 B | 0755 |
|
lpadmin-lib.pl | File | 19.89 KB | 0755 |
|
lprng-lib.pl | File | 10.26 KB | 0755 |
|
module.info | File | 494 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 159 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 223 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 290 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 306 B | 0644 |
|
module.info.ca | File | 167 B | 0644 |
|
module.info.ca.auto | File | 16 B | 0644 |
|
module.info.cs | File | 31 B | 0644 |
|
module.info.cs.auto | File | 155 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 168 B | 0644 |
|
module.info.de | File | 148 B | 0644 |
|
module.info.de.auto | File | 16 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 362 B | 0644 |
|
module.info.es | File | 38 B | 0644 |
|
module.info.es.auto | File | 157 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 217 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 246 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 168 B | 0644 |
|
module.info.fr | File | 39 B | 0644 |
|
module.info.fr.auto | File | 176 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 205 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 188 B | 0644 |
|
module.info.hu | File | 19 B | 0644 |
|
module.info.hu.auto | File | 173 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 177 B | 0644 |
|
module.info.ja | File | 27 B | 0644 |
|
module.info.ja.auto | File | 213 B | 0644 |
|
module.info.ko | File | 25 B | 0644 |
|
module.info.ko.auto | File | 176 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 219 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 189 B | 0644 |
|
module.info.ms | File | 152 B | 0644 |
|
module.info.ms.auto | File | 16 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 196 B | 0644 |
|
module.info.nl | File | 33 B | 0644 |
|
module.info.nl.auto | File | 133 B | 0644 |
|
module.info.no | File | 31 B | 0644 |
|
module.info.no.auto | File | 137 B | 0644 |
|
module.info.pl | File | 160 B | 0644 |
|
module.info.pl.auto | File | 16 B | 0644 |
|
module.info.pt | File | 39 B | 0644 |
|
module.info.pt.auto | File | 149 B | 0644 |
|
module.info.pt_BR | File | 42 B | 0644 |
|
module.info.pt_BR.auto | File | 155 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 199 B | 0644 |
|
module.info.ru | File | 25 B | 0644 |
|
module.info.ru.auto | File | 245 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 184 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 192 B | 0644 |
|
module.info.sv | File | 30 B | 0644 |
|
module.info.sv.auto | File | 141 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 393 B | 0644 |
|
module.info.tr | File | 27 B | 0644 |
|
module.info.tr.auto | File | 166 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 281 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 304 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 189 B | 0644 |
|
module.info.zh | File | 24 B | 0644 |
|
module.info.zh.auto | File | 136 B | 0644 |
|
module.info.zh_TW | File | 30 B | 0644 |
|
module.info.zh_TW.auto | File | 142 B | 0644 |
|
old-caldera-driver.pl | File | 9.74 KB | 0755 |
|
openbsd-lib.pl | File | 7.26 KB | 0755 |
|
prefs.info | File | 40 B | 0644 |
|
printconf-driver.pl | File | 9.52 KB | 0755 |
|
rbac-mapping | File | 248 B | 0644 |
|
redhat-driver.pl | File | 12.42 KB | 0755 |
|
restart.cgi | File | 301 B | 0755 |
|
save_printer.cgi | File | 5.85 KB | 0755 |
|
solaris-driver.pl | File | 4.03 KB | 0755 |
|
solaris-lib.pl | File | 12.17 KB | 0755 |
|
sortdrivers-by-drv.pl | File | 222 B | 0755 |
|
sortdrivers.pl | File | 242 B | 0755 |
|
start.cgi | File | 377 B | 0755 |
|
stop.cgi | File | 374 B | 0755 |
|
stp | File | 2.45 KB | 0644 |
|
suse-driver.pl | File | 10.62 KB | 0755 |
|
test_form.cgi | File | 887 B | 0755 |
|
test_print.cgi | File | 1.19 KB | 0755 |
|
unixware-lib.pl | File | 7.81 KB | 0755 |
|
view_job.cgi | File | 909 B | 0755 |
|
webmin-driver.pl | File | 1.04 KB | 0755 |
|