cups server and terminal app
authorKilian Saffran <ksaffran@dks.lu>
Wed, 10 Apr 2019 18:14:27 +0000 (20:14 +0200)
committerKilian Saffran <ksaffran@dks.lu>
Wed, 10 Apr 2019 18:14:27 +0000 (20:14 +0200)
32 files changed:
css/app.css
img/cashbox_KhGn.ico [new file with mode: 0644]
install/server/bluetooth.sh [new file with mode: 0644]
install/server/cups/classes.conf [new file with mode: 0644]
install/server/cups/cups-browsed.conf [new file with mode: 0644]
install/server/cups/cups-files.conf [new file with mode: 0644]
install/server/cups/cups-pdf.conf [new file with mode: 0644]
install/server/cups/cupsd.conf [new file with mode: 0644]
install/server/cups/cupsd.conf.O [new file with mode: 0644]
install/server/cups/ppd/EPSON_TM-T20II.ppd [new file with mode: 0644]
install/server/cups/ppd/EPSON_TM-T20II.ppd.O [new file with mode: 0644]
install/server/cups/ppd/PDF.ppd [new file with mode: 0644]
install/server/cups/ppd/PDF.ppd.O [new file with mode: 0644]
install/server/cups/printers.conf [new file with mode: 0644]
install/server/cups/printers.conf.O [new file with mode: 0644]
install/server/cups/raw.convs [new file with mode: 0644]
install/server/cups/raw.types [new file with mode: 0644]
install/server/cups/snmp.conf [new file with mode: 0644]
install/server/cups/ssl/raspberrypi.fritz.box.crt [new file with mode: 0644]
install/server/cups/ssl/raspberrypi.fritz.box.key [new file with mode: 0644]
install/server/cups/ssl/server.crt [new file with mode: 0644]
install/server/cups/ssl/server.key [new file with mode: 0644]
install/server/cups/subscriptions.conf [new file with mode: 0644]
install/server/cups/subscriptions.conf.O [new file with mode: 0644]
install/server/epson-tm-t20-cups.tar.gz [new file with mode: 0644]
install/server/install.sh [new file with mode: 0644]
install/server/pdfcashbox.pdf [new file with mode: 0644]
install/server/samba.sh [new file with mode: 0644]
modules/paywindow/index.html
modules/paywindow/index.js
package-lock.json
package.json

