print.pl | ||
README.md |
totoro
A simple web interface to line printer daemon (lpd) printing on OpenBSD.
May work on other unixes, or may not.
Installation
These installation instructions assume OpenBSD.
Copy the perl script to the cgi-bin directory:
doas cp print.pl /var/www/cgi-bin/
Perl
Install perl packages:
doas pkg_add p5-Any-URI-Escape p5-YAML p5-Clone
As of this writing, Net::Printer
and URI::Query
are not in openbsd
packages, so we'll install them locally. You may want to check if this has
changed.
To install them locally, first install local::lib
:
doas pkg_add p5-local-lib
Then tell perl to install modules to /var/www/perl5
:
PATH="/var/www/perl5/bin${PATH:+:${PATH}}"; export PATH;
PERL5LIB="/var/www/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL_LOCAL_LIB_ROOT="/var/www/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/var/www/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/var/www/perl5"; export PERL_MM_OPT;
Then install dependencies:
perl -MCPAN -e "use local::lib '/var/www/perl5'; install Net::Printer;"
perl -MCPAN -e "use local::lib '/var/www/perl5'; install URI::Query;"
Daemons
Set up httpd and slowcgi:
NOTE: these instructions set up httpd and slowcgi without chroot. Probably it can be made to work in a chroot.
Add to /etc/httpd.conf
:
chroot "/"
logdir "/var/www/logs"
server "totoro" {
listen on * port 80
root "/var/www/htdocs"
# cgi
location "/" {
fastcgi socket "/var/www/run/slowcgi.sock"
root "/var/www/cgi-bin/print.pl"
}
location "/" {
root "/var/www/print.pl"
fastcgi socket "/var/www/run/slowcgi.sock"
}
}
Set daemon flags and start:
$ doas rcctl set slowcgi flags "-p /"
$ doas rcctl enable httpd slowcgi
$ doas rcctl start httpd slowcgi
If your printer is not already set up yet, read up on lpd(8) and printcap(5).
Usage
Place any jobs files into /var/www/jobs
.
Visit the web interface in a web browser.