C++ HTML Perl QMake Shell JavaScript
Clone or download
ddmitov
Latest commit a8ffa07 Jul 4, 2018

README.md

Perl Executing Browser

GitHub Version GitHub License Travis CI Build Status Coverity Scan Build Status

Perl Executing Browser (PEB) is an HTML5 user interface for Perl 5 desktop applications. By default it runs local Perl 5 scripts as child processes with no server and is implemented as a C++ executable based on the Qt 5 libraries. Inspired by Electron and NW.js, PEB is another reuse of web technologies in desktop applications with Perl doing the heavy lifting instead of Node.js.

Screenshots

PEB Screenshot

Contents

Quick Start

These are the basic steps for building your first PEB-based serverless application:

These are the basic steps for building your first PEB-based application using a local Perl server:

PEB is created to work from any directory without installation meaning that:

  • All application files must be located in the {PEB_binary_directory}/resources/app folder.
  • All writable data files must be located in the {PEB_binary_directory}/resources/data folder or
    in the {AppImage_binary_directory}/resources/data folder if a PEB-based application is packed as an Linux AppImage single executable.

Design Objectives

  • 1. Easy and beautiful graphical user interface for Perl 5 desktop applications
  • 2. Fast, zero-installation software
  • 3. Cross-platform availability
  • 4. Secure solution, serverless by default
  • 5. Maximal reuse of existing web technologies and standards

Features

Security

  • PEB does not need administrative privileges, but will not refuse to use them if needed.
  • PEB does not need and does not implement any server, but will start one if so configured.
  • Local Perl 5 scripts are executed with no sandbox and they have direct access to local files.
  • Cross-site scripting is disabled.
  • Calling local Perl scripts from a web page is blocked.
  • Files or folders can not be selected with their full paths from web pages.

What PEB Is Not

  • PEB is not a general purpose web browser and does not have all traditional features of general purpose web browsers.
  • PEB is not a server and is not an implementation of the CGI protocol.
    REQUEST_METHOD, QUERY_STRING and CONTENT_LENGTH environment variables are borrowed from the CGI protocol to start local Perl scripts as child processes without any exposure to other applications.
  • PEB does not embed any Perl interpreter in itself and depends on a standard or relocatable Perl distribution.

Limitations

  • Only single-page applications are supported with no pop-up windows.
  • Local Perl scripting inside frames is not supported.
  • No files can be downloaded.
  • QtWebEngine builds do not support printing.
  • window.print() is not supported.

History

PEB was started as a simple GUI for personal databases in 2013 by Dimitar D. Mitov.

Thanks and Credits

License

This program is free software;
you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License,
as published by the Free Software Foundation;
either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Authors

Dimitar D. Mitov, 2013 - 2018
Valcho Nedelchev, 2014 - 2016