index 7da579b..2dab298 100644 (file)
@@ -53,6 +53,10 @@ select.form-control {
     background-image: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='24' height='24' viewBox='0 0 24 24'><path fill='#444' d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'></path></svg>");
     background-position: 100% 50%;
     background-repeat: no-repeat;
+    padding-top: 10px;
+    height: 45px;
+    padding-bottom: 10px;
+    font-size: 18px;
 }
 
 select.bg-primary, select.bg-primary:hover, select.bg-primary:active  {
@@ -71,4 +75,15 @@ input.right {
 
 .card {
 margin: 10px;
+}
+
+option {
+  font-size: 20px;
+  padding-top: 5px;
+  padding-bottom: 5px;
+}
+
+.btn {
+  min-height: 50px;
+  min-width: 50px;
 }
\ No newline at end of file
diff --git a/img/cashbox_KhGn.ico b/img/cashbox_KhGn.ico
new file mode 100644 (file)
index 0000000..03e7d13
Binary files /dev/null and b/img/cashbox_KhGn.ico differ
diff --git a/install/server/bluetooth.sh b/install/server/bluetooth.sh
new file mode 100644 (file)
index 0000000..665bf2f
--- /dev/null
@@ -0,0 +1,46 @@
+   87  apt-get install pi-bluetooth
+   88  bluetoothctl
+   89  sudo apt-get install bluetooth bluez blueman
+   90  sudo apt-get install bluetooth bluez
+   91  apt-get install bluez-cups
+   92  apt-get install bluetooth
+   93  systemctl status bluetooth
+   94  systemctl start bluetooth
+   95  systemctl status bluetooth
+   96  systemctl enable bluetooth
+   97  systemctl restart bluetooth
+   98  shutdown -r now
+   99  bluetoothctl
+  100  bluetoothctl
+  101  bluetoothctl
+  102  cd /etc/bluetooth/
+  103  ls
+  104  hciconfig
+  105  cat /etc/bluetooth/main.conf
+  106  hciconfig hci0 class
+  107  vim.tiny main.conf
+  108  vi /etc/bluetooth/main.conf
+  109  vi /etc/bluetooth/main.conf
+  110  vi /etc/bluetooth/main.conf
+  111  cd /etc/bluetooth/
+  112  ls
+  113  ls -al
+  114  rm .main.conf.swp
+  115  cat main.conf
+  116  systemctl daemon-reload
+  117  service bluetooth restart
+  118  hciconfig -a
+  119  bluetoothctl
+  120  apt-get install bluez bluez-utils obexftp
+  121  apt-get install bluez obexftp
+  122  sdptool browse
+  123  hcitool scan
+  124  hcitool
+  125  hcitool dev
+  126  vi main.conf
+  127  vi main.conf
+  128  vim.tiny main.conf
+  129  systemctl daemon-reload
+  130  service bluetooth restart
+  131  bluetoothctl
+  132  hciconfig -a
diff --git a/install/server/cups/classes.conf b/install/server/cups/classes.conf
new file mode 100644 (file)
index 0000000..57c07f7
--- /dev/null
@@ -0,0 +1,3 @@
+# Class configuration file for CUPS v2.2.1
+# Written by cupsd
+# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
diff --git a/install/server/cups/cups-browsed.conf b/install/server/cups/cups-browsed.conf
new file mode 100644 (file)
index 0000000..249f4c8
--- /dev/null
@@ -0,0 +1,452 @@
+# All configuration options described here can also be supplied on the
+# command line of cups-browsed via the "-o" option. In case of
+# contradicting settings the setting defined in the configuration file
+# will get used.
+
+# Unknown directives are ignored, also unknown values.
+
+
+# Where should cups-browsed save information about the print queues it had
+# generated when shutting down, like whether one of these queues was the
+# default printer, or default option settings of the queues?
+
+# CacheDir /var/cache/cups
+
+
+# Where should cups-browsed create its debug log file (if "DebugLogging file"
+# is set)?
+
+# LogDir /var/log/cups
+
+
+# How should debug logging be done? Into the file
+# /var/log/cups/cups-browsed_log ('file'), to stderr ('stderr'), or
+# not at all ('none')?
+
+# DebugLogging file
+# DebugLogging stderr
+# DebugLogging file stderr
+# DebugLogging none
+
+
+# Which protocols will we use to discover printers on the network?
+# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.
+
+BrowseRemoteProtocols dnssd cups
+
+
+# Which protocols will we use to broadcast shared local printers to the network?
+# Can use DNSSD and/or CUPS, or 'none' for neither.
+# Only CUPS is actually supported, as DNSSD is done by CUPS itself (we ignore
+# DNSSD in this directive).
+
+# BrowseLocalProtocols none
+
+
+# Settings of this directive apply to both BrowseRemoteProtocols and
+# BrowseLocalProtocols.
+# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.
+
+# BrowseProtocols none
+
+
+# Only browse remote printers (via DNS-SD or CUPS browsing) from
+# selected servers using the "BrowseAllow", "BrowseDeny", and
+# "BrowseOrder" directives
+
+# This serves for restricting the choice of printers in print dialogs
+# to trusted servers or to reduce the number of listed printers in the
+# print dialogs to a more user-friendly amount in large networks with
+# very many shared printers.
+
+# This only filters the selection of remote printers for which
+# cups-browsed creates local queues. If the print dialog uses other
+# mechanisms to list remote printers as for example direct DNS-SD
+# access, cups-browsed has no influence. cups-browsed also does not
+# prevent the user from manually accessing non-listed printers.
+
+# "BrowseAllow": Accept printers from these hosts or networks. If
+# there are only "BrowseAllow" lines and no "BrowseOrder" and/or
+# "BrowseDeny" lines, only servers matching at last one "BrowseAllow"
+# line are accepted.
+
+# "BrowseDeny": Deny printers from these hosts or networks. If there
+# are only "BrowseDeny" lines and no "BrowseOrder" and/or
+# "BrowseAllow" lines, all servers NOT matching any of the
+# "BrowseDeny" lines are accepted.
+
+# "BrowseOrder": Determine the order in which "BrowseAllow" and
+# "BrowseDeny" lines are applied. With "BrowseOrder Deny,Allow" in the
+# beginning all servers are accepted, then the "BrowseDeny" lines are
+# applied to exclude unwished servers or networks and after that the
+# "BrowseAllow" lines to re-include servers or networks. With
+# "BrowseOrder Allow,Deny" we start with denying all servers, then
+# applying the "BrowseAllow" lines and afterwards the "BrowseDeny"
+# lines.
+
+# Default for "BrowseOrder" is "Deny.Allow" if there are both
+# "BrowseAllow" and "BrowseDeny" lines.
+
+# If there are no "Browse..." lines at all, all servers are accepted.
+
+# BrowseAllow All
+# BrowseAllow cups.example.com
+# BrowseAllow 192.168.1.12
+# BrowseAllow 192.168.1.0/24
+# BrowseAllow 192.168.1.0/255.255.255.0
+
+# BrowseDeny All
+# BrowseDeny printserver.example.com
+# BrowseDeny 192.168.1.13
+# BrowseDeny 192.168.3.0/24
+# BrowseDeny 192.168.3.0/255.255.255.0
+
+# BrowseOrder Deny,Allow
+# BrowseOrder Allow,Deny
+
+
+# The interval between browsing/broadcasting cycles, local and/or
+# remote, can be adjusted with the BrowseInterval directive.
+
+# BrowseInterval 60
+
+
+# Browsing-related operations such as adding or removing printer queues
+# and broadcasting are each allowed to take up to a given amount of time.
+# It can be configured, in seconds, with the BrowseTimeout directive.
+# Especially queues discovered by CUPS broadcasts will be removed after
+# this timeout if no further broadcast from the server happens.
+
+# BrowseTimeout 300
+
+
+# Filtering of remote printers by other properties than IP addresses
+# of their servers
+
+# Often the desired selection of printers cannot be reached by only
+# taking into account the IP addresses of the servers. For these cases
+# there is the BrowseFilter directive to filter by most of the known
+# properties of the printer.
+
+# By default there is no BrowseFilter line meaning that no filtering
+# is applied.
+
+# To do filtering one can supply one or more BrowseFilter directives
+# like this:
+
+# BrowseFilter [NOT] [EXACT] <FIELD> [<VALUE>]
+
+# The BrowseFilter directive always starts with the word
+# "BrowseFilter" and it must at least contain the name of the data
+# field (<FIELD>) of the printer's properties to which it should
+# apply.
+
+# Available field names are:
+
+#   name:    Name of the local print queue to be created
+#   host:    Host name of the remote print server
+#   port:    Port through which the printer is accessed on the server
+#   service: DNS/SD service name of the remote printer
+#   domain:  Domain of the remote print server
+
+# Also all field names in the TXT records of DNS-SD-advertised printers
+# are valid, like "color", "duplex", "pdl", ... If the field name of
+# the filter rule does not exist for the printer, the rule is skipped.
+
+# The optional <VALUE> field is either the exact value (when the
+# option EXACT is supplied) or a regular expression (Run "man 7 regex"
+# in a terminal window) to be matched with the data field.
+
+# If no <VALUE> filed is supplied, rules with field names of the TXT
+# record are considered for boolean matching (true/false) of boolean
+# field (like duplex, which can have the values "T" for true and "F"
+# for false).
+
+# If the option NOT is supplied, the filter rule is fulfilled if the
+# regular expression or the exact value DOES NOT match the content of
+# the data field. In a boolean rule (without <VALUE>) the rule matches
+# false.
+
+# Regular expressions are always considered case-insensitive and
+# extended POSIX regular expressions. Field names and options (NOT,
+# EXACT) are all evaluated case-insensitive. If there is an error in a
+# regular expression, the BrowseFilter line gets ignored.
+
+# Especially to note is that supplying any simple string consisting of
+# only letters, numbers, spaces, and some basic special characters as
+# a regular expression matches if it is contained somewhere in the
+# data field.
+
+# If there is more than one BrowseFilter directive, ALL the directives
+# need to be fulfilled for the remote printer to be accepted. If one
+# is not fulfilled, the printer will get ignored.
+
+# Examples:
+
+# Rules for standard data items which are supplied with any remote
+# printer advertised via DNS-SD:
+
+# Print queue name must contain "hum_res_", this matches
+# "hum_res_mono" or "hum_res_color" but also "old_hum_res_mono":
+
+# BrowseFilter name hum_res_
+
+# This matches if the remote host name contains "printserver", like
+# "printserver.local", "printserver2.example.com", "newprintserver":
+
+# BrowseFilter host printserver
+
+# This matches all ports with 631 int its number, for example 631,
+# 8631, 10631,...:
+
+# BrowseFilter port 631
+
+# This rule matches if the DNS-SD service name contains "@ printserver":
+
+# Browsefilter service @ printserver
+
+# Matches all domains with "local" in their names, not only "local" but
+# also things like "printlocally.com":
+
+# BrowseFilter domain local
+
+# Examples for rules applying to items of the TXT record:
+
+# This rule selects PostScript printers, as the "PDL" field in the TXT
+# record contains "postscript" then. This includes also remote CUPS
+# queues which accept PostScript, independent of whether the physical
+# printer behind the CUPS queue accepts PostScript or not.
+
+# BrowseFilter pdl postscript
+
+# Color printers usually contain a "Color" entry set to "T" (for true)
+# in the TXT record. This rule selects them:
+
+# BrowseFilter color
+
+# This is a similar rule to select only duplex (automatic double-sided
+# printing) printers:
+
+# BrowseFilter duplex
+
+# Rules with the NOT option:
+
+# This rule EXCLUDES printers from all hosts containing "financial" in
+# their names, nice to get rid of the 100s of printers of the
+# financial department:
+
+# BrowseFilter NOT host financial
+
+# Get only monochrome printers ("Color" set to "F", meaning false, in
+# the TXT record):
+
+# BrowseFilter NOT color
+
+# Rules with more advanced use of regular expressions:
+
+# Only queue names which BEGIN WITH "hum_res_" are accepted now, so we
+# still get "hum_res_mono" or "hum_res_color" but not
+# "old_hum_res_mono" any more:
+
+# BrowseFilter name ^hum_res_
+
+# Server names is accepted if it contains "print_server" OR
+# "graphics_dep_server":
+
+# BrowseFilter host print_server|graphics_dep_server
+
+# "printserver1", "printserver2", and "printserver3", nothing else:
+
+# BrowseFilter host ^printserver[1-3]$
+
+# Printers understanding at least one of PostScript, PCL, or PDF:
+
+# BrowseFilter pdl postscript|pcl|pdf
+
+# Examples for the EXACT option:
+
+# Only printers from "printserver.local" are accepted:
+
+# BrowseFilter EXACT host printserver.local
+
+# Printers from all servers except "prinserver2.local" are accepted:
+
+# BrowseFilter NOT EXACT host prinserver2.local
+
+
+# Use BrowsePoll to poll a particular CUPS server
+
+# BrowsePoll cups.example.com
+# BrowsePoll cups.example.com:631
+# BrowsePoll cups.example.com:631/version=1.1
+
+
+# LDAP browsing configuration
+# The default value for all options is an empty string. Example configuration:
+
+# BrowseLDAPBindDN cn=cups-browsed,dc=domain,dc=tld
+# BrowseLDAPCACertFile /path/to/server/certificate.pem
+# BrowseLDAPDN ou=printers,dc=domain,dc=tld
+# BrowseLDAPFilter (printerLocation=/Office 1/*)
+# BrowseLDAPPassword s3cret
+# BrowseLDAPServer ldaps://ldap.domain.tld
+
+
+# Use DomainSocket to access the local CUPS daemon via another than the
+# default domain socket. "None" or "Off" lets cups-browsed not use CUPS'
+# domain socket.
+
+# DomainSocket /var/run/cups/cups.sock
+# DomainSocket None
+# DomainSocket Off
+
+
+# Set IPBasedDeviceURIs to "Yes" if cups-browsed should create its
+# local queues with device URIs with the IP addresses instead of the
+# host names of the remote servers. This mode is there for any
+# problems with host name resolution in the network, especially also
+# if avahi-daemon is only run for printer discovery and already
+# stopped while still printing. By default this mode is turned off,
+# meaning that we use URIs with host names.
+
+# If you prefer IPv4 or IPv6 IP addresses in the URIs, you can set
+# IPBasedDeviceURIs to "IPv4" to only get IPv4 IP addresses or
+# IPBasedDeviceURIs to "IPv6" to only get IPv6 IP addresses.
+
+# IPBasedDeviceURIs No
+# IPBasedDeviceURIs Yes
+# IPBasedDeviceURIs IPv4
+# IPBasedDeviceURIs IPv6
+
+
+# Set CreateRemoteRawPrinterQueues to "Yes" to let cups-browsed also
+# create local queues pointing to remote raw CUPS queues. Normally,
+# only queues pointing to remote queues with PPD/driver are created
+# as we do not use drivers on the client side, but in some cases
+# accessing a remote raw queue can make sense, for example if the
+# queue forwards the jobs by a special backend like Tea4CUPS.
+
+# CreateRemoteRawPrinterQueues Yes
+
+
+# Set CreateIPPPrinterQueues to "Yes" to let cups-browsed discover IPP
+# network printers (native printers, not CUPS queues) with known page
+# description languages (PWG Raster, PDF, PostScript, PCL XL, PCL
+# 5c/e) in the local network and auto-create PPD-less print queues for
+# them (using a System V interface script to control the filter
+# chain). Clients have to IPP-poll the capabilities of the printer and
+# send option settings as standard IPP attributes. We do not poll the
+# capabilities by ourselves to not wake up the printer from
+# power-saving mode when creating the queues. Jobs have to be sent in
+# one of PDF, PWG Raster, or JPEG format. Other formats are not
+# accepted. This functionality is primarily for mobile devices running
+# CUPS to not need a printer setup tool nor a collection of printer
+# drivers and PPDs.
+
+# CreateIPPPrinterQueues Yes
+
+
+# If cups-browsed is automatically creating print queues for native
+# IPP network printers ("CreateIPPPrinterQueues Yes"), the type of
+# queue to be created can be selected by the "IPPPrinterQueueType"
+# directive. The "PPD" (default) setting makes queues with PPD file
+# being created. With "Interface" or "NoPPD" the queue is created with
+# a System V interface script (Not supported with CUPS 2.2.x or
+# later). "Auto" is for backward compatibility and also lets queues
+# with PPD get created.
+
+# IPPPrinterQueueType PPD
+# IPPPrinterQueueType NoPPD
+# IPPPrinterQueueType Interface
+# IPPPrinterQueueType Auto
+
+
+# The LoadBalancing directive switches between two methods of handling
+# load balancing between equally-named remote queues which are
+# represented by one local print queue making up a cluster of them
+# (implicit class).
+
+# The two methods are:
+
+# Queuing of jobs on the client (LoadBalancing QueueOnClient):
+
+# Here we queue up the jobs on the client and regularly check the
+# clustered remote print queues. If we find an idle queue, we pass
+# on a job to it.
+
+# This is also the method which CUPS uses for classes. Advantage is a
+# more even distribution of the job workload on the servers
+# (especially if the printing speed of the servers is very different),
+# and if a server fails, there are not several jobs stuck or
+# lost. Disadvantage is that if one takes the client (laptop, mobile
+# phone, ...) out of the local network, printing stops with the jobs
+# waiting in the local queue.
+
+# Queuing of jobs on the servers (LoadBalancing QueueOnServers):
+
+# Here we check the number of jobs on each of the clustered remote
+# printers and send an incoming job immediately to the remote printer
+# with the lowest amount of jobs in its queue. This way no jobs queue
+# up locally, all jobs which are waiting are waiting on one of the
+# remote servers.
+
+# Not having jobs waiting locally has the advantage that we can take
+# the local machine from the network and all jobs get printed.
+# Disadvantage is that if a server with a full queue of jobs goes
+# away, the jobs go away, too.
+
+# Default is queuing the jobs on the client as this is what CUPS does
+# with classes.
+
+# LoadBalancing QueueOnClient
+# LoadBalancing QueueOnServers
+
+
+# With the DefaultOptions directive one or more option settings can be
+# defined to be applied to every print queue newly created by
+# cups-browsed. Each option is supplied as one supplies options with
+# the "-o" command line argument to the "lpadmin" command (Run "man
+# lpadmin" for more details). More than one option can be supplied
+# separating the options by spaces. By default no option settings are
+# pre-defined.
+
+# Note that print queues which cups-browsed already created before
+# remember their previous settings and so these settings do not get
+# applied.
+
+# DefaultOptions Option1=Value1 Option2=Value2 Option3 noOption4
+
+
+# The AutoShutdown directive specifies whether cups-browsed should
+# automatically terminate when it has no local raw queues set up
+# pointing to any discovered remote printers or no jobs on such queues
+# depending on AutoShutdownOn setting (auto shutdown mode). Setting it
+# to "On" activates the auto-shutdown mode, setting it to "Off"
+# deactiivates it (the default). The special mode "avahi" turns auto
+# shutdown off while avahi-daemon is running and on when avahi-daemon
+# stops. This allows running cups-browsed on-demand when avahi-daemon
+# is run on-demand.
+
+# AutoShutdown Off
+# AutoShutdown On
+# AutoShutdown avahi
+
+
+# The AutoShutdownOn directive determines what event cups-browsed
+# considers as inactivity in auto shutdown mode. "NoQueues" (the
+# default) means that auto shutdown is initiated when there are no
+# queues for discovered remote printers generated by cups-browsed any
+# more. "NoJobs" means that all queues generated by cups-browsed are
+# without jobs.
+
+# AutoShutdownOn NoQueues
+# AutoShutdownOn NoJobs
+
+
+# The AutoShutdownTimeout directive specifies after how many seconds
+# without local raw queues set up pointing to any discovered remote
+# printers or jobs on these queues cups-browsed should actually shut
+# down in auto shutdown mode. Default is 30 seconds, 0 means immediate
+# shutdown.
+
+# AutoShutdownTimeout 30
diff --git a/install/server/cups/cups-files.conf b/install/server/cups/cups-files.conf
new file mode 100644 (file)
index 0000000..d03a378
--- /dev/null
@@ -0,0 +1,93 @@
+#
+# File/directory/user/group configuration file for the CUPS scheduler.
+# See "man cups-files.conf" for a complete description of this file.
+#
+
+# List of events that are considered fatal errors for the scheduler...
+#FatalErrors config
+
+# Do we call fsync() after writing configuration or status files?
+#SyncOnClose Yes
+
+# Default user and group for filters/backends/helper programs; this cannot be
+# any user or group that resolves to ID 0 for security reasons...
+#User lp
+#Group lp
+
+# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
+# This cannot contain the Group value for security reasons...
+SystemGroup lpadmin
+
+
+# User that is substituted for unauthenticated (remote) root accesses...
+#RemoteRoot remroot
+
+# Do we allow file: device URIs other than to /dev/null?
+#FileDevice No
+
+# Permissions for configuration and log files...
+#ConfigFilePerm 0640
+#LogFilePerm 00640
+
+# Location of the file logging all access to the scheduler; may be the name
+# "syslog". If not an absolute path, the value of ServerRoot is used as the
+# root directory.  Also see the "AccessLogLevel" directive in cupsd.conf.
+AccessLog /var/log/cups/access_log
+
+# Location of cache files used by the scheduler...
+#CacheDir /var/cache/cups
+
+# Location of data files used by the scheduler...
+#DataDir /usr/share/cups
+
+# Location of the static web content served by the scheduler...
+#DocumentRoot /usr/share/cups/doc-root
+
+# Location of the file logging all messages produced by the scheduler and any
+# helper programs; may be the name "syslog". If not an absolute path, the value
+# of ServerRoot is used as the root directory.  Also see the "LogLevel"
+# directive in cupsd.conf.
+ErrorLog /var/log/cups/error_log
+
+# Location of fonts used by older print filters...
+#FontPath /usr/share/cups/fonts
+
+# Location of LPD configuration
+#LPDConfigFile 
+
+# Location of the file logging all pages printed by the scheduler and any
+# helper programs; may be the name "syslog". If not an absolute path, the value
+# of ServerRoot is used as the root directory.  Also see the "PageLogFormat"
+# directive in cupsd.conf.
+PageLog /var/log/cups/page_log
+
+# Location of the file listing all of the local printers...
+#Printcap /var/run/cups/printcap
+
+# Format of the Printcap file...
+#PrintcapFormat bsd
+#PrintcapFormat plist
+#PrintcapFormat solaris
+
+# Location of all spool files...
+#RequestRoot /var/spool/cups
+
+# Location of helper programs...
+#ServerBin /usr/lib/cups
+
+# SSL/TLS keychain for the scheduler...
+#ServerKeychain ssl
+
+# Location of other configuration files...
+#ServerRoot /etc/cups
+
+# Location of Samba configuration file...
+#SMBConfigFile 
+
+# Location of scheduler state files...
+#StateDir /var/run/cups
+
+# Location of scheduler/helper temporary files. This directory is emptied on
+# scheduler startup and cannot be one of the standard (public) temporary
+# directory locations for security reasons...
+#TempDir /var/spool/cups/tmp
diff --git a/install/server/cups/cups-pdf.conf b/install/server/cups/cups-pdf.conf
new file mode 100644 (file)
index 0000000..a107760
--- /dev/null
@@ -0,0 +1,289 @@
+#  cups-pdf.conf -- CUPS Backend Configuration (version 2.6.1, 2011-10-04)
+#  18.09.2005, Volker C. Behr
+#  Experimentelle Physik V, Universitaet Wuerzburg 
+#  behr@physik.uni-wuerzburg.de
+#  http://www.cups-pdf.de
+#
+#
+#  This code may be freely distributed as long as this header 
+#  is preserved. Changes to the code should be clearly indicated.   
+#
+#  This code is distributed under the GPL.
+#  (http://www.gnu.org/copyleft/gpl.html)
+#
+#  For more detailed licensing information see cups-pdf.c in the 
+#  corresponding version number.                                    
+
+###########################################################################
+#                                                                        #
+# This is the configuration file for CUPS-PDF. Values that are not set in #
+# here will use the defaults. Changes take effect immediately without the #
+# need for restarting any services.                                      #
+#                                                                        #
+# Take care not to add whitespaces at the end of a line!                 #
+#                                                                        #
+###########################################################################
+
+
+###########################################################################
+#                                                                        #
+# Path Settings                                                                  #
+#                                                                        #
+###########################################################################
+
+### Key: Out
+##  CUPS-PDF output directory 
+##  special qualifiers: 
+##     ${HOME} will be expanded to the user's home directory
+##     ${USER} will be expanded to the user name
+##  in case it is an NFS export make sure it is exported without
+##  root_squash!
+##  on Ubuntu, the cupsd AppArmor profile needs to be updated 
+##  to match the output path as per instructions in LP:147551
+### Default: /var/spool/cups-pdf/${USER}
+
+Out ${HOME}/PDF
+
+### Key: AnonDirName
+##  ABSOLUTE path for anonymously created PDF files
+##  if anonymous access is disabled this setting has no effect
+### Default: /var/spool/cups-pdf/ANONYMOUS
+
+#AnonDirName /var/spool/cups-pdf/ANONYMOUS
+
+### Key: Spool
+##  CUPS-PDF spool directory - make sure there is no user 'SPOOL' on your
+##  system or change the path  
+### Default: /var/spool/cups-pdf/SPOOL
+
+#Spool /var/spool/cups-pdf/SPOOL
+
+
+###########################################################################
+#                                                                        #
+# Filename Settings                                                      #
+#                                                                        #
+###########################################################################
+
+### Key: Truncate
+##  truncate long filenames to a maximum of <Truncate> characters
+##  this does not consider the full path to the output but only the filename
+##  without the .pdf-extension or a job-id prefix (see 'Label')
+##  the minimal value is 8
+### Default: 64
+
+#Truncate 64
+
+### Key: Cut
+##  removing file name extensions before appending .pdf to output
+##  extensions will only be removed if _both_ the following criteria are met:
+##   - the extension (w/o the dot) is not longer than <Cut> characters
+##   - the remaining filename has a minimal length of 1 character
+##  set Cut to -1 in order to disable cutting
+##  recommended values: pure UNIX environment : -1
+##                      mixed environments    :  3
+### Default: 3
+
+#Cut 3
+
+### Key: Label
+##  label all jobs with a unique job-id in order to avoid overwriting old
+##  files in case new ones with identical names are created; always true for
+##  untitled documents
+##  0: label untitled documents only
+##  1: label all documents with a preceeding "job_#-"
+##  2: label all documents with a tailing "-job_#"
+### Default: 0
+
+#Label 0
+
+### Key: TitlePref
+##  where to look first for a title when creating the output filename
+##  (title in PS file or title on commandline):
+##  0: prefer title from %Title statement in the PS file
+##  1: prefer title passed via commandline 
+### Default: 0
+
+#TitlePref 0
+
+
+###########################################################################
+#                                                                        #
+# User Settings                                                                  #
+#                                                                        #
+###########################################################################
+
+### Key: AnonUser
+##  uid for anonymous PDF creation (this might be a security issue)
+##  this setting has no influence on AnonDirName (see there)
+##  set this to an empty value to disable anonymous
+### Default: nobody
+
+#AnonUser nobody
+
+### Key: LowerCase
+##  This options allows to check user names given to CUPS-PDF additionally 
+##  against their lower case variants. This is necessary since in some 
+##  Windows environments only upper case user names are passed. Usually UNIX
+##  user names are all lower case and it is save to use this option  
+##  but be aware that it can lead to mis-identifications in case
+##  you have user names that differ only in upper/lower case.
+##     check only against user name as passed to CUPS  : 0
+##     check additionally against lower case user name : 1
+### Default: 1
+
+#LowerCase 1
+
+### Key: UserPrefix
+##  some installations require a domain prefix added to the user name
+##  leave empty for no prefix 
+### Default: <empty>
+
+#UserPrefix
+
+### Key: DirPrefix
+##  if a prefix was defined above this switch toggels whether to include
+##  the prefix in the output directory's name (if not $HOME) or not
+##  0: do not include, 1: include
+### Default: 0
+
+#DirPrefix 0
+
+### Key: RemovePrefix
+##  some installation pass usernames with a prefix (usually a domain name)
+##  if you do not want this prefix to be used by the ${USER} variable for
+##  output directories put the part which is to be cut here
+### Default: <empty>
+
+#RemovePrefix
+
+
+###########################################################################
+#                                                                        #
+# Security Settings                                                      #
+#                                                                        #
+###########################################################################
+
+### Key: AnonUMask
+##  umask for anonymous output
+##  these are the _inverse_ permissions to be granted
+### Default: 0000
+
+#AnonUMask 0000
+
+### Key: UserUMask
+##  umask for user output of known users
+##  changing this can introduce security leaks if confidential
+##  information is processed!
+### Default: 0077
+
+#UserUMask 0077
+
+### Key: Grp
+##  group cups-pdf is supposed to run as - this will also be the gid for all
+##  created directories and log files
+### Default: lp
+
+Grp lpadmin
+
+
+###########################################################################
+#                                                                        #
+# Log Settings                                                           #
+#                                                                        #
+###########################################################################
+
+### Key: Log
+##  CUPS-PDF log directory 
+##  set this to an empty value to disable all logging
+### Default: /var/log/cups
+
+#Log /var/log/cups
+
+### Key: LogType
+##  log-mode 
+##  1: errors
+##  2: status (i.e. activity)
+##  4: debug - this will generate a lot of log-output!
+##  add up values to combine options, i.e. 7 is full logging
+##  if logging is disabled these setting have no effect
+### Default: 3
+
+#LogType 3
+
+
+###########################################################################
+#                                                                        #
+# PDF Conversion Settings                                                #
+#                                                                        #
+###########################################################################
+
+### Key: GhostScript
+##  location of GhostScript binary (gs) 
+##  MacOSX: for using pstopdf (recommended) set this to /usr/bin/pstopdf
+##          or its proper location on your system
+### Default: /usr/bin/gs
+
+#GhostScript /usr/bin/gs
+
+### Key: GSTmp
+##  location of temporary files during GhostScript operation 
+##  this must be user-writable like /var/tmp or /tmp ! 
+### Default: /var/tmp
+
+#GSTmp /var/tmp
+
+### Key: GSCall
+## command line for calling GhostScript (!!! DO NOT USE NEWLINES !!!)
+## MacOSX: for using pstopdf set this to %s %s -o %s %s
+### Default: %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s
+
+#GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s
+
+### Key: PDFVer
+##  PDF version to be created - can be "1.5", "1.4", "1.3" or "1.2" 
+##  MacOSX: for using pstopdf set this to an empty value
+### Default: 1.4
+
+#PDFVer 1.4
+
+### Key: PostProcessing
+##  postprocessing script that will be called after the creation of the PDF
+##  as arguments the filename of the PDF, the username as determined by 
+##  CUPS-PDF and the one as given to CUPS-PDF will be passed
+##  the script will be called with user privileges
+##  set this to an empty value to use no postprocessing
+### Default: <empty>
+
+#PostProcessing 
+
+
+###########################################################################
+#                                                                         #
+# Experimental Settings                                                   #
+#   These settings activate experimental options. If you decide to use    #
+#   them I would appreciate any feedback - including an 'ok' if they      #
+#   work as expected - so I can eventually put them into the non-         #
+#   experimental sections.                                               #
+#                                                                         #
+###########################################################################
+
+### Key: DecodeHexStrings
+##  this option will try to decode hex strings in the title to allow
+##  internationalized titles
+##  (have a look at contrib/pstitleconv for a suitable filter for data
+##   from Windows clients)
+##  0: disable, 1: enable
+### Default: 0
+
+DecodeHexStrings 1
+
+### Key: FixNewlines
+##  this option will try to fix various unusal line delimiters (e.g.
+##  form feeds)
+##  especially useful when using non-Linux-generated files
+##  0: disable, 1: enable
+### Default: 0
+
+#FixNewlines 0
+
diff --git a/install/server/cups/cupsd.conf b/install/server/cups/cupsd.conf
new file mode 100644 (file)
index 0000000..69d6133
--- /dev/null
@@ -0,0 +1,94 @@
+LogLevel warn
+PageLogFormat
+MaxLogSize 0
+Port 631
+Listen /var/run/cups/cups.sock
+Browsing On
+BrowseLocalProtocols dnssd
+DefaultAuthType Basic
+WebInterface Yes
+<Location />
+  Order allow,deny
+  Allow All
+</Location>
+<Location /admin>
+  Order allow,deny
+  Allow All
+</Location>
+<Location /admin/conf>
+  AuthType Default
+  Require user @SYSTEM
+  Order allow,deny
+  Allow All
+</Location>
+<Location /admin/log>
+  AuthType Default
+  Require user @SYSTEM
+  Order allow,deny
+  Allow All
+</Location>
+<Policy default>
+  JobPrivateAccess default
+  JobPrivateValues default
+  SubscriptionPrivateAccess default
+  SubscriptionPrivateValues default
+  <Limit Create-Job Print-Job Print-URI Validate-Job>
+    Order deny,allow
+  </Limit>
+  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit Cancel-Job CUPS-Authenticate-Job>
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit All>
+    Order deny,allow
+  </Limit>
+</Policy>
+<Policy authenticated>
+  JobPrivateAccess default
+  JobPrivateValues default
+  SubscriptionPrivateAccess default
+  SubscriptionPrivateValues default
+  <Limit Create-Job Print-Job Print-URI Validate-Job>
+    AuthType Default
+    Order deny,allow
+  </Limit>
+  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
+    AuthType Default
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit Cancel-Job CUPS-Authenticate-Job>
+    AuthType Default
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+  <Limit All>
+    Order deny,allow
+  </Limit>
+</Policy>
+PreserveJobFiles Yes
+PreserveJobHistory Yes
diff --git a/install/server/cups/cupsd.conf.O b/install/server/cups/cupsd.conf.O
new file mode 100644 (file)
index 0000000..4bffb0c
--- /dev/null
@@ -0,0 +1,145 @@
+#
+# Configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
+# complete description of this file.
+#
+
+# Log general information in error_log - change "warn" to "debug"
+# for troubleshooting...
+LogLevel warn
+PageLogFormat
+
+# Deactivate CUPS' internal logrotating, as we provide a better one, especially
+# LogLevel debug2 gets usable now
+MaxLogSize 0
+
+# Only listen for connections from the local machine.
+#Listen localhost:631
+Port 631
+Listen /var/run/cups/cups.sock
+
+# Show shared printers on the local network.
+Browsing On
+BrowseLocalProtocols dnssd
+
+# Default authentication type, when authentication is required...
+DefaultAuthType Basic
+
+# Web interface setting...
+WebInterface Yes
+
+# Restrict access to the server...
+<Location />
+  Order allow,deny
+  Allow All
+</Location>
+
+# Restrict access to the admin pages...
+<Location /admin>
+  Order allow,deny
+  Allow All
+</Location>
+
+# Restrict access to configuration files...
+<Location /admin/conf>
+  AuthType Default
+  Require user @SYSTEM
+  Order allow,deny
+  Allow All
+</Location>
+
+# Restrict access to log files...
+<Location /admin/log>
+  AuthType Default
+  Require user @SYSTEM
+  Order allow,deny
+  Allow All
+</Location>
+
+# Set the default printer/job policies...
+<Policy default>
+  # Job/subscription privacy...
+  JobPrivateAccess default
+  JobPrivateValues default
+  SubscriptionPrivateAccess default
+  SubscriptionPrivateValues default
+
+  # Job-related operations must be done by the owner or an administrator...
+  <Limit Create-Job Print-Job Print-URI Validate-Job>
+    Order deny,allow
+  </Limit>
+
+  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  # All administration operations require an administrator to authenticate...
+  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  # All printer operations require a printer operator to authenticate...
+  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  # Only the owner or an administrator can cancel or authenticate a job...
+  <Limit Cancel-Job CUPS-Authenticate-Job>
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  <Limit All>
+    Order deny,allow
+  </Limit>
+</Policy>
+
+# Set the authenticated printer/job policies...
+<Policy authenticated>
+  # Job/subscription privacy...
+  JobPrivateAccess default
+  JobPrivateValues default
+  SubscriptionPrivateAccess default
+  SubscriptionPrivateValues default
+
+  # Job-related operations must be done by the owner or an administrator...
+  <Limit Create-Job Print-Job Print-URI Validate-Job>
+    AuthType Default
+    Order deny,allow
+  </Limit>
+
+  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
+    AuthType Default
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  # All administration operations require an administrator to authenticate...
+  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  # All printer operations require a printer operator to authenticate...
+  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
+    AuthType Default
+    Require user @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  # Only the owner or an administrator can cancel or authenticate a job...
+  <Limit Cancel-Job CUPS-Authenticate-Job>
+    AuthType Default
+    Require user @OWNER @SYSTEM
+    Order deny,allow
+  </Limit>
+
+  <Limit All>
+    Order deny,allow
+  </Limit>
+</Policy>
diff --git a/install/server/cups/ppd/EPSON_TM-T20II.ppd b/install/server/cups/ppd/EPSON_TM-T20II.ppd
new file mode 100644 (file)
index 0000000..7ad2760
--- /dev/null
@@ -0,0 +1,117 @@
+*PPD-Adobe:             "4.3"
+*FormatVersion:         "4.3"
+*FileVersion:           "1.1"
+*LanguageVersion:       English
+*LanguageEncoding:      ISOLatin1
+*PCFileName:            "tm20.ppd"
+*Manufacturer:          "Epson"
+*Product:               "(TM-T20)"
+*1284DeviceID:          "MFG:Epson;CMD:Epson;MDL:TMT20;CLS:PRINTER;"
+*cupsVersion:           1.1
+*cupsManualCopies:      True
+*cupsModelNumber:       20
+*cupsFilter:            "application/vnd.cups-raster 0 rastertozj"
+*ModelName:             "TM-T20"
+*ShortNickName:         "TM-T20"
+*NickName:              "Epson TM-T20"
+*PSVersion:             "(3010.000) 550"
+*LanguageLevel:         "3"
+*ColorDevice:           False
+*DefaultColorSpace:     Gray
+*FileSystem:            False
+*Throughput:            "1"
+*LandscapeOrientation:  Plus90
+*VariablePaperSize:     True
+*TTRasterizer:          Type42
+
+*OpenUI *PageSize/Media Size: PickOne
+*OrderDependency: 10 AnySetup *PageSize
+*DefaultPageSize: X80MMY210MM
+
+*PageSize X80MMY64MM/80mm x 74mm:         "<</PageSize[226 181]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageSize X80MMY210MM/80mm x 210mm:         "<</PageSize[226 595]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageSize X80MMY297MM/80mm x 297mm:         "<</PageSize[226 842]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageSize X80MMY3276MM/80mm x 3276mm:       "<</PageSize[226 9286]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+
+*CloseUI: *PageSize
+
+*OpenUI *PageRegion: PickOne
+*OrderDependency: 10 AnySetup *PageRegion
+*DefaultPageRegion: X80MMY210MM
+
+*PageRegion X80MMY64MM/80mm x 74mm:         "<</PageSize[226 219]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageRegion X80MMY210MM/80mm x 210mm:         "<</PageSize[226 595]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageRegion X80MMY297MM/80mm x 297mm:         "<</PageSize[226 842]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageRegion X80MMY3276MM/80mm x 3276mm:       "<</PageSize[226 9286]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+
+*DefaultImageableArea: X80MMY210MM
+
+*ImageableArea X80MMY64MM:               "0 0 226 181"
+*ImageableArea X80MMY210MM:              "0 0 226 595"
+*ImageableArea X80MMY297MM:              "0 0 226 842"
+*ImageableArea X80MMY3276MM:             "0 0 226 9286"
+
+*DefaultPaperDimension: X80MMY210MM
+
+*PaperDimension X80MMY64MM:              "226 181"
+*PaperDimension X80MMY210MM:             "226 595"
+*PaperDimension X80MMY297MM:             "226 842"
+*PaperDimension X80MMY3276MM:            "226 9286"
+
+*MaxMediaWidth:  "226"
+*MaxMediaHeight: "9286"
+*HWMargins:      0 0 0 0
+*CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*ParamCustomPageSize Width:        1 points 72 226
+*ParamCustomPageSize Height:       2 points 72 9282
+*ParamCustomPageSize WidthOffset:  3 points 0 0
+*ParamCustomPageSize HeightOffset: 4 points 0 0
+*ParamCustomPageSize Orientation:  5 int 0 0
+
+*OpenGroup: CutGroup/Cut Options
+*OpenUI *FeedDist/Feed distance after print: PickOne
+*DefaultFeedDist: 4feed15mm
+*FeedDist 0feed3mm/feed 3mm: ""
+*FeedDist 1feed6mm/feed 6mm: ""
+*FeedDist 2feed9mm/feed 9mm: ""
+*FeedDist 3feed12mm/feed 12mm: ""
+*FeedDist 4feed15mm/feed 15mm: ""
+*FeedDist 5feed18mm/feed 18mm: ""
+*FeedDist 6feed21mm/feed 21mm: ""
+*FeedDist 7feed24mm/feed 24mm: ""
+*FeedDist 8feed27mm/feed 27mm: ""
+*FeedDist 9feed30mm/feed 30mm: ""
+*FeedDist 10feed33mm/feed 33mm: ""
+*FeedDist 11feed36mm/feed 36mm: ""
+*FeedDist 12feed39mm/feed 39mm: ""
+*FeedDist 13feed42mm/feed 42mm: ""
+*FeedDist 14feed45mm/feed 45mm: ""
+*CloseUI: *FeedDist
+
+
+*OpenUI *BlankSpace/Blank space at page's end: PickOne
+*DefaultBlankSpace: 0Print
+*BlankSpace 0Print/Print: ""
+*BlankSpace 1NoPrint/Do not print: ""
+*CloseUI: *BlankSpace
+
+*CloseGroup: *CutGroup
+
+*OpenGroup: *CashDrawerGroup/Cash Drawer Control
+*OpenUI *CashDrawer1Setting/Cash Drawer 1: PickOne
+*DefaultCashDrawer1Setting: 0NotCashDrawer1
+*CashDrawer1Setting 0NotCashDrawer1/Not Cash Drawer 1: ""
+*CashDrawer1Setting 1NotCashDrawer1BeforePrinting/Cash Drawer 1 Before Printing: ""
+*CashDrawer1Setting 2NotCashDrawer1BeforePrinting/Cash Drawer 1 After Printing: ""
+*CloseUI: *CashDrawer1Setting
+
+*OpenUI *CashDrawer2Setting/Cash Drawer 2: PickOne
+*DefaultCashDrawer2Setting: 0NotCashDrawer2
+*CashDrawer2Setting 0NotCashDrawer2/Not Cash Drawer 2: ""
+*CashDrawer2Setting 1NotCashDrawer2BeforePrinting/Cash Drawer 2 Before Printing: ""
+*CashDrawer2Setting 2NotCashDrawer2BeforePrinting/Cash Drawer 2 After Printing: ""
+*CloseUI: *CashDrawer2Setting
+*CloseGroup: *CashDrawerGroup
+
+
+*% End
diff --git a/install/server/cups/ppd/EPSON_TM-T20II.ppd.O b/install/server/cups/ppd/EPSON_TM-T20II.ppd.O
new file mode 100644 (file)
index 0000000..d3026c0
--- /dev/null
@@ -0,0 +1,117 @@
+*PPD-Adobe:             "4.3"
+*FormatVersion:         "4.3"
+*FileVersion:           "1.1"
+*LanguageVersion:       English
+*LanguageEncoding:      ISOLatin1
+*PCFileName:            "tm20.ppd"
+*Manufacturer:          "Epson"
+*Product:               "(TM-T20)"
+*1284DeviceID:          "MFG:Epson;CMD:Epson;MDL:TMT20;CLS:PRINTER;"
+*cupsVersion:           1.1
+*cupsManualCopies:      True
+*cupsModelNumber:       20
+*cupsFilter:            "application/vnd.cups-raster 0 rastertozj"
+*ModelName:             "TM-T20"
+*ShortNickName:         "TM-T20"
+*NickName:              "Epson TM-T20"
+*PSVersion:             "(3010.000) 550"
+*LanguageLevel:         "3"
+*ColorDevice:           False
+*DefaultColorSpace:     Gray
+*FileSystem:            False
+*Throughput:            "1"
+*LandscapeOrientation:  Plus90
+*VariablePaperSize:     True
+*TTRasterizer:          Type42
+
+*OpenUI *PageSize/Media Size: PickOne
+*OrderDependency: 10 AnySetup *PageSize
+*DefaultPageSize: X80MMY64MM
+
+*PageSize X80MMY64MM/80mm x 74mm:         "<</PageSize[226 181]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageSize X80MMY210MM/80mm x 210mm:         "<</PageSize[226 595]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageSize X80MMY297MM/80mm x 297mm:         "<</PageSize[226 842]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageSize X80MMY3276MM/80mm x 3276mm:       "<</PageSize[226 9286]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+
+*CloseUI: *PageSize
+
+*OpenUI *PageRegion: PickOne
+*OrderDependency: 10 AnySetup *PageRegion
+*DefaultPageRegion: X80MMY64MM
+
+*PageRegion X80MMY64MM/80mm x 74mm:         "<</PageSize[226 219]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageRegion X80MMY210MM/80mm x 210mm:         "<</PageSize[226 595]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageRegion X80MMY297MM/80mm x 297mm:         "<</PageSize[226 842]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*PageRegion X80MMY3276MM/80mm x 3276mm:       "<</PageSize[226 9286]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+
+*DefaultImageableArea: X80MMY64MM
+
+*ImageableArea X80MMY64MM:               "0 0 226 181"
+*ImageableArea X80MMY210MM:              "0 0 226 595"
+*ImageableArea X80MMY297MM:              "0 0 226 842"
+*ImageableArea X80MMY3276MM:             "0 0 226 9286"
+
+*DefaultPaperDimension: X80MMY64MM
+
+*PaperDimension X80MMY64MM:              "226 181"
+*PaperDimension X80MMY210MM:             "226 595"
+*PaperDimension X80MMY297MM:             "226 842"
+*PaperDimension X80MMY3276MM:            "226 9286"
+
+*MaxMediaWidth:  "226"
+*MaxMediaHeight: "9286"
+*HWMargins:      0 0 0 0
+*CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/HWResolution[203 203]/ImagingBBox null>>setpagedevice"
+*ParamCustomPageSize Width:        1 points 72 226
+*ParamCustomPageSize Height:       2 points 72 9282
+*ParamCustomPageSize WidthOffset:  3 points 0 0
+*ParamCustomPageSize HeightOffset: 4 points 0 0
+*ParamCustomPageSize Orientation:  5 int 0 0
+
+*OpenGroup: CutGroup/Cut Options
+*OpenUI *FeedDist/Feed distance after print: PickOne
+*DefaultFeedDist: 4feed15mm
+*FeedDist 0feed3mm/feed 3mm: ""
+*FeedDist 1feed6mm/feed 6mm: ""
+*FeedDist 2feed9mm/feed 9mm: ""
+*FeedDist 3feed12mm/feed 12mm: ""
+*FeedDist 4feed15mm/feed 15mm: ""
+*FeedDist 5feed18mm/feed 18mm: ""
+*FeedDist 6feed21mm/feed 21mm: ""
+*FeedDist 7feed24mm/feed 24mm: ""
+*FeedDist 8feed27mm/feed 27mm: ""
+*FeedDist 9feed30mm/feed 30mm: ""
+*FeedDist 10feed33mm/feed 33mm: ""
+*FeedDist 11feed36mm/feed 36mm: ""
+*FeedDist 12feed39mm/feed 39mm: ""
+*FeedDist 13feed42mm/feed 42mm: ""
+*FeedDist 14feed45mm/feed 45mm: ""
+*CloseUI: *FeedDist
+
+
+*OpenUI *BlankSpace/Blank space at page's end: PickOne
+*DefaultBlankSpace: 1NoPrint
+*BlankSpace 0Print/Print: ""
+*BlankSpace 1NoPrint/Do not print: ""
+*CloseUI: *BlankSpace
+
+*CloseGroup: *CutGroup
+
+*OpenGroup: *CashDrawerGroup/Cash Drawer Control
+*OpenUI *CashDrawer1Setting/Cash Drawer 1: PickOne
+*DefaultCashDrawer1Setting: 0NotCashDrawer1
+*CashDrawer1Setting 0NotCashDrawer1/Not Cash Drawer 1: ""
+*CashDrawer1Setting 1NotCashDrawer1BeforePrinting/Cash Drawer 1 Before Printing: ""
+*CashDrawer1Setting 2NotCashDrawer1BeforePrinting/Cash Drawer 1 After Printing: ""
+*CloseUI: *CashDrawer1Setting
+
+*OpenUI *CashDrawer2Setting/Cash Drawer 2: PickOne
+*DefaultCashDrawer2Setting: 0NotCashDrawer2
+*CashDrawer2Setting 0NotCashDrawer2/Not Cash Drawer 2: ""
+*CashDrawer2Setting 1NotCashDrawer2BeforePrinting/Cash Drawer 2 Before Printing: ""
+*CashDrawer2Setting 2NotCashDrawer2BeforePrinting/Cash Drawer 2 After Printing: ""
+*CloseUI: *CashDrawer2Setting
+*CloseGroup: *CashDrawerGroup
+
+
+*% End
diff --git a/install/server/cups/ppd/PDF.ppd b/install/server/cups/ppd/PDF.ppd
new file mode 100644 (file)
index 0000000..be1d370
--- /dev/null
@@ -0,0 +1,385 @@
+*PPD-Adobe: "4.3"
+*%
+*% "$Id: postscript.ppd,v 1.1.1.1 2000/08/24 19:23:13 goffioul Exp $"
+*%
+*%   Sample Postscript driver PPD file for the Common UNIX Printing
+*%   System (CUPS).
+*%
+*%   Michael Goffioul <goffioul@emic.ucl.ac.be>
+*%
+*%   Changes to the original file by Volker Behr, Martin-Eric Racine, 
+*%   Nickolay Kondrashov and other contributors:
+*%   added IEEE-1284 device id     - 2008-03-24
+*%   added custom page size        - 2006-05-18
+*%   replaced page descriptions    - 2006-05-18
+*%   InputSlot constraints removed - 2006-05-11
+*%   maxed out imageable regions   - 2006-05-11
+*%   added pstitleiconv filter     - 2006-05-11
+*%   added ledger paper size       - 2006-01-29
+*%   match Adobe specifications    - 2005-12-23
+*%   additional paper formats      - 2005-02-03 and 2005-02-07
+*%   made A4 default paper size    - 2005-02-03
+*%   Color enabled                 - 2003-12-02
+*%
+*FormatVersion:        "4.3"
+*FileVersion:  "1.1"
+*LanguageVersion: English
+*LanguageEncoding: ISOLatin1
+*PCFileName:   "CUPS-PDF.PPD"
+*Manufacturer: "Generic"
+*Product:      "(CUPS v1.1)"
+*ModelName:     "Generic CUPS-PDF Printer"
+*ShortNickName: "Generic CUPS-PDF Printer"
+*NickName:      "Generic CUPS-PDF Printer"
+*1284DeviceID:  "MFG:Generic;MDL:CUPS-PDF Printer;DES:Generic CUPS-PDF Printer;CLS:PRINTER;CMD:POSTSCRIPT;"
+*% cupsFilter:    "application/vnd.cups-postscript 0 pstitleiconv"
+*PSVersion:    "(2017.000) 0"
+*LanguageLevel:        "2"
+*ColorDevice:  True
+*DefaultColorSpace: RGB
+*FileSystem:   False
+*Throughput:   "8"
+*LandscapeOrientation: Plus90
+*TTRasterizer: Type42
+
+*HWMargins: 0 0 0 0
+*VariablePaperSize: True
+*MaxMediaWidth: 100000
+*MaxMediaHeight: 100000
+*NonUIOrderDependency: 100 AnySetup *CustomPageSize
+*CustomPageSize True: "pop pop pop
+<</PageSize [ 5 -2 roll ] /ImagingBBox null>>setpagedevice"
+*End
+*ParamCustomPageSize Width: 1 points 36 100000
+*ParamCustomPageSize Height: 2 points 36 100000
+*ParamCustomPageSize Orientation: 3 int 0 3
+*ParamCustomPageSize WidthOffset: 4 points 0 0
+*ParamCustomPageSize HeightOffset: 5 points 0 0
+
+*OpenGroup: General/General
+
+*OpenUI *PageSize/Page Size: PickOne
+*OrderDependency: 100 AnySetup *PageSize
+*DefaultPageSize: A4
+*PageSize 11x14/11x14: "<</PageSize[792 1008]/ImagingBBox null>>setpagedevice"
+*PageSize 11x17/11x17: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageSize 13x19/13x19: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageSize 16x20/16x20: "<</PageSize[1152 1440]/ImagingBBox null>>setpagedevice"
+*PageSize 16x24/16x24: "<</PageSize[1152 1728]/ImagingBBox null>>setpagedevice"
+*PageSize 2A/2A: "<</PageSize[3370 4768]/ImagingBBox null>>setpagedevice"
+*PageSize 4A/4A: "<</PageSize[4768 6749]/ImagingBBox null>>setpagedevice"
+*PageSize 8x10/8x10: "<</PageSize[576 720]/ImagingBBox null>>setpagedevice"
+*PageSize 8x12/8x12: "<</PageSize[576 864]/ImagingBBox null>>setpagedevice"
+*PageSize A0/A0: "<</PageSize[2384 3370]/ImagingBBox null>>setpagedevice"
+*PageSize A1/A1: "<</PageSize[1684 2384]/ImagingBBox null>>setpagedevice"
+*PageSize A2/A2: "<</PageSize[1191 1684]/ImagingBBox null>>setpagedevice"
+*PageSize A3/A3: "<</PageSize[842 1191]/ImagingBBox null>>setpagedevice"
+*PageSize A4/A4: "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"
+*PageSize A5/A5: "<</PageSize[421 595]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiA/ANSI A: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiB/ANSI B: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiC/ANSI C: "<</PageSize[1224 1584]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiD/ANSI D: "<</PageSize[1584 2448]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiE/ANSI E: "<</PageSize[2448 3168]/ImagingBBox null>>setpagedevice"
+*PageSize ArchA/Arch A: "<</PageSize[648 864]/ImagingBBox null>>setpagedevice"
+*PageSize ArchB/Arch B: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageSize ArchC/Arch C: "<</PageSize[1296 1728]/ImagingBBox null>>setpagedevice"
+*PageSize ArchD/Arch D: "<</PageSize[1728 2592]/ImagingBBox null>>setpagedevice"
+*PageSize ArchE/Arch E: "<</PageSize[2592 3456]/ImagingBBox null>>setpagedevice"
+*PageSize C0/C0: "<</PageSize[2599 3676]/ImagingBBox null>>setpagedevice"
+*PageSize C1/C1: "<</PageSize[1836 2599]/ImagingBBox null>>setpagedevice"
+*PageSize C2/C2: "<</PageSize[1298 1836]/ImagingBBox null>>setpagedevice"
+*PageSize C3/C3: "<</PageSize[918 1298]/ImagingBBox null>>setpagedevice"
+*PageSize C4/C4: "<</PageSize[649 918]/ImagingBBox null>>setpagedevice"
+*PageSize C5/C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageSize Env10/Envelope #10: "<</PageSize[297 684]/ImagingBBox null>>setpagedevice"
+*PageSize EnvC5/Envelope C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageSize EnvDL/Envelope DL: "<</PageSize[312 624]/ImagingBBox null>>setpagedevice"
+*PageSize EnvMonarch/Envelope Monarch: "<</PageSize[279 540]/ImagingBBox null>>setpagedevice"
+*PageSize Executive/Executive: "<</PageSize[522 756]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB0/B0 (ISO): "<</PageSize[2834 4008]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB1/B1 (ISO): "<</PageSize[2004 2834]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB2/B2 (ISO): "<</PageSize[1417 2004]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB3/B3 (ISO): "<</PageSize[1000 1417]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB4/B4 (ISO): "<</PageSize[708 1000]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB5/B5 (ISO): "<</PageSize[498 708]/ImagingBBox null>>setpagedevice"
+*PageSize JISB0/B0 (JIS): "<</PageSize[2919 4127]/ImagingBBox null>>setpagedevice"
+*PageSize JISB1/B1 (JIS): "<</PageSize[2063 2919]/ImagingBBox null>>setpagedevice"
+*PageSize JISB2/B2 (JIS): "<</PageSize[1459 2063]/ImagingBBox null>>setpagedevice"
+*PageSize JISB3/B3 (JIS): "<</PageSize[1029 1459]/ImagingBBox null>>setpagedevice"
+*PageSize JISB4/B4 (JIS): "<</PageSize[727 1029]/ImagingBBox null>>setpagedevice"
+*PageSize JISB5/B5 (JIS): "<</PageSize[518 727]/ImagingBBox null>>setpagedevice"
+*PageSize Ledger/Ledger: "<</PageSize[1224 792]/ImagingBBox null>>setpagedevice"
+*PageSize Legal/US Legal: "<</PageSize[612 1008]/ImagingBBox null>>setpagedevice"
+*PageSize Letter/US Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageSize RA0/RA0: "<</PageSize[2437 3458]/ImagingBBox null>>setpagedevice"
+*PageSize RA1/RA1: "<</PageSize[1729 2437]/ImagingBBox null>>setpagedevice"
+*PageSize RA2/RA2: "<</PageSize[1218 1729]/ImagingBBox null>>setpagedevice"
+*PageSize RA3/RA3: "<</PageSize[864 1218]/ImagingBBox null>>setpagedevice"
+*PageSize RA4/RA4: "<</PageSize[609 864]/ImagingBBox null>>setpagedevice"
+*PageSize SRA0/SRA0: "<</PageSize[2551 3628]/ImagingBBox null>>setpagedevice"
+*PageSize SRA1/SRA1: "<</PageSize[1814 2551]/ImagingBBox null>>setpagedevice"
+*PageSize SRA2/SRA2: "<</PageSize[1275 1814]/ImagingBBox null>>setpagedevice"
+*PageSize SRA3/SRA3: "<</PageSize[907 1275]/ImagingBBox null>>setpagedevice"
+*PageSize SRA4/SRA4: "<</PageSize[637 907]/ImagingBBox null>>setpagedevice"
+*PageSize SuperA/Super A: "<</PageSize[644 1008]/ImagingBBox null>>setpagedevice"
+*PageSize SuperB/Super B: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageSize TabloidExtra/Tabloid Extra: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageSize Tabloid/Tabloid: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*CloseUI: *PageSize
+
+*OpenUI *PageRegion: PickOne
+*OrderDependency: 100 AnySetup *PageRegion
+*DefaultPageRegion: A4
+*PageRegion 11x14/11x14: "<</PageSize[792 1008]/ImagingBBox null>>setpagedevice"
+*PageRegion 11x17/11x17: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageRegion 13x19/13x19: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageRegion 16x20/16x20: "<</PageSize[1152 1440]/ImagingBBox null>>setpagedevice"
+*PageRegion 16x24/16x24: "<</PageSize[1152 1728]/ImagingBBox null>>setpagedevice"
+*PageRegion 2A/2A: "<</PageSize[3370 4768]/ImagingBBox null>>setpagedevice"
+*PageRegion 4A/4A: "<</PageSize[4768 6749]/ImagingBBox null>>setpagedevice"
+*PageRegion 8x10/8x10: "<</PageSize[576 720]/ImagingBBox null>>setpagedevice"
+*PageRegion 8x12/8x12: "<</PageSize[576 864]/ImagingBBox null>>setpagedevice"
+*PageRegion A0/A0: "<</PageSize[2384 3370]/ImagingBBox null>>setpagedevice"
+*PageRegion A1/A1: "<</PageSize[1684 2384]/ImagingBBox null>>setpagedevice"
+*PageRegion A2/A2: "<</PageSize[1191 1684]/ImagingBBox null>>setpagedevice"
+*PageRegion A3/A3: "<</PageSize[842 1191]/ImagingBBox null>>setpagedevice"
+*PageRegion A4/A4: "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"
+*PageRegion A5/A5: "<</PageSize[421 595]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiA/ANSI A: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiB/ANSI B: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiC/ANSI C: "<</PageSize[1224 1584]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiD/ANSI D: "<</PageSize[1584 2448]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiE/ANSI E: "<</PageSize[2448 3168]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchA/Arch A: "<</PageSize[648 864]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchB/Arch B: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchC/Arch C: "<</PageSize[1296 1728]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchD/Arch D: "<</PageSize[1728 2592]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchE/Arch E: "<</PageSize[2592 3456]/ImagingBBox null>>setpagedevice"
+*PageRegion C0/C0: "<</PageSize[2599 3676]/ImagingBBox null>>setpagedevice"
+*PageRegion C1/C1: "<</PageSize[1836 2599]/ImagingBBox null>>setpagedevice"
+*PageRegion C2/C2: "<</PageSize[1298 1836]/ImagingBBox null>>setpagedevice"
+*PageRegion C3/C3: "<</PageSize[918 1298]/ImagingBBox null>>setpagedevice"
+*PageRegion C4/C4: "<</PageSize[649 918]/ImagingBBox null>>setpagedevice"
+*PageRegion C5/C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageRegion Env10/Envelope #10: "<</PageSize[297 684]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvC5/Envelope C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvDL/Envelope DL: "<</PageSize[312 624]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvMonarch/Envelope Monarch: "<</PageSize[279 540]/ImagingBBox null>>setpagedevice"
+*PageRegion Executive/Executive: "<</PageSize[522 756]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB0/B0 (ISO): "<</PageSize[2834 4008]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB1/B1 (ISO): "<</PageSize[2004 2834]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB2/B2 (ISO): "<</PageSize[1417 2004]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB3/B3 (ISO): "<</PageSize[1000 1417]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB4/B4 (ISO): "<</PageSize[708 1000]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB5/B5 (ISO): "<</PageSize[498 708]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB0/B0 (JIS): "<</PageSize[2919 4127]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB1/B1 (JIS): "<</PageSize[2063 2919]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB2/B2 (JIS): "<</PageSize[1459 2063]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB3/B3 (JIS): "<</PageSize[1029 1459]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB4/B4 (JIS): "<</PageSize[727 1029]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB5/B5 (JIS): "<</PageSize[518 727]/ImagingBBox null>>setpagedevice"
+*PageRegion Ledger/Ledger: "<</PageSize[1224 792]/ImagingBBox null>>setpagedevice"
+*PageRegion Legal/US Legal: "<</PageSize[612 1008]/ImagingBBox null>>setpagedevice"
+*PageRegion Letter/US Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageRegion RA0/RA0: "<</PageSize[2437 3458]/ImagingBBox null>>setpagedevice"
+*PageRegion RA1/RA1: "<</PageSize[1729 2437]/ImagingBBox null>>setpagedevice"
+*PageRegion RA2/RA2: "<</PageSize[1218 1729]/ImagingBBox null>>setpagedevice"
+*PageRegion RA3/RA3: "<</PageSize[864 1218]/ImagingBBox null>>setpagedevice"
+*PageRegion RA4/RA4: "<</PageSize[609 864]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA0/SRA0: "<</PageSize[2551 3628]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA1/SRA1: "<</PageSize[1814 2551]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA2/SRA2: "<</PageSize[1275 1814]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA3/SRA3: "<</PageSize[907 1275]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA4/SRA4: "<</PageSize[637 907]/ImagingBBox null>>setpagedevice"
+*PageRegion SuperA/Super A: "<</PageSize[644 1008]/ImagingBBox null>>setpagedevice"
+*PageRegion SuperB/Super B: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageRegion TabloidExtra/Tabloid Extra: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageRegion Tabloid/Tabloid: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*CloseUI: *PageRegion
+
+*DefaultImageableArea: A4
+*ImageableArea 11x14/11x14: "0 0 792 1008"
+*ImageableArea 11x17/11x17: "0 0 792 1224"
+*ImageableArea 13x19/13x19: "0 0 936 1368"
+*ImageableArea 16x20/16x20: "0 0 1152 1440"
+*ImageableArea 16x24/16x24: "0 0 1152 1728"
+*ImageableArea 2A/2A: "0 0 3370 4768"
+*ImageableArea 4A/4A: "0 0 4768 6749"
+*ImageableArea 8x10/8x10: "0 0 576 720"
+*ImageableArea 8x12/8x12: "0 0 576 864"
+*ImageableArea A0/A0: "0 0 2384 3370"
+*ImageableArea A1/A1: "0 0 1684 2384"
+*ImageableArea A2/A2: "0 0 1191 1684"
+*ImageableArea A3/A3: "0 0 842 1191"
+*ImageableArea A4/A4: "0 0 595 842"
+*ImageableArea A5/A5: "0 0 421 595"
+*ImageableArea AnsiA/ANSI A: "0 0 612 792"
+*ImageableArea AnsiB/ANSI B: "0 0 792 1224"
+*ImageableArea AnsiC/ANSI C: "0 0 1224 1584"
+*ImageableArea AnsiD/ANSI D: "0 0 1584 2448"
+*ImageableArea AnsiE/ANSI E: "0 0 2448 3168"
+*ImageableArea ArchA/Arch A: "0 0 648 864"
+*ImageableArea ArchB/Arch B: "0 0 864 1296"
+*ImageableArea ArchC/Arch C: "0 0 1296 1728"
+*ImageableArea ArchD/Arch D: "0 0 1728 2592"
+*ImageableArea ArchE/Arch E: "0 0 2592 3456"
+*ImageableArea C0/C0: "0 0 2599 3676"
+*ImageableArea C1/C1: "0 0 1836 2599"
+*ImageableArea C2/C2: "0 0 1298 1836"
+*ImageableArea C3/C3: "0 0 918 1298"
+*ImageableArea C4/C4: "0 0 649 918"
+*ImageableArea C5/C5: "0 0 459 649"
+*ImageableArea Env10/Envelope #10: "0 0 297 684"
+*ImageableArea EnvC5/Envelope C5: "0 0 459 649"
+*ImageableArea EnvDL/Envelope DL: "0 0 312 624"
+*ImageableArea EnvMonarch/Envelope Monarch: "0 0 279 540"
+*ImageableArea Executive/Executive: "0 0 522 756"
+*ImageableArea ISOB0/B0 (ISO): "0 0 2834 4008"
+*ImageableArea ISOB1/B1 (ISO): "0 0 2004 2834"
+*ImageableArea ISOB2/B2 (ISO): "0 0 1417 2004"
+*ImageableArea ISOB3/B3 (ISO): "0 0 1000 1417"
+*ImageableArea ISOB4/B4 (ISO): "0 0 708 1000"
+*ImageableArea ISOB5/B5 (ISO): "0 0 498 708"
+*ImageableArea JISB0/B0 (JIS): "0 0 2919 4127"
+*ImageableArea JISB1/B1 (JIS): "0 0 2063 2919"
+*ImageableArea JISB2/B2 (JIS): "0 0 1459 2063"
+*ImageableArea JISB3/B3 (JIS): "0 0 1029 1459"
+*ImageableArea JISB4/B4 (JIS): "0 0 727 1029"
+*ImageableArea JISB5/B5 (JIS): "0 0 518 727"
+*ImageableArea Ledger/Ledger: "0 0 1224 792"
+*ImageableArea Legal/US Legal: "0 0 612 1008"
+*ImageableArea Letter/US Letter: "0 0 612 792"
+*ImageableArea RA0/RA0: "0 0 2437 3458"
+*ImageableArea RA1/RA1: "0 0 1729 2437"
+*ImageableArea RA2/RA2: "0 0 1218 1729"
+*ImageableArea RA3/RA3: "0 0 864 1218"
+*ImageableArea RA4/RA4: "0 0 609 864"
+*ImageableArea SRA0/SRA0: "0 0 2551 3628"
+*ImageableArea SRA1/SRA1: "0 0 1814 2551"
+*ImageableArea SRA2/SRA2: "0 0 1275 1814"
+*ImageableArea SRA3/SRA3: "0 0 907 1275"
+*ImageableArea SRA4/SRA4: "0 0 637 907"
+*ImageableArea SuperA/Super A: "0 0 644 1008"
+*ImageableArea SuperB/Super B: "0 0 936 1368"
+*ImageableArea TabloidExtra/Tabloid Extra: "0 0 864 1296"
+*ImageableArea Tabloid/Tabloid: "0 0 792 1224"
+
+*DefaultPaperDimension: A4
+*PaperDimension 11x14/11x14: "792 1008"
+*PaperDimension 11x17/11x17: "792 1224"
+*PaperDimension 13x19/13x19: "936 1368"
+*PaperDimension 16x20/16x20: "1152 1440"
+*PaperDimension 16x24/16x24: "1152 1728"
+*PaperDimension 2A/2A: "3370 4768"
+*PaperDimension 4A/4A: "4768 6749"
+*PaperDimension 8x10/8x10: "576 720"
+*PaperDimension 8x12/8x12: "576 864"
+*PaperDimension A0/A0: "2384 3370"
+*PaperDimension A1/A1: "1684 2384"
+*PaperDimension A2/A2: "1191 1684"
+*PaperDimension A3/A3: "842 1191"
+*PaperDimension A4/A4: "595 842"
+*PaperDimension A5/A5: "421 595"
+*PaperDimension AnsiA/ANSI A: "612 792"
+*PaperDimension AnsiB/ANSI B: "792 1224"
+*PaperDimension AnsiC/ANSI C: "1224 1584"
+*PaperDimension AnsiD/ANSI D: "1584 2448"
+*PaperDimension AnsiE/ANSI E: "2448 3168"
+*PaperDimension ArchA/Arch A: "648 864"
+*PaperDimension ArchB/Arch B: "864 1296"
+*PaperDimension ArchC/Arch C: "1296 1728"
+*PaperDimension ArchD/Arch D: "1728 2592"
+*PaperDimension ArchE/Arch E: "2592 3456"
+*PaperDimension C0/C0: "2599 3676"
+*PaperDimension C1/C1: "1836 2599"
+*PaperDimension C2/C2: "1298 1836"
+*PaperDimension C3/C3: "918 1298"
+*PaperDimension C4/C4: "649 918"
+*PaperDimension C5/C5: "459 649"
+*PaperDimension Env10/Envelope #10: "297 684"
+*PaperDimension EnvC5/Envelope C5: "459 649"
+*PaperDimension EnvDL/Envelope DL: "312 624"
+*PaperDimension EnvMonarch/Envelope Monarch: "279 540"
+*PaperDimension Executive/Executive: "522 756"
+*PaperDimension ISOB0/B0 (ISO): "2834 4008"
+*PaperDimension ISOB1/B1 (ISO): "2004 2834"
+*PaperDimension ISOB2/B2 (ISO): "1417 2004"
+*PaperDimension ISOB3/B3 (ISO): "1000 1417"
+*PaperDimension ISOB4/B4 (ISO): "708 1000"
+*PaperDimension ISOB5/B5 (ISO): "498 708"
+*PaperDimension JISB0/B0 (JIS): "2919 4127"
+*PaperDimension JISB1/B1 (JIS): "2063 2919"
+*PaperDimension JISB2/B2 (JIS): "1459 2063"
+*PaperDimension JISB3/B3 (JIS): "1029 1459"
+*PaperDimension JISB4/B4 (JIS): "727 1029"
+*PaperDimension JISB5/B5 (JIS): "518 727"
+*PaperDimension Ledger/Ledger: "1224 792"
+*PaperDimension Legal/US Legal: "612 1008"
+*PaperDimension Letter/US Letter: "612 792"
+*PaperDimension RA0/RA0: "2437 3458"
+*PaperDimension RA1/RA1: "1729 2437"
+*PaperDimension RA2/RA2: "1218 1729"
+*PaperDimension RA3/RA3: "864 1218"
+*PaperDimension RA4/RA4: "609 864"
+*PaperDimension SRA0/SRA0: "2551 3628"
+*PaperDimension SRA1/SRA1: "1814 2551"
+*PaperDimension SRA2/SRA2: "1275 1814"
+*PaperDimension SRA3/SRA3: "907 1275"
+*PaperDimension SRA4/SRA4: "637 907"
+*PaperDimension SuperA/Super A: "644 1008"
+*PaperDimension SuperB/Super B: "936 1368"
+*PaperDimension TabloidExtra/Tabloid Extra: "864 1296"
+*PaperDimension Tabloid/Tabloid: "792 1224"
+
+*OpenUI *Resolution/Output Resolution: PickOne
+*OrderDependency: 100 AnySetup *Resolution
+*DefaultResolution: 300dpi
+*Resolution 150dpi/150 DPI: "<</HWResolution[150 150]>>setpagedevice"
+*Resolution 300dpi/300 DPI: "<</HWResolution[300 300]>>setpagedevice"
+*Resolution 600dpi/600 DPI: "<</HWResolution[600 600]>>setpagedevice"
+*Resolution 1200dpi/1200 DPI: "<</HWResolution[1200 1200]>>setpagedevice"
+*Resolution 2400dpi/2400 DPI: "<</HWResolution[2400 2400]>>setpagedevice"
+*CloseUI: *Resolution
+
+*CloseGroup: General
+
+*DefaultFont: Courier
+*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM
+*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM
+*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM
+*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM
+*Font Bookman-Demi: Standard "(001.004S)" Standard ROM
+*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM
+*Font Bookman-Light: Standard "(001.004S)" Standard ROM
+*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM
+*Font Courier: Standard "(002.004S)" Standard ROM
+*Font Courier-Bold: Standard "(002.004S)" Standard ROM
+*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM
+*Font Courier-Oblique: Standard "(002.004S)" Standard ROM
+*Font Helvetica: Standard "(001.006S)" Standard ROM
+*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM
+*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM
+*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM
+*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM
+*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM
+*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM
+*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM
+*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM
+*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM
+*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM
+*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM
+*Font Palatino-Bold: Standard "(001.005S)" Standard ROM
+*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM
+*Font Palatino-Italic: Standard "(001.005S)" Standard ROM
+*Font Palatino-Roman: Standard "(001.005S)" Standard ROM
+*Font Symbol: Special "(001.007S)" Special ROM
+*Font Times-Bold: Standard "(001.007S)" Standard ROM
+*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM
+*Font Times-Italic: Standard "(001.007S)" Standard ROM
+*Font Times-Roman: Standard "(001.007S)" Standard ROM
+*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
+*Font ZapfDingbats: Special "(001.004S)" Standard ROM
+*%
+*% End of "$Id: postscript.ppd,v 1.1.1.1 2000/08/24 19:23:13 goffioul Exp $".
+*%
diff --git a/install/server/cups/ppd/PDF.ppd.O b/install/server/cups/ppd/PDF.ppd.O
new file mode 100644 (file)
index 0000000..be1d370
--- /dev/null
@@ -0,0 +1,385 @@
+*PPD-Adobe: "4.3"
+*%
+*% "$Id: postscript.ppd,v 1.1.1.1 2000/08/24 19:23:13 goffioul Exp $"
+*%
+*%   Sample Postscript driver PPD file for the Common UNIX Printing
+*%   System (CUPS).
+*%
+*%   Michael Goffioul <goffioul@emic.ucl.ac.be>
+*%
+*%   Changes to the original file by Volker Behr, Martin-Eric Racine, 
+*%   Nickolay Kondrashov and other contributors:
+*%   added IEEE-1284 device id     - 2008-03-24
+*%   added custom page size        - 2006-05-18
+*%   replaced page descriptions    - 2006-05-18
+*%   InputSlot constraints removed - 2006-05-11
+*%   maxed out imageable regions   - 2006-05-11
+*%   added pstitleiconv filter     - 2006-05-11
+*%   added ledger paper size       - 2006-01-29
+*%   match Adobe specifications    - 2005-12-23
+*%   additional paper formats      - 2005-02-03 and 2005-02-07
+*%   made A4 default paper size    - 2005-02-03
+*%   Color enabled                 - 2003-12-02
+*%
+*FormatVersion:        "4.3"
+*FileVersion:  "1.1"
+*LanguageVersion: English
+*LanguageEncoding: ISOLatin1
+*PCFileName:   "CUPS-PDF.PPD"
+*Manufacturer: "Generic"
+*Product:      "(CUPS v1.1)"
+*ModelName:     "Generic CUPS-PDF Printer"
+*ShortNickName: "Generic CUPS-PDF Printer"
+*NickName:      "Generic CUPS-PDF Printer"
+*1284DeviceID:  "MFG:Generic;MDL:CUPS-PDF Printer;DES:Generic CUPS-PDF Printer;CLS:PRINTER;CMD:POSTSCRIPT;"
+*% cupsFilter:    "application/vnd.cups-postscript 0 pstitleiconv"
+*PSVersion:    "(2017.000) 0"
+*LanguageLevel:        "2"
+*ColorDevice:  True
+*DefaultColorSpace: RGB
+*FileSystem:   False
+*Throughput:   "8"
+*LandscapeOrientation: Plus90
+*TTRasterizer: Type42
+
+*HWMargins: 0 0 0 0
+*VariablePaperSize: True
+*MaxMediaWidth: 100000
+*MaxMediaHeight: 100000
+*NonUIOrderDependency: 100 AnySetup *CustomPageSize
+*CustomPageSize True: "pop pop pop
+<</PageSize [ 5 -2 roll ] /ImagingBBox null>>setpagedevice"
+*End
+*ParamCustomPageSize Width: 1 points 36 100000
+*ParamCustomPageSize Height: 2 points 36 100000
+*ParamCustomPageSize Orientation: 3 int 0 3
+*ParamCustomPageSize WidthOffset: 4 points 0 0
+*ParamCustomPageSize HeightOffset: 5 points 0 0
+
+*OpenGroup: General/General
+
+*OpenUI *PageSize/Page Size: PickOne
+*OrderDependency: 100 AnySetup *PageSize
+*DefaultPageSize: A4
+*PageSize 11x14/11x14: "<</PageSize[792 1008]/ImagingBBox null>>setpagedevice"
+*PageSize 11x17/11x17: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageSize 13x19/13x19: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageSize 16x20/16x20: "<</PageSize[1152 1440]/ImagingBBox null>>setpagedevice"
+*PageSize 16x24/16x24: "<</PageSize[1152 1728]/ImagingBBox null>>setpagedevice"
+*PageSize 2A/2A: "<</PageSize[3370 4768]/ImagingBBox null>>setpagedevice"
+*PageSize 4A/4A: "<</PageSize[4768 6749]/ImagingBBox null>>setpagedevice"
+*PageSize 8x10/8x10: "<</PageSize[576 720]/ImagingBBox null>>setpagedevice"
+*PageSize 8x12/8x12: "<</PageSize[576 864]/ImagingBBox null>>setpagedevice"
+*PageSize A0/A0: "<</PageSize[2384 3370]/ImagingBBox null>>setpagedevice"
+*PageSize A1/A1: "<</PageSize[1684 2384]/ImagingBBox null>>setpagedevice"
+*PageSize A2/A2: "<</PageSize[1191 1684]/ImagingBBox null>>setpagedevice"
+*PageSize A3/A3: "<</PageSize[842 1191]/ImagingBBox null>>setpagedevice"
+*PageSize A4/A4: "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"
+*PageSize A5/A5: "<</PageSize[421 595]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiA/ANSI A: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiB/ANSI B: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiC/ANSI C: "<</PageSize[1224 1584]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiD/ANSI D: "<</PageSize[1584 2448]/ImagingBBox null>>setpagedevice"
+*PageSize AnsiE/ANSI E: "<</PageSize[2448 3168]/ImagingBBox null>>setpagedevice"
+*PageSize ArchA/Arch A: "<</PageSize[648 864]/ImagingBBox null>>setpagedevice"
+*PageSize ArchB/Arch B: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageSize ArchC/Arch C: "<</PageSize[1296 1728]/ImagingBBox null>>setpagedevice"
+*PageSize ArchD/Arch D: "<</PageSize[1728 2592]/ImagingBBox null>>setpagedevice"
+*PageSize ArchE/Arch E: "<</PageSize[2592 3456]/ImagingBBox null>>setpagedevice"
+*PageSize C0/C0: "<</PageSize[2599 3676]/ImagingBBox null>>setpagedevice"
+*PageSize C1/C1: "<</PageSize[1836 2599]/ImagingBBox null>>setpagedevice"
+*PageSize C2/C2: "<</PageSize[1298 1836]/ImagingBBox null>>setpagedevice"
+*PageSize C3/C3: "<</PageSize[918 1298]/ImagingBBox null>>setpagedevice"
+*PageSize C4/C4: "<</PageSize[649 918]/ImagingBBox null>>setpagedevice"
+*PageSize C5/C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageSize Env10/Envelope #10: "<</PageSize[297 684]/ImagingBBox null>>setpagedevice"
+*PageSize EnvC5/Envelope C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageSize EnvDL/Envelope DL: "<</PageSize[312 624]/ImagingBBox null>>setpagedevice"
+*PageSize EnvMonarch/Envelope Monarch: "<</PageSize[279 540]/ImagingBBox null>>setpagedevice"
+*PageSize Executive/Executive: "<</PageSize[522 756]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB0/B0 (ISO): "<</PageSize[2834 4008]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB1/B1 (ISO): "<</PageSize[2004 2834]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB2/B2 (ISO): "<</PageSize[1417 2004]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB3/B3 (ISO): "<</PageSize[1000 1417]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB4/B4 (ISO): "<</PageSize[708 1000]/ImagingBBox null>>setpagedevice"
+*PageSize ISOB5/B5 (ISO): "<</PageSize[498 708]/ImagingBBox null>>setpagedevice"
+*PageSize JISB0/B0 (JIS): "<</PageSize[2919 4127]/ImagingBBox null>>setpagedevice"
+*PageSize JISB1/B1 (JIS): "<</PageSize[2063 2919]/ImagingBBox null>>setpagedevice"
+*PageSize JISB2/B2 (JIS): "<</PageSize[1459 2063]/ImagingBBox null>>setpagedevice"
+*PageSize JISB3/B3 (JIS): "<</PageSize[1029 1459]/ImagingBBox null>>setpagedevice"
+*PageSize JISB4/B4 (JIS): "<</PageSize[727 1029]/ImagingBBox null>>setpagedevice"
+*PageSize JISB5/B5 (JIS): "<</PageSize[518 727]/ImagingBBox null>>setpagedevice"
+*PageSize Ledger/Ledger: "<</PageSize[1224 792]/ImagingBBox null>>setpagedevice"
+*PageSize Legal/US Legal: "<</PageSize[612 1008]/ImagingBBox null>>setpagedevice"
+*PageSize Letter/US Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageSize RA0/RA0: "<</PageSize[2437 3458]/ImagingBBox null>>setpagedevice"
+*PageSize RA1/RA1: "<</PageSize[1729 2437]/ImagingBBox null>>setpagedevice"
+*PageSize RA2/RA2: "<</PageSize[1218 1729]/ImagingBBox null>>setpagedevice"
+*PageSize RA3/RA3: "<</PageSize[864 1218]/ImagingBBox null>>setpagedevice"
+*PageSize RA4/RA4: "<</PageSize[609 864]/ImagingBBox null>>setpagedevice"
+*PageSize SRA0/SRA0: "<</PageSize[2551 3628]/ImagingBBox null>>setpagedevice"
+*PageSize SRA1/SRA1: "<</PageSize[1814 2551]/ImagingBBox null>>setpagedevice"
+*PageSize SRA2/SRA2: "<</PageSize[1275 1814]/ImagingBBox null>>setpagedevice"
+*PageSize SRA3/SRA3: "<</PageSize[907 1275]/ImagingBBox null>>setpagedevice"
+*PageSize SRA4/SRA4: "<</PageSize[637 907]/ImagingBBox null>>setpagedevice"
+*PageSize SuperA/Super A: "<</PageSize[644 1008]/ImagingBBox null>>setpagedevice"
+*PageSize SuperB/Super B: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageSize TabloidExtra/Tabloid Extra: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageSize Tabloid/Tabloid: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*CloseUI: *PageSize
+
+*OpenUI *PageRegion: PickOne
+*OrderDependency: 100 AnySetup *PageRegion
+*DefaultPageRegion: A4
+*PageRegion 11x14/11x14: "<</PageSize[792 1008]/ImagingBBox null>>setpagedevice"
+*PageRegion 11x17/11x17: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageRegion 13x19/13x19: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageRegion 16x20/16x20: "<</PageSize[1152 1440]/ImagingBBox null>>setpagedevice"
+*PageRegion 16x24/16x24: "<</PageSize[1152 1728]/ImagingBBox null>>setpagedevice"
+*PageRegion 2A/2A: "<</PageSize[3370 4768]/ImagingBBox null>>setpagedevice"
+*PageRegion 4A/4A: "<</PageSize[4768 6749]/ImagingBBox null>>setpagedevice"
+*PageRegion 8x10/8x10: "<</PageSize[576 720]/ImagingBBox null>>setpagedevice"
+*PageRegion 8x12/8x12: "<</PageSize[576 864]/ImagingBBox null>>setpagedevice"
+*PageRegion A0/A0: "<</PageSize[2384 3370]/ImagingBBox null>>setpagedevice"
+*PageRegion A1/A1: "<</PageSize[1684 2384]/ImagingBBox null>>setpagedevice"
+*PageRegion A2/A2: "<</PageSize[1191 1684]/ImagingBBox null>>setpagedevice"
+*PageRegion A3/A3: "<</PageSize[842 1191]/ImagingBBox null>>setpagedevice"
+*PageRegion A4/A4: "<</PageSize[595 842]/ImagingBBox null>>setpagedevice"
+*PageRegion A5/A5: "<</PageSize[421 595]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiA/ANSI A: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiB/ANSI B: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiC/ANSI C: "<</PageSize[1224 1584]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiD/ANSI D: "<</PageSize[1584 2448]/ImagingBBox null>>setpagedevice"
+*PageRegion AnsiE/ANSI E: "<</PageSize[2448 3168]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchA/Arch A: "<</PageSize[648 864]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchB/Arch B: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchC/Arch C: "<</PageSize[1296 1728]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchD/Arch D: "<</PageSize[1728 2592]/ImagingBBox null>>setpagedevice"
+*PageRegion ArchE/Arch E: "<</PageSize[2592 3456]/ImagingBBox null>>setpagedevice"
+*PageRegion C0/C0: "<</PageSize[2599 3676]/ImagingBBox null>>setpagedevice"
+*PageRegion C1/C1: "<</PageSize[1836 2599]/ImagingBBox null>>setpagedevice"
+*PageRegion C2/C2: "<</PageSize[1298 1836]/ImagingBBox null>>setpagedevice"
+*PageRegion C3/C3: "<</PageSize[918 1298]/ImagingBBox null>>setpagedevice"
+*PageRegion C4/C4: "<</PageSize[649 918]/ImagingBBox null>>setpagedevice"
+*PageRegion C5/C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageRegion Env10/Envelope #10: "<</PageSize[297 684]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvC5/Envelope C5: "<</PageSize[459 649]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvDL/Envelope DL: "<</PageSize[312 624]/ImagingBBox null>>setpagedevice"
+*PageRegion EnvMonarch/Envelope Monarch: "<</PageSize[279 540]/ImagingBBox null>>setpagedevice"
+*PageRegion Executive/Executive: "<</PageSize[522 756]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB0/B0 (ISO): "<</PageSize[2834 4008]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB1/B1 (ISO): "<</PageSize[2004 2834]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB2/B2 (ISO): "<</PageSize[1417 2004]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB3/B3 (ISO): "<</PageSize[1000 1417]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB4/B4 (ISO): "<</PageSize[708 1000]/ImagingBBox null>>setpagedevice"
+*PageRegion ISOB5/B5 (ISO): "<</PageSize[498 708]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB0/B0 (JIS): "<</PageSize[2919 4127]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB1/B1 (JIS): "<</PageSize[2063 2919]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB2/B2 (JIS): "<</PageSize[1459 2063]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB3/B3 (JIS): "<</PageSize[1029 1459]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB4/B4 (JIS): "<</PageSize[727 1029]/ImagingBBox null>>setpagedevice"
+*PageRegion JISB5/B5 (JIS): "<</PageSize[518 727]/ImagingBBox null>>setpagedevice"
+*PageRegion Ledger/Ledger: "<</PageSize[1224 792]/ImagingBBox null>>setpagedevice"
+*PageRegion Legal/US Legal: "<</PageSize[612 1008]/ImagingBBox null>>setpagedevice"
+*PageRegion Letter/US Letter: "<</PageSize[612 792]/ImagingBBox null>>setpagedevice"
+*PageRegion RA0/RA0: "<</PageSize[2437 3458]/ImagingBBox null>>setpagedevice"
+*PageRegion RA1/RA1: "<</PageSize[1729 2437]/ImagingBBox null>>setpagedevice"
+*PageRegion RA2/RA2: "<</PageSize[1218 1729]/ImagingBBox null>>setpagedevice"
+*PageRegion RA3/RA3: "<</PageSize[864 1218]/ImagingBBox null>>setpagedevice"
+*PageRegion RA4/RA4: "<</PageSize[609 864]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA0/SRA0: "<</PageSize[2551 3628]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA1/SRA1: "<</PageSize[1814 2551]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA2/SRA2: "<</PageSize[1275 1814]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA3/SRA3: "<</PageSize[907 1275]/ImagingBBox null>>setpagedevice"
+*PageRegion SRA4/SRA4: "<</PageSize[637 907]/ImagingBBox null>>setpagedevice"
+*PageRegion SuperA/Super A: "<</PageSize[644 1008]/ImagingBBox null>>setpagedevice"
+*PageRegion SuperB/Super B: "<</PageSize[936 1368]/ImagingBBox null>>setpagedevice"
+*PageRegion TabloidExtra/Tabloid Extra: "<</PageSize[864 1296]/ImagingBBox null>>setpagedevice"
+*PageRegion Tabloid/Tabloid: "<</PageSize[792 1224]/ImagingBBox null>>setpagedevice"
+*CloseUI: *PageRegion
+
+*DefaultImageableArea: A4
+*ImageableArea 11x14/11x14: "0 0 792 1008"
+*ImageableArea 11x17/11x17: "0 0 792 1224"
+*ImageableArea 13x19/13x19: "0 0 936 1368"
+*ImageableArea 16x20/16x20: "0 0 1152 1440"
+*ImageableArea 16x24/16x24: "0 0 1152 1728"
+*ImageableArea 2A/2A: "0 0 3370 4768"
+*ImageableArea 4A/4A: "0 0 4768 6749"
+*ImageableArea 8x10/8x10: "0 0 576 720"
+*ImageableArea 8x12/8x12: "0 0 576 864"
+*ImageableArea A0/A0: "0 0 2384 3370"
+*ImageableArea A1/A1: "0 0 1684 2384"
+*ImageableArea A2/A2: "0 0 1191 1684"
+*ImageableArea A3/A3: "0 0 842 1191"
+*ImageableArea A4/A4: "0 0 595 842"
+*ImageableArea A5/A5: "0 0 421 595"
+*ImageableArea AnsiA/ANSI A: "0 0 612 792"
+*ImageableArea AnsiB/ANSI B: "0 0 792 1224"
+*ImageableArea AnsiC/ANSI C: "0 0 1224 1584"
+*ImageableArea AnsiD/ANSI D: "0 0 1584 2448"
+*ImageableArea AnsiE/ANSI E: "0 0 2448 3168"
+*ImageableArea ArchA/Arch A: "0 0 648 864"
+*ImageableArea ArchB/Arch B: "0 0 864 1296"
+*ImageableArea ArchC/Arch C: "0 0 1296 1728"
+*ImageableArea ArchD/Arch D: "0 0 1728 2592"
+*ImageableArea ArchE/Arch E: "0 0 2592 3456"
+*ImageableArea C0/C0: "0 0 2599 3676"
+*ImageableArea C1/C1: "0 0 1836 2599"
+*ImageableArea C2/C2: "0 0 1298 1836"
+*ImageableArea C3/C3: "0 0 918 1298"
+*ImageableArea C4/C4: "0 0 649 918"
+*ImageableArea C5/C5: "0 0 459 649"
+*ImageableArea Env10/Envelope #10: "0 0 297 684"
+*ImageableArea EnvC5/Envelope C5: "0 0 459 649"
+*ImageableArea EnvDL/Envelope DL: "0 0 312 624"
+*ImageableArea EnvMonarch/Envelope Monarch: "0 0 279 540"
+*ImageableArea Executive/Executive: "0 0 522 756"
+*ImageableArea ISOB0/B0 (ISO): "0 0 2834 4008"
+*ImageableArea ISOB1/B1 (ISO): "0 0 2004 2834"
+*ImageableArea ISOB2/B2 (ISO): "0 0 1417 2004"
+*ImageableArea ISOB3/B3 (ISO): "0 0 1000 1417"
+*ImageableArea ISOB4/B4 (ISO): "0 0 708 1000"
+*ImageableArea ISOB5/B5 (ISO): "0 0 498 708"
+*ImageableArea JISB0/B0 (JIS): "0 0 2919 4127"
+*ImageableArea JISB1/B1 (JIS): "0 0 2063 2919"
+*ImageableArea JISB2/B2 (JIS): "0 0 1459 2063"
+*ImageableArea JISB3/B3 (JIS): "0 0 1029 1459"
+*ImageableArea JISB4/B4 (JIS): "0 0 727 1029"
+*ImageableArea JISB5/B5 (JIS): "0 0 518 727"
+*ImageableArea Ledger/Ledger: "0 0 1224 792"
+*ImageableArea Legal/US Legal: "0 0 612 1008"
+*ImageableArea Letter/US Letter: "0 0 612 792"
+*ImageableArea RA0/RA0: "0 0 2437 3458"
+*ImageableArea RA1/RA1: "0 0 1729 2437"
+*ImageableArea RA2/RA2: "0 0 1218 1729"
+*ImageableArea RA3/RA3: "0 0 864 1218"
+*ImageableArea RA4/RA4: "0 0 609 864"
+*ImageableArea SRA0/SRA0: "0 0 2551 3628"
+*ImageableArea SRA1/SRA1: "0 0 1814 2551"
+*ImageableArea SRA2/SRA2: "0 0 1275 1814"
+*ImageableArea SRA3/SRA3: "0 0 907 1275"
+*ImageableArea SRA4/SRA4: "0 0 637 907"
+*ImageableArea SuperA/Super A: "0 0 644 1008"
+*ImageableArea SuperB/Super B: "0 0 936 1368"
+*ImageableArea TabloidExtra/Tabloid Extra: "0 0 864 1296"
+*ImageableArea Tabloid/Tabloid: "0 0 792 1224"
+
+*DefaultPaperDimension: A4
+*PaperDimension 11x14/11x14: "792 1008"
+*PaperDimension 11x17/11x17: "792 1224"
+*PaperDimension 13x19/13x19: "936 1368"
+*PaperDimension 16x20/16x20: "1152 1440"
+*PaperDimension 16x24/16x24: "1152 1728"
+*PaperDimension 2A/2A: "3370 4768"
+*PaperDimension 4A/4A: "4768 6749"
+*PaperDimension 8x10/8x10: "576 720"
+*PaperDimension 8x12/8x12: "576 864"
+*PaperDimension A0/A0: "2384 3370"
+*PaperDimension A1/A1: "1684 2384"
+*PaperDimension A2/A2: "1191 1684"
+*PaperDimension A3/A3: "842 1191"
+*PaperDimension A4/A4: "595 842"
+*PaperDimension A5/A5: "421 595"
+*PaperDimension AnsiA/ANSI A: "612 792"
+*PaperDimension AnsiB/ANSI B: "792 1224"
+*PaperDimension AnsiC/ANSI C: "1224 1584"
+*PaperDimension AnsiD/ANSI D: "1584 2448"
+*PaperDimension AnsiE/ANSI E: "2448 3168"
+*PaperDimension ArchA/Arch A: "648 864"
+*PaperDimension ArchB/Arch B: "864 1296"
+*PaperDimension ArchC/Arch C: "1296 1728"
+*PaperDimension ArchD/Arch D: "1728 2592"
+*PaperDimension ArchE/Arch E: "2592 3456"
+*PaperDimension C0/C0: "2599 3676"
+*PaperDimension C1/C1: "1836 2599"
+*PaperDimension C2/C2: "1298 1836"
+*PaperDimension C3/C3: "918 1298"
+*PaperDimension C4/C4: "649 918"
+*PaperDimension C5/C5: "459 649"
+*PaperDimension Env10/Envelope #10: "297 684"
+*PaperDimension EnvC5/Envelope C5: "459 649"
+*PaperDimension EnvDL/Envelope DL: "312 624"
+*PaperDimension EnvMonarch/Envelope Monarch: "279 540"
+*PaperDimension Executive/Executive: "522 756"
+*PaperDimension ISOB0/B0 (ISO): "2834 4008"
+*PaperDimension ISOB1/B1 (ISO): "2004 2834"
+*PaperDimension ISOB2/B2 (ISO): "1417 2004"
+*PaperDimension ISOB3/B3 (ISO): "1000 1417"
+*PaperDimension ISOB4/B4 (ISO): "708 1000"
+*PaperDimension ISOB5/B5 (ISO): "498 708"
+*PaperDimension JISB0/B0 (JIS): "2919 4127"
+*PaperDimension JISB1/B1 (JIS): "2063 2919"
+*PaperDimension JISB2/B2 (JIS): "1459 2063"
+*PaperDimension JISB3/B3 (JIS): "1029 1459"
+*PaperDimension JISB4/B4 (JIS): "727 1029"
+*PaperDimension JISB5/B5 (JIS): "518 727"
+*PaperDimension Ledger/Ledger: "1224 792"
+*PaperDimension Legal/US Legal: "612 1008"
+*PaperDimension Letter/US Letter: "612 792"
+*PaperDimension RA0/RA0: "2437 3458"
+*PaperDimension RA1/RA1: "1729 2437"
+*PaperDimension RA2/RA2: "1218 1729"
+*PaperDimension RA3/RA3: "864 1218"
+*PaperDimension RA4/RA4: "609 864"
+*PaperDimension SRA0/SRA0: "2551 3628"
+*PaperDimension SRA1/SRA1: "1814 2551"
+*PaperDimension SRA2/SRA2: "1275 1814"
+*PaperDimension SRA3/SRA3: "907 1275"
+*PaperDimension SRA4/SRA4: "637 907"
+*PaperDimension SuperA/Super A: "644 1008"
+*PaperDimension SuperB/Super B: "936 1368"
+*PaperDimension TabloidExtra/Tabloid Extra: "864 1296"
+*PaperDimension Tabloid/Tabloid: "792 1224"
+
+*OpenUI *Resolution/Output Resolution: PickOne
+*OrderDependency: 100 AnySetup *Resolution
+*DefaultResolution: 300dpi
+*Resolution 150dpi/150 DPI: "<</HWResolution[150 150]>>setpagedevice"
+*Resolution 300dpi/300 DPI: "<</HWResolution[300 300]>>setpagedevice"
+*Resolution 600dpi/600 DPI: "<</HWResolution[600 600]>>setpagedevice"
+*Resolution 1200dpi/1200 DPI: "<</HWResolution[1200 1200]>>setpagedevice"
+*Resolution 2400dpi/2400 DPI: "<</HWResolution[2400 2400]>>setpagedevice"
+*CloseUI: *Resolution
+
+*CloseGroup: General
+
+*DefaultFont: Courier
+*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM
+*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM
+*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM
+*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM
+*Font Bookman-Demi: Standard "(001.004S)" Standard ROM
+*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM
+*Font Bookman-Light: Standard "(001.004S)" Standard ROM
+*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM
+*Font Courier: Standard "(002.004S)" Standard ROM
+*Font Courier-Bold: Standard "(002.004S)" Standard ROM
+*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM
+*Font Courier-Oblique: Standard "(002.004S)" Standard ROM
+*Font Helvetica: Standard "(001.006S)" Standard ROM
+*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM
+*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM
+*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM
+*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM
+*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM
+*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM
+*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM
+*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM
+*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM
+*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM
+*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM
+*Font Palatino-Bold: Standard "(001.005S)" Standard ROM
+*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM
+*Font Palatino-Italic: Standard "(001.005S)" Standard ROM
+*Font Palatino-Roman: Standard "(001.005S)" Standard ROM
+*Font Symbol: Special "(001.007S)" Special ROM
+*Font Times-Bold: Standard "(001.007S)" Standard ROM
+*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM
+*Font Times-Italic: Standard "(001.007S)" Standard ROM
+*Font Times-Roman: Standard "(001.007S)" Standard ROM
+*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
+*Font ZapfDingbats: Special "(001.004S)" Standard ROM
+*%
+*% End of "$Id: postscript.ppd,v 1.1.1.1 2000/08/24 19:23:13 goffioul Exp $".
+*%
diff --git a/install/server/cups/printers.conf b/install/server/cups/printers.conf
new file mode 100644 (file)
index 0000000..5d3754e
--- /dev/null
@@ -0,0 +1,39 @@
+# Printer configuration file for CUPS v2.2.1
+# Written by cupsd
+# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
+<DefaultPrinter EPSON_TM-T20II>
+UUID urn:uuid:77c522f0-982e-3564-4d09-73b7c7f47720
+Info EPSON TM-T20II
+MakeModel Epson TM-T20
+DeviceURI usb://EPSON/TM-T20II?serial=544338593887730000
+State Idle
+StateTime 1551811423
+ConfigTime 1551811402
+Type 20484
+Accepting Yes
+Shared Yes
+JobSheets none none
+QuotaPeriod 0
+PageLimit 0
+KLimit 0
+OpPolicy default
+ErrorPolicy retry-job
+</DefaultPrinter>
+<Printer PDF>
+UUID urn:uuid:499334c6-0cf8-3b63-730e-81df91a57937
+Info PDF
+MakeModel Generic CUPS-PDF Printer
+DeviceURI cups-pdf:/
+State Idle
+StateTime 1554141962
+ConfigTime 1554141965
+Type 8450124
+Accepting Yes
+Shared No
+JobSheets none none
+QuotaPeriod 0
+PageLimit 0
+KLimit 0
+OpPolicy default
+ErrorPolicy retry-job
+</Printer>
diff --git a/install/server/cups/printers.conf.O b/install/server/cups/printers.conf.O
new file mode 100644 (file)
index 0000000..fabc525
--- /dev/null
@@ -0,0 +1,22 @@
+# Printer configuration file for CUPS v2.2.1
+# Written by cupsd
+# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
+<DefaultPrinter EPSON_TM-T20II>
+UUID urn:uuid:77c522f0-982e-3564-4d09-73b7c7f47720
+Info EPSON TM-T20II
+Location 
+MakeModel Epson TM-T20
+DeviceURI usb://EPSON/TM-T20II?serial=544338593887730000
+State Idle
+StateTime 1551811423
+ConfigTime 1551811402
+Type 20484
+Accepting Yes
+Shared Yes
+JobSheets none none
+QuotaPeriod 0
+PageLimit 0
+KLimit 0
+OpPolicy default
+ErrorPolicy retry-job
+</DefaultPrinter>
diff --git a/install/server/cups/raw.convs b/install/server/cups/raw.convs
new file mode 100644 (file)
index 0000000..0bd0e29
--- /dev/null
@@ -0,0 +1,5 @@
+# This file was generated by the cups package.  You may change it, or
+# reconfigure this file with dpkg-reconfigure.  If it is removed, it
+# will be regenerated by the package scripts.
+
+application/octet-stream       application/vnd.cups-raw        0       -
diff --git a/install/server/cups/raw.types b/install/server/cups/raw.types
new file mode 100644 (file)
index 0000000..839755f
--- /dev/null
@@ -0,0 +1,5 @@
+# This file was generated by the cups package.  You may change it, or
+# reconfigure this file with dpkg-reconfigure.  If it is removed, it
+# will be regenerated by the package scripts.
+
+application/octet-stream
diff --git a/install/server/cups/snmp.conf b/install/server/cups/snmp.conf
new file mode 100644 (file)
index 0000000..a7d1e3b
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# SNMP configuration file for CUPS.  See "man cups-snmp.conf" for a complete
+# description of this file.
+#
+
+Address @LOCAL
+Community public
diff --git a/install/server/cups/ssl/raspberrypi.fritz.box.crt b/install/server/cups/ssl/raspberrypi.fritz.box.crt
new file mode 100644 (file)
index 0000000..d4d4d7e
--- /dev/null
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2zCCAsOgAwIBAgIEXH6m2jANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMC
+R0IxHjAcBgNVBAMTFXJhc3BiZXJyeXBpLmZyaXR6LmJveDEeMBwGA1UEChMVcmFz
+cGJlcnJ5cGkuZnJpdHouYm94MRAwDgYDVQQLEwdVbmtub3duMRAwDgYDVQQIEwdV
+bmtub3duMRAwDgYDVQQHEwdVbmtub3duMB4XDTE5MDMwNTE2NDIwMloXDTI5MDMw
+MjE2NDIwMlowgYMxCzAJBgNVBAYTAkdCMR4wHAYDVQQDExVyYXNwYmVycnlwaS5m
+cml0ei5ib3gxHjAcBgNVBAoTFXJhc3BiZXJyeXBpLmZyaXR6LmJveDEQMA4GA1UE
+CxMHVW5rbm93bjEQMA4GA1UECBMHVW5rbm93bjEQMA4GA1UEBxMHVW5rbm93bjCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMFD5eCFdA1a1K9yyBhM9Z9V
+g1n7blNClycn9CApDJO9HekojZnJrQEm5SQVYbUhLsIE+e33w4N2qSLHd4GJQ999
+1FXA2+OGlpQFY6PPd2Swf6GdHMjnUUScwmBF4EzILU+Tx6oJpY/L1QcR2rFsfTcR
+e70LWZGCzDHgJ6wcpB8ufR7PnpmyBYN9nDkiKoh/xrjMcqUltzNeUSbMKWCLv4fo
+l/HmqgcW5oQZO/LwvYYcDmRibLhTpU9bm+/ZA5zVfQ4E7FuHytmtsXw6ov95bO3m
+km6x5Jylpz135ZOq4FJzssbgjDqZSvM/5zteHS7QNf4fJMYiTkS1IecANgy6mcUC
+AwEAAaNVMFMwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNV
+HQ8BAf8EBQMDByAAMB0GA1UdDgQWBBTpwva9mXCnCtyK01jNR9fKSC6+NDANBgkq
+hkiG9w0BAQUFAAOCAQEAopGi3LQtFloKVADSrnq6svnE/52XaYw3nYpoIhaSmHfq
+6BhmrcSy3LuS5uZEZo1VR1tpiwKe8Yn4FXEfKdS8aRdgnyBR55VW0hHgJeIz0uDg
+pBxKVhJlSRbiAoqrnrl5NOboaBLaoXSPGsYPaZqwc7C+y12NGhudvNndS1K+OEGZ
+GnM+s0WqTtg/oYB1iueG80dtMY0RTUXLgYqegJXP+4MnOHNqj+UzxPx/nvCj58tB
+8WgHy38pTPh2IIbPFgTe/8j8cxKDiaKXlXpR6SBrSqiZ+Ui/tW7e9qkUaRHuAwQY
+37d9PgUwZ7rjQZmqrwSqUDzWLMGS2VgTDP5SiADqzQ==
+-----END CERTIFICATE-----
diff --git a/install/server/cups/ssl/raspberrypi.fritz.box.key b/install/server/cups/ssl/raspberrypi.fritz.box.key
new file mode 100644 (file)
index 0000000..17da294
--- /dev/null
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAwUPl4IV0DVrUr3LIGEz1n1WDWftuU0KXJyf0ICkMk70d6SiN
+mcmtASblJBVhtSEuwgT57ffDg3apIsd3gYlD333UVcDb44aWlAVjo893ZLB/oZ0c
+yOdRRJzCYEXgTMgtT5PHqgmlj8vVBxHasWx9NxF7vQtZkYLMMeAnrBykHy59Hs+e
+mbIFg32cOSIqiH/GuMxypSW3M15RJswpYIu/h+iX8eaqBxbmhBk78vC9hhwOZGJs
+uFOlT1ub79kDnNV9DgTsW4fK2a2xfDqi/3ls7eaSbrHknKWnPXflk6rgUnOyxuCM
+OplK8z/nO14dLtA1/h8kxiJORLUh5wA2DLqZxQIDAQABAoIBABeMH0kQ2Yf7Biju
+UkTrs42bTKq9AL8yQNpresokVjz18NwEreQL94FJbOfNlx8LkPfgxVbiNjchURBE
+v2HQCK4FVcaw/dml/1i/o1lFIOXqv1JAo04zKOq0MtaqDN8uEJ8+gThNfpebnTQE
+T+IINuVrwujQpjQdfKWjCxJkVvbZa4FPaqL0un/RydlUd//QpwGgf5tI30fxeKz5
+13pjigtBFxrmpDh/Vt3JonSGNL6PKeJ7oZi+kLNIXLb1jzOK9Zmnidxw1vya9e+D
+AL9Xlp6yMkr/onaHE0Bej7HJsaur8izTtQ02qw8Kmaplg5OtCg0H4jxheJjvm2L9
+wm+mWoECgYEAwmexwtBnMAR6WuCHWjWtOk6X1qzcnrpFzfjRIbwfGtZw7fqN4W8Y
+MghNkCYBAW9ggDsqGYfpHbvKxQCb7ibbPHW0RbfjRyOZ4/BzBfjQaHaOEWR6mhIr
+d++TVPDJgJU0KjozQT/sarxUGIsCqcRVnjY+PyevEnxmiZ9kt44AJ6UCgYEA/n/A
+V0UYxgaNu8emmfDDAUwNhT8G35J+y+CqxNJVe2gLpFLrKohthnDxdlG1UAWNJm0C
+t8gekJ9MOyTmAN/+xKm4H9vzJO1h+u2Qp286w5FBlNjIF4cwnSj3MJrii6ZemsRW
+SR9MA3U5kALwNesl/rk6qB6B8yc6/urBsjHjD6ECgYBO+pOkQsh5IIiY3PkANChh
+NMbJB0dGEQUE7d4Ap423eIE+nXkAqgKZaPgh5N6pt5br4Z1z69xQIRf6uwmeUhjl
+Uihf3pouL494pBoGxhPdLLUA6eJJL7KLMkCX1I74dyVPNn/WNWMV5dcAdZEqaUIj
+WYQmYjfk+bcqmB/x1nXHpQKBgQCHTS/atbd4AB/2ByzBhsiFtgMyJdHnpqCWj3j6
+bsBXfXdDA3pXAHUKFp2ow8PbKThjh2z8e/4T8Ty77OAC8xMlRv3Gok7gAPwoRYi0
+G2RoeJ8fHSkzqQHla9QPGSj8CZUePueItITbCcVylL1UTRHEHIHcw2te9CpfQDt+
+GxuWQQKBgBxV7eZwcf+929m6fBxaSa0y+cFFejrlVM2dxrDvYR0jWiilCazWLtsa
++jVZFG0Frrlefcg/anGAKFgVgKLUolmQ6NdVHVmdG+Yl/LkQ/1hjpCq/WZ4xkKIL
++PYKqFrcVd4i9YkN//j7iCNraOiiXzLMsINAwljZJaY2nE+zRGzm
+-----END RSA PRIVATE KEY-----
diff --git a/install/server/cups/ssl/server.crt b/install/server/cups/ssl/server.crt
new file mode 100644 (file)
index 0000000..6c0faf4
--- /dev/null
@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC1DCCAbygAwIBAgIJAOJaNAl1+aEeMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
+BAMMC3Jhc3BiZXJyeXBpMB4XDTE5MDMwNTE2MzEzNFoXDTI5MDMwMjE2MzEzNFow
+FjEUMBIGA1UEAwwLcmFzcGJlcnJ5cGkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQC6yxcxUieBvMXKXWTm2JZIrj76ATyNQKlnMPf6413tIKIVdi5hxbDp
+CH0VswGo8R36jYYePgw+Ga7q1YsG6fjDcr9wZGMp8sAmv6TAilXF5XgqjJwEhu+E
+4BJZ4XEO0FqeWVpkPdAIQAuPx2nOLRONj0IOSZjNqpadOoFszqmxLLEF8YaJb5GI
+uE7HQp6cTXu0dkPcmVElzfuSqnj5g/G/go4yZlxsrVpjTNvbAeAXn9v8VHGU5OEV
+PJzKOUycjm/vMrsUJs1OFU51wJH3nTYMBemYdPRU0eyQLI1ZW9IcV88Y5Im2nLQ5
+iBjCxnakDbN3aEXtWHrUMbm+/TDCT1otAgMBAAGjJTAjMAkGA1UdEwQCMAAwFgYD
+VR0RBA8wDYILcmFzcGJlcnJ5cGkwDQYJKoZIhvcNAQELBQADggEBAC6APT0Ndc5K
+3AVqn2lPTwiLD/E6owz1rwTwI2NF5+LpfdSHUlc1uTY9W2qaHfhQ8uEJnyN01NV6
+T0lvMZPsNH22L88hN0QgdEIa+zbifAx5eX9WsmmiHnWb8nYd8Aldp9g6v3FZ7M4q
+Cs5j7z/CcDEFLSzhMizzCILv0km6Qg1Ho8MY0OqH7dEQ7kCVdw2Eimg8cxCtRA9/
+umSXlskDzrah7s5EsU/H2mlo+8Mdiy69EaHbU3VeURdkWjzVDbugbiK7KOwtpLE8
+Gpi78Bd5d2Hi8Lmw5mMe0f5tcdycHgmnqKDWj2HAziKWneR6BV7hz78FEkMIM3lv
+wickMIHLz3Y=
+-----END CERTIFICATE-----
diff --git a/install/server/cups/ssl/server.key b/install/server/cups/ssl/server.key
new file mode 100644 (file)
index 0000000..3724e06
--- /dev/null
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6yxcxUieBvMXK
+XWTm2JZIrj76ATyNQKlnMPf6413tIKIVdi5hxbDpCH0VswGo8R36jYYePgw+Ga7q
+1YsG6fjDcr9wZGMp8sAmv6TAilXF5XgqjJwEhu+E4BJZ4XEO0FqeWVpkPdAIQAuP
+x2nOLRONj0IOSZjNqpadOoFszqmxLLEF8YaJb5GIuE7HQp6cTXu0dkPcmVElzfuS
+qnj5g/G/go4yZlxsrVpjTNvbAeAXn9v8VHGU5OEVPJzKOUycjm/vMrsUJs1OFU51
+wJH3nTYMBemYdPRU0eyQLI1ZW9IcV88Y5Im2nLQ5iBjCxnakDbN3aEXtWHrUMbm+
+/TDCT1otAgMBAAECggEAdgJwuJwqkXBtlRfD84PKDkjnSJMXajX70FHDmSGj6XfA
+bsanLuXyiobuX5Mj7VPHmM9oeBrDKUiYlYwrtUaD/xazk5IYhBv1AYX51BqRbeE3
+Ncp3lvSYxd26OkaPYsiHN5tD3CihEVVE+KUHV1ZrD/f9x4D/pI+tb8/SjKdT1bZM
+HIA1uC0RfU+xsEulTS3+Ufc9uySeOOfXGOxo41oDrgUNV1KBw04WRBXx1Q6XlX4O
+MgDD6Hnf+8pW/sQ28xzxJF/vKekE0blgaiLdHNU3qGjKNjFLOZEarILpmX+J99mK
+rYYjPtuJDMObG4yNAwTr++2y4RU886PigXzh1E/UkQKBgQD2xBrONgsvhzvxCTjZ
+sOLl50fs/Ks1UjClmISOeOt6sO+EtfjKcOj7hPhGu2cqxzbtU5xZicumDD18+mG7
+wl8ZFl2ZbAAWwuOFF4z+RsnGArXZyqbY5YNSaKXwYc2pRAFwDaRyV+h65K8Px5AP
+KSHWApkPxXlSzZUYcJZ25nO0TwKBgQDByHovKQJV0q+K7Xc5B+MbWqNMZfy91gA2
+yRVCn6QSAIv+Dr4wh04xGdvarP55Crre+onoWkEezkTG3nz8qa+yP3zwuciwsKZV
+uX3NUWVUAUv9T41AV4NN67CFS8kABDb+3gkO2yNFUxZ4TgqzEEPxCehfC42Nnnw+
+JcVBbohewwKBgQCQIqull1uhP1R7ze8u+GsP7q/MdSlr074me5exwF+LIp5E3iWb
+2ae8gkaiygPQsNwcc6H3is0xCCVCQt2jVj1F4hJ58uN6aAuNSdxJCgABcMPXms8q
+EaVLFWUXq4j9PYO5d75+K2rXnYvDo8U5lcT1xD6zP51GCF72D41TlfgvcQKBgBBB
+u05diF6e0C89gLT+HmVbEzwDilJ6s4XlFK2EKwV/mj70CayUjVC9NJ6ByM9qwQaX
+yh3+BFyLPWXZoG6p5Z10igy/6UA5cZrbdtxUqcWEXlWf6N+u98r/rM1h8DjaIar8
+AZKHe8wDDm2FTox7HtgH1sCyfWuWEiI8lPHKThJ1AoGBAJWHP5PEf9X6KT1xnmLl
+0FSXwa3J9ebSwO7dfvenmQedq6ub9mxnoZlnKZgewJb6P/rtDH08gPIn2LZ46iDB
+sg56zAzKMzhc5hN+k8eTNlxk5ACNUlv0YmURKwNWxL7M157EWbcP7WRJkPHJ0wOE
+W1Kua80LI0Nu9nmFDaQ8TLef
+-----END PRIVATE KEY-----
diff --git a/install/server/cups/subscriptions.conf b/install/server/cups/subscriptions.conf
new file mode 100644 (file)
index 0000000..60938f1
--- /dev/null
@@ -0,0 +1,20 @@
+# Subscription configuration file for CUPS v2.2.1
+# Written by cupsd
+NextSubscriptionId 95
+<Subscription 93>
+Events printer-changed
+Owner root
+LeaseDuration 86400
+Interval 60
+ExpirationTime 1554993783
+NextEventId 1
+</Subscription>
+<Subscription 94>
+Events all
+Owner anonymous
+Recipient dbus://
+LeaseDuration 86400
+Interval 0
+ExpirationTime 1554993783
+NextEventId 1
+</Subscription>
diff --git a/install/server/cups/subscriptions.conf.O b/install/server/cups/subscriptions.conf.O
new file mode 100644 (file)
index 0000000..b547ffb
--- /dev/null
@@ -0,0 +1,3 @@
+# Subscription configuration file for CUPS v2.2.1
+# Written by cupsd
+NextSubscriptionId 93
diff --git a/install/server/epson-tm-t20-cups.tar.gz b/install/server/epson-tm-t20-cups.tar.gz
new file mode 100644 (file)
index 0000000..9e1227f
Binary files /dev/null and b/install/server/epson-tm-t20-cups.tar.gz differ
diff --git a/install/server/install.sh b/install/server/install.sh
new file mode 100644 (file)
index 0000000..82e8395
--- /dev/null
@@ -0,0 +1,61 @@
+
+
+sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
+sudo service ssh restart
+echo 'echo -e "mai5ia7a\nmai5ia7a" | sudo -S passwd' > tmp.sh && bash tmp.sh && rm tmp.sh
+
+hostnamectl set-hostname cashbox
+sed -i "s/raspberrypi/cashbox/" /etc/hosts
+
+groupadd dks
+useradd dks -c DKS -g dks -G adm,sudo,crontab -s /bin/bash -d /home/dks
+echo 'echo -e "sai4seip\nsai4seip" | sudo passwd dks' > tmp.sh && bash tmp.sh && rm tmp.sh
+mkdir -p /home/dks
+chown dks:dks /home/dks
+cp /usr/share/zoneinfo/Europe/Luxembourg /etc/localtime
+
+userdel pi
+rm -r /home/pi
+visudo
+##
+## # Allow members of group sudo to execute any command
+## %sudo   ALL=(ALL:ALL) NOPASSWD:ALL
+##
+apt-get update
+apt-get upgrade
+apt-get install cups cups-client printer-driver-cups-pdf
+service cups restart
+service cups-browsed restart
+
+
+#apt-get install git
+#git clone https://github.com/nemik/epson-tm-t20-cups.git
+#git clone https://github.com/plinth666/epsonsimplecups.git
+#apt-get install libcups2-dev libcupsimage2-dev g++ cups cups-client
+#make
+#./install
+
+echo "#bt" >> /etc/modprobe.d/raspi-blacklist.conf
+echo "blacklist btbcm" >> /etc/modprobe.d/raspi-blacklist.conf
+echo "blacklist hci_uart" >> /etc/modprobe.d/raspi-blacklist.conf
+
+#router
+apt-get install hostapd bridge-utils
+#to dhcpcd.conf
+# cat <<'EOF' >/etc/network/interfaces.d/eth0
+# auto eth0
+# allow-hotplug eth0
+# iface eth0 inet static
+#   address 192.168.178.73
+#   netmask 255.255.0.0
+#   gateway 192.168.178.73
+# EOF
+
+cat <<'EOF' >/etc/dnsmasq.d/bridge.conf
+interface=eth0
+bind-interfaces
+server=8.8.8.8
+domain-needed
+bogus-priv
+dhcp-range=192.168.100.1,192.168.100.254,12h
+EOF
\ No newline at end of file
diff --git a/install/server/pdfcashbox.pdf b/install/server/pdfcashbox.pdf
new file mode 100644 (file)
index 0000000..aedc815
Binary files /dev/null and b/install/server/pdfcashbox.pdf differ
diff --git a/install/server/samba.sh b/install/server/samba.sh
new file mode 100644 (file)
index 0000000..65ca1cf
--- /dev/null
@@ -0,0 +1,6 @@
+#apt-get install samba
+#cd /etc/samba/
+#vim.tiny smb.conf
+#service smb start
+#service smbd start
+#service nmbd start
\ No newline at end of file
index 7ba959a..6cfa754 100644 (file)
   <a class="navbar-brand" href="#">CashBox</a>
   <div  class="mr-auto">
       <div class="btn-group" role="group" aria-label="Basic example">
-        <button class="btn btn-primary" onclick="loadadmin();"><i class="fas fa-toolbox"></i><br/>Verwaltung</button>
-        <button class="btn btn-primary" onclick="loadadmin();"><i class="fas fa-cash-register"></i><br/>Offene Posten</button>
-        <button class="btn btn-primary" onclick="loadadmin();"><i class="fas fa-cash-register"></i><br/>Bestellungen</button>
-        <button class="btn btn-danger" onclick="clean_checkout();"><i class="fas fa-shopping-cart"></i><br/>Neuer Einkauf</button>
       </div>
   </div> 
   <div class="ml-auto">
       <div class="btn-group" role="group" aria-label="Basic example">
-        <button class="btn btn-primary" onclick="loadadmin();"><i class="fas fa-toolbox"></i><br/>Admin</button>
+          <button class="btn btn-primary" onclick="loadadmin();"><i class="fas fa-toolbox"></i><br/>Verwaltung</button>
+          <button class="btn btn-primary" onclick="view_unpayedshoppingcarts();"><i class="fas fa-cash-register"></i><br/>Bestellungen</button>
     </div>
   </div>
 </nav>
 <div class="cotainer-fluid bg-white" style="margin-top: 52px;">
   <div class="row" style="margin: 0px;">
-    <div class="col-sm-3">
-      <div border: 1px solid grey;">
-      <table class="table table-bordered table-striped w-100" id="checkout" >
+    
+    <div class="col-sm-3" style="border: 1px solid grey">
+      <table class="table table-bordered table-striped" data-table="toggle" id="producttable1" style="width: 100%;">
         <thead class="thead-dark">
           <tr>
-            <th>Anz.</th>
-            <th>Einkauf</th>
-            <th></th>
+            <th  style="padding: 0px;"></th><select id="grouplist1" class="form-control" placeholder="group"  onchange="load_productgroup('1');"></select></th>
           </tr>
         </thead>
         <tbody>
         </tbody>
       </table>
-      </div>
-      <div class="row"  style="margin: 0px;">
-          <div class="col-sm-12" style="background-color: black; font-weight: bold; text-align: right; border: 1px solid green;; height: 40px; font-size: 30px; color: green; vertical-align: middle; padding-right: 5px;">
-            <span id="sumtotal">0,00</span>€
-          </div>
-      </div>
-      <div class="row"  style="margin: 0px;">
-        <div class="col-sm-6">
-          <button class="btn btn-primary btn-block"><i class="fas fa-money-bill-alt"></i><br>Bargeld-Buchung</button>
-        </div>
-        <div class="col-sm-6">
-          <button class="btn btn-primary btn-block"><i class="fas fa-credit-card"></i><br>Karten-Buchung</button>
-          </div>
-      </div>
     </div>
     <div class="col-sm-3" style="border: 1px solid grey">
-      <table class="table table-bordered table-striped" data-table="toggle" id="producttable1" style="width: 100%;">
+      <table class="table table-bordered table-striped" data-table="toggle"  id="producttable2" style="width: 100%;">
         <thead class="thead-dark">
           <tr>
-            <th  style="padding: 0px;"></th><select id="grouplist1" class="form-control" placeholder="group"  onchange="load_productgroup('1');"></select></th>
+            <th style="padding: 0px;"></th><select id="grouplist2" class="form-control" placeholder="group"  onchange="load_productgroup('2');"></select></th>
           </tr>
         </thead>
         <tbody>
       </table>
     </div>
     <div class="col-sm-3" style="border: 1px solid grey">
-      <table class="table table-bordered table-striped" data-table="toggle"  id="producttable2" style="width: 100%;">
+      <table class="table table-bordered table-striped" data-table="toggle"  id="producttable3" style="width: 100%;"  >
         <thead class="thead-dark">
           <tr>
-            <th style="padding: 0px;"></th><select id="grouplist2" class="form-control" placeholder="group"  onchange="load_productgroup('2');"></select></th>
+            <th style="padding: 0px;"><select id="grouplist3"  class="form-control" placeholder="group" onchange="load_productgroup('3');"></select></th>
           </tr>
         </thead>
         <tbody>
         </tbody>
       </table>
     </div>
-    <div class="col-sm-3" style="border: 1px solid grey">
-      <table class="table table-bordered table-striped" data-table="toggle"  id="producttable3" style="width: 100%;"  >
+    <div class="col-sm-3">
+        <div class="row"  style="margin: 0px;">
+            <div class="col-sm-6">
+              <button class="btn btn-success btn-block" onclick="clean_shoppingcart();"><i class="fas fa-redo"></i><br>Neu</button>
+            </div>
+            <div class="col-sm-6">
+              <button class="btn btn-warning btn-block" onclick="save_shoppingcart();"><i class="fas fa-print"></i><br>Bestellen</button>
+              </div>
+          </div>
+          <div class="row"  style="margin: 0px;">
+            <div class="col-sm-6">
+              <button class="btn btn-info btn-block" onclick="book_shoppingcart('cash');"><i class="fas fa-money-bill-alt"></i><br>Bargeld</button>
+            </div>
+            <div class="col-sm-6">
+              <button class="btn btn-secondary btn-block" onclick="book_shoppingcart('card');"><i class="fas fa-credit-card"></i><br>Karte</button>
+              </div>
+          </div>
+          <div class="row"  style="margin: 0px;">
+              <div class="col-sm-8" style="background-color: white; font-weight: bold; font-size: 30px; padding-top: 3px; padding-right: 5px;">
+               <i class="fas fa-map-marker-alt"></i> <span id="commandtable"></span>
+              </div>
+              <div class="col-sm-4">
+                  <button class="btn btn-primary btn-block" onclick="view_tables();"><i class="fas fa-map-marker-alt"></i><br>auswählen</button>
+              </div>
+          </div>
+          <div class="row"  style="margin: 0px;">
+              <div class="col-sm-12" style="background-color: black; font-weight: bold; text-align: right; border: 1px solid green;; height: 40px; font-size: 30px; color: green; vertical-align: middle; padding-right: 5px;">
+                <span id="sumtotal">0,00</span>€
+              </div>
+          </div>
+      <div border: 1px solid grey;">
+      <table class="table table-bordered table-striped w-100" id="checkout" >
         <thead class="thead-dark">
           <tr>
-            <th style="padding: 0px;"><select id="grouplist3"  class="form-control" placeholder="group" onchange="load_productgroup('3');"></select></th>
+            <th>Anz.</th>
+            <th>Einkauf</th>
+            <th></th>
           </tr>
         </thead>
         <tbody>
         </tbody>
       </table>
+      </div>
+      
+      
     </div>
     
-      <!--<div class="row">
-        <div class="col-sm-12">
-          <nav class="navbar navbar-dark bg-dark">
-            <div class="mr-auto">
-              <div class="btn-group" role="group" aria-label="Groups" id="groupbuttons">
-                <button class="btn btn-primary" onclick="loadgroup();"><i class="fas fa-folder-open"></i><br/>Gruppe 1</button>
-                <button class="btn btn-primary" onclick="loadgroup();"><i class="fas fa-folder-open"></i><br/>Gruppe 2</button>
-                <button class="btn btn-primary" onclick="loadgroup();"><i class="fas fa-folder-open"></i><br/>Gruppe 3</button>
-                <button class="btn btn-primary" onclick="loadgroup();"><i class="fas fa-folder-open"></i><br/>Gruppe 4</button>
-                <button class="btn btn-primary" onclick="loadgroup();"><i class="fas fa-folder-open"></i><br/>Gruppe 5</button>
+  </div>
+  
+</div>
+<!-- Modal Tables Begin -->
+<div class="modal fade" id="dlgTables" tabindex="-1" role="dialog" aria-labelledby="dlgTablesLabel" aria-hidden="true">
+    <div class="modal-dialog modal-lg" role="document">
+      <div class="modal-content">
+        <div class="modal-header">
+          <h5 class="modal-title" id="dlgTablesLabel">Tisch auswählen</h5>
+          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+            <span aria-hidden="true">&times;</span>
+          </button>
+        </div>
+        <div class="modal-body" id="tableslist">
+          
+        </div>
+        <div class="modal-footer">
+          <button type="button" class="btn btn-secondary" data-dismiss="modal">Abrechen</button>
+          
+        </div>
+      </div>
+    </div>
+  </div>
+<!-- Modal Tables End -->
+<!-- Modal Commands Begin -->
+<div class="modal fade" id="dlgCommands" tabindex="-1" role="dialog" aria-labelledby="dlgCommandsLabel" aria-hidden="true">
+    <div class="modal-dialog modal-lg" role="document">
+      <div class="modal-content">
+        <div class="modal-header">
+          <h5 class="modal-title" id="dlgCommandsLabel">Bestellungen</h5>
+          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+            <span aria-hidden="true">&times;</span>
+          </button>
+        </div>
+        <div class="modal-body">
+          ...
+        </div>
+        <div class="modal-footer">
+          <button type="button" class="btn btn-secondary" data-dismiss="modal">Abrechen</button>
+        </div>
+      </div>
+    </div>
+  </div>
+<!-- Modal Commands End -->
+<!-- Modal Commands Begin -->
+<div class="modal fade" id="dlgPayement" tabindex="-1" role="dialog" aria-labelledby="dlgPayementLabel" aria-hidden="true">
+    <div class="modal-dialog modal-lg" role="document">
+      <div class="modal-content">
+        <div class="modal-header">
+          <h5 class="modal-title" id="dlgPayementLabel">Bezahlen</h5>
+          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+            <span aria-hidden="true">&times;</span>
+          </button>
+        </div>
+        <div class="modal-body " style="padding-top: 0px;padding-bottom: 0px;">
+          <div class="row">
+              
+          </div>
+         
+              <div class="row"  style="margin: 0px;">
+                  <div class="col-sm-6 bg-primary text-white" style=" font-weight: bold; font-size: 30px; padding-top: 3px; padding-right: 5px;">
+                   <i class="fas fa-map-marker-alt white"></i> <span id="commandtable"></span>
+                  </div>
+                  <div class="btn-group btn-group-toggle col-sm-6" data-toggle="buttons">
+                      <label class="btn btn-secondary btn-block" style="font-size: 20px;"> 
+                        <input type="radio" name="payementtype" id="cash" autocomplete="off"><i class="far fa-square"></i> BAR</span>
+                      </label>
+                      <label class="btn btn-secondary btn-block" style="font-size: 20px;">
+                        <input type="radio" name="payementtype" id="card" autocomplete="off"><i class="far fa-check-square"></i> KARTE
+                      </label>
+                      
+                    </div>
               </div>
+              <div class="row"  style="margin: 0px;">
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: left; border: 1px solid red;; height: 40px; font-size: 30px; color: red; vertical-align: middle; padding-left: 5px;border-right: 0px;">
+                      Zu Bezahlen:
+                    </div>
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: right; border: 1px solid red;; height: 40px; font-size: 30px; color: red; vertical-align: middle; padding-right: 5px;border-left: 0px;">
+                    <span id="sumtotal">0,00</span>€
+                  </div>
+              </div>
+              <div class="row"  style="margin: 0px;">
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: left; border: 1px solid white; height: 40px; font-size: 30px; color: white; vertical-align: middle; padding-left: 5px;border-right: 0px;">
+                      Erhalten:
+                    </div>
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: right; border: 1px solid white; height: 40px; font-size: 30px; color: white; vertical-align: middle; padding-right: 5px;border-left: 0px;">
+                    <span id="sumtotalgiven">0,00</span>€
+                  </div>
+              </div>
+              <div class="row"  style="margin: 0px;">
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: left; border: 1px solid yellow; height: 40px; font-size: 30px; color: yellow; vertical-align: middle; padding-left: 5px; border-right: 0px;">
+                      Wechselgeld:
+                    </div>
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: right; border: 1px solid yellow; height: 40px; font-size: 30px; color: yellow; vertical-align: middle; padding-right: 5px;border-left: 0px;">
+                    <span id="sumtotalpayed">0,00</span>€
+                  </div>
+              </div>
+              <div class="row"  style="margin: 0px;">
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: left; border: 1px solid green; height: 40px; font-size: 30px; color: green; vertical-align: middle; padding-left: 5px;border-right: 0px;">
+                    Bezahlt
+                  </div>
+                  <div class="col-sm-6" style="background-color: black; font-weight: bold; text-align: right; border: 1px solid green; height: 40px; font-size: 30px; color: green; vertical-align: middle; padding-right: 5px;border-left: 0px;">
+                      <span id="sumtotalpayed">0,00</span>€
+                    </div>
+              </div>
+          <div id="keypad" class="row justify-content-center" >
+          <div class="row" style="margin: 0px;">
+            <div class="btn-group" role="group" >
+                <button class="btn btn-secondary border-white" style="font-size: 25px;" onclick="addvalue('1');">1</button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;" onclick="addvalue('2');">2</button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;" onclick="addvalue('3');">3</button>  
+            </div>
+            <div class="btn-group" role="group">
+                <button class="btn btn-secondary border-white" style="font-size: 25px;width: 100px;" onclick="addvalue('5');"><i class="fas fa-backspace"></i></button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;width: 100px;" onclick="addvalue('10');"><i class="fas fa-undo"></i></button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;width: 100px;" onclick="addvalue('20');">1:1</button>  
+            </div>
+            
+          </div>
+          <div class="row" style="margin: 0px;">
+            <div class="btn-group" role="group" >
+                <button class="btn btn-secondary border-white"  style="font-size: 25px;" onclick="addvalue('4');">4</button>
+                <button class="btn btn-secondary border-white"  style="font-size: 25px;" onclick="addvalue('5');">5</button>
+                <button class="btn btn-secondary border-white"  style="font-size: 25px;" onclick="addvalue('6');">6</button>  
+            </div>
+            <div class="btn-group" role="group" >
+                <button class="btn btn-secondary border-white"  style="font-size: 25px;width: 100px;" onclick="addvalue('5');">5 â‚¬</button>
+                <button class="btn btn-secondary border-white"  style="font-size: 25px;width: 100px;" onclick="addvalue('10');">10 â‚¬</button>
+                <button class="btn btn-secondary border-white"  style="font-size: 25px;width: 100px;" onclick="addvalue('20');">20 â‚¬</button>  
+            </div>
+            
+          </div>
+          <div class="row" style="margin: 0px;">
+            <div class="btn-group" role="group" >
+                <button class="btn btn-secondary border-white" style="font-size: 25px;" onclick="addvalue('7');">7</button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;" onclick="addvalue('8');">8</button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;" onclick="addvalue('9');">9</button>  
             </div>
-          </nav>
+            <div class="btn-group" role="group" >
+                <button class="btn btn-secondary border-white" style="font-size: 25px;width: 100px;" onclick="addvalue('50');">50 â‚¬</button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;width: 100px;" onclick="addvalue('100');">100 â‚¬</button>
+                <button class="btn btn-secondary border-white" style="font-size: 25px;width: 100px;" onclick="addvalue('200');">200 â‚¬</button>  
+            </div>
+          </div>
+          <div class="row" style="margin: 0px;">
+              <div class="btn-group" role="group" >
+                  <button class="btn btn-secondary border-white" style="font-size: 25px;width: 75px;" onclick="addvalue(',');">,</button>
+                  <button class="btn btn-secondary border-white" style="font-size: 25px;width: 75px;" onclick="addvalue(',00');">,00</button>
+                  
+              </div>
+              
+                  <div class="btn-group btn-group-toggle" data-toggle="buttons">
+                      <label class="btn btn-secondary border-white" style="width: 150px;font-size: 20px;">
+                        <input type="checkbox" name="printticket" id="printticket" autocomplete="off"><i class="far fa-square"></i> Ticket
+                      </label>
+                      <label class="btn btn-secondary border-white"  style="width: 150px;font-size: 20px;">
+                        <input type="checkbox" name="printreceipt" id="printreceipt" autocomplete="off"><i class="far fa-check-square"></i> KassenBon
+                      </label>
+                      
+                    </div>
+              
+            </div>
+          </div>
         </div>
-      </div>
-      <div class="row">
-        <div class="col-sm-12">
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 1</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 2</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 3</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 4</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 5</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 1</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 2</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 3</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 4</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 5</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 1</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 2</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 3</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 4</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 5</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 1</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 2</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 3</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 4</button>
-          <button class="btn btn-secondary" onclick="addproduct();">Produkt 5</button>  
+        <div class="modal-footer">
+          <button type="button" class="btn btn-secondary" data-dismiss="modal">Abrechen</button>
+          <button type="button" class="btn btn-secondary" onclick="book_shoppingcard">Buchen</button>
         </div>
       </div>
-    </div>-->
-    
+    </div>
   </div>
-  
-</div>
+<!-- Modal Commands End -->
 <script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
 <script src="../../node_modules/jquery/dist/jquery.min.js"></script>
 <script src="../../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
index 403268e..7a3ae82 100644 (file)
@@ -1,6 +1,7 @@
 var winh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
 var config = {}; 
-var tblheight1=winh-150;
+var shoppingcart = {products:{},transaction:{}};
+var tblheight1=winh-180;
 function initpage(){
   loadconfig();
   load_group_selects();
@@ -67,7 +68,7 @@ function load_productgroup(listnum){
   
   for (var i in products.sqldata){
     var trow = '<tr>';
-    trow += '<td class="font-weight-bold"><div onclick="addproduct(\''+ products.sqldata[i].id +'\')">' + products.sqldata[i].name+'<br/><span class="font-weight-normal">'+ products.sqldata[i].specification +'</span><span class="badge badge-secondary float-right">'+products.sqldata[i].grossamount+'€</span><div></td>';
+    trow += '<td class="font-weight-bold" style="padding: 0px;"><div class="btn btn-block font-weight-bold"  style="margin: 0px;padding: 5px;pdding-top: 8px; padding-bottom: 8px;" onclick="addproduct(\''+ products.sqldata[i].id +'\');">' + products.sqldata[i].name+'<br/><span class="font-weight-normal">&nbsp;'+ products.sqldata[i].specification +'</span><span class="badge badge-secondary float-right">'+products.sqldata[i].grossamount+'€</span></div></td>';
     trow += '</tr>';
     $('#producttable' + listnum + " > tbody").append(trow.replace(/null/g,''));
   }
@@ -76,30 +77,41 @@ function load_productgroup(listnum){
 
 function addproduct(idproduct){
   console.log(idproduct);
-  var sql = "select * from products where id='"+idproduct+"';";
+  
+  var sql = "select id,name,specification,grossamount,netamount,vatpercent,replace(printf(\"%.2f\",grossamount),'.',',') as dsp_grossamount from products where id='"+idproduct+"';";
+  console.log(sql);
   var product = appdb.dbquery(sql);
   var trow = "";
   var bdone = false;
   if ((product) && product.sqldata){
     var idprod = product.sqldata[0].id;
-    if ((config.checkout_grouping) && (config.checkout_grouping == "1")){
-      if ($("#checkout_" + idprod) != null){
-        console.log("Product " + idprod +" exists!");
+    var sc_idprod = idprod;
+    if ((!config.checkout_grouping) || (config.checkout_grouping.value != "1")){
+      sc_idprod = Object.keys(shoppingcart).length + "_" + idprod;
+    }
+    if ((shoppingcart['products'][sc_idprod]) && (config.checkout_grouping) && (config.checkout_grouping.value == "1")){
+      if ($("#checkout_" + sc_idprod) != null){
         var cnum = $("#checkout_" + idprod + " td:first").text();
-        cnum = cnum + 1;
+        cnum = parseInt(cnum) + 1;
         $("#checkout_" + idprod + " td:first").html(cnum);
+        shoppingcart['products'][sc_idprod].quantity = cnum;
         bdone = true;
       }
-    } 
+        
+    }
+    
     if (bdone == false) {
       //console.log("Add Product " + idprod +" to list!");
-      trow = '<tr id="checkout_'+ idprod+'">';
+      trow = '<tr id="checkout_'+ sc_idprod+'">';
       trow +=  '<td>1</td>' ;
-      trow +=  '<td class="font-weight-bold">' + product.sqldata[0].name+'<br/><span class="font-weight-normal">'+ product.sqldata[0].specification +'</span><span class="badge badge-secondary float-right">'+product.sqldata[0].grossamount+'€</span></td>'; 
-      trow += '<td><button class="btn btn-danger" onclick="remove_co_product(\''+ idprod +'\');"><i class="fas fa-times"></i></button></td>';
+      trow +=  '<td class="font-weight-bold">' + product.sqldata[0].name+'<br/><span class="font-weight-normal">'+ product.sqldata[0].specification +'</span><span class="badge badge-secondary float-right">'+product.sqldata[0].dsp_grossamount+'€</span></td>'; 
+      trow += '<td><button class="btn btn-danger" onclick="remove_co_product(\''+ sc_idprod +'\');"><i class="fas fa-times"></i></button></td>';
       trow += '</tr>';
-      console.log(trow);
+      //console.log(trow);
       $("#checkout > tbody").append(trow);
+      
+      //console.log(sc_idprod);
+      shoppingcart['products'][sc_idprod] = {quantity:1,id_product:idprod,grossamount: product.sqldata[0].grossamount,vatamount: product.sqldata[0].vatamount,netamount: product.sqldata[0].netamount};
     }
   }
   calctotal();
@@ -107,13 +119,58 @@ function addproduct(idproduct){
 }
 
 function remove_co_product(id){
-
+  console.log("remove id: "+ id);
+  $("table#checkout > tbody tr#checkout_"+id).remove();
+  delete shoppingcart['products'][id];
+  calctotal();
 }
 
 function calctotal(){
-
+  console.log(shoppingcart);
+  var sum = 0.00;
+  for (var i in shoppingcart["products"]){
+    sum += shoppingcart["products"][i].quantity * parseFloat(shoppingcart["products"][i].grossamount);
+  }
+  $("#sumtotal").html(sum.toFixed(2).replace('.',',') );
+  return sum.toFixed(2);
 }
 
-function clean_checkout(){
+function clean_shoppingcart(){
   $("#checkout > tbody").html("");
+  shoppingcart = {products:{},transaction:{}};
+}
+
+function view_unpayedshoppingcarts(){
+  $('#dlgCommands').modal('show');
+}
+
+function save_shoppingcart(){
+  
+}
+
+function view_payementdlg(ptype){
+  
 }
+
+function book_shoppingcart(ptype){
+  shoppingcart['transaction']['id']= appdb.generate_uuid();
+  // appdb.dbexec("INSERT INTO transactions (id, payementtype,  id_table, payedamount, cashbackamount, status, statusdate) VALUES('"+shoppingcart['transaction']['id']+"', '"+ptype+"', '"+shoppingcart['transaction']['id_table']+"',  0, 0, '', now());");
+
+  $('#dlgPayement').modal('show');
+}
+
+function view_tables(){
+  var tbls = appdb.dbquery("select id,name from tables;");
+  $("#tableslist").html("");
+  console.log(tbls);
+  for (var i in tbls.sqldata){
+    $("#tableslist").append('<button class="btn btn-secondary" onclick="setTable(\''+tbls.sqldata[i].id+'\',\''+tbls.sqldata[i].name+'\');">'+tbls.sqldata[i].name+'</button>');
+  }
+  $('#dlgTables').modal('show');
+}
+
+function setTable(id,name){
+  $("#commandtable").html(name);
+  shoppingcart['transaction']['id_table'] = id;
+  $('#dlgTables').modal('hide');
+}
\ No newline at end of file
index 10f971c..eecf1f7 100644 (file)
       "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
       "dev": true
     },
+    "asar": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/asar/-/asar-1.0.0.tgz",
+      "integrity": "sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg==",
+      "dev": true,
+      "requires": {
+        "chromium-pickle-js": "^0.2.0",
+        "commander": "^2.19.0",
+        "cuint": "^0.2.2",
+        "glob": "^7.1.3",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.1",
+        "pify": "^4.0.1",
+        "tmp-promise": "^1.0.5"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+          "dev": true
+        }
+      }
+    },
     "asn1": {
       "version": "0.2.4",
       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
       "dev": true
     },
+    "author-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz",
+      "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=",
+      "dev": true
+    },
     "aws-sign2": {
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
       "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
       "dev": true
     },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "base64-js": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+      "dev": true
+    },
     "bcrypt-pbkdf": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
         "tweetnacl": "^0.14.3"
       }
     },
+    "bluebird": {
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz",
+      "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==",
+      "dev": true
+    },
     "bootstrap": {
       "version": "4.3.1",
       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz",
       "integrity": "sha512-033fnjYKgFZO98PL6E0JAqmwTJ2isoQxJBFU6BwEbIMmRZETk5iDoPGgV+7wORt4c+yABNWj8EnbFBWAHz5YPw==",
       "dev": true
     },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+      "dev": true,
+      "requires": {
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
+      }
+    },
+    "buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+      "dev": true
+    },
+    "buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+      "dev": true
+    },
     "buffer-from": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
       "dev": true
     },
