forked from mkschreder/node-php
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.todo
149 lines (120 loc) · 8.5 KB
/
.todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
##### Node CGI Embedded - run interpreted scripts that support cgi using nodejs
* [x] CGI file execution
- [x] Run any scripts that support CGI based serving/execution
- [x] Run multiple CGI executables/ Interpreters in one or multiple applications
- [x] Embed your own CGI/ Interpreted Language executables
##### Node Web Proxy - run web proxies
* [x] Running Proxies
- [x] Run any host that serves a web app, using proxy
- [x] Run proxies for Application (Local / Remote)
- [x] Supports websocket implementation in web proxies
- [x] Run multiple proxies + websockets in one or multiple applications
- [x] Run multiple protocols for proxies using external libraries
- [] Run multiple protocols for proxies inbuilt
##### Node Processes - Manage web servers, database processes, or other system processes or services
* [x] Manage Processes or Services
- [x] Allows running and closing process Executables
- [x] Allows managing Embedding Web Servers, which can run web applications through proxies [Partially done]
- [x] Allows managing Embedded Database servers [Partially done]
- [x] Should run smoothly with Unsupported proxy servers/ processes/ services (not widely tested)
* [x] Embedding
- [x] Multiple web servers in one or multiple applications [Partially done]
- [x] Multiple databases in one or multiple applications [Partially done]
- [x] Multiple processes and executables managed in one or multiple applications [Partially done]
# Functionality Details
##### The script should support piping all files of below interpreted languages:
* [x] Python (2.x, 3.x) - `py` (for Python .py extension files. Needed for *nix systems)
* [x] Perl (Version Independent) - `plc`, `pld`, `pl` (for Perl .pl, .plc, .pld extension files)
* [x] PHP (Version Independent) - `php` (for .php extension files)
* [x] Ruby (Version Independent) - `rb` (for Ruby .rb extension files)
* [x] Node.js (Version Independent) - `js` (for Node.js .js extension files)
##### The script should support piping all proxies of above languages and following:
* [x] Jsp (With Tomcat, or any webserver as proxy)
* [x] 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) following web servers:
* [x] IIS (Allows Proxy)
* [x] Nginx (Allows Proxy)
* [x] Nginx (Allows Embed)
* [x] Apache HTTPD (Allows Proxy)
* [x] Apache HTTPD (Allows Embed)
* [x] Apache TomCat (Allows Proxy)
* [] Apache TomCat (Allows Embed) [TODO]
* [] Mongoose (Allows Proxy) [PLANNED]
* [] Mongoose (Allows Embed) [PLANNED]
* [] Jetty (Allows Proxy) [PLANNED]
* [] Jetty (Allows Embed) [PLANNED]
* [] Putty (Allows Proxy) [PLANNED]
* [] Putty (Allows Embed) [PLANNED]
* [x] Other Proxy-able local/remote servers
##### The script currently allows working with (starting, stopping, restarting) following databases and processes:
* [x] Mysql
* [x] MongoDB
* [] PgSQL [TODO]
* [] Redis [TODO]
* [x] Other Processes for your application support
##### TODO ITEMS
Add:
- [*] CGI File serving [Done]
- [*] Proxy local and remote web servers [Done]
- [*] Proxy supporting websockets [Done]
- [*] Manual commands [Done]
- [*] Command line options for all interpretors in config object [Done]
- [*] Work with any executables/processes [Done]
- [*] Work with embedding Servers (HTTPD, Tomcat[todo], Nginx) [Partially done]
- [*] Work with embedding Database Servers (MySQL, PgSQL[todo], MongoDB) [Partially done]
- [*] Work with other using generic command process functions and executables [Partially done]
- [] Improve performance by reducing config parsing time. Consider singletons for non-dynamic configs [TODO]
- [] Move cgi file serving to be based on processes execute implementation keeping current method of cgi.serve implementation same [TODO]
- [] Add implementation of phpcgijs into cgijs - cgi.serve(filename, executable, args) without moving current method of implementation [TODO]
- [] Deprecate phpcgijs in favour of cgijs [TODO]
- [] Consider testing serving of js file as CGI executable like PHP, an option. Considering cgi-node as an option [TODO]
- [] Consider adding serving CGI file (.cgi) like PHP, an option [TODO]
- [] Consider adding tracer for errors. Reconsider error handling mechanism [TODO]
- [] Consider adding inbuilt PHP, Python, Ruby, Perl custom config based development server proxy to package api [TODO]
- [] Add middlewares for use with different frameworks for CGIJS CGI Files for all interpreted languages [TODO]
** Consider function name require('cgijs').middlewares.file.frameworkname(...arguments...) [TODO]
** Concept Credit - npm:http-php
- [] Add common function for creation of proxies (HTTP+WS, UDP, TCP, Socks, gRPC, Sockets) [TODO]
** Consider function name require('proxy').init(protocol, config, handlers)
- [] Consider Adding and Differentiating MessagePattern with EventPattern in the next major version [TODO]
** Concept Credit - https://docs.nestjs.com/microservices/nats as an example for Pattern differentiator
** Check inline docs for .proxy.redirect section after line `redirect: {`
** Current proxy file does not differentiate Patterns. The file currently differentiates communication based on just protocols
- [] Consider Dependency Injection into CGIJS - https://github.com/mgechev/injection-js
Modify:
- [*] Make config and options dynamic based on config file for file based demos [Done]
- [*] Config based serving for file, web (proxy) applications [Done]
- [*] Add 'other' or 'custom' CGI executable option for unaccomodated Interpreted language support [Done]
- [*] IMPORTANT: Remove multiple libraries for httpserver and fix one [Done]
- [] Tests for Production release version 1.0.0 - file module [Partially done]
- [*] Tests for Production release version 1.0.0 - process module [Partially done]
- [*] Tests for Production release version 1.0.0 - proxy module [Partially done]
- [*] Tests for Production release version 1.0.0 - utils module [Partially done]
- [] Check and Redo Authentication for proxy connections for VLAN proxies [TODO]
- [] Consider adding inbuilt development server management (testing needed) for CGI executables like PHP, Ruby, Python, others [Testing]
- [] Consider support for gRPC for proxy. Consider adding socket's module [TODO]
- [] Consider support for UDP for proxy. Consider adding socket's module [TODO] [Packages considered - udp-proxy**, http2udp, node-udp-forwarder, udp-messaging]
- [] Consider adding support for Socks proxy. Plus support for Socks to http proxy [TODO] (Packages Considered: socks**, http-proxy-to-socks)
- [*] Consider support for Other Protocols for proxy. Consider adding socket's module [Done]
- [] Consider support for Other Protocols for proxy within package [TODO]
- [] Test Session management frameworks in PHP, Python, and Java Web Applications in http and https proxies (Memory/ File/ Cache/ Database Sessions) [TODO]
- [] Consider and test bi-directional communication with CGI Mode executables like PHP, Python, Ruby, Perl, etc [TODO]
- [] Add JSDoc compatible typing based documentation
** https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html
** https://jsdoc.app/tags-type.html
** https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler#type-expressions
- [] Consider concurrency for the package https://github.com/mkschreder/node-php/issues/23
Prioritization and Version Consideration
High Priority, High Effort:
- [] Test Session management frameworks in PHP, Python, and Java Web Applications in http and https proxies (Memory/ File/ Cache/ Database Sessions) [Testing] (Version 1.2.0)
High Priority, Low Effort:
- [] Inbuilt development server management (CGI executables like PHP, Ruby, Python, others) [Testing] (Version 1.1.1)
- [] Consider adding serving CGI file (.cgi) like PHP, an option [TODO] (Version 1.1.1)
- [] Consider and test bi-directional communication with CGI Mode executables like PHP, Python, Ruby, Perl, etc [Testing] (Version 1.2.0)
Low Priority, High Effort:
- [] Putty SSH tunneling (Check usage with Process and Create Proxy) [TODO] (Version 1.2.0)
- [] Mongoose web server (Check usage with Process and Create Proxy) [TODO] (Version 1.2.0)
- [] Consider testing serving of js file as CGI executable like PHP, an option. Considering cgi-node as an option [TODO] (Version 2.0.0)
- [] Consider support for Other Protocols for proxy within package [TODO] (Version 2.0.0)