Bun

class

net.BlockList

class BlockList

The BlockList object can be used with some network APIs to specify rules for disabling inbound or outbound access to specific IP addresses, IP ranges, or IP subnets.

  • rules: readonly string[]

    The list of rules added to the blocklist.

  • address: string,
    type?: IPVersion
    ): void;

    Adds a rule to block the given IP address.

    @param address

    An IPv4 or IPv6 address.

    @param type

    Either 'ipv4' or 'ipv6'.

    address: SocketAddress
    ): void;

    Adds a rule to block the given IP address.

    @param address

    An IPv4 or IPv6 address.

  • start: string,
    end: string,
    type?: IPVersion
    ): void;

    Adds a rule to block a range of IP addresses from start (inclusive) toend (inclusive).

    @param start

    The starting IPv4 or IPv6 address in the range.

    @param end

    The ending IPv4 or IPv6 address in the range.

    @param type

    Either 'ipv4' or 'ipv6'.

    ): void;

    Adds a rule to block a range of IP addresses from start (inclusive) toend (inclusive).

    @param start

    The starting IPv4 or IPv6 address in the range.

    @param end

    The ending IPv4 or IPv6 address in the range.

  • prefix: number
    ): void;

    Adds a rule to block a range of IP addresses specified as a subnet mask.

    @param net

    The network IPv4 or IPv6 address.

    @param prefix

    The number of CIDR prefix bits. For IPv4, this must be a value between 0 and 32. For IPv6, this must be between 0 and 128.

    net: string,
    prefix: number,
    type?: IPVersion
    ): void;

    Adds a rule to block a range of IP addresses specified as a subnet mask.

    @param net

    The network IPv4 or IPv6 address.

    @param prefix

    The number of CIDR prefix bits. For IPv4, this must be a value between 0 and 32. For IPv6, this must be between 0 and 128.

    @param type

    Either 'ipv4' or 'ipv6'.

  • address: SocketAddress
    ): boolean;

    Returns true if the given IP address matches any of the rules added to theBlockList.

    const blockList = new net.BlockList();
    blockList.addAddress('123.123.123.123');
    blockList.addRange('10.0.0.1', '10.0.0.10');
    blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6');
    
    console.log(blockList.check('123.123.123.123'));  // Prints: true
    console.log(blockList.check('10.0.0.3'));  // Prints: true
    console.log(blockList.check('222.111.111.222'));  // Prints: false
    
    // IPv6 notation for IPv4 addresses works:
    console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true
    console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true
    
    @param address

    The IP address to check

    address: string,
    type?: IPVersion
    ): boolean;

    Returns true if the given IP address matches any of the rules added to theBlockList.

    const blockList = new net.BlockList();
    blockList.addAddress('123.123.123.123');
    blockList.addRange('10.0.0.1', '10.0.0.10');
    blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6');
    
    console.log(blockList.check('123.123.123.123'));  // Prints: true
    console.log(blockList.check('10.0.0.3'));  // Prints: true
    console.log(blockList.check('222.111.111.222'));  // Prints: false
    
    // IPv6 notation for IPv4 addresses works:
    console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true
    console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true
    
    @param address

    The IP address to check

    @param type

    Either 'ipv4' or 'ipv6'.

  • static isBlockList(
    value: unknown
    ): value is BlockList;

    Returns true if the value is a net.BlockList.

    @param value

    Any JS value