.. Introduction documentation converted to sphynx on July 12 2020 Introduction ^^^^^^^^^^^^^ ######################### Purpose ######################### *************************** About author *************************** I am Sergey A. Belous and this is my `home page `_. One can download all web-pages from this web-site as `single CHM file `_ for offline reading. *************************** About Proxy32 software *************************** In my free time I develop Windows software called `Proxy32 `_ (64-bit GUI executable written in C++). It helps me to organize and perform rather generic and routine computer tasks at work and at home. It is beneficial to have all kind of routine computer tasks neatly organized and always one click away for execution. Examples of routine computer tasks: start programs, open files, fill in the web forms (login/etc) or type complex parametric commands via remote desktop window or via console of virtual machine, especially, when copy/paste does not work. Please, see :numref:`some-launchers-to-execute-routine-computer-tasks`. .. note:: proxy32 functionality evolution. Over the years (since 2001) functionality of proxy32.exe software was evolving in different directions. It has started from original focus on development of custom-made automated terminal software that is well integrated with CYGWIN and overcomes many limitations of existing terminals. More recent development focus is on controlling external RemoteDesktop/VM_Console and WebBrowser windows in a manner similar to what can be achieved via AHK. Latest Proxy32 functionality is subset of functionality that one can achieve using AHK, but AHK requires learning the whole new programing language while Proxy32 is trying to employ more of GUI-driven approach for the subset of AHK functionality available. The heart of the Proxy32 functionality is Window (called "LauncherTree" window) where user can create and configure Tree of various gadgets. User can execute different computer tasks by double-clicking on configured gadgets (called "TreeNodes" or "Launchers"). This Tree Window represents the **"Universal Organizer"** for computer tasks. .. _some-launchers-to-execute-routine-computer-tasks: .. table:: Some Launchers to execute routine computer tasks +-----------------------------------+---------------+-----------------------------------------+ | Routine Computer Tasks | Launcher type| Launcher functionality | +===================================+===============+=========================================+ |Start Windows Programs |LAUNCH |Start Windows Process based | | | |on configured command line. | | | |Capture Process Window into | | | |Proxy32 workspace if needed. | | | |Process can be started elevated. | | | |This is similar to Windows Shortcut. | +-----------------------------------+---------------+-----------------------------------------+ |Open files or web-pages |VIEWER |Opens file/web-page with configured | | | |application based on user-configured | | | |**"ViewerDefinions"** table. | | | |**"ViewerDefinions"** table is an | | | |ordered list of user-configured regular | | | |expressions. Each regular expression in | | | |the list is associated with certain | | | |windows application. Regular expressions | | | |in the list are sequentially applied | | | |to file/webpage URL configured in VIEWER.| | | |When first regular expression matches | | | |the URL, file or webpage is opened in the| | | |Windows application that is associated | | | |with matched regular expression. | | | |This is similar to associating Windows | | | |applications with file extensions. | +-----------------------------------+---------------+-----------------------------------------+ |Fill in the web forms (login/etc) |COMMAND |Simulates user's typing and mouse clicks | |or type complex parametric commands| |into external (non-Proxy32) window that | |via remote desktop window | |is marked as active in the Proxy32 | |or via console of virtual machine | |Desktop Window Manager. | |especially, when copy/paste does | | | |not work | | | +-----------------------------------+---------------+-----------------------------------------+ Proxy32 GUI interface also includes Desktop Window Manager with 6 separate workspaces, automated terminal for CYGWIN and Scintilla-based script editor, but those extra GUI parts are intended to support main "Organizer" functionality described above. Software is free to download and use, I have borrowed license text from PuTTY. This is MIT-type license. Dynamic libraries and static C/C++ libraries linked to Proxy32 C++ code are all with non-restrictive licenses. Some 3rd party external standalone software components that are packaged and installed in the binary form (aka distributed in non-modified form) with my software include their own licenses, so, please, be sure to check those licenses before using this software in any commercial projects. Installed side-by-side 3rd party components are not necessary for Proxy32 to work. Some of those standalone components integrate with Proxy32 to expand its functionality. For example, CYGWIN OpenSSH package (or PuTTY plink/psftp - if CYGWIN OpenSSH is not installed) provides ssh/sftp functionality to Proxy32 terminal. Another example, AHK interpreter is expanding keyboard typing and mouse clicking functionality of Proxy32. Some other standalone components (like free and re-distributable text editors) are installed (extracted into folder inside of Proxy32 startup directory, no actual installation) together with Proxy32 just because they are part of my everyday workflow and I like them always to be around. They can be integrated in the Proxy32 GUI in some minimal way, for example, they can be configured to be called from Proxy32 user configuration on certain events. Some of those standalone 3rd party components may not be approved for various reasons by some corporate security folks to install on corporate computers. Therefore, proxy32.exe built-in installer dialog has some GUI options (check boxes) to let user skip extraction of those 3rd party standalone components from proxy32.exe binary. ######################### Download and installation ######################### proxy32.exe is 64bit application. It will only work on 64bit versions of Windows 10/11. Here is the `Proxy32 download link `_. Software is digitally signed by my `code developer certificate `_. It is combining installer and the program itself in single binary executable file proxy32.exe. If you drop proxy32.exe to Desktop and run from there it will install the program and create shortcut on the desktop. If you drop newer version of proxy32.exe on the Desktop and run it, it will find existing installation by using shortcut located on Desktop and offer to update existing installation. Running installer to update existing installation of Proxy32 does not automatically update 3rd party components installed side-by-side next to Proxy32. If you delete those 3rd party components before running update, Proxy32 will install newer versions of those components during update process (by extracting them from newer proxy32.exe binary). Feel free to share your thought about software at my e-mail address belous_sa@yahoo.com. ######################### Proxy32 License ######################### Proxy32 is copyright 2001-2025 Sergey A Belous. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SERGEY BELOUS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ################################################## Links to 3rd party components and their licenses ################################################## *********************** Linked at code level *********************** All components listed in this section are compiled into proxy32.exe binary with the exception of Python 3.9.0 64bit interpreter. Please, see :numref:`3rd-party-software-compiled-in-or-dynamically-linked`. Python 3.9.0 interpreter is in separate DLL (packaged with proxy32.exe and extracted from proxy32.exe) dynamically loaded by proxy32.exe at run-time. This is Python limitation, Python interpreter has to be linked as DLL to allow built-in Python interpreter to use extra Python modules that are also packaged as DLLs (and extracted from proxy32.exe together with Python interpreter DLL). If Python DLL is not present for loading, Proxy32.exe will work with the exception of functionality related to built-in Python interpreter. .. note:: Python.dll dependencies. - Python DLL was compiled by python.org folks using certain version of MSVC, therefore, proxy32.exe may also package full official installer of MSVC redistributables for the version of MSVC used to compile Python.dll. Python DLL comes from Python folks packaged with required MSVC redistributable DLLs side by side. But in some cases those redistributables have to be installed in the Windows OS for Python DLL to function properly. Python 3.9.0 64bit DLL is compiled with VS2015, MSVC redistributables for VS2015/2017/2019 should be automatically installed everywhere with Windows Update. - As a last resort users can download and install MSVC redistributables for VS2015/VS2017/VS2019 64bit to make Python DLL work. At the time of writing (|today|): this is the `page `_ and this is `download link `_ .. _3rd-party-software-compiled-in-or-dynamically-linked: .. table:: 3rd party software compiled in or dynamically linked :widths: 30 10 60 +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |3rd party Software |License |Purpose | |compiled in or | | | |dynamically linked | | | +================================================================================================================================================================+=====================================================================================================================================+============================================+ |`PCRE-6.7 (compiled into proxy32.exe binary) `_ |:download:`BSD for PCRE ` |for regex text search | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`eXpat-2.0.1 (compiled into proxy32.exe binary) `_ |:download:`MIT for eXpat ` |for loading XML configuration files | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`LibYAML-0.2.2 (compiled into proxy32.exe binary) `_ |`MIT for LibYAML `_ |to load YAML/JSON parameters files | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`Scintilla-3.7.3 (compiled into proxy32.exe binary) `_ |:download:`MIT-like ` |to implement SCRIPT editor | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`C/C++ CSV Parser (compiled into proxy32.exe) `_ |`MIT for CSV-parser `_ |to load CSV parameters files | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`Python 3.9.0 (DLL is extracted from proxy32.exe binary during the installation, then dynamically linked at run time by proxy32.exe) `_|`PSF `_ |for Python templating of COMMAND text | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`LUA 5.4.1 (compiled into proxy32.exe binary) `_ |`MIT for LUA `_ |for Lua templating of COMMAND text | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`LUA alien 0.7.1 - C FFI Library (compiled into proxy32.exe binary) `_ |`MIT for LUA alien library `_ |for calling C Functions from Lua | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`LibFFI 3.3 - C FFI Library (compiled into proxy32.exe binary) `_ |`MIT for LibFFI 3.3 library `_ |provides foundation for LUA alien library | +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ |`Adobe Source Code Pro Font Family (embedded into proxy32.exe binary) `_ |:download:`SIL OPEN FONT LICENSE Version 1.1 for Adobe Source Code Pro Font Family `|Default Monospaced Font for Proxy32 Terminal| +----------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------+ ********************************** Integrated at inter-process level ********************************** Those are 3rd party standalone components. proxy32.exe will function without them, though some functionality may be missing. They are extracted from proxy32.exe and installed side-by-side next to proxy32.exe. Please, see :numref:`3rd-party-software-installed-side-by-side`. .. _3rd-party-software-installed-side-by-side: .. table:: 3rd party software installed side by side :widths: 30 10 60 +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |3rd party Software |License |Purpose | |installed | | | |side by side | | | +==============================================================================================================================================================+=============================================================================================================+======================================================+ |`PuTTY/plink/psftp 0.74 64bit (side by side, optional) `_ |`MIT for PuTTY `_ |Provide SSH/SFTP functionality without CYGWIN OpenSSH.| | | |PuTTY.exe can be intergated via LAUNCH. | | | |plink.exe can be integrated via SHELL-TERMINAL with | | | |**"proxywinconsole.exe"** SHELL-TERMINAL's backend. | | | |psftp.exe can be used as direct backend for | | | |SHELL-TERMINAL. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`PuTTY plink 0.74 64bit (modified and included with source code changes) `_ |`MIT for modified PuTTY plink `_ |Modified version is named **"proxyplink.exe"**. | | | |Provides SSH functionality without CYGWIN OpenSSH. | | |:download:`PuTTY plink 0.74 code modifications ` |This is direct backend for SHELL-TERMINAL, | | | |no need to depend on | | | |proxywinconsole.exe SHELL-TERMINAL's backend anymore. | | | |Passes info about resizing of SHELL-TERMINAL's window | | | |to remote PTY/TTY over SSH to ensure correct | | | |functioning of remote full screen terminal | | | |applications like "vi", GNU "screen", | | | |"midnight commander (mc)" etc. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`CygTerm-1.06 64bit (modified and included with source code) `_ |:download:`GPLv2 for modified CygTerm ` |Modified version is named **"proxycyterm.exe"**. | | | |This is direct backend for SHELL-TERMINAL to | | | |interface with CYGWIN to provide LINUX functionality | | | |on Windows. It is compiled under CYGWIN and linked | | | |to CYGWIN DLL to create CYGWIN PTY/TTY pair to execute| | | |interactive CYGWIN shell (bash) or directly (without | | | |calling "bash") start CYGWIN communication | | | |and other shells like ssh/sftp/telnet/ftp/screen/mc | | | |etc. CYGWIN DLL has a limit of 128 PTY/TTY pairs. | | | |Therefore, proxycyterm.exe backend process will work | | | |in up to 128 simultaneously running SHELL-TERMINALs | | | |connected to CYGWIN processes. | | | |Passes info about resizing of SHELL-TERMINAL's window | | | |to CYGWIN PTY/TTY to ensure correct | | | |functioning of full screen CYGWIN terminal | | | |applications like "vi", GNU "screen", | | | |"midnight commander (mc)" etc. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Cygwin 64bit (side by side, optional) `_ |`GPL for Cygwin `_ |Provides LINUX functionality on Windows. | | | |Integrates with SHELL-TERMINAL via | | | |**"proxycyterm.exe"** backend. | | | |Included CYGWIN packages can be removed/upgraded and | | | |new packages can be installed via included CYGWIN | | | |setup program. proxy32.exe can link with pre-existing | | | |user's CYGWIN installation or create new CYGWIN | | | |installation (with pre-loaded collection of packages) | | | |in proxy32.exe startup directory. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`WinMerge-2.6.6 32bit (side by side, optional) `_ |`GPL for WinMerge `_ |Visual comparision of files and directories | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`jEdit-5.6.0 (side by side, optional) `_ |`GPLv2 for jEdit `_ |Very versatile text editor | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Java SE JRE 11.0.9 64bit (to run jEdit) `_ |`GPLv2+CE for OpenJDK `_ |to run jEdit | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`SciTE 4.4.5 64bit (side by side, optional) `_ |:download:`MIT-like ` |Very fast text editor to open huge text files. | | | |Pre-configured as default editor/viewer in many | | | |places in proxy32.exe out-of-the-box default | | | |configuration. For example, as proxy32 terminal | | | |log viewer, as external viewer of SCRIPT files etc. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Geany-1.38 64bit (side by side, optional) `_ |`GPLv2 for Geany `_ |Text editor with some usefull features like | | | |showing and navigation the outline of | | | |ReST-formatted files and re-flow of paragraph. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`AutoHotkey-1.1.14.3 32bit U (side by side, optional) `_ |:download:`GPL for AHK ` |automatically called by proxy32.exe | | | |to execute AHK-SCRIPT | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`SciTE4AutoHotkey 3.0.06.01 32bit (side by side, optional) `_ |:download:`GPL for AHK ` |to debug AHK scripts | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Python 3.9.0 (standalone interpreter) 64bit `_ |`PSF `_ |to execute SHELL-TERMINAL Python PLUGINs when Python | | | |interpreter installed with CYGWIN is not available. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LUA 5.4.1 (standalone interpreter) 64bit `_ |`MIT for LUA `_ |to execute SHELL-TERMINAL LUA PLUGINs when LUA | | | |interpreter installed with CYGWIN is not available. | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LUA templater (loaded into proxy32.exe for Lua templating of COMMAND text) `_ |`BSD for LUA templater `_ |automatically loaded into proxy32.exe | | | |for Lua templating of COMMAND text | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LUA JSON module 20170927.26 (side by side, optional, to import JSON data in LUA code) `_ |`CC BY 3 for LUA JSON module `_ |to import JSON data in LUA code | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LUA PenLight 1.9.1 (side by side, optional) `_ |`MIT for LUA PenLight `_ |many utility functions to use in LUA code | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LUA ftcsv 1.2.1 (side by side, optional, to import csv data in LUA code) `_ |`MIT for LUA ftcsv module `_ |to import csv data in LUA code | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LUA lua-yaml 1.2 (side by side, optional, to import yaml/json data in LUA code) `_ |`MIT for LUA lua-yaml module `_ |to import yaml/json data in LUA code | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Toccata et Fugue BWV565 (Johann Sebastian Bach (disputed), performed by Ashtar Moïra) `_|`Public Domain for "Toccata et Fugue" `_|Background music in "About proxy32.exe" dialog | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`7-Zip 19.00 `_ |`LGPL for 7-Zip `_ |in self-extracting archives during installation | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Python PyYAML 5.3.1 `_ |`MIT for PyYAML `_ |to load variables from YAML/JSON files into Python | | | |interpreter for Python/Jinja2 templating | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Python Jinja2 2.11.2 `_ |`BSD for Jinja2 `_ |to process Jinja2 templates in Python interpreter | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`Python ReText 7.1.0 `_ |`GPLv3 for ReText `_ |to edit ReST documentation source files | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LUA alien 0.7.1 - C FFI Library `_ |`MIT for LUA alien library `_ |for calling C Functions from Lua | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+ |`LibFFI 3.3 - C FFI Library `_ |`MIT for LibFFI 3.3 library `_ |provides foundation for LUA alien library | +--------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+------------------------------------------------------+