cgi js

2025-12-07 0 345

cgijs

CGIJS is a all featured library to run any CGI mode / Interpreted language script files, or connect to any web application server proxies, or manage processes in the system.

CGIJS library:

  • Supports running any CGI / Interpreted Language scripts using the nodejs process module in any OS that runs node.js. Needs the language interpretor to be installed in the system
  • [TODO] Supports running any CGI / Interpreted Language scripts using interpreters library module in any OS that runs node.js. Do not need the language interpretor to be installed in the system
  • Supports both CGI executables as well as proxy to localhost/ remote /embedded servers using proxying of multiple protocols (http, websockets, tcp, udp, socks, ssh, ftp).
  • Supports managing processes like embedded server executables, embedded database executables, or any other embedded/ non-embedded executables
  • Supports working with shell, json, ini, csv, yaml, and xml internally

[Funding Invited]

General Note: The library is production ready. However, please be cautious of processes/executables permissions/security in your project using CGIJS

History

CGIJS was created with a motivation to allow creation of a Desktop executable/ application using Electron that can run any CGI / Interpreted language scripted files/ applications under the hood.

Installation

npm install cgijs --save

If you wish to run interpreted languages like php, perl, python, micropython, cpython, ruby, julia, cpp, golang, ocaml, lua, napi, wasm-run, r-lang, openssl with wasm files without having the language\’s binary present/ installed in your system then use the following package.

npm install bridge-wasm --save

Features

Light weight, Flexible, Generic implementation. CGIJS is Nodejs Framework Independent / agnostic for application development.

There are three main modules inside CGIJS – file for CGI file execution, proxy for running proxies, and process for managing processes.

SECURITY NOTE:

  • The process shell module is security agnostic and is dependant on your code.
    • The package accesses the shell to run script executables using the node.js process module. Please consider your security risks based on your executable\'s/ script\'s security risks.
  • The proxy module is security agnostic and is dependant on your code and proxy\’s security.
    • The package has a LAN or WAN network proxy module AND does not create any proxies by its own – unless specified by you. Please consider your custom created proxy\’s security risks.
  • The package does not use Telemetry, nor Collect data Remotely, nor has Telemetry/Remote based Error collection on its own.
    • The package propogates errors for you to handle or collect errors/ data.

Library Features

Node CGI Embedded – run interpreted scripts that support cgi using nodejs
  • CGI file execution

    • Run any scripts that support CGI based serving/execution
    • Run multiple CGI executables/ Interpreters in one or multiple applications
    • Embed your own CGI/ Interpreted Language executables
    • Runs scripts with language interpretor binary (like php, python, ruby, etc) in your system
    • Runs scripts without language interpretor binary (like php, python, ruby, etc) in your system using their wasm packages
Node Web Proxy – run web proxies
  • Running Proxies

    • Run any host that serves a web app, using proxy
    • Run proxies for Application (Local / Remote)
    • Supports websocket implementation in web proxies
    • Run multiple protocol proxies (HTTP, UDP, TCP, Websockets, Socks) and multiple instances in one or multiple applications
Node Processes – Manage web servers, database processes, or other system processes or services
  • Manage Processes or Services

    • Allows running and closing process Executables
    • Allows managing Embedding Web Servers, which can run web applications through proxies [Todo] Testing for some embeddable servers
    • Allows managing Embedded Database servers [Todo] Testing for some embeddable servers
    • Should run smoothly with Unsupported proxy servers/ processes/ services (not widely tested)
  • Embedding

    • Multiple web servers in one or multiple applications
    • Multiple databases in one or multiple applications

Functionality Details

The script should support piping all files of below interpreted languages:
  • Python (2.x, 3.x) – py (for Python .py extension files. Needed for *nix systems)
  • Perl (Version Independent) – plc, pld, pl (for Perl .pl, .plc, .pld extension files)
  • PHP (Version Independent) – php (for .php extension files)
  • Ruby (Version Independent) – rb (for Ruby .rb extension files)
  • Node.js (Version Independent) – js (for Node.js .js extension files)
  • CGI – cgi (for CGI .cgi extension files) [Todo Testing]