+    "chromium-pickle-js": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
+      "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=",
+      "dev": true
+    },
     "code-point-at": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
         "delayed-stream": "~1.0.0"
       }
     },
+    "commander": {
+      "version": "2.20.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+      "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+      "dev": true
+    },
+    "compare-version": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+      "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
     "concat-stream": {
       "version": "1.6.2",
       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
       "dev": true
     },
+    "cuint": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+      "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+      "dev": true
+    },
     "currently-unhandled": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
         "sumchecker": "^2.0.2"
       }
     },
+    "electron-notarize": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.0.5.tgz",
+      "integrity": "sha512-YzrqZ6RDQ7Wt2RWlxzRoQUuxnTeXrfp7laH7XKcmQqrZ6GaAr50DMPvFMpqDKdrZSHSbcgZgB7ktIQbjvITmCQ==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "fs-extra": "^7.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "fs-extra": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+          "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        }
+      }
+    },
+    "electron-osx-sign": {
+      "version": "0.4.11",
+      "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz",
+      "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "compare-version": "^0.1.2",
+        "debug": "^2.6.8",
+        "isbinaryfile": "^3.0.2",
+        "minimist": "^1.2.0",
+        "plist": "^3.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        }
+      }
+    },
+    "electron-packager": {
+      "version": "13.1.1",
+      "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-13.1.1.tgz",
+      "integrity": "sha512-3Drgcw8OEOP3Psw/PprloAFJSkSUSQgjUq3AmWffJGB3Kj5WXmZl6A3GOUs8aT7bP/8GWg4oYqSiCSnA5PQkdQ==",
+      "dev": true,
+      "requires": {
+        "asar": "^1.0.0",
+        "debug": "^4.0.1",
+        "electron-download": "^4.1.1",
+        "electron-notarize": "^0.0.5",
+        "electron-osx-sign": "^0.4.11",
+        "extract-zip": "^1.0.3",
+        "fs-extra": "^7.0.0",
+        "galactus": "^0.2.1",
+        "get-package-info": "^1.0.0",
+        "parse-author": "^2.0.0",
+        "pify": "^4.0.0",
+        "plist": "^3.0.0",
+        "rcedit": "^1.0.0",
+        "resolve": "^1.1.6",
+        "sanitize-filename": "^1.6.0",
+        "semver": "^5.3.0",
+        "yargs-parser": "^13.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "fs-extra": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+          "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        },
+        "pify": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+          "dev": true
+        }
+      }
+    },
     "env-paths": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz",
         }
       }
     },
