ip-restrictor

1.0.0 • Public • Published

IP Restrictor

Easily allow or block internal IPs in Node.js and Express apps. A simple middleware for IP filtering and network security.

npm License

📦 Installation

Install via npm

npm i ip-restrictor

Install via yarn

yarn add ip-restrictor

🚀 Usage

Express Middleware

const express = require("express");
const { allowOnly, blockOnly, isInternalIP, getClientIP } = require("ip-restrictor");

const app = express();

// Only allow specific internal IPs
app.use((req, res, next) => {
    const clientIP = getClientIP(req);
    console.log(`Checking allowOnly middleware for IP: ${clientIP}`);
    next(); // Call the original allowOnly middleware
}, allowOnly(["192.168.1.100", "10.0.0.5"]));

// Block specific internal IPs
app.use((req, res, next) => {
    const clientIP = getClientIP(req);
    console.log(`Checking blockOnly middleware for IP: ${clientIP}`);
    next(); // Call the original blockOnly middleware
}, blockOnly(["192.168.1.200"]));

app.get("/", (req, res) => {
    const clientIP = getClientIP(req);
    res.send(`Your IP: ${clientIP} - Internal: ${isInternalIP(clientIP)}`);
});

app.listen(3000, () => console.log("Server running on port 3000"));

Standalone Usage (Without Express)

const { allowOnlyStandalone, blockOnlyStandalone } = require("ip-restrictor");

const myIP = "192.168.1.100";

if (allowOnlyStandalone(["192.168.1.100"], myIP)) {
    console.log("Access granted.");
} else {
    console.log("Access denied.");
}

if (blockOnlyStandalone(["192.168.1.200"], myIP)) {
    console.log("Not blocked, you may proceed.");
} else {
    console.log("You are blocked.");
}

Standalone Usage (Without Express) 2.0

const { allowOnlyStandalone, blockOnlyStandalone } = require("ip-restrictor");

const testIPs = [
    { allowed: ["192.168.1.100"], blocked: ["192.168.1.200"], myIP: "192.168.1.100" },
    { allowed: ["192.168.1.101"], blocked: ["192.168.1.200"], myIP: "192.168.1.100" },
    { allowed: [], blocked: ["192.168.1.100"], myIP: "192.168.1.100" },
    { allowed: ["192.168.1.100"], blocked: [], myIP: "192.168.1.200" },
];

testIPs.forEach(({ allowed, blocked, myIP }, index) => {
    console.log(`Test Case ${index + 1}`);
    console.log(`Allowed: ${allowed}, Blocked: ${blocked}, MyIP: ${myIP}`);
    console.log(
        allowOnlyStandalone(allowed, myIP)
            ? "Access granted."
            : "Access denied."
    );
    console.log(
        blockOnlyStandalone(blocked, myIP)
            ? "Not blocked, you may proceed."
            : "You are blocked."
    );
    console.log("-----");
});

📖 API Reference

Function Type Parameters Returns Description
allowOnly Middleware allowedIPs: string[] Express Middleware Allows only specific IPs to access the server. Blocks all others.
blockOnly Middleware blockedIPs: string[] Express Middleware Blocks specific IPs while allowing all others.
allowOnlyStandalone Function allowedIPs: string[], ip: string true / false Returns true if ip is in allowedIPs, otherwise false.
blockOnlyStandalone Function blockedIPs: string[], ip: string true / false Returns false if ip is in blockedIPs, otherwise true.
isInternalIP Function ip: string true / false Checks if the given IP is part of a private/internal network.
getClientIP Function req: Request string (IP) Extracts the client’s IP from an Express request object.

Package Sidebar

Install

npm i ip-restrictor

Weekly Downloads

18

Version

1.0.0

License

Apache-2.0

Unpacked Size

18.5 kB

Total Files

10

Last publish

Collaborators

  • anshsinghsonkhia