The script should support piping all proxies of above languages and following:
  • Jsp (With Tomcat, or any webserver as proxy)
  • Aspx (With IIS, Apache, or any webserver as proxy)
  • [] Jsp (With Tomcat embedded) [Todo]
  • [] Aspx (With Nginx and Apache embedded) [Todo]
The script currently allows working with (starting, stopping, restarting using bash, bat scripts) following web servers:
  • IIS [Done]
  • Nginx [Done]
  • Apache HTTPD [Done]
  • Apache TomCat [Done]
  • Nginx (Allows Embed) [Done]
  • Apache HTTPD (Allows Embed) [Done]
  • Apache TomCat (Allows Embed) [Todo – Testing], should work based on current testing of other proxies
  • Mongoose [Todo – Testing], should work based on current testing of other proxies
  • Jetty [Todo – Testing], should work based on current testing of other proxies
  • Putty [Todo – Testing], should work based on current testing of other proxies
  • [] Mongoose (Allows Embed) [Todo – Testing]
  • [] Jetty (Allows Embed) [Todo – Testing]
  • Putty (Allows Embed) [Todo – Testing]
  • PHP development server using php -S
  • Ruby development server using rails server [Todo – Testing]
  • Python development server using py -m http.server
  • [] Other Proxy-able local/remote servers [InProgress]
The script currently allows working with (starting, stopping, restarting proxies) following web servers:
  • IIS [Done]
  • Nginx [Done]
  • Apache HTTPD [Done]
  • Apache TomCat [Done]
  • Nginx (Allows Embed) [Done]
  • Apache HTTPD (Allows Embed) [Done]
  • Apache TomCat (Allows Embed) [Todo – Testing], should work based on current testing of other proxies
  • Mongoose [Todo – Testing], should work based on current testing of other proxies
  • Jetty [Todo – Testing], should work based on current testing of other proxies
  • Putty [Todo – Testing], should work based on current testing of other proxies
  • [] Mongoose (Allows Embed) [Todo – Testing]
  • [] Jetty (Allows Embed) [Todo – Testing]
  • Putty (Allows Embed) [Todo – Testing]
  • PHP development server using php -S
  • Ruby development server using rails server [Todo – Testing]
  • Python development server using py -m http.server
  • [] Other Proxy-able local/remote servers [InProgress]
The script currently allows working with (starting, stopping, restarting) following web servers:
  • IIS [Done]
  • Nginx [Done]
  • Apache HTTPD [Done]
  • Apache TomCat [Done]
  • Nginx [Done]
  • Apache HTTPD [Done]
  • Apache TomCat [Todo – Testing], should work based on current testing of other proxies
  • Mongoose [Todo – Testing], should work based on current testing of other proxies
  • Jetty [Todo – Testing], should work based on current testing of other proxies
  • Putty [Todo – Testing], should work based on current testing of other proxies
  • [] Mongoose (Allows Embed) [Todo – Testing]
  • [] Jetty (Allows Embed) [Todo – Testing]
  • Putty (Allows Embed) [Todo – Testing]
  • PHP development server using php -S
  • Ruby development server using rails server [Todo – Testing]
  • Python development server using py -m http.server
  • [] Other Proxy-able local/remote servers [InProgress]
The script currently allows working with (starting, stopping, restarting) following databases and processes:
  • Mysql [Done]
  • MongoDB [Done]
  • [] PgSQL [Todo]
  • [] Redis [Todo]
  • bash, bat, ps scripts [Done]
  • Other Processes for your application support
Note:

This library is in active development. Issues, and feedbacks as github ticket are welcome.

