npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mazehall-proxy

v0.3.2

Published

Dynamic reverse proxy

Downloads

10

Readme

Mazehall Proxy

SECURITY HINT: never ever use the proxy in production WITHOUT a firewall restriction to the websocket registration port - default 3300.

Description

Mazehall-proxy is a dynamic reverse proxy.

  • written in coffee-script -> javascript
  • on top of redbird proxy -> http-proxy
  • websocket ready
  • dynamic registration over websockets
  • dynamic unregistration on disconnect
  • connectivity check on registration
  • multi hosts and multi backends ready
  • Environment variables for docker friendly usage
    var Proxy = require('mazehall-proxy');
    Proxy.Server({port: 80});

Installation

npm install --save mazehall-proxy

Usage

All configuration options of redbird are covered.

Reference

MazehallProxy.Server(opts)

This is the Proxy constructor. Creates a new Proxy and starts listening to the given ports. Default proxy: 8080, ws-server: 3300

Arguments

    opts {Object} Options to pass to the proxy:
    {
    	port: {Number} // port number that the proxy will listen to. default 8080
    	mazehall: { // Optional mazehall-proxy settings
    	    port: {Number} // Optional websocket server will listen to. default 3300
    	    ns: namespace // Optional websocket namespace - default "/proxy"
    	}
    	ssl: { // Optional SSL proxying.
    		port: {Number} // SSL port the proxy will listen to.
    		// Default certificates
    		key: keyPath,  
    		cert: certPath,
    		ca: caPath // Optional.
            redirect: true, // Disable HTTPS autoredirect to this route.
    	}
        bunyan: {Object} // Bunyan options. (DEFAULT: false) If you want to enable bunyan, just set this option.
	}

Check bunyan for info. Keep in mind that having logs enabled incours in a performance penalty of about one order of magnitude per request.

Environmet variables

MAZEHALL_PROXY_PORT

  • the proxy port to listen on for incoming proxy requests (default: 8080)

MAZEHALL_SOCKET_NS

  • namespace to be used for the websocket registration connection (default: /proxy)

MAZEHALL_SOCKET_PORT

  • websocket server port (default: 3300)

MazehallProxy.Client(server, hosts)

This is the Client constructor. Creates a new Proxy-Client and starts listening to the server start event. If triggered then it starts a websocket client and registers the public addresses and server port.

Arguments

server - {Object} a http instance

hosts - {String|Array} Hosts url

Example

process.env.MAZEHALL_PROXY_MASTER = "ws://" + config.proxy.ws.master + ":" + config.proxy.ws.port + "/proxy"
var proxy = MhProxy.Client(server, config.proxy.hosts);

Environmet variables

MAZEHALL_PROXY_MASTER

  • websocket connection string default: ws://localhost:3300/proxy

Roadmap

  • add security methods to the registration process
  • fix websockets in balancing scenarios