Skip to main content

Introduction

Tiny python library to determine actual available Cisco AP models, and their full name, specific to the regulatory domain of the country you provide.

How it works..

This module reads a spreadsheet from cisco.com, which is what is contains the data being used on: https://www.cisco.com/c/dam/assets/prod/wireless/wireless-compliance-tool/index.html

This page is basically javascript, reading data from the spreadsheet, and then offering it in an interactive web form. This is all nice and fine, but if you need software to pick the APs to order for Uzbekistan or some place, this library allows you to do just that, if you know the base model and country.

full coverage...

So Cisco's list doesn't actually cover all countries, so to find the regulatory domain for countries not in Cisco's tool, we also use Junipers list to find the regulatory domains for undocumented countries. This is semi-valid, since the domains are vendor-agnostic - only cisco does not have any models for -W or World, but this way it's at least indicated that a country is not matched by Cisco.

Junipers list is here:

https://www.juniper.net/documentation/en_US/release-independent/junos/topics/reference/specifications/access-point-ax411-country-channel-support.html

Usage

ENV or .env file controls the following:

  • WLCL_CISCO_XLS_URL(optional): The url from which to download the Cisco spreadsheet from
    • Allows local copy if airgapped, or url changes etc?
  • WLCL_SQLITE_URI(optional): override default database location: wlcl.db next to the package.
  • WLCL_REFRESH_DAYS(optional): how often to check the url for updates
    • hash of parsed xls is stored, so re-parsing is only if changes are made.
>>> from ciscoaplookup import CiscoAPLookup
>>> print(CiscoAPLookup.models_for("AIR-CAP1532E", "UA"))  # Ukraine
[AIR-CAP1532E-E-K9]
# now lets try with a model not supported for Ukraine..
>>> print(CiscoAPLookup.models_for("AIR-CAP1552H", "UA"))  # Ukraine
ValueError: Found AIR-CAP1552H for UA - but no active regulatory domains?
>>> print(CiscoAPLookup.models())
["AIR-AP1800I", "AIR-CAP1532I", "AIR-AP1852", "AIR-BLE-USB", "AIR-AP1562D", "AIR-AP3802E", "AIR-OEAP1810", 
"AIR-AP1815W", "AIR-CAP702W", "AIR-AP2802I", "AIR-AP2602", "AIR-CAP1552S", "AIR-AP1572EC", "AIR-AP3602", "AIR-AP1832", 
"AIR-AP1815T", "AIR-AP1572IC", "AIR-AP1815I", "AIR-CAP702I", "AIR-AP702I", "AIR-RM3010L", "AIR-SAP702I", "AIR-CAP2702", 
"C9115AXI", "AIR-AP1542D", "AIR-AP1602", "AIR-CAP3702", "AIR-CAP1552H", "AIR-AP3802P", "AIR-CAP1532E", "AIR-AP3702", 
"AIR-AP1542I", "AIR-AP1562I", "AIR-AP1562E", "AIR-AP1810W", "AIR-AP702W", "C9117AXI", "AIR-AP2702", "AIR-AP3802I", 
"AIR-CAP1552WU", "AIR-AP4800", "AIR-AP1815M", "AIR-AP1532", "IW3702-2E-UXK9", "IW3702-4E-X-K9", "AIR-CAP3702P", 
"IW3702-4E-UXK9", "AIR-AP1572EAC", "AIR-AP1800S", "IW3702-2E-X-K9", "AIR-AP2802E", "AIR-CAP1702"]

Test and Build

python -m unittest -v test.TestCiscoAPLookup
python setup.py sdist bdist_wheel

Contribute

Go nuts..

Future

Figure out how to deal with ROW and Wifi6E

Metadata

Release files for ciscoaplookup 0.13.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ciscoaplookup 0.13.6
File Size Uploaded Provenance Actions
ciscoaplookup-0.13.6.tar.gz 10.9 kB Without provenance Details for ciscoaplookup-0.13.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ciscoaplookup 0.13.6
File Interpreter ABI Platform Actions
ciscoaplookup-0.13.6-py3-none-any.whl Python 3 none any Details for ciscoaplookup-0.13.6-py3-none-any.whl

Total release size: 22.4 kB

Release files / ciscoaplookup-0.13.6.tar.gz

Download URL ciscoaplookup-0.13.6.tar.gz
Size 10.9 kB
Tags Source
SHA-256 checksum
How to use checksums
0d615c742a32fb4b302e1be58dc6a4145fb24e671937b06de28f641d8ab0586f
BLAKE2b-256 checksum
How to use checksums
ec033eca91755b6845b8e3b54d2bd386432521bb4c11198295f52999277e0c1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / ciscoaplookup-0.13.6-py3-none-any.whl

Download URL ciscoaplookup-0.13.6-py3-none-any.whl
Size 11.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3dcaa7ee373a50d4b8afecf922e74197eb892a631b37b519f66f465ed00a38a6
BLAKE2b-256 checksum
How to use checksums
fd8d887b47a690ef93915c8ea82a21683c55662fa6e1306e16740309b09107c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Security for ciscoaplookup 0.13.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page