Skip to content
This repository has been archived by the owner on Apr 6, 2021. It is now read-only.

Solution to compress printing stream from `TSE` instance to a remote printers.

License

Notifications You must be signed in to change notification settings

edouard-lopez/open-printing-tunnel

Repository files navigation

Build Status

OPT

OPT stands for Open Printing Tunnel is a solution to compress printing stream from TSE instance to a remote printers.

screenshot of printers management interface

More screenshots in ./docs/screenshots/.

Components

  • backend/: manage OPT containers, usually one per customer (e.g. opt.coaxis.com) ;
    • admin: backend to managed customers and users also provide a REST API ;
    • frontend/: web interface to manage daemon containers ;
  • daemon/: manage compression channels through the UNIX daemon mast and mast-utils ;
    • api/: REST API to control mast daemon and mast-utils ;
    • frontend/: web interface to manage sites and printers (add, remove, edit, etc.) and check printers status ;
    • optbox/: development container to simulate remote device ;
    • proxy-web/: proxy requests to frontend or the API.
  • deploy/: scripts for project's deployment ;
  • nginx/: main server configuration to reach backend ;

Architecture

Printing with OPT

architecture printing through OPT

Admin

Administrators use the Django admin to:

  • create and manage clients ;
  • manage employees and their permissions to control daemons ;

Back-office: Containers Management

Technician employees use the back-office to:

  • create and manage daemons' container ;

architecture container management

Permissions

User Clients Daemons Networks Admin Description
anonymous - - - -
employee - - - -
technician - - flag to enable on employee
admin

Front-office: OPT Container

Employees use front-office to:

  • create and manage sites ;
  • create and manage printers' tunnel ;

architecture OPT container

Infrastructure evolution

architecture evolution

Documentation

Requirements

Most of the requirements are managed by the Docker containers themselves. What you need is a working Docker environment (i.e. docker and docker-compose).

For the host system we recommend Debian-based OS, other distribution are not officially supported. For reference, here is a list of the main requirements:

  • Debian 6.0+ or Ubuntu-server 16.04+ ;
  • docker ≥1.12 ;
  • docker-compose ≥1.7.0;
  • Python ≥3.5.

Installation

From developer computer, run:

$ cd frontend/
$ npm run build
$ cd ../deploy/
$ archive="$(./create_archive.sh | tail -n 1)"
$ ./send-scripts.sh "$archive"

If you need to setup a python environment, please have a look at our short Python and virtualenv doc.

Development

See docs/how-to-develop.md.

Glossary

  • channels: a port forwarding configuration from datacenter to printer (one per printer) ;
  • clients: company that require printing stream compression, may have several sites, each with one or many printers ;
  • datacenter: manages TSE instances for differents sites and clients, also manage the OPT instance ;
  • remote devices or sites: a machine at the customer location accessible through Internet by its IP address or FQDN. Each device can be connected to one or more printers locally to forward data streams ;
  • tunnels: an SSH's tunnel between the data-center and the remote machine. Can have one or more channels ;
  • configuration : are stored in each container in /etc/mast/$site_id while the /etc/mast/ directory is a docker volume.

What's under the hood?

About

Solution to compress printing stream from `TSE` instance to a remote printers.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published