From 72b4ec78fcc3be9cdf1610d8511aefccc8de28b4 Mon Sep 17 00:00:00 2001 From: acidvegas Date: Fri, 21 Feb 2025 12:13:00 -0500 Subject: [PATCH] Fixed cli not parsing args or showing help --- czds/__init__.py | 2 +- czds/__main__.py | 12 ++-- czds_api.egg-info/PKG-INFO | 90 +++++++++++++++++++++++++ czds_api.egg-info/SOURCES.txt | 11 +++ czds_api.egg-info/dependency_links.txt | 1 + czds_api.egg-info/entry_points.txt | 2 + czds_api.egg-info/top_level.txt | 1 + dist/czds_api-1.0.0-py3-none-any.whl | Bin 0 -> 6554 bytes dist/czds_api-1.0.0.tar.gz | Bin 0 -> 5526 bytes setup.py | 2 +- 10 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 czds_api.egg-info/PKG-INFO create mode 100644 czds_api.egg-info/SOURCES.txt create mode 100644 czds_api.egg-info/dependency_links.txt create mode 100644 czds_api.egg-info/entry_points.txt create mode 100644 czds_api.egg-info/top_level.txt create mode 100644 dist/czds_api-1.0.0-py3-none-any.whl create mode 100644 dist/czds_api-1.0.0.tar.gz diff --git a/czds/__init__.py b/czds/__init__.py index a7165a0..85011aa 100644 --- a/czds/__init__.py +++ b/czds/__init__.py @@ -5,7 +5,7 @@ from .client import CZDS -__version__ = '1.0.0' +__version__ = '1.0.1' __author__ = 'acidvegas' __email__ = 'acid.vegas@acid.vegas' __github__ = 'https://github.com/acidvegas/czds' \ No newline at end of file diff --git a/czds/__main__.py b/czds/__main__.py index a4d300c..ddfef48 100644 --- a/czds/__main__.py +++ b/czds/__main__.py @@ -12,7 +12,7 @@ import time from .client import CZDS -def main(username: str, password: str, concurrency: int) -> None: +def run_czds(username: str, password: str, concurrency: int) -> None: ''' Main function to download all zone files @@ -61,8 +61,8 @@ def main(username: str, password: str, concurrency: int) -> None: logging.error(f'{url} generated an exception: {e}') - -if __name__ == '__main__': +def main(): + '''Entry point for the command line interface''' parser = argparse.ArgumentParser(description='ICANN API for the Centralized Zones Data Service') parser.add_argument('-u', '--username', default=os.getenv('CZDS_USER'), help='ICANN Username') parser.add_argument('-p', '--password', default=os.getenv('CZDS_PASS'), help='ICANN Password') @@ -75,4 +75,8 @@ if __name__ == '__main__': username = args.username or input('ICANN Username: ') password = args.password or getpass.getpass('ICANN Password: ') - main(username, password, args.concurrency) \ No newline at end of file + run_czds(username, password, args.concurrency) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/czds_api.egg-info/PKG-INFO b/czds_api.egg-info/PKG-INFO new file mode 100644 index 0000000..545d2a5 --- /dev/null +++ b/czds_api.egg-info/PKG-INFO @@ -0,0 +1,90 @@ +Metadata-Version: 2.2 +Name: czds-api +Version: 1.0.0 +Summary: ICANN API for the Centralized Zones Data Service +Home-page: https://github.com/acidvegas/czds +Author: acidvegas +Author-email: acid.vegas@acid.vegas +Project-URL: Bug Tracker, https://github.com/acidvegas/czds/issues +Project-URL: Documentation, https://github.com/acidvegas/czds#readme +Project-URL: Source Code, https://github.com/acidvegas/czds +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: ISC License (ISCL) +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Topic :: Internet +Classifier: Topic :: Security +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=3.6 +Description-Content-Type: text/markdown +License-File: LICENSE +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: description +Dynamic: description-content-type +Dynamic: home-page +Dynamic: project-url +Dynamic: requires-python +Dynamic: summary + +# ICANN Centralized Zone Data Service API + +The [ICANN Centralized Zone Data Service](https://czds.icann.org) *(CZDS)* allows *approved* users to request and download DNS zone files in bulk, provided they represent a legitimate company or academic institution and their intended use is legal and ethical. Once ICANN approves the request, this tool streamlines the retrieval of extensive domain name system data, facilitating research and security analysis in the realm of internet infrastructure. + +## Zone Information +Zone files are updated once every 24 hours, specifically from 00:00 UTC to 06:00 UTC. Access to these zones is granted in increments, and the total time for approval across all zones may extend to a month or longer. It is typical for more than 90% of requested zones to receive approval. Access to certain zone files may require additional application forms with the TLD organization. Please be aware that access to certain zones is time-bound, expiring at the beginning of the following year, or up to a decade after the initial approval has been confirmed. + +At the time of writing this repository, the CZDS offers access to 1,151 zones in total. + +1,079 have been approved, 55 are still pending *(after 3 months)*, 10 have been revoked because the TLDs are longer active, and 6 have been denied. Zones that have expired automatically had the expiration extended for me without doing anything, aside from 13 zones that remained expired. I have included a recent [stats file](./extras/stats.csv) directly from my ICANN account. + +## Installation +```bash +pip install czds-api +``` + +## Usage +###### Command line +```bash +czds [--username --password ] [--concurrency ] +``` + +You can also set the `CZDS_USER` & `CZDS_PASS` environment variables to automatically authenticate: + +```bash +export CZDS_USER='your_username' +export CZDS_PASS='your_password' +``` + +###### As a Python module +```python +import os + +from czds import CZDS + +CZDS_client = CZDS(username, password) + +CZDS_client.download_report('report.csv') + +zone_links = CZDS_client.fetch_zone_links() + +os.makedirs('zones', exist_ok=True) + +for zone_link in zone_links: + CZDS_client.download_zone(zone_link, 'zones') +``` + +## Respects & extras +While ICANN does have an official [czds-api-client-python](https://github.com/icann/czds-api-client-python) repository, I rewrote it from scratch to be more streamline & included a [POSIX version](./extras/czds) for portability. There is some [official documentation](https://raw.githubusercontent.com/icann/czds-api-client-java/master/docs/ICANN_CZDS_api.pdf) that was referenced in the creation of the POSIX version. Either way, big props to ICANN for allowing me to use the CZDS for research purposes! + +___ + +###### Mirrors for this repository: [acid.vegas](https://git.acid.vegas/czds) • [SuperNETs](https://git.supernets.org/acidvegas/czds) • [GitHub](https://github.com/acidvegas/czds) • [GitLab](https://gitlab.com/acidvegas/czds) • [Codeberg](https://codeberg.org/acidvegas/czds) diff --git a/czds_api.egg-info/SOURCES.txt b/czds_api.egg-info/SOURCES.txt new file mode 100644 index 0000000..4b466c0 --- /dev/null +++ b/czds_api.egg-info/SOURCES.txt @@ -0,0 +1,11 @@ +LICENSE +README.md +setup.py +czds/__init__.py +czds/__main__.py +czds/client.py +czds_api.egg-info/PKG-INFO +czds_api.egg-info/SOURCES.txt +czds_api.egg-info/dependency_links.txt +czds_api.egg-info/entry_points.txt +czds_api.egg-info/top_level.txt \ No newline at end of file diff --git a/czds_api.egg-info/dependency_links.txt b/czds_api.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/czds_api.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/czds_api.egg-info/entry_points.txt b/czds_api.egg-info/entry_points.txt new file mode 100644 index 0000000..e9afd74 --- /dev/null +++ b/czds_api.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +czds = czds.__main__:main diff --git a/czds_api.egg-info/top_level.txt b/czds_api.egg-info/top_level.txt new file mode 100644 index 0000000..1fc839e --- /dev/null +++ b/czds_api.egg-info/top_level.txt @@ -0,0 +1 @@ +czds diff --git a/dist/czds_api-1.0.0-py3-none-any.whl b/dist/czds_api-1.0.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..b438a95e0e71e63272e3992cce1afd832d28446b GIT binary patch literal 6554 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 H^X-2CA!vx3 literal 0 HcmV?d00001 diff --git a/dist/czds_api-1.0.0.tar.gz b/dist/czds_api-1.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..a23c5e269f7d5c7a4d265c9c0aa68038d2c6ee33 GIT binary patch literal 5526 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 SSK*GlfRC?D3*rpm;QS99zzq`s literal 0 HcmV?d00001 diff --git a/setup.py b/setup.py index ae592b4..b339563 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ with open('README.md', 'r', encoding='utf-8') as fh: setup( name='czds-api', - version='1.0.0', + version='1.0.1', author='acidvegas', author_email='acid.vegas@acid.vegas', description='ICANN API for the Centralized Zones Data Service',