ia97lies / xauxi Goto Github PK
View Code? Open in Web Editor NEWReverse proxy written in Lua. Its configuration is pure Lua.
Home Page: http://ia97lies.github.io/xauxi/
License: MIT License
Reverse proxy written in Lua. Its configuration is pure Lua.
Home Page: http://ia97lies.github.io/xauxi/
License: MIT License
Let's see how this can be done with LuaNode ...
Send a 500 if have internal problems as long sending is possible. Use pcall to capsulate stuff.
Instead to call the plugins in a function chain a flat model should also be possible.
A simple connector for backend connection
Evaluate keepalive header from backend and handle it accordingly.
There is some problem with memory get a segfault if try to use many connections in parallel. If redirect log to a file e.g. /dev/null it happens much lesser?
Found that the connection->socket get's overwritten by a string "notify_write_data".
Reuse connections to backend, not coupled
--> configurable
This feature is specialy need for NTLM connection, OWA and the like
Buffer data on connection. Add getData(size), getAll() and getLine() Method.
Need to weit for luanode supporting clusters (forking childs).
Need a timeout for client connection.
Need to be able to set timeout for a connection, even for connect I need that.
Download everything, build and place so a beginner don't have to bother.
If the connection request arrives to fast (no rampup) I get very soon connection reset errors on client side. Investigate why and imporve if possible, maybe backlog of listener is overrun.
Static configuration should also be possible with this framework. Perhaps a table which then is processed by a function which calls the real functions.
With the new request object refactor the old http stream.
Map a request based on everything a request holds, like header, parameters, url, ...
upon the new possibility of object "connection" refactor the current implementation for reading request (content-length, chunked).
Things has changed and LuaNode is again closer to node.js. Have to overwork the hole xauxi.
Implement a command "say" or the like to send back an answer.
The say method currently not able to set any custom headers.
Use redis for xauxi sessions.
A filter concept based on the 'data' listener. Need request on incoming data and request, response on outgoing data. Filter should be called secure with pcall.
Need algorithms/interfaces to handle unreachable backends (down/status/headers/...)
Implement a simple handling for it to prove the interface is working (just skip it and try it the next time).
Currently tracing is a little confusing.
Unique Request Id should be provided for every log entry (transfer and/or error log)
Need a transfer log with
date, method, url, duration, duration frontend, duration backend, event, ...
--> should be configurable how it looks like
There is still part of xauxi_connection creation in the main xauxi.c file, should be all in xauxi_connection with clean capsulation.
Define keepalive settings in configuration and handle accordingly -> close the connection if keepalive is over and set the corresponding header.
Want to have a debugger interface where we can debug the build configuration from remote client. Design a simple command line interface.
Get inspirations from remdebug but do it in the way of LuaNode.
Instead of listen(function()
http.stream(...)
end)
http.listen(function()
...
)
Think about simplify the configuration, make the standard tasks as simple as possible.
Select backend du a function or a set of functions which have to be implemented. Clue an integrator could set it's own loadbalancing policy.
To avoid name clash with other protocols which perhaps do have a "request" object, move request to http object -> http.request.new() as this depends to http.
upon the new possibility of object "connection" refactor the current implementation for reading request (content-length, chunked).
Generic Session Store Object. Subscribe a DB driver, which can get/set/ttl yes more or less. In memory driver should be the first driver and the most simple. followed by redis driver. Maybe a MySQL driver too...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.