1. Introduction¶
1.1. Purpose¶
1.1.2. 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 Table 1.1.1.
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.
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) or type complex parametric commands via remote desktop window or via console of virtual machine especially, when copy/paste does not work |
COMMAND |
Simulates user’s typing and mouse clicks into external (non-Proxy32) window that is marked as active in the Proxy32 Desktop Window Manager. |
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.
1.2. 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.
1.3. Proxy32 License¶
Proxy32 is copyright 2001-2026 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.
1.4. Links to 3rd party components and their licenses¶
1.4.1. 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 Table 1.4.1. 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 (Jan 20, 2025): this is the page and this is download link
3rd party Software compiled in or dynamically linked |
License |
Purpose |
|---|---|---|
for regex text search |
||
for loading XML configuration files |
||
to load YAML/JSON parameters files |
||
to implement SCRIPT editor |
||
to load CSV parameters files |
||
for Python templating of COMMAND text |
||
for Lua templating of COMMAND text |
||
LUA alien 0.7.1 - C FFI Library (compiled into proxy32.exe binary) |
for calling C Functions from Lua |
|
LibFFI 3.3 - C FFI Library (compiled into proxy32.exe binary) |
provides foundation for LUA alien library |
|
Adobe Source Code Pro Font Family (embedded into proxy32.exe binary) |
|
Default Monospaced Font for Proxy32 Terminal |
1.4.2. 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 Table 1.4.2.
3rd party Software installed side by side |
License |
Purpose |
|---|---|---|
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) |
Modified version is named “proxyplink.exe”. Provides SSH functionality without CYGWIN OpenSSH. 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. |
|
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. |
||
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. |
||
Visual comparision of files and directories |
||
Very versatile text editor |
||
to run jEdit |
||
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. |
||
Text editor with some usefull features like showing and navigation the outline of ReST-formatted files and re-flow of paragraph. |
||
automatically called by proxy32.exe to execute AHK-SCRIPT |
||
to debug AHK scripts |
||
to execute SHELL-TERMINAL Python PLUGINs when Python interpreter installed with CYGWIN is not available. |
||
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) |
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) |
to import JSON data in LUA code |
|
many utility functions to use in LUA code |
||
LUA ftcsv 1.2.1 (side by side, optional, to import csv data in LUA code) |
to import csv data in LUA code |
|
LUA lua-yaml 1.2 (side by side, optional, to import yaml/json data in LUA code) |
to import yaml/json data in LUA code |
|
Toccata et Fugue BWV565 (Johann Sebastian Bach (disputed), performed by Ashtar Moïra) |
Background music in “About proxy32.exe” dialog |
|
in self-extracting archives during installation |
||
to load variables from YAML/JSON files into Python interpreter for Python/Jinja2 templating |
||
to process Jinja2 templates in Python interpreter |
||
to edit ReST documentation source files |
||
for calling C Functions from Lua |
||
provides foundation for LUA alien library |