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

unifi-webhook-proxy

v0.2.0

Published

Enjoy full-bodied payloads with this Rust proxy server for UniFi webhooks. 🚀

Downloads

83

Readme

Rust Proxy Server for UniFi Webhooks

Enjoy full-bodied payloads with this Rust proxy server for UniFi webhooks. 🚀

Problem

Unifi does not allow you to include bodies in Protect webhooks.

Solution

This Rust proxy server solves that by acting as an intermediary between your UniFi Dream Machine and the real webhook you want to call. It allows you to define an endpoint that UniFi can hit, and then it forwards that request to the actual webhook with custom headers and a body.

This is especially useful if you need to include information from the request headers (such as User-Agent, X-Custom-Header, etc.) as part of the webhook payload.

Why Do I Need This?

  • UniFi Webhooks without bodies: UniFi’s built-in webhook feature is great… unless you need to send a request with a body. This proxy server lets you map headers into the body of the request, so your downstream webhook can receive more useful data.

  • Flexibility: Easily configure which headers are included in the body and the URL of the actual webhook using a simple JSON config file.

How It Works

  1. Configure the proxy with your desired endpoint, webhook URL, and which headers you want to forward.
  2. Run the Rust proxy server.
  3. Point your UniFi Dream Machine to the proxy server as the destination for your webhook.
  4. The proxy will forward the request to your actual webhook, appending headers into the body if needed.

Configuration

Create a config.json file with the following format:

{
    "endpoint": "/webhook-proxy",
    "webhook_url": "https://your-webhook-url.com",
    "headers_to_body": ["User-Agent", "X-Custom-Header"]
}
  • endpoint: The path on the proxy server that UniFi will call (e.g., /webhook-proxy).
  • webhook_url: The actual webhook URL that the proxy should forward the request to.
  • headers_to_body: A list of headers that will be extracted from the incoming request and included in the body of the outgoing webhook request.

Installation

  1. Clone this repo.

  2. Install the Rust toolchain if you haven't already: Rust installation.

  3. Build the project:

    cargo build --release
  4. Run the proxy server:

    ./target/release/rust-proxy-server

License

MIT License. Enjoy and contribute!