+    "flora-colossus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.0.tgz",
+      "integrity": "sha1-VHKcNh7ezuAU3UQWeeGjfB13OkU=",
+      "dev": true,
+      "requires": {
+        "debug": "^3.1.0",
+        "fs-extra": "^4.0.0"
+      }
+    },
     "forever-agent": {
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
         "universalify": "^0.1.0"
       }
     },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "galactus": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz",
+      "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=",
+      "dev": true,
+      "requires": {
+        "debug": "^3.1.0",
+        "flora-colossus": "^1.0.0",
+        "fs-extra": "^4.0.0"
+      }
+    },
+    "get-package-info": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz",
+      "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.1.1",
+        "debug": "^2.2.0",
+        "lodash.get": "^4.0.0",
+        "read-pkg-up": "^2.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "load-json-file": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "strip-bom": "^3.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+          "dev": true
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+          "dev": true,
+          "requires": {
+            "pify": "^2.0.0"
+          }
+        },
+        "read-pkg": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^2.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^2.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.0.0",
+            "read-pkg": "^2.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "dev": true
+        }
+      }
+    },
     "get-stdin": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
         "assert-plus": "^1.0.0"
       }
     },
+    "glob": {
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+      "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
     "graceful-fs": {
       "version": "4.1.15",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
         "repeating": "^2.0.0"
       }
     },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
     "inherits": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
       "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
       "dev": true
     },
