Architecture

Top  Previous  Next

A CirrusPrint system is composed of a server and one or more clients.  The server receives print jobs and documents, processes those jobs, and delivers them to remote printers, files, or users.  The server receives documents in several ways:

 

Network ports, which simulate network printers, allowing normal application printing to submit jobs

File system paths, so that files can be submitted by simply dropping them into a folder

Network ports and file system paths can be on the server, or configured to be hosted by any remote location

Email, enabling job submission by email from any application that can email files

API submission, enabling programmatic document printing or delivery

 

As jobs arrive, they are parsed and queued, and then delivered to remote locations or users.  Encryption and compression techniques are used to transfer documents securely and with low overhead.

 

Remote locations run CirrusPrint system client software, which is designed to maintain a connection to the CirrusPrint server and receive, decompress, and deliver documents to printers or file locations that are local to the client.  Users can run the CirrusPrint browser client, which maintains a connection to the server and receives documents for viewing.

 

Software Components

 

Server

The server is installed on a system that is accessible from remote locations and browser users.  All documents to be transported from an input source to an output device go through the server.  When documents arrive, they are processed and prepared for transport to an output device.  Documents are queued, and remote clients notified.

 

The server operates as a web server and optionally as a mail server.  It is configured and monitored with any modern browser, such as Chrome, Edge, or Firefox. Many elements of configuration can also be managed by API or command line, to support configuration automation.

 

The server can be configured to listen on standard http, https, and smtp ports (80, 443, 25) or private ports (typically 27082, 27083, and 27085 - 27084 is used by the system client), or any user-defined ports.  Multiple servers can be configured to work with common data, enabling high-availability, typically with a proxy server or servers providing connection endpoints with load balancing and failover configuration.

 

A login page is presented, followed by a menu offering server monitoring tools, and if you are logged in as an administrator, configuration tools.  A default admin login with a random password is created on initial startup.  You can obtain the password with a command line request when logged in as root on Linux or Administrator on Windows: cp30s -getpass admin, or via the Windows manager.  This administrative login should be changed as part of the initial configuration, using the Users tool.

 

The CirrusPrint server supports multiple companies or groups in a single installation, so it is suitable for use by ISP's and hosting organizations.

 

System Clients

System clients run where documents need to be delivered to local printers, files, or programs.  System clients can be configured to deliver documents to any number of targets, configured as output devices.  Clients are configured to connect with one or more servers.  When started, the client connects to a server, logs in, and waits for document deliveries.  Documents are downloaded as soon as they are available from the server, and delivered to a configured target device.

 

System clients can also provide input sources for jobs, in the form of ports or paths.  This allows document production to occur at remote location, the files uploaded to the server, and then sent to output devices at another remote location.

 

Browser Clients

An HTML5 application, with support for offline use, enables a "location" to be a user's mobile or desktop browser.  The browser stores the documents locally to provide viewing access even when offline.  Any given user can use any number of browser clients on different devices, all synchronized with one another while at the same time offering local saved copies on specific devices.

 

Configuration

 

Locations and Users

Remote locations are where system client software is installed, on the system or network where documents can be delivered to target devices.  Users are special locations that run the browser client, on a desktop system or mobile device.  A system client can receive print jobs or files and deliver them to local (to the client) printers, file system locations, or programs.  A browser client can receive documents, store them in the browser, and display them on demand.

 

Document Sources (Inputs)

Inputs to the server include network ports, file system paths, and email addresses. Port inputs function just like printers with network ports.  Applications and spoolers can be configured to print to these ports.  Path inputs are simply folders or directories which are monitored for new files, optionally matching naming patterns.  Both ports and paths can be hosted on the server or by a system client.  Email inputs are either specific email addresses hosted by the server, or dedicated IMAP mailboxes, which are monitored for mail with attachments.  Email sources support anti-spam features to prevent printing or forwarding unwanted documents.

 

The API can also be used to submit jobs, so can be considered an input source.

 

Remote Devices (Outputs)

Remote devices are configured printers, files, or programs that a remote system client delivers a job to.  Jobs can be sent to printer devices by name, network address, or a share name.  For printing, the format of the input data is normally maintained when sending to the output device.  This is important to maintain print job features such as duplex, copies, and tray control.  However, CirrusPrint can also print PDF files, images, and text data through a print driver.  When printing PDF files through a driver, printer control features can be managed by job properties sent with the API.

 

A browser user is a special type of device, simply called "browser".  It runs the browser client software to receive, display, and forward documents.  This feature enables the concept of printing to a user rather than a printer, delivering documents faster and with less clutter than emailing them.  A browser user can login to the server from any number of devices, both desktop and mobile.  The user's documents are synchronized across devices when they connect.