📄 save_printer.cgi
字号:
#!/usr/local/bin/perl# save_printer.cgi# Create or modify a printerrequire './lpadmin-lib.pl';&ReadParse();&error_setup($text{'save_err'});# Check ACLif ($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('ctype')) { $prn{'banner'} = $in{'banner'}; 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); $prn{'ctype'} = \@ctype; }$prn{'default'} = $in{'default'};if (&printer_support('msize') && !$in{'msize_def'}) { $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 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'}) || &error(&text('save_efile', $in{'file'})); $prn{'dev'} = $in{'file'}; $prn{'iface'} = &$dfunc(\%prn, $drv); } elsif ($in{'dest'} == 2) { # printing to a unix host gethostbyname($in{'rhost'}) || &error(&text('save_erhost', $in{'rhost'})); $in{'rqueue'} =~ /^[A-z0-9\-\_\.]+$/ || &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'}); } $prn{'iface'} = &$dfunc(\%prn, $drv); } elsif ($in{'dest'} == 3) { # printing to windows $sdrv = { 'server' => $in{'server'}, 'share' => $in{'share'}, 'user' => $in{'user'}, 'pass' => $in{'pass'}, 'workgroup' => $in{'wgroup'}, 'program' => &$dfunc(\%prn, $drv) }; $prn{'iface'} = $in{'webmin'} ? &create_webmin_windows_driver(\%prn, $sdrv) : &create_windows_driver(\%prn, $sdrv); $prn{'dev'} = "/dev/null"; } 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"; } }# Create the printerif ($in{'new'}) { &create_printer(\%prn); }else { &modify_printer(\%prn); }# Update ACLif ($in{'new'} && $access{'printers'} ne '*') { $access{'printers'} .= " ".$in{'name'}; &save_module_acl(\%access); }&redirect("");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -