Skip to main content

A Python package for storing, removing and checking IP's efficiently, Use cases: Blacklisting, Whitelisting etc

Project description

Generic badge PyPI license

Ip-Model

A Data Structure for efficiently storing, removing and checking all Ipv4 addresses in O(1) time.

Usage

Single Ip's

Ipv4

from ip_model.Ipv4 import Ipv4

blacklist = Ipv4()

To add an IP:

# arg: String
blacklist.add("192.0.0.18")

To remove an IP:

# arg: String
blacklist.remove("192.0.0.18")

To check if an IP is present/not:

# arg: String
# returns: bool
blacklist.is_present("192.0.0.18")

Ipv6

from ip_model.Ipv4 import Ipv6

blacklist = Ipv6()

To add an IP:

# arg: String
blacklist.add("192::18")

To remove an IP:

# arg: String
blacklist.remove("192:ffff:e034::23")

To check if an IP is present/not:

# arg: String
# returns: bool
blacklist.is_present("::5:4fed")

CIDR

Ipv4:

To Add

# arg: String
blacklist.add_cidr("192.92.53.0/24")
# arg: String
blacklist.add_cidr("192.92.53.0/255.255.255.252")

To remove:

# arg: String
blacklist.remove_cidr("192.92.53.0/24")

Ipv6:

To Add

# arg: String
blacklist.add_cidr("8653:53fe::/122/24")

To remove:

# arg: String
blacklist.remove_cidr("8653:53fe::/122")

Note:

The tradeoff is, the call for how to handle with overlapping CIDR's must be taken by the service using the DS. The DataStructure only performs the requested operation with the given data

Exception Handling

  • Throws TypeError: passing Invalid Datatype, incorrect number of arguments
  • Throws InvalidIpException: When an invalid Ip is passed
from ip_model.Exceptions import InvalidIpException

try:
    blacklist.add("192.455.554.343")
except InvalidIpException:
    print("Incorrect Ipv4 Address")

# For CIDR
try:
    blacklist.add("192.12.65.0/16")
except InvalidIpException:
    print("Incorrect CIDR")

ChangeLog

  • v2.0.0

Adding Support for Ipv6 addresses & CIDR for the same

  • v1.1.0

Adding Support for Ipv4 CIDR ranges

  • v1.0.0

Introducing Ip model with support for single Ipv4 address

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ip_model-2.0.0.tar.gz (3.3 kB view hashes)

Uploaded Source

Built Distribution

ip_model-2.0.0-py2-none-any.whl (8.5 kB view hashes)

Uploaded Python 2

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page