+    "isbinaryfile": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
+      "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+      "dev": true,
+      "requires": {
+        "buffer-alloc": "^1.2.0"
+      }
+    },
     "isstream": {
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
         "strip-bom": "^2.0.0"
       }
     },
+    "locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "requires": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash.get": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+      "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+      "dev": true
+    },
     "loud-rejection": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
         "mime-db": "~1.38.0"
       }
     },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
     "minimist": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
       "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
       "dev": true
     },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+      "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+      "dev": true,
+      "requires": {
+        "p-try": "^1.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "requires": {
+        "p-limit": "^1.1.0"
+      }
+    },
+    "p-try": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true
+    },
+    "parse-author": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz",
+      "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=",
+      "dev": true,
+      "requires": {
+        "author-regex": "^1.0.0"
+      }
+    },
     "parse-json": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
       "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
       "dev": true
     },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
     "path-parse": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
         "pinkie": "^2.0.0"
       }
     },
+    "plist": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
+      "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.2.3",
+        "xmlbuilder": "^9.0.7",
+        "xmldom": "0.1.x"
+      }
+    },
     "popper.js": {
       "version": "1.14.7",
       "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.7.tgz",
         "strip-json-comments": "~2.0.1"
       }
     },
+    "rcedit": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.1.tgz",
+      "integrity": "sha512-6NjOhOpkvbc/gpMEfk2hpXuWyHfbLFN8as5jx3jf4bhELvouRoYvc8d/W3NVVPwEBF1ICfbpwp1oRm8OJ2WDWw==",
+      "dev": true
+    },
     "read-pkg": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "dev": true
     },
