corrosion
v1.0.0
Published
Titanium Networks main web proxy. Successor to [Alloy](https://github.com/titaniumnetwork-dev/alloy) # Installation: ``` npm i corrosion ```
Downloads
278
Readme
Corrosion
Titanium Networks main web proxy. Successor to Alloy
Installation:
npm i corrosion
Example:
const Corrosion = require('corrosion');
const proxy = new Corrosion();
const http = require('http')
http.createServer((req, res) =>
proxy.request(req, res) // Request Proxy
).on('upgrade', (req, socket, head) =>
proxy.upgrade(req, socket, head) // WebSocket Proxy
).listen(80);
Much more in depth one is in the demo folder.
API:
Index
config
prefix
String - URL Prefixtitle
(Boolean / String) - Title used for HTML documentsws
Boolean - WebSocket rewritingcookie
Boolean - Request Cookiescodec
String - URL encoding (base64, plain, xor).requestMiddleware
Array - Array of middleware functions for proxy request (Server).responseMiddleware
Array - Array of middleware functions for proxy response (Server).standardMiddleware
Boolean - Use the prebuilt middleware used by default (Server).
request
request
Requestresponse
Response
upgrade
request
Requestsocket
Sockethead
Head
bundleScripts
Bundles scripts for client injection. Important when updating proxy.
Properties
url
wrap
val
Stringconfig
Configurationbase
WHATWG URLorigin
Location origin - Adds a location origin before the proxy urlflags
Array - ['xhr'] => /service/xhr_/https%3A%2F%2Fexample.org/
unwrap
val
Stringconfig
Configurationorigin
Location origin - Required if a location origin starts before the proxy urlflags
Boolean - Returns with both the URL and flags found { value: 'https://example.org', flags: ['xhr'], })leftovers
Boolean - Use any leftovers if any after the encoded proxy url
Properties
regex
Regex used to determine to rewrite the URL or not.prefix
URL Prefixcodec
(base64, plain, xor)
js
process
source
JS scripturl
URL for heading
iterate
ast
JS ASTCallback
Handler initated on AST node
createHead
url
URL for heading
createCallExperssion
callee
Acorn.js Nodeargs
Array
createArrayExpression
elements
Array
createIdentifier
name
Identifier namepreventRewrite
Prevent further rewrites
createLiteral
value
Literal value
css
process
source
CSSconfig
Configurationbase
WHATWG URLorigin
Location origincontext
CSS-Tree context
html
process
source
HTML Sourceconfig
Configurationdocument
Determines of its a document or fragment for parsingbase
WHATWG URLorigin
Location origin
source
processed
Rewritten HTMLconfig
Configurationdocument
Determines of its a document or fragment for parsing
Properties
map
Map for attribute rewriting
cookies
encode
input
New (Cookie / Cookies)config
Configurationurl
WHATWG URLdomain
Cookie Domainsecure
Cookie Secure
decode
store
Encoded Cookiesconfig
Configurationurl
WHATWG URL
codec
encode
decode
str
String
middleware
Middleware are functions that will be executed either before request or after response. These can alter the way a request is made or response is sent.
function(ctx) {r
ctx.body; // (Request / Response) Body (Will return null if none)
ctx.headers; // (Request / Response) Headers
ctx.url; // WHATWG URL
ctx.flags; // URL Flags
ctx.origin; // Request origin
ctx.method; // Request method
ctx.rewrite; // Corrosion object
ctx.statusCode; // Response status (Only available on response)
ctx.agent; // HTTP agent
ctx.address; // Address used to make remote request
ctx.clientSocket; // Node.js Server Socket (Only available on upgrade)
ctx.clientRequest; // Node.js Server Request
ctx.clientResponse; // Node.js Server Response
ctx.remoteResponse; // Node.js Remote Response (Only available on response)
};
Default middleware
Request
- requestHeaders
Response
- responseHeaders
- decompress
- rewriteBody
Available Middleware
address (Request)
arr
Array of IP addresses to use in request
const Corrosion = require('corrosion');
const proxy = new Corrosion({
requestMiddleware: [
Corrosion.middleware.address([
0.0.0.0,
0.0.0.0
]),
],
});
blacklist
arr
Array of hostnames to block clients from seeingpage
Block page
const Corrosion = require('corrosion');
const proxy = new Corrosion({
requestMiddleware: [
Corrosion.middleware.blacklist([
'example.org',
'example.com',
], 'Page is blocked'),
],
});