Package Dependencies:
  • Environment and Library dependencies:

    • Nodejs: (> 8.x),
    • http-proxy for http-proxy support,
    • socks for socks support,
    • udp-proxy for udp support,
    • ssh2 for ssh2, ssh, ftp, sftp support,
    • socket-proxy for socket proxy,
    • http-proxy-to-socks for http to socks proxy,
    • csv for file parser,
    • xml-js for xml file parser,
    • yaml for yaml file parser,
    • ini for ini file parser,
    • dotenv for dotenv file parser,
    • shelljs for support with shell
    • concurrency.js for concurrency and parallelization support for threads and processes
  • Extra needed dependencies to use language interpretors and libraries for php, perl, python, micropython, cpython, ruby, julia, cpp, golang, ocaml, lua, napi, wasm-run, r-lang, openssl with wasm files without having to install (or have) binaries in your system

    • bridge-wasm for running interpreted languages with wasm without having the binary in your system (installed/ present).
  • Application Dependencies:

    • Your app, you decide
    • Example/Demo has \”express\”: \”^4.17.1\”
    • Alternatively, Use any other Nodejs framework you want to use for your app
Usage Demo:

This project contains example that demonstrates working with ExpressJS.

  • The demos for runing CGI/Interpreted scripts with node.js and express applications can be found in the folder demo app.
  • The demos for individual implementation of file, process, proxy, and utils modules can be found in the folder demo usage [todo]
Use case:

cgijs library has been created to address following use cases:

  • working with CGI / interpreted languages from any Node.js app framework
  • using any CGI / interpreted languages apps with electron as demonstrated in functioning desktop-cgi app

Technical Specifications

… * Wiki links to be added

Wiki

  • Getting started
    • Quick demo – CGI mode executable files
    • Quick demo – proxying to proxies/servers
    • Quick demo – proxying to proxy\’s websocket
    • Quick demo – proxying to udp, socks, http to socks proxy\’s websocket
  • Run CGI files using process module and binaries in the system
    • PHP (.php)
    • Perl (Perl any versions – .plc, .pld, .pl)
    • Python (Python2, Python3 – .py)
    • Ruby (.rb)
    • Node.js (.js)
  • Run CGI files using cgi-js wasm` module
    • PHP (.php)
    • Perl (Perl any versions – .plc, .pld, .pl)
    • Python (Python2, Python3 – .py)
    • Ruby (.rb)
    • Lua (.)
    • Rust (.)
    • GoLang (.go)
    • CPython (.py)
    • Julia (.)
    • R-Lang (.)
  • Run Proxy servers to connect to:
    • Any Local http/https/websocket Servers
    • Any Remote http/https/websocket Servers
    • Embedded Apache httpd, Apache tomcat, Nginx (http/https/websocket)
    • Embedded Mongoose http server (http/https)
  • Manage Embedded Servers (for desktop-cgi use case):
    • Embedded Apache httpd (http/https/websocket)
    • Embedded Apache tomcat (http/https/websocket)
    • Embedded Mongoose http server (http/https)
    • Embedded Nginx (http/https/websocket)
    • PHP inbuilt web development servers
    • Ruby inbuilt web development servers
    • Python inbuilt web development servers
  • Manage Embedded Database Servers (for desktop-cgi use case):
    • Embedded Mysql
    • Embedded MongoDB
    • Embedded PgSQL
    • Working with SQLite
  • Manage Processes (for desktop-cgi use case):
    • Other Processes or executable workings
  • Run and Manage embedded or non-embedded executables / processes on need for application
  • Working with config.json file for simpler implementation in apps

Current Status

  • In development [Testing for Desktop-CGI use case]
  • In development [Testing for language based development server]

Todo

Check .todo file for latest TODO list

License

The MIT License (MIT) – See LICENSE for further details

Copyright © 2019 – till library works:
Ganesh B desktopcgi@gmail.com

Please support the development in github repository through

- feature needs reporting,
- testing,
- issue reporting,
- contribution

Please use these styles for contributions

下载源码

通过命令行克隆项目:

git clone https://github.com/cgi-js/cgi-js.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 cgi js https://www.zuozi.net/31370.html

PDFtoPrinter
上一篇: PDFtoPrinter
javaEE
下一篇: javaEE
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务