+    "sanitize-filename": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz",
+      "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=",
+      "dev": true,
+      "requires": {
+        "truncate-utf8-bytes": "^1.0.0"
+      }
+    },
     "semver": {
       "version": "5.6.0",
       "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
       "integrity": "sha512-mr4MZx8XYMR7Ig/sShKILuhZj8jj89gy2QBMV0eNByOqtKUdkBLoY8SZDOwQmKsbvvFOcdWsUXyuPv6vllHj0g==",
       "dev": true
     },
+    "tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "~1.0.2"
+      }
+    },
+    "tmp-promise": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.0.5.tgz",
+      "integrity": "sha512-hOabTz9Tp49wCozFwuJe5ISrOqkECm6kzw66XTP23DuzNU7QS/KiZq5LC9Y7QSy8f1rPSLy4bKaViP0OwGI1cA==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.0",
+        "tmp": "0.0.33"
+      }
+    },
     "tough-cookie": {
       "version": "2.4.3",
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
       "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
       "dev": true
     },
+    "truncate-utf8-bytes": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+      "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
+      "dev": true,
+      "requires": {
+        "utf8-byte-length": "^1.0.1"
+      }
+    },
     "tunnel-agent": {
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
         "punycode": "^2.1.0"
       }
     },
+    "utf8-byte-length": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
+      "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=",
+      "dev": true
+    },
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
         "extsprintf": "^1.2.0"
       }
     },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "xmlbuilder": {
+      "version": "9.0.7",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+      "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+      "dev": true
+    },
+    "xmldom": {
+      "version": "0.1.27",
+      "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
+      "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
+      "dev": true
+    },
     "xtend": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
         "object-keys": "~0.4.0"
       }
     },
