Socket
Socket
Sign inDemoInstall

dragnet

Package Overview
Dependencies
0
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    dragnet

HTTP2 stream server


Version published
Maintainers
1
Install size
28.2 kB
Created

Readme

Source

dragnet

HTTP2 stream server

install

npm install dragnet

example

generate localhost certificate: openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -keyout localhost-key.pem -out localhost-cert.pem

server.js

const fs = require("fs");
const {
  HTTP2_HEADER_CONTENT_TYPE,
  HTTP2_HEADER_STATUS
} = require("http2").constants;
const dragnet = require("dragnet");
const Router = require("dragnet/router");

const server = dragnet({
  cert: fs.readFileSync("localhost-cert.pem"),
  key: fs.readFileSync("localhost-key.pem")
});

const router = new Router();

router.get("/(.*)", (stream, headers, flags, matches) => {
  stream.respond({
    [HTTP2_HEADER_CONTENT_TYPE]: "text/plain",
    [HTTP2_HEADER_STATUS]: 200
  });

  stream.end(`path part: ${matches[1]}`);
});

server.use(router);

server.listen(8443);

http2 upstream proxy example

generate localhost certificate: openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -keyout localhost-key.pem -out localhost-cert.pem

server1.js

const fs = require("fs");
const {
  HTTP2_HEADER_PATH
} = require("http2").constants;
const dragnet = require("dragnet");
const Router = require("dragnet/router");

const server = dragnet({
  cert: fs.readFileSync("localhost-cert.pem"),
  key: fs.readFileSync("localhost-key.pem")
});

const router = new Router();

const urlResolver = (headers, matches) => {
  return {
    url: "https://localhost:8444",
    headers: {
      ...headers,
      [HTTP2_HEADER_PATH]: `/${matches[1]`
    }
  };
};

// ClientHttp2Session.request options
const options = { ca: cert };

router.proxy(
  "/proxy/(.*)",
  urlResolver,
  options
);

server.use(router);

server.listen(8443);

server2.js

const fs = require("fs");
const {
  HTTP2_HEADER_CONTENT_TYPE,
  HTTP2_HEADER_STATUS
} = require("http2").constants;
const dragnet = require("dragnet");
const Router = require("dragnet/router");

const server = dragnet({
  cert: fs.readFileSync("localhost-cert.pem"),
  key: fs.readFileSync("localhost-key.pem")
});

const router = new Router();

router.get("/(.*)", (stream, headers, flags, matches) => {
  stream.respond({
    [HTTP2_HEADER_CONTENT_TYPE]: "text/plain",
    [HTTP2_HEADER_STATUS]: 200
  });

  stream.end(`path part: ${matches[1]}`);
});

server.use(router);

server.listen(8444);

Keywords

FAQs

Last updated on 14 Feb 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc