diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..7814122 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,13 @@ +Code of Conduct +=============== + +My goal is to provide quality open source software that everyone can use. +While I may not be able to address every request or accept every contribution +to this project, I will do my best to develop and maintain it for the common +good. As part of the open source community, I expect everyone to: + +- Be friendly and patient. +- Be respectful, even if we disagree. +- Be honest. +- Be accepting of all people. +- Fully explain your concerns, issues, or ideas. diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md index 78f1fe9..308f1e2 100644 --- a/DOCUMENTATION.md +++ b/DOCUMENTATION.md @@ -2,7 +2,7 @@ LPrint Documentation ==================== LPrint v1.3.0 - Month DD, 2023 -Copyright 2019-2023 by Michael R Sweet +Copyright 2019-2024 by Michael R Sweet LPrint is licensed under the Apache License Version 2.0. See the files "LICENSE" and "NOTICE" for more information. @@ -27,7 +27,9 @@ Overview LPrint is a label printer application for macOS® and Linux®. I wrote it in response to criticism that coming changes in CUPS will leave users of label -printers in the cold - see Apple CUPS Github issue #5271. +printers in the cold - see [Apple CUPS Github issue #5271][APPLE5271]. + +[APPLE5271]: https://github.com/apple/cups/issues/5271 Basically, LPrint is a print spooler optimized for label printing. It accepts "raw" print data as well as PNG images (like those used for shipping labels by @@ -38,14 +40,15 @@ rather than starting and stopping like CUPS does to support a wider variety of printers. LPrint supports the full range of options and features supported by the -embedded drivers - currently most DYMO and Zebra EPL2/ZPL label printers. -Whenever possible, LPrint will auto-detect the make and model of your printer -and its installed capabilities. And you can configure the default values of all -options as well as manually configure the media that is loaded in each printer. +embedded drivers - currently most DYMO, Seiko, TSPL, and Zebra EPL2/ZPL label +printers. Whenever possible, LPrint will auto-detect the make and model of your +printer and its installed capabilities. And you can configure the default +values of all options as well as manually configure the media that is loaded in +each printer. -LPrint also offers a simple network server mode that makes any label printers +LPrint also offers a simple network server mode that makes your label printers appear as IPP Everywhere™/AirPrint™/Mopria™ printers on your network. Thus, any -Android™, Chrome OS™, iOS®, Linux, macOS, or Windows 10/11 client can use any +Android™, Chrome OS™, iOS®, Linux®, macOS®, or Windows® 10/11 client can use any label printer supported by LPrint. And you can, of course, send jobs from LPrint to an LPrint server on the network. @@ -67,7 +70,7 @@ it and start the server: sudo snap start lprint.lprint-server A package file is included with all source releases on Github for use on macOS -10.14 and higher for both Intel and Apple Silicon. +11 and higher for both Intel and Apple Silicon. If you need to install LPrint from source, you'll need a "make" program, a C99 compiler (Clang and GCC work), the CUPS developer files, and the PAPPL developer @@ -269,7 +272,8 @@ control the server operation: - "-o admin-group=GROUP": Specifies a group to use for remote authentication. - "-o auth-service=SERVICE": Specifies a PAM service for remote authentication. - "-o listen-hostname=HOSTNAME": Sets the network hostname to resolve for listen - addresses - "*" for the wildcard addresses. + addresses - "*" for the wildcard addresses, "localhost" to only listen for + local print requests. - "-o log-file=FILENAME": Specifies a log file. - "-o log-file=-": Specifies that log entries are written to the standard error. - "-o log-file=syslog": Specifies that log entries are sent to the system log. diff --git a/README.md b/README.md index 7cf9056..0f1670c 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,11 @@ The following printers are currently supported: - Zebra/Eltron EPL2 printers - Zebra ZPL printers +Additional drivers for Brother PT/QL, Zebra CPCL, Zebra/Eltron EPL1, and +Intellitech Intellibar (PCL) printers can be enabled using the +`--enable-experimental` configure option, however they are untested and/or +not fully functional. + Others will be added as time and access to printers permits. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..b28a819 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,132 @@ +Security Policy +=============== + +This file describes how security issues are reported and handled, and what the +expectations are for security issues reported to this project. + + +Reporting a Security Bug +------------------------ + +For the purposes of this project, a security bug is a software defect that +allows a *local or remote user* to gain unauthorized access or privileges on the +host computer or to cause the software to crash. Such defects should be +reported to the project security advisory page at +. + +Alternately, security bugs can be reported to "security AT msweet.org" using the +PGP public key below. Expect a response within 5 business days. Any proposed +embargo date should be at least 30 days and no more than 90 days in the future. + +> *Note:* If you've found a software defect that allows a *program* to gain +> unauthorized access or privileges on the host computer or causes the program +> to crash, that defect should be reported as an ordinary project issue at +> . + + +Responsible Disclosure +---------------------- + +With *responsible disclosure*, a security issue (and its fix) is disclosed only +after a mutually-agreed period of time (the "embargo date"). The issue and fix +are shared amongst and reviewed by the key stakeholders (Linux distributions, +OS vendors, etc.) and the CERT/CC. Fixes are released to the public on the +agreed-upon date. + +> Responsible disclosure applies only to production releases. A security +> vulnerability that only affects unreleased code can be fixed immediately +> without coordination. Vendors *should not* package and release unstable +> snapshots, beta releases, or release candidates of this software. + + +Supported Versions +------------------ + +All production releases of this software are subject to this security policy. A +production release is tagged and given a semantic version number of the form: + + MAJOR.MINOR.PATCH + +where "MAJOR" is an integer starting at 1 and "MINOR" and "PATCH" are integers +starting at 0. A feature release has a "PATCH" value of 0, for example: + + 1.0.0 + 1.1.0 + 2.0.0 + +Beta releases and release candidates are *not* prodution releases and use +semantic version numbers of the form: + + MAJOR.MINORbNUMBER + MAJOR.MINORrcNUMBER + +where "MAJOR" and "MINOR" identify the new feature release version number and +"NUMBER" identifies a beta or release candidate number starting at 1, for +example: + + 1.0b1 + 1.0b2 + 1.0rc1 + + +PGP Public Key +-------------- + +The following PGP public key can be used for signing security messages. + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: GPGTools - https://gpgtools.org + +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 +WkiKlA== +=0GzT +-----END PGP PUBLIC KEY BLOCK----- +```