+    "yargs-parser": {
+      "version": "13.0.0",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
+      "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+          "dev": true
+        }
+      }
+    },
     "yauzl": {
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
index bbe964d..b9e7e5f 100644 (file)
@@ -5,7 +5,9 @@
   "main": "main.js",
   "scripts": {
     "start": "electron .",
-    "test": "echo \"Error: no test specified\" && exit 1"
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "package-win": "electron-packager . cashbox --overwrite --asar --platform=win32 --arch=x64 --out=release-builds --version-string.CompanyName=DKS --version-string.FileDescription=DKS --version-string.ProductName=CashBox --icon=img/cashbox_KhG_icon.ico",
+"build": "npm run pack:osx && npm run pack:win32 && npm run pack:win64"
   },
   "repository": {
     "type": "git",
   ],
   "author": "Kilian Saffran",
   "license": "MIT",
+  "dependencies": {
+    "@fortawesome/fontawesome-free": "^5.7.2",
+    "bootstrap": "^4.3.1",
+    "bootstrap-table": "^1.13.4",
+    "jquery": "^3.3.1",
+    "popper.js": "^1.14.7",
+    "tinymce": "^5.0.1",
+    "tinymce-i18n": "^19.2.11"
+  },
   "devDependencies": {
     "@fortawesome/fontawesome-free": "^5.7.2",
     "bootstrap": "^4.3.1",
     "bootstrap-table": "^1.13.4",
     "electron": "^4.0.5",
+    "electron-packager": "^13.1.1",
     "jquery": "^3.3.1",
     "popper.js": "^1.14.7",
     "tinymce": "^5.0.1",