├── .all-contributorsrc ├── .coveragerc ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── 00-bug.yml │ ├── 01-feature-request.yml │ ├── 03-documentation.yml │ └── config.yml └── workflows │ ├── branches.yml │ ├── dev.yml │ └── stable.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── LICENSE ├── MANIFEST.in ├── PyFunceble ├── __init__.py ├── checker │ ├── __init__.py │ ├── availability │ │ ├── __init__.py │ │ ├── base.py │ │ ├── domain.py │ │ ├── domain_and_ip.py │ │ ├── extras │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── dns.py │ │ │ ├── etoxic.py │ │ │ ├── external.py │ │ │ ├── parked.py │ │ │ ├── rules.py │ │ │ └── subject_switch.py │ │ ├── ip.py │ │ ├── params.py │ │ ├── status.py │ │ └── url.py │ ├── base.py │ ├── complex_json_encoder.py │ ├── params_base.py │ ├── reputation │ │ ├── __init__.py │ │ ├── base.py │ │ ├── domain.py │ │ ├── domain_and_ip.py │ │ ├── ip.py │ │ ├── params.py │ │ ├── status.py │ │ └── url.py │ ├── status_base.py │ ├── syntax │ │ ├── __init__.py │ │ ├── base.py │ │ ├── domain.py │ │ ├── domain_and_ip.py │ │ ├── domain_base.py │ │ ├── ip.py │ │ ├── ipv4.py │ │ ├── ipv6.py │ │ ├── params.py │ │ ├── second_lvl_domain.py │ │ ├── status.py │ │ ├── subdomain.py │ │ └── url.py │ └── utils │ │ ├── __init__.py │ │ └── whois.py ├── cli │ ├── __init__.py │ ├── continuous_integration │ │ ├── __init__.py │ │ ├── base.py │ │ ├── exceptions.py │ │ ├── github_actions.py │ │ ├── gitlab_ci.py │ │ ├── jenkins.py │ │ ├── standalone.py │ │ ├── travis_ci.py │ │ └── utils.py │ ├── credential_loader.py │ ├── entry_points │ │ ├── __init__.py │ │ ├── clean.py │ │ ├── iana.py │ │ ├── production.py │ │ ├── public_suffix.py │ │ └── pyfunceble │ │ │ ├── __init__.py │ │ │ ├── argsparser.py │ │ │ └── cli.py │ ├── execution_time.py │ ├── facility.py │ ├── factory.py │ ├── file_preloader.py │ ├── filesystem │ │ ├── __init__.py │ │ ├── cleanup.py │ │ ├── counter.py │ │ ├── dir_base.py │ │ ├── dir_structure │ │ │ ├── __init__.py │ │ │ ├── backup.py │ │ │ ├── base.py │ │ │ └── restore.py │ │ ├── json_base.py │ │ ├── printer │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── file.py │ │ │ └── stdout.py │ │ ├── registrar_counter.py │ │ └── status_file.py │ ├── migrators │ │ ├── __init__.py │ │ ├── alembic.py │ │ ├── base.py │ │ ├── csv_file │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── inactive_source_delete.py │ │ │ └── whois_registrar_add.py │ │ ├── db_base.py │ │ ├── file_cleanup │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── hashes_file.py │ │ │ ├── mining_file.py │ │ │ └── production_config_file.py │ │ ├── json2csv │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── inactive.py │ │ │ └── whois.py │ │ └── mariadb │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── file_and_status.py │ │ │ └── whois_record_idna_subject.py │ ├── processes │ │ ├── __init__.py │ │ ├── base.py │ │ ├── chancy_producer.py │ │ ├── chancy_tester.py │ │ ├── dir_files_sorter.py │ │ ├── file_sorter.py │ │ ├── migrator.py │ │ ├── miner.py │ │ ├── producer.py │ │ ├── tester.py │ │ └── workers │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── chancy_producer.py │ │ │ ├── chancy_tester.py │ │ │ ├── dir_files_sorter.py │ │ │ ├── file_sorter.py │ │ │ ├── file_sorter_base.py │ │ │ ├── migrator.py │ │ │ ├── miner.py │ │ │ ├── producer.py │ │ │ └── tester.py │ ├── scripts │ │ ├── __init__.py │ │ ├── iana.py │ │ ├── production.py │ │ └── public_suffix.py │ ├── storage.py │ ├── storage_facility.py │ ├── system │ │ ├── __init__.py │ │ ├── base.py │ │ ├── integrator.py │ │ └── launcher.py │ └── utils │ │ ├── __init__.py │ │ ├── ascii_logo.py │ │ ├── sort.py │ │ ├── stdout.py │ │ ├── testing.py │ │ └── version.py ├── config │ ├── __init__.py │ ├── compare.py │ └── loader.py ├── converter │ ├── __init__.py │ ├── adblock_input_line2subject.py │ ├── base.py │ ├── cidr2subject.py │ ├── input_line2subject.py │ ├── internal_url.py │ ├── rpz_input_line2subject.py │ ├── rpz_policy2subject.py │ ├── subject2complements.py │ ├── url2netloc.py │ └── wildcard2subject.py ├── data │ ├── __init__.py │ ├── alembic │ │ ├── __init__.py │ │ ├── mysql │ │ │ ├── __init__.py │ │ │ ├── env.py │ │ │ ├── script.py.mako │ │ │ └── versions │ │ │ │ ├── 35c79626ecb9_fix_some_columns.py │ │ │ │ ├── 3a4c55a9320d_add_continue_table.py │ │ │ │ ├── 3d6f4a33cdb2_add_inactive_table.py │ │ │ │ ├── 45713fea8097_deletion_uneeded_columns_from_whois_.py │ │ │ │ ├── 459a0d7b8f09_add_idna_subject_column_into_whois.py │ │ │ │ ├── 6f4729deaf03_delete_inactive_source_column.py │ │ │ │ ├── 7bcf7fa64ba1_rename_created_to_created_at_and.py │ │ │ │ ├── 83ada95132bf_delete_the_file_table.py │ │ │ │ ├── 912bbcb77a6c_add_registrar_column.py │ │ │ │ ├── 95dc17ddd729_introduction_of_the_session_id_column.py │ │ │ │ ├── __init__.py │ │ │ │ ├── ade87195b0a0_base.py │ │ │ │ ├── bef7bcaac3f2_make_id_a_bigint.py │ │ │ │ ├── d8893cd406db_allow_whois_record_to_be_empty_null.py │ │ │ │ └── e04e8301d1a2_deletion_of_the_mined_table.py │ │ └── postgresql │ │ │ ├── __init__.py │ │ │ ├── env.py │ │ │ ├── script.py.mako │ │ │ └── versions │ │ │ ├── __init__.py │ │ │ └── a32ac5d66eee_initial_version.py │ └── infrastructure │ │ ├── .PyFunceble_production.yaml │ │ ├── __init__.py │ │ └── dir_structure_production.json ├── database │ ├── __init__.py │ ├── credential │ │ ├── __init__.py │ │ ├── base.py │ │ ├── mariadb.py │ │ ├── mysql.py │ │ └── postgresql.py │ ├── schemas │ │ ├── __init__.py │ │ ├── autocontinue.py │ │ ├── inactive.py │ │ ├── status.py │ │ └── whois_record.py │ ├── session.py │ └── sqlalchemy │ │ ├── __init__.py │ │ ├── all_schemas.py │ │ └── base_schema.py ├── dataset │ ├── __init__.py │ ├── autocontinue │ │ ├── __init__.py │ │ ├── base.py │ │ ├── csv.py │ │ └── sql.py │ ├── base.py │ ├── csv_base.py │ ├── db_base.py │ ├── iana.py │ ├── inactive │ │ ├── __init__.py │ │ ├── base.py │ │ ├── csv.py │ │ └── sql.py │ ├── ipv4_reputation.py │ ├── public_suffix.py │ ├── sql_base.py │ ├── user_agent.py │ └── whois │ │ ├── __init__.py │ │ ├── base.py │ │ ├── csv.py │ │ └── sql.py ├── downloader │ ├── __init__.py │ ├── base.py │ ├── exceptions.py │ ├── iana.py │ ├── ipv4_reputation.py │ ├── public_suffix.py │ └── user_agents.py ├── exceptions.py ├── facility.py ├── factory.py ├── helpers │ ├── __init__.py │ ├── command.py │ ├── dict.py │ ├── directory.py │ ├── download.py │ ├── environment_variable.py │ ├── exceptions.py │ ├── file.py │ ├── hash.py │ ├── list.py │ ├── merge.py │ └── regex.py ├── logger.py ├── query │ ├── __init__.py │ ├── dns │ │ ├── __init__.py │ │ ├── nameserver.py │ │ ├── query_tool.py │ │ └── resolver.py │ ├── http_status_code.py │ ├── netinfo │ │ ├── __init__.py │ │ ├── address.py │ │ ├── base.py │ │ └── hostbyaddr.py │ ├── platform.py │ ├── record │ │ ├── __init__.py │ │ ├── base.py │ │ ├── dns.py │ │ └── whois.py │ ├── requests │ │ ├── __init__.py │ │ ├── adapter │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── http.py │ │ │ └── https.py │ │ └── requester.py │ └── whois │ │ ├── __init__.py │ │ ├── converter │ │ ├── __init__.py │ │ ├── base.py │ │ ├── digit2digits.py │ │ ├── expiration_date.py │ │ ├── month2unified.py │ │ └── registrar.py │ │ └── query_tool.py ├── sessions.py ├── storage.py ├── storage_facility.py └── utils │ ├── __init__.py │ ├── platform.py │ ├── profile.py │ └── version.py ├── README.md ├── alembic.ini ├── docs ├── about │ ├── contributors.md │ ├── history.md │ ├── license.md │ └── special-thanks.md ├── contributing │ ├── code-of-conduct.md │ └── contributing.md ├── develop │ ├── checker-responses.md │ ├── examples │ │ ├── domain-availability.md │ │ ├── domain-ip-availability.md │ │ ├── domain-syntax.md │ │ ├── file-generation.md │ │ ├── ip-availability.md │ │ ├── ip-syntax.md │ │ ├── url-availability.md │ │ └── url-syntax.md │ └── getting-started.md ├── gen_ref_pages.py ├── help.md ├── index.md ├── readthedocs_requirements.txt ├── support.md └── use │ ├── ci-cd │ ├── github-actions.md │ ├── gitlab-ci-cd.md │ └── travis-ci.md │ ├── configuration │ ├── environment-variables.md │ ├── index.md │ ├── location.md │ └── parameters │ │ ├── SUMMARY.md │ │ ├── cli-decoding.md │ │ ├── cli-testing.md │ │ ├── debug.md │ │ ├── dns.md │ │ ├── http-codes.md │ │ ├── index.md │ │ ├── links.md │ │ ├── lookup.md │ │ ├── max-http-retries.md │ │ ├── platform.md │ │ ├── proxy.md │ │ ├── share-logs.md │ │ ├── special-rules.md │ │ ├── user-agent.md │ │ └── verify-ssl-certificates.md │ ├── examples │ ├── availability.md │ └── syntax.md │ ├── faq.md │ ├── getting-started.md │ ├── index.md │ ├── installation.md │ ├── known-issues.md │ └── update.md ├── examples ├── api_usage │ ├── advanced.py │ ├── basic.py │ ├── basic_syntax.py │ ├── custom_configuration.py │ ├── file_generation.py │ ├── loop.py │ └── reputation.py ├── demo │ ├── config.sh.in │ ├── landing_page_demo_1.tut │ ├── landing_page_demo_2.tut │ ├── landing_page_demo_3.tut │ ├── record.sh │ ├── record_all.sh │ ├── replay.sh │ ├── replay_all.sh │ ├── upload.sh │ └── upload_all.sh └── lists │ ├── adblock │ ├── idna │ └── simple ├── mkdocs.yml ├── output ├── .gitignore └── __pyfunceble_origin__ │ ├── .gitignore │ ├── Analytic │ ├── .gitignore │ ├── ACTIVE │ │ └── .gitignore │ ├── POTENTIALLY_ACTIVE │ │ └── .gitignore │ ├── POTENTIALLY_INACTIVE │ │ └── .gitignore │ └── SUSPICIOUS │ │ └── .gitignore │ ├── domains │ ├── .gitignore │ ├── ACTIVE │ │ └── .gitignore │ ├── INACTIVE │ │ └── .gitignore │ ├── INVALID │ │ └── .gitignore │ ├── MALICIOUS │ │ └── .gitignore │ ├── SANE │ │ └── .gitignore │ └── VALID │ │ └── .gitignore │ ├── hosts │ ├── .gitignore │ ├── ACTIVE │ │ └── .gitignore │ ├── INACTIVE │ │ └── .gitignore │ ├── INVALID │ │ └── .gitignore │ ├── MALICIOUS │ │ └── .gitignore │ ├── SANE │ │ └── .gitignore │ └── VALID │ │ └── .gitignore │ ├── ips │ ├── .gitignore │ ├── ACTIVE │ │ └── .gitignore │ ├── INACTIVE │ │ └── .gitignore │ ├── INVALID │ │ └── .gitignore │ ├── MALICIOUS │ │ └── .gitignore │ ├── SANE │ │ └── .gitignore │ └── VALID │ │ └── .gitignore │ ├── logs │ ├── .gitignore │ └── percentage │ │ └── .gitignore │ └── splitted │ └── .gitignore ├── requirements.dev.txt ├── requirements.docs.txt ├── requirements.test.txt ├── requirements.txt ├── requirements.win.txt ├── setup.cfg ├── setup.py ├── tests ├── __init__.py ├── checker │ ├── __init__.py │ ├── availability │ │ ├── __init__.py │ │ ├── test_base.py │ │ ├── test_domain.py │ │ ├── test_ip.py │ │ ├── test_status.py │ │ └── test_url.py │ ├── reputation │ │ ├── __init__.py │ │ ├── reputation_test_base.py │ │ ├── test_base.py │ │ ├── test_domain.py │ │ ├── test_domain_and_ip.py │ │ ├── test_ip.py │ │ ├── test_status.py │ │ └── test_url.py │ ├── syntax │ │ ├── __init__.py │ │ ├── test_base.py │ │ ├── test_domain.py │ │ ├── test_domain_base.py │ │ ├── test_ip.py │ │ ├── test_ipv4.py │ │ ├── test_ipv6.py │ │ ├── test_second_lvl_domain.py │ │ ├── test_status.py │ │ ├── test_subdomain.py │ │ └── test_url.py │ ├── test_base.py │ ├── test_complex_json_encoder.py │ ├── test_params_base.py │ ├── test_status_base.py │ └── utils │ │ ├── __init__.py │ │ └── test_whois.py ├── config │ ├── __init__.py │ ├── test_compare.py │ └── test_loader.py ├── converter │ ├── __init__.py │ ├── test_adblock_input_line2subject.py │ ├── test_base.py │ ├── test_cidr2subject.py │ ├── test_input_line2subject.py │ ├── test_internal_url.py │ ├── test_rpz_input_line2subject.py │ ├── test_rpz_policy2subject.py │ ├── test_subject2complements.py │ ├── test_url2netloc.py │ └── test_wildcard2subject.py ├── dataset │ ├── __init__.py │ ├── test_base.py │ ├── test_db_base.py │ ├── test_iana.py │ ├── test_ipv4_reputation.py │ ├── test_public_suffix.py │ └── test_user_agent.py ├── helpers │ ├── __init__.py │ ├── test_command.py │ ├── test_dict.py │ ├── test_directory.py │ ├── test_download.py │ ├── test_environment_variable.py │ ├── test_file.py │ ├── test_hash.py │ ├── test_list.py │ ├── test_merge.py │ └── test_regex.py ├── pyf_test_dataset.py ├── pyf_test_helpers.py ├── query │ ├── __init__.py │ ├── dnss │ │ ├── __init__.py │ │ ├── test_nameserver.py │ │ ├── test_query_tool.py │ │ └── test_resolver.py │ ├── netinfo │ │ ├── __init__.py │ │ ├── test_address.py │ │ ├── test_base.py │ │ └── test_hostbyaddr.py │ ├── test_http_status_code.py │ ├── test_platform.py │ └── whois │ │ ├── __init__.py │ │ ├── converter │ │ ├── __init__.py │ │ ├── test_base.py │ │ ├── test_digit2digits.py │ │ ├── test_expiration_date.py │ │ ├── test_month2unified.py │ │ └── test_registrar.py │ │ └── test_query_tool.py ├── stdout_base.py └── utils │ ├── __init__.py │ ├── test_platform.py │ └── test_version.py ├── tox.ini ├── tox_run.ini ├── tox_run_mariadb.ini ├── tox_run_postgresql.ini └── version.yaml /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = False 3 | 4 | omit = 5 | # omit the following directory 6 | */pbr/* 7 | */site-packages/* 8 | /home/travis/virtualenv/* 9 | *.eggs/* 10 | */distutils/* 11 | 12 | # omit the following file 13 | PyFunceble/dataset/mariadb_base.py 14 | PyFunceble/dataset/*/mariadb.py 15 | PyFunceble/dataset/*/mysql.py 16 | PyFunceble/checker/availability/extras/* 17 | PyFunceble/__init__.py 18 | PyFunceble/logger.py 19 | 20 | PyFunceble/database/* 21 | 22 | PyFunceble/cli/* 23 | 24 | [report] 25 | # This should be False one we move into production 26 | skip_covered = False 27 | 28 | # Regexes for lines to exclude from consideration 29 | exclude_lines = 30 | # Have to re-enable the standard pragma 31 | pragma: no cover 32 | 33 | # Never cover __init__ 34 | def __init__ 35 | 36 | # Don't complain about missing debug-only code: 37 | def __repr__ 38 | 39 | # Don't complain if tests don't hit defensive assertion code: 40 | raise AssertionError 41 | raise NotImplementedError 42 | 43 | # Don't complain if non-runnable code isn't run: 44 | if __name__ == .__main__.: 45 | 46 | # Don't complain for those blocks 47 | PyFunceble\.storage\.CONFIGURATION\.cli_testing\.db_type == "mariadb" 48 | PyFunceble\.storage\.CONFIGURATION\.cli_testing\.db_type == "mysql" 49 | 50 | # Don't complain about those. 51 | to_json\( 52 | _mysql\( 53 | _mariadb\( 54 | 55 | PyFunceble\.facility\.Logger\. 56 | 57 | # Manual handling of imports. 58 | except\sModuleNotFoundError\: 59 | except\sImportError: 60 | 61 | 62 | ignore_errors = True 63 | fail_under = 70 64 | 65 | [html] 66 | directory = coverage_html_report 67 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [funilrys] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | ko_fi: funilrys # Replace with a single Ko-fi username 5 | custom: ["https://www.paypal.me/funilrys"] 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/03-documentation.yml: -------------------------------------------------------------------------------- 1 | name: Documentation Improvement Request 2 | description: Suggestions for improving the documentation. 3 | title: "Documentation | My Awesome Idea" 4 | labels: 5 | - documentation 6 | projects: 7 | - funilrys/6 8 | assignees: 9 | - funilrys 10 | body: 11 | - type: markdown 12 | attributes: 13 | value: |+ 14 | Thanks for taking the time to fill out this documentation improvement request! 15 | 16 | lease be patient and rest assured that we will get back to you as soon as possible. 17 | To help us understand and reproduce the issue, please provide as much information as possible. 18 | 19 | If you have a question or need help, please ask in our [Discussions](https://github.com/funilrys/PyFunceble/discussions) section. 20 | 21 | - type: textarea 22 | id: description 23 | attributes: 24 | label: What is missing or not easy to understand? 25 | description: | 26 | Please describe what is missing or not easy to understand in the documentation. 27 | 28 | placeholder: | 29 | I've found it hard to understand how... 30 | value: | 31 | I've found it hard to understand how... 32 | validations: 33 | required: true 34 | 35 | - type: textarea 36 | id: suggestion 37 | attributes: 38 | label: What is your suggestion or improvement? 39 | description: | 40 | A clear description of your suggestion and what you would like to improve and how you would like to improve it. 41 | placeholder: | 42 | I suggest that we... 43 | value: | 44 | I suggest that we... 45 | validations: 46 | required: true 47 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Discussions 4 | url: https://github.com/funilrys/PyFunceble/discussions 5 | about: Please ask and answer questions here. 6 | - name: Documentation 7 | url: https://docs.pyfunceble.com 8 | about: Find more information about PyFunceble through our documentation. 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | .static_storage/ 56 | .media/ 57 | local_settings.py 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | 106 | # JetBrains Tools like IntelliJ 107 | .idea 108 | 109 | # VSCode (Visual Basic Code) 110 | .vscode 111 | 112 | # Project related 113 | .pyfunceble_intern_downtime.json 114 | .pyfunceble-env 115 | .PyFunceble.yaml 116 | .PyFunceble.overwrite.yaml 117 | dir_structure.json 118 | hashes_tracker.json 119 | iana-domains-db.json 120 | inactive_db.json 121 | inactive.csv 122 | ipv4_reputation.data 123 | mining.json 124 | public-suffix.json 125 | pyfunceble.db 126 | user_agents.json 127 | whois_db.json 128 | whois.csv 129 | tests_dir/ 130 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | graft PyFunceble 2 | global-exclude __pycache__ 3 | global-exclude *.py[co] 4 | include LICENSE 5 | include CODE_OF_CONDUCT.md 6 | include CONTRIBUTING.md 7 | include CONTRIBUTORS.md 8 | include requirements*.txt 9 | include version.yaml -------------------------------------------------------------------------------- /PyFunceble/checker/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the checkers. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/checker/availability/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the core of the availablity checker. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/checker/availability/extras/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the extras of the availablity checker. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/checker/reputation/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the core of the reputation checker. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/checker/reputation/params.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides our parameter class. The parameter class is the class that will be provided 15 | to end-user. It is only a placeholder and should only be taken as informative. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | 54 | import dataclasses 55 | 56 | from PyFunceble.checker.params_base import CheckerParamsBase 57 | 58 | 59 | @dataclasses.dataclass 60 | class ReputationCheckerParams(CheckerParamsBase): 61 | """ 62 | Provides the description of a reputation checker paramaters. 63 | """ 64 | -------------------------------------------------------------------------------- /PyFunceble/checker/syntax/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the core of the syntax checker. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/checker/syntax/params.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides our parameter class. The parameter class is the class that will be provided 15 | to end-user. It is only a placeholder and should only be taken as informative. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | 54 | import dataclasses 55 | 56 | from PyFunceble.checker.params_base import CheckerParamsBase 57 | 58 | 59 | @dataclasses.dataclass 60 | class SyntaxCheckerParams(CheckerParamsBase): 61 | """ 62 | Provides the description of a syntax checker paramaters. 63 | """ 64 | -------------------------------------------------------------------------------- /PyFunceble/checker/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides some utilities related to the checkers. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the CLI usage. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/continuous_integration/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything we may need for continuous integration aka autosaving and 15 | auto commiting. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | -------------------------------------------------------------------------------- /PyFunceble/cli/entry_points/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all our entry points. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/entry_points/pyfunceble/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides (a bit more that "usual") what is needed by the PyFunceble CLI tool. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/facility.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides some loader that we may need later. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.cli.credential_loader import CredentialLoader as credential_loader 54 | 55 | CredentialLoader = credential_loader() 56 | -------------------------------------------------------------------------------- /PyFunceble/cli/factory.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything which doesn't get through the door of the facility. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.database.session import DBSession as db_session 54 | 55 | DBSession = db_session() 56 | -------------------------------------------------------------------------------- /PyFunceble/cli/filesystem/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to our very own filesystem or output structure. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/filesystem/dir_structure/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the generation of backup of the directory structure. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/filesystem/printer/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to what we actually print (output) or to a file. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/migrators/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides our system migrators. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/migrators/csv_file/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the csv file(s) migrators. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/migrators/file_cleanup/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the file cleanup migrators. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/migrators/json2csv/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the JSON to CSV migrators. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/migrators/mariadb/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all our mariadb related migrations. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/processes/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all our the logic behind our multiprocessing mechanism. 15 | 16 | .. note:: 17 | Our processes submodules or class does not extends the multiprocessing 18 | module. 19 | They are just there to clarify our workflow for future contributors :-) 20 | 21 | Author: 22 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 23 | 24 | Special thanks: 25 | https://pyfunceble.github.io/#/special-thanks 26 | 27 | Contributors: 28 | https://pyfunceble.github.io/#/contributors 29 | 30 | Project link: 31 | https://github.com/funilrys/PyFunceble 32 | 33 | Project documentation: 34 | https://docs.pyfunceble.com 35 | 36 | Project homepage: 37 | https://pyfunceble.github.io/ 38 | 39 | License: 40 | :: 41 | 42 | 43 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 44 | 45 | Licensed under the Apache License, Version 2.0 (the "License"); 46 | you may not use this file except in compliance with the License. 47 | You may obtain a copy of the License at 48 | 49 | https://www.apache.org/licenses/LICENSE-2.0 50 | 51 | Unless required by applicable law or agreed to in writing, software 52 | distributed under the License is distributed on an "AS IS" BASIS, 53 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 54 | See the License for the specific language governing permissions and 55 | limitations under the License. 56 | """ 57 | -------------------------------------------------------------------------------- /PyFunceble/cli/processes/base.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the base of all multiprocessing jobs. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | # pylint: disable=import-error,no-name-in-module,no-member 54 | 55 | import PyFunceble.ext.process_manager 56 | import PyFunceble.facility 57 | 58 | 59 | class ProcessesManagerBase(PyFunceble.ext.process_manager.ProcessManagerCore): 60 | """ 61 | Provides the base of all classes. 62 | """ 63 | -------------------------------------------------------------------------------- /PyFunceble/cli/processes/file_sorter.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the file sorter manager. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.cli.processes.base import ProcessesManagerBase 54 | from PyFunceble.cli.processes.workers.file_sorter import FileSorterWorker 55 | 56 | 57 | class FileSorterProcessesManager(ProcessesManagerBase): 58 | """ 59 | Provides the file sorter manager. 60 | """ 61 | 62 | STD_NAME: str = "pyfunceble_file_sorter_worker" 63 | WORKER_CLASS: FileSorterWorker = FileSorterWorker 64 | -------------------------------------------------------------------------------- /PyFunceble/cli/processes/miner.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the miner manager. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.cli.processes.base import ProcessesManagerBase 54 | from PyFunceble.cli.processes.workers.miner import MinerWorker 55 | 56 | 57 | class MinerProcessesManager(ProcessesManagerBase): 58 | """ 59 | Provides the miner manager. 60 | """ 61 | 62 | STD_NAME: str = "pyfunceble_miner_worker" 63 | WORKER_CLASS: MinerWorker = MinerWorker 64 | -------------------------------------------------------------------------------- /PyFunceble/cli/processes/producer.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the producer manager. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.cli.processes.base import ProcessesManagerBase 54 | from PyFunceble.cli.processes.workers.producer import ProducerWorker 55 | 56 | 57 | class ProducerProcessesManager(ProcessesManagerBase): 58 | """ 59 | Provides the producer manager. 60 | """ 61 | 62 | STD_NAME: str = "pyfunceble_producer_worker" 63 | WORKER_CLASS: ProducerWorker = ProducerWorker 64 | -------------------------------------------------------------------------------- /PyFunceble/cli/processes/tester.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the tester manager. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.cli.processes.base import ProcessesManagerBase 54 | from PyFunceble.cli.processes.workers.tester import TesterWorker 55 | 56 | 57 | class TesterProcessesManager(ProcessesManagerBase): 58 | """ 59 | Provides the tester manager. 60 | """ 61 | 62 | STD_NAME: str = "pyfunceble_tester_worker" 63 | WORKER_CLASS: TesterWorker = TesterWorker 64 | -------------------------------------------------------------------------------- /PyFunceble/cli/processes/workers/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all our standalone workers. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/scripts/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides some of our scripts. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/cli/system/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides our system handlers. Actually, every success CLI parsing will ends in 15 | on of the submodules. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | -------------------------------------------------------------------------------- /PyFunceble/cli/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides some utilities related to the CLI. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/config/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the configuration related submodules. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/converter/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all the converters. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/PyFunceble/data/__init__.py -------------------------------------------------------------------------------- /PyFunceble/data/alembic/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the alembic data. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/special-thanks.html 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/contributors.html 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the alembic data. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/special-thanks.html 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/contributors.html 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/script.py.mako: -------------------------------------------------------------------------------- 1 | """${message} 2 | 3 | Revision ID: ${up_revision} 4 | Revises: ${down_revision | comma,n} 5 | Create Date: ${create_date} 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | ${imports if imports else ""} 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = ${repr(up_revision)} 14 | down_revision = ${repr(down_revision)} 15 | branch_labels = ${repr(branch_labels)} 16 | depends_on = ${repr(depends_on)} 17 | 18 | 19 | def upgrade(): 20 | ${upgrades if upgrades else "pass"} 21 | 22 | 23 | def downgrade(): 24 | ${downgrades if downgrades else "pass"} 25 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/35c79626ecb9_fix_some_columns.py: -------------------------------------------------------------------------------- 1 | """Fix some columns 2 | 3 | Revision ID: 35c79626ecb9 4 | Revises: ade87195b0a0 5 | Create Date: 2020-08-21 11:42:07.044762 6 | 7 | """ 8 | 9 | from alembic import op 10 | from sqlalchemy.exc import OperationalError 11 | 12 | # pylint: skip-file 13 | 14 | # revision identifiers, used by Alembic. 15 | revision = "35c79626ecb9" 16 | down_revision = "ade87195b0a0" 17 | branch_labels = None 18 | depends_on = None 19 | 20 | 21 | def upgrade(): 22 | # ### commands auto generated by Alembic - please adjust! ### 23 | try: 24 | op.create_index( 25 | op.f("ix_pyfunceble_mined_mined"), 26 | "pyfunceble_mined", 27 | ["mined"], 28 | unique=False, 29 | ) 30 | except OperationalError: 31 | pass 32 | 33 | try: 34 | op.drop_index("mined", table_name="pyfunceble_mined") 35 | except OperationalError: 36 | pass 37 | 38 | try: 39 | op.create_index( 40 | op.f("ix_pyfunceble_status_tested"), 41 | "pyfunceble_status", 42 | ["tested"], 43 | unique=False, 44 | ) 45 | except OperationalError: 46 | pass 47 | 48 | try: 49 | op.drop_index("tested", table_name="pyfunceble_status") 50 | except OperationalError: 51 | pass 52 | # ### end Alembic commands ### 53 | 54 | 55 | def downgrade(): 56 | # ### commands auto generated by Alembic - please adjust! ### 57 | try: 58 | op.create_index("tested", "pyfunceble_status", ["tested"], unique=True) 59 | except OperationalError: 60 | pass 61 | 62 | try: 63 | op.drop_index( 64 | op.f("ix_pyfunceble_status_tested"), table_name="pyfunceble_status" 65 | ) 66 | except OperationalError: 67 | pass 68 | 69 | try: 70 | op.create_index("mined", "pyfunceble_mined", ["mined"], unique=True) 71 | except OperationalError: 72 | pass 73 | 74 | try: 75 | op.drop_index(op.f("ix_pyfunceble_mined_mined"), table_name="pyfunceble_mined") 76 | except OperationalError: 77 | pass 78 | # ### end Alembic commands ### 79 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/3a4c55a9320d_add_continue_table.py: -------------------------------------------------------------------------------- 1 | """Add continue table. 2 | 3 | Revision ID: 3a4c55a9320d 4 | Revises: 3d6f4a33cdb2 5 | Create Date: 2020-12-13 22:52:56.968513 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | 12 | # pylint: skip-file 13 | 14 | # revision identifiers, used by Alembic. 15 | revision = "3a4c55a9320d" 16 | down_revision = "3d6f4a33cdb2" 17 | branch_labels = None 18 | depends_on = None 19 | 20 | 21 | def upgrade(): 22 | # ### commands auto generated by Alembic - please adjust! ### 23 | op.create_table( 24 | "pyfunceble_continue", 25 | sa.Column("id", sa.Integer(), nullable=False), 26 | sa.Column("created_at", sa.DateTime(), nullable=False), 27 | sa.Column("modified_at", sa.DateTime(), nullable=True), 28 | sa.Column("idna_subject", sa.Text(), nullable=False), 29 | sa.Column("checker_type", sa.String(length=50), nullable=False), 30 | sa.Column("destination", sa.Text(), nullable=False), 31 | sa.Column("source", sa.Text(), nullable=False), 32 | sa.Column("tested_at", sa.DateTime(), nullable=False), 33 | sa.PrimaryKeyConstraint("id"), 34 | ) 35 | # ### end Alembic commands ### 36 | 37 | 38 | def downgrade(): 39 | # ### commands auto generated by Alembic - please adjust! ### 40 | op.drop_table("pyfunceble_continue") 41 | # ### end Alembic commands ### 42 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/3d6f4a33cdb2_add_inactive_table.py: -------------------------------------------------------------------------------- 1 | """Add inactive table. 2 | 3 | Revision ID: 3d6f4a33cdb2 4 | Revises: 7bcf7fa64ba1 5 | Create Date: 2020-12-13 19:45:41.893657 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | 12 | # pylint: skip-file 13 | 14 | 15 | # revision identifiers, used by Alembic. 16 | revision = "3d6f4a33cdb2" 17 | down_revision = "7bcf7fa64ba1" 18 | branch_labels = None 19 | depends_on = None 20 | 21 | 22 | def upgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.create_table( 25 | "pyfunceble_inactive", 26 | sa.Column("id", sa.Integer(), nullable=False), 27 | sa.Column("created_at", sa.DateTime(), nullable=False), 28 | sa.Column("modified_at", sa.DateTime(), nullable=True), 29 | sa.Column("idna_subject", sa.Text(), nullable=False), 30 | sa.Column("checker_type", sa.String(length=50), nullable=False), 31 | sa.Column("destination", sa.Text(), nullable=False), 32 | sa.Column("source", sa.Text(), nullable=False), 33 | sa.Column("tested_at", sa.DateTime(), nullable=False), 34 | sa.PrimaryKeyConstraint("id"), 35 | ) 36 | # ### end Alembic commands ### 37 | 38 | 39 | def downgrade(): 40 | # ### commands auto generated by Alembic - please adjust! ### 41 | op.drop_table("pyfunceble_inactive") 42 | # ### end Alembic commands ### 43 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/45713fea8097_deletion_uneeded_columns_from_whois_.py: -------------------------------------------------------------------------------- 1 | """Deletion uneeded columns from whois record 2 | 3 | Revision ID: 45713fea8097 4 | Revises: e04e8301d1a2 5 | Create Date: 2020-12-07 12:36:04.818466 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | from sqlalchemy.dialects import mysql 12 | 13 | # pylint: skip-file 14 | 15 | # revision identifiers, used by Alembic. 16 | revision = "45713fea8097" 17 | down_revision = "e04e8301d1a2" 18 | branch_labels = None 19 | depends_on = None 20 | 21 | 22 | def upgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.drop_column("pyfunceble_whois_record", "state") 25 | op.drop_column("pyfunceble_whois_record", "record") 26 | op.drop_column("pyfunceble_whois_record", "server") 27 | # ### end Alembic commands ### 28 | 29 | 30 | def downgrade(): 31 | # ### commands auto generated by Alembic - please adjust! ### 32 | op.add_column( 33 | "pyfunceble_whois_record", 34 | sa.Column("server", mysql.TEXT(collation="utf8mb4_unicode_ci"), nullable=True), 35 | ) 36 | op.add_column( 37 | "pyfunceble_whois_record", 38 | sa.Column("record", mysql.TEXT(collation="utf8mb4_unicode_ci"), nullable=True), 39 | ) 40 | op.add_column( 41 | "pyfunceble_whois_record", 42 | sa.Column( 43 | "state", 44 | mysql.VARCHAR(collation="utf8mb4_unicode_ci", length=80), 45 | nullable=False, 46 | ), 47 | ) 48 | # ### end Alembic commands ### 49 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/459a0d7b8f09_add_idna_subject_column_into_whois.py: -------------------------------------------------------------------------------- 1 | """Add idna_subject column into whois record 2 | 3 | Revision ID: 459a0d7b8f09 4 | Revises: 45713fea8097 5 | Create Date: 2020-12-07 12:37:52.018637 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | 12 | # pylint: skip-file 13 | 14 | # revision identifiers, used by Alembic. 15 | revision = "459a0d7b8f09" 16 | down_revision = "45713fea8097" 17 | branch_labels = None 18 | depends_on = None 19 | 20 | 21 | def upgrade(): 22 | # ### commands auto generated by Alembic - please adjust! ### 23 | op.add_column( 24 | "pyfunceble_whois_record", sa.Column("idna_subject", sa.Text(), nullable=True) 25 | ) 26 | # ### end Alembic commands ### 27 | 28 | 29 | def downgrade(): 30 | # ### commands auto generated by Alembic - please adjust! ### 31 | op.drop_column("pyfunceble_whois_record", "idna_subject") 32 | # ### end Alembic commands ### 33 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/6f4729deaf03_delete_inactive_source_column.py: -------------------------------------------------------------------------------- 1 | """Delete inactive.source column 2 | 3 | Revision ID: 6f4729deaf03 4 | Revises: 95dc17ddd729 5 | Create Date: 2021-02-13 12:21:00.493002 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | from sqlalchemy.dialects import mysql 12 | 13 | # pylint: skip-file 14 | 15 | # revision identifiers, used by Alembic. 16 | revision = "6f4729deaf03" 17 | down_revision = "95dc17ddd729" 18 | branch_labels = None 19 | depends_on = None 20 | 21 | 22 | def upgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.drop_column("pyfunceble_inactive", "source") 25 | # ### end Alembic commands ### 26 | 27 | 28 | def downgrade(): 29 | # ### commands auto generated by Alembic - please adjust! ### 30 | op.add_column( 31 | "pyfunceble_inactive", 32 | sa.Column("source", mysql.TEXT(collation="utf8mb4_unicode_ci"), nullable=False), 33 | ) 34 | # ### end Alembic commands ### 35 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/912bbcb77a6c_add_registrar_column.py: -------------------------------------------------------------------------------- 1 | """Add registrar column 2 | 3 | Revision ID: 912bbcb77a6c 4 | Revises: 6f4729deaf03 5 | Create Date: 2021-12-04 23:52:11.861732 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | 12 | # pylint: skip-file 13 | 14 | # revision identifiers, used by Alembic. 15 | revision = "912bbcb77a6c" 16 | down_revision = "6f4729deaf03" 17 | branch_labels = None 18 | depends_on = None 19 | 20 | 21 | def upgrade(): 22 | # ### commands auto generated by Alembic - please adjust! ### 23 | op.add_column( 24 | "pyfunceble_whois_record", sa.Column("registrar", sa.Text(), nullable=True) 25 | ) 26 | # ### end Alembic commands ### 27 | 28 | 29 | def downgrade(): 30 | # ### commands auto generated by Alembic - please adjust! ### 31 | op.drop_column("pyfunceble_whois_record", "registrar") 32 | # ### end Alembic commands ### 33 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/95dc17ddd729_introduction_of_the_session_id_column.py: -------------------------------------------------------------------------------- 1 | """Introduction of the session_id column 2 | 3 | Revision ID: 95dc17ddd729 4 | Revises: bef7bcaac3f2 5 | Create Date: 2020-12-23 02:26:21.647125 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | 12 | # pylint: skip-file 13 | 14 | # revision identifiers, used by Alembic. 15 | revision = "95dc17ddd729" 16 | down_revision = "bef7bcaac3f2" 17 | branch_labels = None 18 | depends_on = None 19 | 20 | 21 | def upgrade(): 22 | # ### commands auto generated by Alembic - please adjust! ### 23 | op.add_column( 24 | "pyfunceble_continue", sa.Column("session_id", sa.Text(), nullable=True) 25 | ) 26 | # ### end Alembic commands ### 27 | 28 | 29 | def downgrade(): 30 | # ### commands auto generated by Alembic - please adjust! ### 31 | op.drop_column("pyfunceble_continue", "session_id") 32 | # ### end Alembic commands ### 33 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the alembic migrations files. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/special-thanks.html 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/contributors.html 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/bef7bcaac3f2_make_id_a_bigint.py: -------------------------------------------------------------------------------- 1 | """Make id a bigint. 2 | 3 | Revision ID: bef7bcaac3f2 4 | Revises: 3a4c55a9320d 5 | Create Date: 2020-12-16 19:09:41.212679 6 | 7 | """ 8 | 9 | import sqlalchemy as sa 10 | from alembic import op 11 | from sqlalchemy.dialects import mysql 12 | 13 | # pylint: skip-file 14 | 15 | # revision identifiers, used by Alembic. 16 | revision = "bef7bcaac3f2" 17 | down_revision = "3a4c55a9320d" 18 | branch_labels = None 19 | depends_on = None 20 | 21 | 22 | def upgrade(): 23 | # ### commands auto generated by Alembic - please adjust! ### 24 | op.alter_column( 25 | "pyfunceble_continue", 26 | "id", 27 | existing_type=mysql.INTEGER(display_width=11), 28 | type_=sa.BigInteger(), 29 | autoincrement=True, 30 | ) 31 | op.alter_column( 32 | "pyfunceble_inactive", 33 | "id", 34 | existing_type=mysql.INTEGER(display_width=11), 35 | type_=sa.BigInteger(), 36 | autoincrement=True, 37 | ) 38 | op.alter_column( 39 | "pyfunceble_whois_record", 40 | "id", 41 | existing_type=mysql.INTEGER(display_width=11), 42 | type_=sa.BigInteger(), 43 | autoincrement=True, 44 | ) 45 | # ### end Alembic commands ### 46 | 47 | 48 | def downgrade(): 49 | # ### commands auto generated by Alembic - please adjust! ### 50 | op.alter_column( 51 | "pyfunceble_whois_record", 52 | "id", 53 | existing_type=sa.BigInteger(), 54 | type_=mysql.INTEGER(display_width=11), 55 | autoincrement=True, 56 | ) 57 | op.alter_column( 58 | "pyfunceble_inactive", 59 | "id", 60 | existing_type=sa.BigInteger(), 61 | type_=mysql.INTEGER(display_width=11), 62 | autoincrement=True, 63 | ) 64 | op.alter_column( 65 | "pyfunceble_continue", 66 | "id", 67 | existing_type=sa.BigInteger(), 68 | type_=mysql.INTEGER(display_width=11), 69 | autoincrement=True, 70 | ) 71 | # ### end Alembic commands ### 72 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/mysql/versions/d8893cd406db_allow_whois_record_to_be_empty_null.py: -------------------------------------------------------------------------------- 1 | """Allow whois record to be empty/NULL 2 | 3 | Revision ID: d8893cd406db 4 | Revises: 35c79626ecb9 5 | Create Date: 2020-08-22 17:27:52.087506 6 | 7 | """ 8 | 9 | from alembic import op 10 | from sqlalchemy.dialects import mysql 11 | 12 | # pylint: skip-file 13 | 14 | # revision identifiers, used by Alembic. 15 | revision = "d8893cd406db" 16 | down_revision = "35c79626ecb9" 17 | branch_labels = None 18 | depends_on = None 19 | 20 | 21 | def upgrade(): 22 | # ### commands auto generated by Alembic - please adjust! ### 23 | op.alter_column( 24 | "pyfunceble_whois_record", 25 | "record", 26 | existing_type=mysql.TEXT(collation="utf8mb4_unicode_ci"), 27 | nullable=True, 28 | ) 29 | # ### end Alembic commands ### 30 | 31 | 32 | def downgrade(): 33 | # ### commands auto generated by Alembic - please adjust! ### 34 | op.alter_column( 35 | "pyfunceble_whois_record", 36 | "record", 37 | existing_type=mysql.TEXT(collation="utf8mb4_unicode_ci"), 38 | nullable=False, 39 | ) 40 | # ### end Alembic commands ### 41 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/postgresql/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the alembic data. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/special-thanks.html 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/contributors.html 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/postgresql/script.py.mako: -------------------------------------------------------------------------------- 1 | """${message} 2 | 3 | Revision ID: ${up_revision} 4 | Revises: ${down_revision | comma,n} 5 | Create Date: ${create_date} 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | ${imports if imports else ""} 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = ${repr(up_revision)} 14 | down_revision = ${repr(down_revision)} 15 | branch_labels = ${repr(branch_labels)} 16 | depends_on = ${repr(depends_on)} 17 | 18 | 19 | def upgrade(): 20 | ${upgrades if upgrades else "pass"} 21 | 22 | 23 | def downgrade(): 24 | ${downgrades if downgrades else "pass"} 25 | -------------------------------------------------------------------------------- /PyFunceble/data/alembic/postgresql/versions/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the alembic migrations files. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/special-thanks.html 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/contributors.html 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/data/infrastructure/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/PyFunceble/data/infrastructure/__init__.py -------------------------------------------------------------------------------- /PyFunceble/database/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the structure and connection with external databases. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/database/credential/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to our credential holders. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/database/credential/mariadb.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides our mariadb credential holder. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.database.credential.base import CredentialBase 54 | 55 | 56 | class MariaDBCredential(CredentialBase): 57 | """ 58 | Provides our MariaDB credential holder. 59 | """ 60 | 61 | protocol: str = "mysql+pymysql" 62 | -------------------------------------------------------------------------------- /PyFunceble/database/credential/mysql.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides our mysql credential holder. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.database.credential.base import CredentialBase 54 | 55 | 56 | class MySQLCredential(CredentialBase): 57 | """ 58 | Provides our MySQL credential holder. 59 | """ 60 | 61 | protocol: str = "mysql+pymysql" 62 | -------------------------------------------------------------------------------- /PyFunceble/database/schemas/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all our schemas in one place! 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/database/sqlalchemy/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to everything we do with SQLAlchemy. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/database/sqlalchemy/all_schemas.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all our schemas. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | # pylint: skip-file 54 | # flake8: noqa 55 | 56 | from PyFunceble.database.schemas.autocontinue import Continue 57 | from PyFunceble.database.schemas.inactive import Inactive 58 | from PyFunceble.database.schemas.whois_record import WhoisRecord 59 | -------------------------------------------------------------------------------- /PyFunceble/dataset/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all the dataset interaction submodules 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/dataset/autocontinue/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the continue logic(s). 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/dataset/inactive/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the inactive database logic(s). 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/dataset/whois/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the whois database logic(s). 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/downloader/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all downloaders. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/exceptions.py: -------------------------------------------------------------------------------- 1 | # pylint:disable=line-too-long 2 | """ 3 | The tool to check the availability or syntax of domain, IP or URL. 4 | 5 | :: 6 | 7 | 8 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 9 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 10 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 11 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 12 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 13 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 14 | 15 | Provides our exceptions. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | 54 | 55 | class PyFuncebleException(Exception): 56 | """ 57 | Describes our own exceptions. 58 | """ 59 | 60 | 61 | class NoInternetConnection(PyFuncebleException): 62 | """ 63 | Describes a missing connection. 64 | """ 65 | 66 | 67 | class PleaseUpdatePyFunceble(PyFuncebleException): 68 | """ 69 | Describes the impossiblity to continue with an older version. 70 | """ 71 | -------------------------------------------------------------------------------- /PyFunceble/facility.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything which we may need while running. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.config.loader import ConfigLoader as config_loader 54 | from PyFunceble.logger import Logger as logger 55 | 56 | ConfigLoader = config_loader() 57 | 58 | Logger = logger() 59 | -------------------------------------------------------------------------------- /PyFunceble/factory.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything which doesn't get through the door of the facility. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | from PyFunceble.query.requests.requester import Requester as requester 54 | 55 | Requester = requester() 56 | -------------------------------------------------------------------------------- /PyFunceble/helpers/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the helpers. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/helpers/exceptions.py: -------------------------------------------------------------------------------- 1 | # pylint:disable=line-too-long 2 | """ 3 | The tool to check the availability or syntax of domain, IP or URL. 4 | 5 | :: 6 | 7 | 8 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 9 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 10 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 11 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 12 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 13 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 14 | 15 | Provides the exceptions related to the helpers. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | 54 | import PyFunceble.exceptions 55 | 56 | 57 | class PyFuncebleHelperException(PyFunceble.exceptions.PyFuncebleException): 58 | """ 59 | Describes the helper (related) exceptions. 60 | """ 61 | 62 | 63 | class UnableToDownload(PyFuncebleHelperException): 64 | """ 65 | Describes a failing download. 66 | """ 67 | -------------------------------------------------------------------------------- /PyFunceble/query/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related queries and communication with target resources 15 | and information. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | -------------------------------------------------------------------------------- /PyFunceble/query/dns/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to our very own dns resolver. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/query/netinfo/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all our network info related subdmodules. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/query/record/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides all records classes. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/query/requests/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to our very own request handler. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/query/requests/adapter/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to our request adapters. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/query/whois/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides everything related to the way we get or manipulate WHOIS record. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/query/whois/converter/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the converter or extractor around the WHOIS query logic. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /PyFunceble/sessions.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides the location of all our sessions 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/#/special-thanks 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/#/contributors 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | 53 | # Should be initiated by the PyFunceble.database.session module. 54 | DB_ENGINE = None 55 | DB_FACTORY = None 56 | DB_SESSION = None 57 | -------------------------------------------------------------------------------- /PyFunceble/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | """ 3 | The tool to check the availability or syntax of domain, IP or URL. 4 | 5 | :: 6 | 7 | 8 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 9 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 10 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 11 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 12 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 13 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 14 | 15 | Provides some global utilities. 16 | 17 | Author: 18 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 19 | 20 | Special thanks: 21 | https://pyfunceble.github.io/#/special-thanks 22 | 23 | Contributors: 24 | https://pyfunceble.github.io/#/contributors 25 | 26 | Project link: 27 | https://github.com/funilrys/PyFunceble 28 | 29 | Project documentation: 30 | https://docs.pyfunceble.com 31 | 32 | Project homepage: 33 | https://pyfunceble.github.io/ 34 | 35 | License: 36 | :: 37 | 38 | 39 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 40 | 41 | Licensed under the Apache License, Version 2.0 (the "License"); 42 | you may not use this file except in compliance with the License. 43 | You may obtain a copy of the License at 44 | 45 | https://www.apache.org/licenses/LICENSE-2.0 46 | 47 | Unless required by applicable law or agreed to in writing, software 48 | distributed under the License is distributed on an "AS IS" BASIS, 49 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 50 | See the License for the specific language governing permissions and 51 | limitations under the License. 52 | """ 53 | -------------------------------------------------------------------------------- /docs/about/license.md: -------------------------------------------------------------------------------- 1 | # License 2 | 3 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /docs/contributing/code-of-conduct.md: -------------------------------------------------------------------------------- 1 | ../../CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /docs/develop/examples/domain-availability.md: -------------------------------------------------------------------------------- 1 | # Domain Availability 2 | 3 | ```python linenums="1" title="Availability of a domain using the API" 4 | from PyFunceble import DomainAvailabilityChecker 5 | 6 | checker = DomainAvailabilityChecker() 7 | to_test = "github.com" 8 | 9 | # You can do it this way. 10 | status = checker.set_subject(to_test).get_status() 11 | 12 | # Or this way. 13 | checker.set_subject(to_test) 14 | status = checker.get_status() 15 | 16 | # We can convert the status to json. 17 | status_json = status.to_json() 18 | 19 | # We can convert the status to dict. 20 | status_dict = status.to_dict() 21 | 22 | # We can ask "questions". 23 | print(f"Is {to_test} ACTIVE ?", "yes" if status.is_active() else "no") 24 | print(f"Is {to_test} INACTIVE ?", "yes" if status.is_inactive() else "no") 25 | print(f"Is {to_test} INVALID ?", "yes" if status.is_invalid() else "no") 26 | ``` -------------------------------------------------------------------------------- /docs/develop/examples/domain-ip-availability.md: -------------------------------------------------------------------------------- 1 | # Domain or IP Availability 2 | 3 | ```python linenums="1" title="Availability of a domain or IP using the API" 4 | from PyFunceble import DomainAndIPAvailabilityChecker 5 | 6 | checker = DomainAndIPAvailabilityChecker() 7 | to_test = ["github.com", "192.0.2.1"] 8 | 9 | 10 | for subject in to_test: 11 | # You can do it this way. 12 | status = checker.set_subject(subject).get_status() 13 | 14 | # Or this way. 15 | checker.set_subject(subject) 16 | status = checker.get_status() 17 | 18 | # We can convert the status to json. 19 | status_json = status.to_json() 20 | 21 | # We can convert the status to dict. 22 | status_dict = status.to_dict() 23 | 24 | # We can ask "questions". 25 | print(f"Is {subject} ACTIVE ?", "yes" if status.is_active() else "no") 26 | print(f"Is {subject} INACTIVE ?", "yes" if status.is_inactive() else "no") 27 | print(f"Is {subject} INVALID ?", "yes" if status.is_invalid() else "no") 28 | ``` -------------------------------------------------------------------------------- /docs/develop/examples/domain-syntax.md: -------------------------------------------------------------------------------- 1 | # Domain Syntax 2 | 3 | ```python linenums="1" title="Syntax of a domain using the API" 4 | from PyFunceble import DomainSyntaxChecker 5 | 6 | checker = DomainSyntaxChecker() 7 | to_test = "github.com" 8 | 9 | # You can do it this way. 10 | status = checker.set_subject(to_test).get_status() 11 | 12 | # Or this way. 13 | checker.set_subject(to_test) 14 | status = checker.get_status() 15 | 16 | # We can convert the status to json. 17 | status_json = status.to_json() 18 | 19 | # We can convert the status to dict. 20 | status_dict = status.to_dict() 21 | 22 | # We can ask "questions". 23 | print(f"Is {to_test} VALID ?", "yes" if status.is_valid() else "no") 24 | print(f"Is {to_test} INVALID ?", "yes" if status.is_invalid() else "no") 25 | ``` -------------------------------------------------------------------------------- /docs/develop/examples/ip-availability.md: -------------------------------------------------------------------------------- 1 | # IP Availability 2 | 3 | ```python linenums="1" title="Availability of an IP using the API" 4 | from PyFunceble import IPAvailabilityChecker 5 | 6 | checker = IPAvailabilityChecker() 7 | to_test = "192.0.2.1" 8 | 9 | # You can do it this way. 10 | status = checker.set_subject(to_test).get_status() 11 | 12 | # Or this way. 13 | checker.set_subject(to_test) 14 | status = checker.get_status() 15 | 16 | # We can convert the status to json. 17 | status_json = status.to_json() 18 | 19 | # We can convert the status to dict. 20 | status_dict = status.to_dict() 21 | 22 | # We can ask "questions". 23 | print(f"Is {to_test} ACTIVE ?", "yes" if status.is_active() else "no") 24 | print(f"Is {to_test} INACTIVE ?", "yes" if status.is_inactive() else "no") 25 | print(f"Is {to_test} INVALID ?", "yes" if status.is_invalid() else "no") 26 | ``` -------------------------------------------------------------------------------- /docs/develop/examples/ip-syntax.md: -------------------------------------------------------------------------------- 1 | # IP Syntax 2 | 3 | ```python linenums="1" title="Syntax of an IP using the API" 4 | from PyFunceble import IPSyntaxChecker 5 | 6 | checker = IPSyntaxChecker() 7 | to_test = "192.0.2.1" 8 | 9 | # You can do it this way. 10 | status = checker.set_subject(to_test).get_status() 11 | 12 | # Or this way. 13 | checker.set_subject(to_test) 14 | status = checker.get_status() 15 | 16 | # We can convert the status to json. 17 | status_json = status.to_json() 18 | 19 | # We can convert the status to dict. 20 | status_dict = status.to_dict() 21 | 22 | # We can ask "questions". 23 | print(f"Is {to_test} VALID ?", "yes" if status.is_valid() else "no") 24 | print(f"Is {to_test} INVALID ?", "yes" if status.is_invalid() else "no") 25 | ``` -------------------------------------------------------------------------------- /docs/develop/examples/url-availability.md: -------------------------------------------------------------------------------- 1 | # URL Availability 2 | 3 | ```python linenums="1" title="Availability of a URL using the API" 4 | from PyFunceble import URLAvailabilityChecker 5 | 6 | checker = URLAvailabilityChecker() 7 | to_test = "http://github.com/pyfunceble" 8 | 9 | # You can do it this way. 10 | status = checker.set_subject(to_test).get_status() 11 | 12 | # Or this way. 13 | checker.set_subject(to_test) 14 | status = checker.get_status() 15 | 16 | # We can convert the status to json. 17 | status_json = status.to_json() 18 | 19 | # We can convert the status to dict. 20 | status_dict = status.to_dict() 21 | 22 | # We can ask "questions". 23 | print(f"Is {to_test} ACTIVE ?", "yes" if status.is_active() else "no") 24 | print(f"Is {to_test} INACTIVE ?", "yes" if status.is_inactive() else "no") 25 | print(f"Is {to_test} INVALID ?", "yes" if status.is_invalid() else "no") 26 | ``` -------------------------------------------------------------------------------- /docs/develop/examples/url-syntax.md: -------------------------------------------------------------------------------- 1 | # URL Syntax 2 | 3 | ```python linenums="1" title="Syntax of a URL using the API" 4 | from PyFunceble import URLSyntaxChecker 5 | 6 | checker = URLSyntaxChecker() 7 | to_test = "https://github.com/pyfunceble" 8 | 9 | # You can do it this way. 10 | status = checker.set_subject(to_test).get_status() 11 | 12 | # Or this way. 13 | checker.set_subject(to_test) 14 | status = checker.get_status() 15 | 16 | # We can convert the status to json. 17 | status_json = status.to_json() 18 | 19 | # We can convert the status to dict. 20 | status_dict = status.to_dict() 21 | 22 | # We can ask "questions". 23 | print(f"Is {to_test} VALID ?", "yes" if status.is_valid() else "no") 24 | print(f"Is {to_test} INVALID ?", "yes" if status.is_invalid() else "no") 25 | ``` -------------------------------------------------------------------------------- /docs/gen_ref_pages.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | Generate the code reference pages. 4 | 5 | Everything under /develop/api-references is actually generated by this script. 6 | """ 7 | 8 | import os 9 | import shutil 10 | from pathlib import Path 11 | 12 | import mkdocs_gen_files 13 | 14 | CODE_PATHS = ["PyFunceble"] 15 | DOCPATH = "develop/api-references" 16 | EXCLUDE_MODULES = ["PyFunceble.data"] 17 | 18 | try: 19 | # Ensure that we cleanup the directory before we start generating the files. 20 | shutil.rmtree(DOCPATH) 21 | except FileNotFoundError: 22 | shutil.rmtree(os.path.join("docs", DOCPATH), ignore_errors=True) 23 | 24 | nav = mkdocs_gen_files.Nav() 25 | 26 | for code_path in CODE_PATHS: 27 | for path in sorted(Path(code_path).rglob("*.py")): 28 | module_path = path.with_suffix("") 29 | doc_path = path.relative_to(code_path).with_suffix(".md") 30 | full_doc_path = Path(DOCPATH, doc_path) 31 | 32 | parts = list(module_path.parts) 33 | 34 | if parts[-1] == "__init__": 35 | parts: list[str] = parts[:-1] 36 | doc_path = doc_path.with_name("index.md") 37 | full_doc_path = full_doc_path.with_name("index.md") 38 | elif parts[-1] == "__main__": 39 | continue 40 | 41 | identifier = ".".join(parts) 42 | 43 | if any(f"{x}." in identifier for x in EXCLUDE_MODULES): 44 | if os.path.exists(full_doc_path.absolute()): 45 | os.remove(full_doc_path.absolute()) 46 | 47 | continue 48 | 49 | nav[parts] = doc_path.as_posix() 50 | 51 | with mkdocs_gen_files.open(full_doc_path, "w") as file_stream: 52 | print("::: " + identifier, file=file_stream) 53 | 54 | mkdocs_gen_files.set_edit_path(full_doc_path, path) 55 | 56 | with mkdocs_gen_files.open(Path(DOCPATH, "SUMMARY.md"), "w") as nav_file_stream: 57 | nav_file_stream.writelines(nav.build_literate_nav()) 58 | -------------------------------------------------------------------------------- /docs/help.md: -------------------------------------------------------------------------------- 1 | # Discussions 2 | 3 | If you have an idea or want to discuss something with other, you are invited to create a new discussion or participate to an existing one [on GitHub](https://github.com/funilrys/PyFunceble/discussions)! 4 | 5 | # Issues 6 | 7 | You should report any issue by opening an issue [on Github](https://github.com/funilrys/PyFunceble/issues). 8 | 9 | If you consider your issue critical and need personal and private help, please reach [@funilrys through Matrix](https://matrix.to/#/@funilrys:matrix.org) or send an email to him. 10 | 11 | -------------------------------------------------------------------------------- /docs/readthedocs_requirements.txt: -------------------------------------------------------------------------------- 1 | -r ../requirements.txt 2 | -r ../requirements.docs.txt 3 | -------------------------------------------------------------------------------- /docs/support.md: -------------------------------------------------------------------------------- 1 | # Supporting PyFunceble 2 | 3 | [PyFunceble](https://github.com/funilrys/PyFunceble), 4 | [Dead-Hosts](https://github.com/dead-hosts), [adblock-decoder](https://github.com/pyunceble/adblock-decoder) 5 | and all other analog projects are powered by free time and a lot of coffee! 6 | 7 | This project helps you and you have to possibility to help back financially? 8 | Sponsor [@funilrys](https://github.com/funilrys) through the GitHub Sponsor 9 | program by clicking the image below! 10 | 11 | [![image](https://github.blog/de/wp-content/uploads/sites/3/2019/05/mona-heart-featured.png?w=200)](https://github.com/sponsors/funilrys) -------------------------------------------------------------------------------- /docs/use/configuration/index.md: -------------------------------------------------------------------------------- 1 | # Configuration 2 | 3 | PyFunceble provides a set of functionalities that you can influence through configuration. 4 | There are multiple way to configure PyFunceble so let's get started :smile: 5 | 6 | PyFunceble primarily load it's configuration from a file called `.PyFunceble.yaml`. 7 | That's the file PyFunceble generate with its default settings. However, you can 8 | overwrite any of the configuration value through a `.PyFunceble.overwrite.yaml` file 9 | or the corresponding CLI parameter. 10 | 11 | ## TLTR; Location 12 | 13 | Here a table that show the configuration file location - at best efforts. 14 | If your installation is not writing at any of the location listed below, 15 | please refer to the [location documentation](location.md) page. 16 | 17 | If you want to skip and define your own configuration folder, you can define 18 | the storage location of the configuration files through 19 | the `PYFUNCEBLE_CONFIG_DIR` environment variable. 20 | 21 | | OS / Engine | Location | 22 | | -------------- | ---------------------- | 23 | | Linux | `~/.config/PyFunceble` | 24 | | MacOS | `~/.config/PyFunceble` | 25 | | Windows | `%APPDATA%\PyFunceble` | 26 | | GitHub Actions | Workspace | 27 | | GitLab CI/CD | Workspace | 28 | | Travis CI | Workspace | 29 | | Jenkins CI | Workspace | 30 | 31 | At any time, you can provide your own configuration file through the `--config-file` CLI argument. If the given argument is a URL, PyFunceble will download it and use it as the configuration file. 32 | 33 | ## Filename-s 34 | 35 | At you configuration folder, PyFunceble will automatically create 2 files for you. 36 | 37 | 1. `.PyFunceble.yaml`, this file is the default configuration file for your current version. Overtime, it will be overwritten and updated as features comes and goes from a version to another. This file is provided to ensure PyFunceble run at all time with a fully compatible configuration file. 38 | 2. `.PyFunceble.overwrite.yaml`, this is generated empty. One generated, PyFunceble will never write into it. That's the file where you put your own configuration choices overwrites. 39 | -------------------------------------------------------------------------------- /docs/use/configuration/parameters/SUMMARY.md: -------------------------------------------------------------------------------- 1 | - [](index.md) 2 | - [`cli_decoding`](cli-decoding.md) 3 | - [`cli_testing`](cli-testing.md) 4 | - [`debug`](debug.md) 5 | - [`dns`](dns.md) 6 | - [`http_codes`](http-codes.md) 7 | - [`links`](links.md) 8 | - [`lookup`](lookup.md) 9 | - [`max_http_retries`](max-http-retries.md) 10 | - [`platform`](platform.md) 11 | - [`proxy`](proxy.md) 12 | - [`share_logs`](share-logs.md) 13 | - [`special_rules`](special-rules.md) 14 | - [`user_agent`](user-agent.md) 15 | - [`verify_ssl_certificates`](verify-ssl-certificates.md) -------------------------------------------------------------------------------- /docs/use/configuration/parameters/debug.md: -------------------------------------------------------------------------------- 1 | # `debug` 2 | 3 | PyFunceble provides a debug mode which outputs everything that is being done. 4 | While this is helpful for troubleshooting, this is not adviced for everyone. 5 | 6 | ## Overview 7 | 8 | ```yaml title=".PyFunceble.overwrite.yaml" 9 | debug: 10 | # Provides everything related to the debug mode. 11 | 12 | # Enable/Disable the debug mode. 13 | # 14 | # NOTE: 15 | # When enabled, the output will be found inside the logs output directory. 16 | # If you prefer to have the output to STDOUT, you should declare the 17 | # following environment variable. 18 | # 19 | # PYFUNCEBLE_DEBUG_ON_SCREEN=yes 20 | 21 | # Environment Variable: PYFUNCEBLE_DEBUG 22 | # CLI Switch: `--debug` 23 | active: no 24 | 25 | # Set the logging level. 26 | # 27 | # Available: info, error, debug, critical 28 | # 29 | # Environment Variables: PYFUNCEBLE_DEBUG_LVL | PYFUNCEBLE_LOGGING_LVL 30 | # CLI Switch: --logging-level 31 | level: info 32 | ``` 33 | 34 | ## `active` 35 | 36 | Enable or disable the debug mode. 37 | 38 | **Type:** boolean 39 | 40 | **Default Value:** `no` 41 | 42 | **Available Values:** `yes`, `no` 43 | 44 | **CLI Argument:** `--debug` 45 | 46 | **Environment Variable:** `PYFUNCEBLE_DEBUG=yes` 47 | 48 | ## `level` 49 | 50 | Set the minimal logging level. 51 | 52 | **Type:** string 53 | 54 | **Default Value:** `info` 55 | 56 | **Available Values:** `info`, `error`, `debug`, `critical` 57 | 58 | **CLI Argument:** `--logging-level` 59 | 60 | **Environment Variable:** `PYFUNCEBLE_DEBUG_LVL=info` | `PYFUNCEBLE_LOGGING_LVL` -------------------------------------------------------------------------------- /docs/use/configuration/parameters/dns.md: -------------------------------------------------------------------------------- 1 | # `dns` 2 | 3 | PyFunceble has its own DNS resolver which is extensively used to lookup statuses. 4 | In this section, you will find all available parameters. 5 | 6 | ## Overview 7 | 8 | ```yaml title=".PyFunceble.overwrite.yaml" 9 | dns: 10 | # Provides everything related to the DNS resolver & lookup. 11 | 12 | # Enable/Disable the follow-up of the order of DNS server. 13 | # 14 | # NOTE: 15 | # When disabled, the order of the DNS servers is randomized. 16 | # 17 | # CLI Argument: --follow-server-order 18 | follow_server_order: yes 19 | 20 | # Enable/Disable the trust mode. 21 | # 22 | # When this parameter is enabled, we will trust the result of the first DNS 23 | # server and only switch to the next server in the list ONLY when it is 24 | # unreachable. 25 | # 26 | # However, when this parameter is disabled, we will ask the other server when 27 | # the previous DNS give us a negative response - until a positive on is given. 28 | # 29 | # CLI Argument: --trust-dns-server 30 | trust_server: no 31 | 32 | # Set the list of DNS server to communicate with. 33 | # 34 | # WARNING: 35 | # IPv6 should be given in this format if a port is explicitly given: 36 | # 37 | # [ip]:port 38 | # 39 | # If you omit the braket, the port will be set to the default one (53). 40 | # 41 | # Example: 42 | # - first.dns 43 | # - second.dns 44 | # 45 | # CLI Argument: --dns 46 | server: null 47 | 48 | # Set the protocol to use. 49 | # 50 | # Available Values: UDP | TCP | HTTPS | TLS 51 | # 52 | # CLI Argument: --dns-protocol 53 | protocol: UDP 54 | 55 | # Set the delay (in second) to apply between each queries. 56 | # 57 | # WARNING: 58 | # This should be a value >= 0.0. 59 | # 60 | # CLI Argument: --dns-delay 61 | delay: 0.0 62 | ``` 63 | -------------------------------------------------------------------------------- /docs/use/configuration/parameters/http-codes.md: -------------------------------------------------------------------------------- 1 | # `http_codes` 2 | 3 | PyFunceble can interpret the status codes of a query into a "Human" readable 4 | status. This is how you can configure PyFunceble for your own logic. 5 | 6 | ## Overview 7 | 8 | ```yaml title=".PyFunceble.overwrite.yaml" 9 | http_codes: 10 | # Provides everything related to the HTTP code lookup interpolation. 11 | 12 | # Stops PyFunceble self management of the list. 13 | # 14 | # NOTE: 15 | # This parameter is deprecated. 16 | self_managed: no 17 | 18 | list: 19 | # Dictionary with the status codes and their interpolation. 20 | 21 | up: 22 | # A list of status codes to consider as ACTIVE. 23 | - 100 24 | - 101 25 | - 102 26 | - 200 27 | - 201 28 | - 202 29 | - 203 30 | - 204 31 | - 205 32 | - 206 33 | - 207 34 | - 208 35 | - 226 36 | - 429 37 | potentially_down: 38 | # A list of status codes to consider as potentially INACTIVE. 39 | - 400 40 | - 402 41 | - 404 42 | - 409 43 | - 410 44 | - 412 45 | - 414 46 | - 415 47 | - 416 48 | - 451 49 | potentially_up: 50 | # A list of status codes to consider as potentially ACTIVE. 51 | - 000 52 | - 300 53 | - 301 54 | - 302 55 | - 303 56 | - 304 57 | - 305 58 | - 307 59 | - 308 60 | - 403 61 | - 405 62 | - 406 63 | - 407 64 | - 408 65 | - 411 66 | - 413 67 | - 417 68 | - 418 69 | - 421 70 | - 422 71 | - 423 72 | - 424 73 | - 426 74 | - 428 75 | - 431 76 | - 500 77 | - 501 78 | - 502 79 | - 503 80 | - 504 81 | - 505 82 | - 506 83 | - 507 84 | - 508 85 | - 510 86 | - 511 87 | ``` 88 | -------------------------------------------------------------------------------- /docs/use/configuration/parameters/index.md: -------------------------------------------------------------------------------- 1 | # Parameters 2 | 3 | As you now know, PyFunceble can be configured through the CLI, or its configuration 4 | file. 5 | 6 | ## CLI Arguments: Behavior while switching boolean parameters 7 | 8 | When switching boolean parameters through the CLI arguments, you have to keep 9 | in mind that the CLI will act like a light switch. 10 | Meaning that if you define `yes` in any boolean parameter and you use 11 | the CLI argument to quickly switch its value, PyFunceble will be started with 12 | the parameter set to `no`. 13 | 14 | The same thing happens the other way around. if you define `no` in any boolean 15 | parameter and you use the CLI argument to quickly switch its value, PyFunceble 16 | will be started with the paramet set to `yes`. 17 | 18 | Let say we set the `verify_ssl_certificates` parameter to `yes`:` 19 | 20 | ```yaml title=".PyFunceble.overwrite.yaml" 21 | verify-ssl-certificates: yes 22 | ``` 23 | 24 | If we now use the `--verify-ssl-certificate` parameter through the CLI 25 | 26 | ```shell 27 | pyfunceble --verify-ssl-certificate -d example.org 28 | ``` 29 | 30 | PyFunceble will starts with the `verify_ssl_certificates` set to `no` - and 31 | vice-versa. 32 | 33 | -------------------------------------------------------------------------------- /docs/use/configuration/parameters/links.md: -------------------------------------------------------------------------------- 1 | # `links` 2 | 3 | While PyFunceble has some hard coded URLs, some URL may be changed. The parameters listed below let you control some of the URLs. 4 | 5 | !!! danger "Beware!!!!" 6 | 7 | The parameters listed below are not implemented yet. This section is a 8 | placeholder for future usage. 9 | 10 | ## Overview 11 | 12 | ```yaml title=".PyFunceble.overwrite.yaml" 13 | # Not Implemented yet. Reserved for future usage and implementation. 14 | links: {} 15 | ``` 16 | 17 | -------------------------------------------------------------------------------- /docs/use/configuration/parameters/max-http-retries.md: -------------------------------------------------------------------------------- 1 | # `max_http_retries` 2 | 3 | To retry or not to retry, that is the question! 4 | 5 | ## Overview 6 | 7 | ```yaml title=".PyFunceble.overwrite.yaml" 8 | # Set the maximum number of retries to perform before giving up a request. 9 | # 10 | # WARNING: 11 | # This should be an integer >= 0. 12 | # 13 | # CLI Argument: --max-http-retries 14 | max_http_retries: 3 15 | ``` 16 | 17 | **Type:** integer 18 | 19 | **Default Value:** `3` 20 | 21 | **Available Values:** Any value greater than `0`. 22 | 23 | **CLI Argument:** `--max-http-retries` 24 | -------------------------------------------------------------------------------- /docs/use/configuration/parameters/share-logs.md: -------------------------------------------------------------------------------- 1 | # `share_logs` 2 | 3 | Let's share errors! 4 | 5 | !!! danger "Beware!!!!" 6 | 7 | This parameter is not implemented yet. This section is a 8 | placeholder for future usage. 9 | 10 | ## Overview 11 | 12 | ```yaml title=".PyFunceble.overwrite.yaml" 13 | # Not Implemented yet. Reserved for future usage and implementation. 14 | share_logs: no 15 | ``` -------------------------------------------------------------------------------- /docs/use/configuration/parameters/user-agent.md: -------------------------------------------------------------------------------- 1 | # `user_agent` 2 | 3 | PyFunceble can choose a random user-agent to send when making HTTP requests. This 4 | is how to parametrize. 5 | 6 | ## Overview 7 | 8 | ```yaml title=".PyFunceble.overwrite.yaml" 9 | user_agent: 10 | # Provides everything related to choice of user agent. 11 | 12 | # Set the browser to pickup. 13 | # 14 | # WARNING: 15 | # This parameter will be deprecated (soon?). 16 | # 17 | # Available Values: chrome, edge, firefox, ie, opera, safari 18 | browser: chrome 19 | 20 | # Set the platform to pickup. 21 | # 22 | # Available Values: linux, macosx, win10 23 | platform: linux 24 | 25 | # Set the User-Agent to use. 26 | # 27 | # WARNING: 28 | # If you choose to set this argument, the browser or platform arguments 29 | # won't be taken into consideration. 30 | # 31 | # CLI Argument: -ua | --user-agent 32 | custom: null 33 | 34 | # Set the reference to add to the User-Agent. 35 | # This is useful when you want to add a reference (e.g. a link) to the User-Agent. 36 | # 37 | # The reference will be added at the end of the User-Agent in the following format: 38 | # {user_agent}; +{reference} 39 | # 40 | # When set to `null`, no reference will be added. 41 | # 42 | # CLI Argument: --user-agent-reference 43 | reference: null 44 | ``` 45 | 46 | ## `browser` 47 | 48 | Set the browser to pickup. 49 | 50 | **Type:** string 51 | 52 | **Default Value:** `chrome` 53 | 54 | **Available Values:** `chrome`, `edge`, `firefox`, `ie`, `opera`, `safari` 55 | 56 | **CLI Argument:** None 57 | 58 | ## `platform` 59 | 60 | Set the platform to pickup. 61 | 62 | **Type:** string 63 | 64 | **Default Value:** `chrome` 65 | 66 | **Available Values:** `linux`, `macosx`, `win10` 67 | 68 | **CLI Argument:** None 69 | 70 | ## `custom` 71 | 72 | Set the User-Agent to use. 73 | 74 | 75 | **Type:** string 76 | 77 | **Default Value:** `null` 78 | 79 | **Available Values:** User-Defined values 80 | 81 | **CLI Argument:** `-ua`, `--user-agent` -------------------------------------------------------------------------------- /docs/use/configuration/parameters/verify-ssl-certificates.md: -------------------------------------------------------------------------------- 1 | # `verify_ssl_certificate` 2 | 3 | To verify or not to verify, that is the question! 4 | 5 | ## Overview 6 | 7 | ```yaml title=".PyFunceble.overwrite.yaml" 8 | # Enable/Disable the verification of the certificate when making HTTPS requests. 9 | verify_ssl_certificate: no 10 | ``` 11 | 12 | **Type:** boolean 13 | 14 | **Default Value:** `no` 15 | 16 | **Available Values:** `yes`, `no` 17 | 18 | **CLI Argument:** `-vsc`, `--verify-ssl-certificate` -------------------------------------------------------------------------------- /docs/use/index.md: -------------------------------------------------------------------------------- 1 | # User Guides 2 | 3 | Welcome to the User Guides section! This is where you'll find detailed instructions and examples on how to effectively use PyFunceble. Whether you're a beginner or an experienced user, these guides will help you navigate through the features and functionalities of PyFunceble. 4 | 5 | In this section, you'll find step-by-step tutorials, best practices, and troubleshooting tips to ensure a smooth and productive experience. We'll try to cover everything from installation and setup to advanced usage scenarios. 6 | 7 | So, let's dive in and explore PyFunceble together! 8 | 9 | If you have any questions or need further assistance, don't hesitate to reach us. Happy exploring! -------------------------------------------------------------------------------- /examples/api_usage/advanced.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is an advanced example which get more information about the tested element. 3 | """ 4 | 5 | from PyFunceble import DomainAndIPAvailabilityChecker, URLAvailabilityChecker 6 | 7 | SUBJECTS = ["google.com", "github.com", "example.org", "9.9.9.10", "149.112.112.10"] 8 | 9 | 10 | if __name__ == "__main__": 11 | domain_ip_avail_checker = DomainAndIPAvailabilityChecker(use_whois_lookup=False) 12 | url_avail_checker = URLAvailabilityChecker() 13 | 14 | for subject in SUBJECTS: 15 | domain_ip_avail_checker.subject = subject 16 | url_avail_checker.subject = f"https://{subject}" 17 | 18 | domain_ip_status = domain_ip_avail_checker.get_status() 19 | url_status = url_avail_checker.get_status() 20 | 21 | print( 22 | f"============== COMPLETE DATA: {domain_ip_avail_checker.subject} " 23 | "==============" 24 | ) 25 | print(domain_ip_status.to_json(), "\n\n") 26 | 27 | print( 28 | f"============== COMPLETE DATA: {url_avail_checker.subject} ==============" 29 | ) 30 | print(url_status.to_json(), "\n\n") 31 | -------------------------------------------------------------------------------- /examples/api_usage/basic.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is a basic example which prints one of the availability of 3 | the given domain and URL. 4 | 5 | .. note: 6 | Official output: ACTIVE, INACTIVE, INVALID 7 | """ 8 | 9 | from PyFunceble import DomainAndIPAvailabilityChecker, URLAvailabilityChecker 10 | 11 | if __name__ == "__main__": 12 | print("Start of basic example.") 13 | DOMAIN = "github.com" 14 | URL = f"https://{DOMAIN}" 15 | 16 | print(DOMAIN, DomainAndIPAvailabilityChecker(DOMAIN).get_status().status) 17 | print(URL, URLAvailabilityChecker(URL).get_status().status) 18 | print("End of basic example ") 19 | -------------------------------------------------------------------------------- /examples/api_usage/basic_syntax.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is a basic example which checks syntax. 3 | """ 4 | 5 | from PyFunceble import ( 6 | DomainSyntaxChecker, 7 | IPv4SyntaxChecker, 8 | SubDomainSyntaxChecker, 9 | URLSyntaxChecker, 10 | ) 11 | 12 | if __name__ == "__main__": 13 | print(f"Starting syntax check using {DomainSyntaxChecker}") 14 | checker = DomainSyntaxChecker() 15 | 16 | for domain in ["google.com", "forest-jump"]: 17 | print(f"{domain} VALID ? {checker.set_subject(domain).is_valid()}") 18 | print(f"Finished syntax check using {DomainSyntaxChecker}\n") 19 | 20 | print(f"Starting syntax check using {URLSyntaxChecker}") 21 | checker = URLSyntaxChecker() 22 | 23 | for domain in ["https://google.com", "https://forest-jump"]: 24 | print(f"{domain} VALID ? {checker.set_subject(domain).is_valid()}") 25 | print(f"Finished syntax check using {URLSyntaxChecker}\n") 26 | 27 | print(f"Starting syntax check using {IPv4SyntaxChecker}") 28 | checker = IPv4SyntaxChecker() 29 | 30 | for domain in ["216.58.207.46", "257.58.207.46"]: 31 | print(f"{domain} VALID ? {checker.set_subject(domain).is_valid()}") 32 | print(f"Finished syntax check using {IPv4SyntaxChecker}\n") 33 | 34 | print(f"Starting syntax check (range) using {IPv4SyntaxChecker}") 35 | checker = IPv4SyntaxChecker() 36 | 37 | for domain in ["192.168.0.0/24", "192.168.0.0"]: 38 | print(f"{domain} VALID range ? {checker.set_subject(domain).is_valid_range()}") 39 | print(f"Finished syntax check (range) using {IPv4SyntaxChecker}\n") 40 | 41 | print(f"Starting syntax check using {SubDomainSyntaxChecker}") 42 | checker = SubDomainSyntaxChecker() 43 | 44 | for domain in ["hello.google.com", "google.com"]: 45 | print(f"{domain} VALID ? {checker.set_subject(domain).is_valid()}") 46 | print(f"Finished syntax check using {SubDomainSyntaxChecker}\n") 47 | -------------------------------------------------------------------------------- /examples/api_usage/custom_configuration.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is an example about how we can update the configuration while developping on top 3 | of PyFunceble. 4 | """ 5 | 6 | import PyFunceble.facility 7 | from PyFunceble import DomainAvailabilityChecker 8 | 9 | # We preset the indexes (from .PyFunceble.yaml) that we want to update. 10 | CUSTOM_CONFIGURATION_INDEX_VALUE_TO_SET = { 11 | "lookup": {"whois": False, "dns": False}, 12 | "cli_testing": {"db_type": "csv"}, 13 | } 14 | 15 | if __name__ == "__main__": 16 | # We parse our custom indexes to PyFunceble before starting to use it. 17 | PyFunceble.facility.ConfigLoader.start() 18 | PyFunceble.facility.ConfigLoader.custom_config = ( 19 | CUSTOM_CONFIGURATION_INDEX_VALUE_TO_SET 20 | ) 21 | 22 | # From now, each call of test so in this example PyFuncebleTest, 23 | # will not try to get/request the WHOIS record. 24 | 25 | DOMAINS = ["google.com", "github.com"] 26 | 27 | print("Start with global custom configuration.") 28 | for DOMAIN in DOMAINS: 29 | # This should return None. 30 | print(DOMAIN, DomainAvailabilityChecker(DOMAIN).get_status().whois_record) 31 | print("End with global custom configuration.\n") 32 | 33 | print("Start with local setting.") 34 | for DOMAIN in DOMAINS: 35 | print(f"Start of WHOIS record of {DOMAIN} \n") 36 | 37 | # This part should return the WHOIS record. 38 | 39 | # This will - at each call we manually overwrite the configurated value. 40 | print( 41 | DOMAIN, 42 | DomainAvailabilityChecker(DOMAIN, use_whois_lookup=True) 43 | .get_status() 44 | .whois_record, 45 | ) 46 | 47 | print(f"End of WHOIS record of {DOMAIN} \n") 48 | print("End with local setting.") 49 | -------------------------------------------------------------------------------- /examples/api_usage/loop.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is a loop example which tests a list of domain and processes some action 3 | according to one of the official output of PyFunceble. 4 | 5 | Note: 6 | * Official output: ACTIVE, INACTIVE, INVALID 7 | * You should always use PyFunceble().test() as it's the method which is especially 8 | suited for `__name__ != '__main__'` usage. 9 | """ 10 | 11 | 12 | from PyFunceble import DomainAndIPAvailabilityChecker, URLAvailabilityChecker 13 | 14 | DOMAINS = ["twitter.com", "google.com", "github.com", "github.comcomcom", "funilrys.co"] 15 | 16 | 17 | def domain_status(domain_or_ip): 18 | """ 19 | Check the status of the given domain name or IP. 20 | 21 | Argument: 22 | - domain_or_ip: str 23 | The domain or IPv4 to test. 24 | 25 | Returns: str 26 | The status of the domain. 27 | """ 28 | 29 | return DomainAndIPAvailabilityChecker(domain_or_ip).get_status().status 30 | 31 | 32 | def url_status(url): 33 | """ 34 | Check the status of the given url. 35 | 36 | Argument: 37 | - url: str 38 | The URL to test. 39 | 40 | Returns: str 41 | The status of the URL. 42 | """ 43 | 44 | return URLAvailabilityChecker(url).get_status().status 45 | 46 | 47 | if __name__ == "__main__": 48 | print("Start of loop example.") 49 | for domain in DOMAINS: 50 | print( 51 | f"{domain} is {domain_status(domain)} and " 52 | f"http://{domain} is {url_status(f'http://{domain}')} " 53 | ) 54 | print("End of loop example.") 55 | -------------------------------------------------------------------------------- /examples/api_usage/reputation.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is an example which checks that the test with the reputation data is correct. 3 | """ 4 | 5 | import colorama 6 | 7 | from PyFunceble import DomainAndIPReputationChecker 8 | from PyFunceble.dataset.ipv4_reputation import IPV4ReputationDataset 9 | 10 | reputation_checker = DomainAndIPReputationChecker() 11 | reputation_dataset = IPV4ReputationDataset().get_content() 12 | 13 | LIMIT = 10 14 | MALICIOUS_SUBJECTS = [ 15 | next(reputation_dataset).split("#", 1)[0] for _ in range(LIMIT + 1) 16 | ] 17 | 18 | SANE_SUBJECTS = ["twitter.com", "google.com", "github.com"] 19 | 20 | if __name__ == "__main__": 21 | colorama.init(autoreset=True) 22 | 23 | for subject in MALICIOUS_SUBJECTS: 24 | reputation_checker.subject = subject 25 | status = reputation_checker.get_status() 26 | 27 | if not status.is_malicious(): 28 | raise RuntimeError(f"Something is wrong with {subject}.") 29 | print(f"{subject} is {status.status}") 30 | 31 | for subject in SANE_SUBJECTS: 32 | reputation_checker.subject = subject 33 | status = reputation_checker.get_status() 34 | 35 | if not status.is_sane(): 36 | 37 | raise RuntimeError( 38 | f"Something is wrong with {subject}. Dataset:\n{status.to_json()}" 39 | ) 40 | print(f"{subject} is {status.status}") 41 | -------------------------------------------------------------------------------- /examples/demo/config.sh.in: -------------------------------------------------------------------------------- 1 | # Common config for demo scripts 2 | configure() { 3 | DELAY=0.07 4 | DELAY_SEP=0.22 5 | DELAY_PROMPT=0.6 6 | 7 | # No messages/warnings in the current versions of the scripts 8 | # but if we add them, their colors can be changed here 9 | # COLOR_WARNING='1;91' 10 | # COLOR_MESSAGE='1;32' 11 | 12 | # If you want to use the colorful prompt 13 | TUTERM_NAME='PyFunceble-demo' 14 | # Set the terminal width/height 15 | } 16 | 17 | prompt() { 18 | # For a more colorful prompt, uncomment the following: 19 | # echo -ne "\033[1;94m$TUTERM_NAME \033[1;35m$(pwd | sed "s:$HOME:~:")\033[0;33m $\033[0m " 20 | echo -ne '\e[34m(tuterm)\e[m \e[33mpyfunceble\e[m @ \e[36mfunilrys\e[m \e[32m~\e[m $ ' 21 | } 22 | -------------------------------------------------------------------------------- /examples/demo/landing_page_demo_1.tut: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tuterm 2 | 3 | # pyfunceble-io-title: PyFunceble gives you the availability of a domain! 4 | # asciinema-title: PyFunceble domains availability 5 | # asciinema-cols: 200 6 | # asciinema-rows: 20 7 | 8 | source config.sh.in 9 | 10 | run() { 11 | c pyfunceble --version 12 | c pyfunceble -a -d example.org 13 | c pyfunceble -a -d example.org --whois-lookup 14 | c pyfunceble -a -d exampleeeeeeeeeeeeeeeeeeeee.com 15 | c pyfunceble -a -d microsoft_google.com 16 | c exit 17 | } 18 | 19 | # vim: filetype=sh 20 | -------------------------------------------------------------------------------- /examples/demo/landing_page_demo_2.tut: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tuterm 2 | 3 | # pyfunceble-io-title: PyFunceble gives you the availability of an IP! 4 | # asciinema-title: PyFunceble IP availability 5 | # asciinema-cols: 200 6 | # asciinema-rows: 20 7 | 8 | source config.sh.in 9 | 10 | run() { 11 | c pyfunceble --version 12 | c pyfunceble -d 9.9.9.10 # quad9 Neutral stable (unfiltered) 13 | c pyfunceble -d 2620:fe::fe # quad9 IPv6 (As I recall GHA now supports IPv6) 14 | c pyfunceble -d 194.187.99.221 # Adult CDN: https://mypdns.org/my-privacy-dns/porn-records/-/issues?scope=all&state=all&label_name[]=IP%3A%3ABlackListing 15 | c pyfunceble -d 45.136.204.40 # 23 phis: https://github.com/mitchellkrogza/phishing/pull/67 16 | c pyfunceble -u http://18.191.88.103/login.html # As we can do urls too, this is a inactive Phis 17 | c exit 18 | } 19 | 20 | # vim: filetype=sh 21 | -------------------------------------------------------------------------------- /examples/demo/landing_page_demo_3.tut: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tuterm 2 | 3 | # pyfunceble-io-title: PyFunceble gives you the availability of a URL! 4 | # asciinema-title: PyFunceble URL availability 5 | # asciinema-cols: 200 6 | # asciinema-rows: 20 7 | 8 | workDir="$(dirname $(realpath ${0}))" 9 | 10 | source "${workDir}/config.sh.in" 11 | 12 | run() { 13 | c pyfunceble --version 14 | c pyfunceble -u https://github.com/funilrys 15 | c pyfunceble -u https://github.com/microsoft_google 16 | c pyfunceble -u https://microsoft_google.com 17 | c pyfunceble -u https://microsoft_google.com --local 18 | c exit 19 | } 20 | 21 | # vim: filetype=sh 22 | -------------------------------------------------------------------------------- /examples/demo/record.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | hash awk 6 | hash pyfunceble 7 | 8 | tmpDir="/tmp/pyfunceble-demos" 9 | 10 | if [[ ! -d ${tmpDir} ]] 11 | then 12 | mkdir -p "${tmpDir}" 13 | fi 14 | 15 | echo "Pre-warming for better recording performance" 16 | pyfunceble --version >/dev/null 17 | 18 | for file in "${@}"; do 19 | castFile="${tmpDir}/$(basename "${file}").cast" 20 | castTitle="$(fgrep "asciinema-title" ${file} | awk -v FS=": " '{ print $2}')" 21 | castColumns="$(fgrep "asciinema-cols" ${file} | awk -v FS=": " '{ print $2}')" 22 | castRows="$(fgrep "asciinema-rows" ${file} | awk -v FS=": " '{ print $2}')" 23 | 24 | if [[ -z "${castTitle}" ]] 25 | then 26 | castTitle="PyFunceble" 27 | fi 28 | 29 | if [[ -z "${castColumns}" ]] 30 | then 31 | castColumns=200 32 | fi 33 | 34 | if [[ -z "${castRows}" ]] 35 | then 36 | castRows=20 37 | fi 38 | 39 | rm -f "${castFile}" 40 | 41 | stty cols "${castColumns}" rows "${castRows}" 42 | asciinema rec -t "${castTitle}" -c "tuterm ${file} --mode demo" "${castFile}" 43 | done 44 | #!/usr/bin/env bash 45 | 46 | set -e 47 | 48 | hash awk 49 | hash pyfunceble 50 | 51 | tmpDir="/tmp/pyfunceble-demos" 52 | 53 | if [[ ! -d ${tmpDir} ]] 54 | then 55 | mkdir -p "${tmpDir}" 56 | fi 57 | 58 | echo "Pre-warming for better recording performance" 59 | pyfunceble --version >/dev/null 60 | 61 | for file in "${@}"; do 62 | castFile="${tmpDir}/$(basename "${file}").cast" 63 | castTitle="$(fgrep "asciinema-title" ${file} | awk -v FS=": " '{ print $2}')" 64 | castColumns="$(fgrep "asciinema-cols" ${file} | awk -v FS=": " '{ print $2}')" 65 | castRows="$(fgrep "asciinema-rows" ${file} | awk -v FS=": " '{ print $2}')" 66 | 67 | if [[ -z "${castTitle}" ]] 68 | then 69 | castTitle="PyFunceble" 70 | fi 71 | 72 | if [[ -z "${castColumns}" ]] 73 | then 74 | castColumns=200 75 | fi 76 | 77 | if [[ -z "${castRows}" ]] 78 | then 79 | castRows=20 80 | fi 81 | 82 | rm -f "${castFile}" 83 | 84 | stty cols "${castColumns}" rows "${castRows}" 85 | asciinema rec -t "${castTitle}" -c "tuterm ${file} --mode demo" "${castFile}" 86 | done 87 | -------------------------------------------------------------------------------- /examples/demo/record_all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | workDir="$(dirname $(realpath ${0}))" 6 | 7 | for file in ${workDir}/*.tut 8 | do 9 | ${workDir}/record.sh "${file}" 10 | done 11 | -------------------------------------------------------------------------------- /examples/demo/replay.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | hash pyfunceble 6 | 7 | tmpDir="/tmp/pyfunceble-demos" 8 | 9 | for file in "${@}"; do 10 | castFile="${tmpDir}/$(basename "${file}").cast" 11 | 12 | if [[ -f "${castFile}" ]] 13 | then 14 | asciinema play "${castFile}" 15 | else 16 | echo "File not found: ${castFile}" 17 | fi 18 | done 19 | -------------------------------------------------------------------------------- /examples/demo/replay_all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | workDir="$(dirname $(realpath ${0}))" 6 | 7 | for file in ${workDir}/*.tut 8 | do 9 | ${workDir}/replay.sh ${file} 10 | done 11 | -------------------------------------------------------------------------------- /examples/demo/upload.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | hash asciinema 6 | hash grep 7 | hash sed 8 | 9 | tmpDir="/tmp/pyfunceble-demos" 10 | 11 | for file in "${@}"; do 12 | castFile="/${tmpDir}/$(basename "${file}").cast" 13 | 14 | asciinema upload ${castFile} | grep 'https:' | sed 's/^\s*//' 15 | done 16 | #!/usr/bin/env bash 17 | 18 | set -e 19 | 20 | hash asciinema 21 | hash grep 22 | hash sed 23 | 24 | tmpDir="/tmp/pyfunceble-demos" 25 | 26 | for file in "${@}"; do 27 | castFile="/${tmpDir}/$(basename "${file}").cast" 28 | 29 | asciinema upload ${castFile} | grep 'https:' | sed 's/^\s*//' 30 | done 31 | -------------------------------------------------------------------------------- /examples/demo/upload_all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | workDir="$(dirname $(realpath ${0}))" 6 | tmpDir="/tmp/pyfunceble-demos" 7 | jsonDest="${tmpDir}/asciinema_demo.json" 8 | 9 | jsonTemplate='{"title": "%%title%%","link": "%%link%%"}' 10 | templates=() 11 | finalJson="" 12 | 13 | for file in ${workDir}/*.tut 14 | do 15 | pyfuncebleIOTitle="$(fgrep "pyfunceble-io-title" ${file} | awk -v FS=": " '{ print $2}')" 16 | 17 | if [[ -z "${pyfuncebleIOTitle}" ]] 18 | then 19 | pyfuncebleIOTitle="PyFunceble-Demo" 20 | fi 21 | 22 | # uploadLink=$(${workDir}/upload.sh ${file}) 23 | uploadLink="https://github.com" 24 | 25 | if [[ "${uploadLink}" =~ ^https:.* ]] 26 | then 27 | localTemplate="${jsonTemplate}" 28 | localTemplate="${localTemplate//%%title%%/${pyfuncebleIOTitle}}" 29 | localTemplate="${localTemplate//%%link%%/${uploadLink}/iframe}" 30 | 31 | templates[${#templates[@]}]="${localTemplate}" 32 | fi 33 | done 34 | 35 | finalJson+="[" 36 | 37 | templatesLength="${#templates[@]}" 38 | 39 | for index in "${!templates[@]}" 40 | do 41 | if [[ ! -z ${templates[${index}]} ]] 42 | then 43 | finalJson+="${templates[${index}]}" 44 | 45 | if [[ "${index}" != "$((${templatesLength}-1))" ]] 46 | then 47 | finalJson+="," 48 | fi 49 | fi 50 | done 51 | 52 | finalJson+="]" 53 | 54 | echo "${finalJson}" >> "${jsonDest}" 55 | -------------------------------------------------------------------------------- /examples/lists/adblock: -------------------------------------------------------------------------------- 1 | !@@||funceble.world/js 2 | !funilrys.com##body 3 | !||world.hello/*ad.xml 4 | @@||cnn.com/*ad.xml 5 | bing.com,bingo.com#@##adBanner 6 | facebook.com###player-above-2 7 | hello#@#badads 8 | hubgit.com|oohay.com|ipa.elloh.dlorw#@#awesomeWorld 9 | yahoo.com,msn.com,api.hello.world#@#awesomeWorld 10 | ||api.google.com/papi/action$popup 11 | ||google.com$script,image 12 | ||twitter.com^ 13 | ~github.com,hello.world##.wrapper 14 | -------------------------------------------------------------------------------- /examples/lists/idna: -------------------------------------------------------------------------------- 1 | bittréẋ.com 2 | coinbȧse.com 3 | cryptopiạ.com 4 | cṙyptopia.com -------------------------------------------------------------------------------- /examples/lists/simple: -------------------------------------------------------------------------------- 1 | paris-.blogspot.com.ar 2 | ip6-allrouters 3 | film-porno-.ze.cx 4 | paris-.blogspot.com.br 5 | ip6-allnodes 6 | paris-.blogspot.gr 7 | google.com #jfeofjeio 8 | paris-.blogspot.no 9 | paris-.blogspot.co.id 10 | paris-.blogspot.mx 11 | alyssa-.ifrance.com 12 | xbasfbno.info 13 | javakiba.org* 14 | 247?realmedia.com 15 | piti.bplaced.net 16 | mangas-porno-.has.it 17 | m.pr0gramm.com 18 | localhost 19 | adtrackone.eu$document 20 | ip6-localnet 21 | local 22 | paris-.blogspot.ch 23 | paris-.blogspot.co.uk 24 | i-52b.-xxx.ut.bench.utorrent.com 25 | kdowqlpt.info 26 | static.hk.rs 27 | ip6-localhost 28 | free‐celebrity‐tube.com 29 | px.moatads.compx.moatads.com 30 | hurensohn.pr0gramm.com 31 | hans.pr0gramm.com 32 | metrika.ron.si 33 | public‐sluts.net 34 | xy.nullrefexcep.com 35 | px.moatads.com,z.moatads.com 36 | abc.pema.cl 37 | telemetry.appex.bing.net:443 38 | paris-.blogspot.com.tr 39 | ip6-mcastprefix 40 | goreanharbourreysa-.4ya.nl 41 | paris-.blogspot.com 42 | adblade.com,popup 43 | paris-.blogspot.ca 44 | paris-.blogspot.sk 45 | cryweb.github.io 46 | web.die-news.pw 47 | mailto:info@mypornbible.com 48 | allosexe-.myblox.fr 49 | gogog@hehehe.blogspot.de 50 | websitealive[0-9].com 51 | ip6-allhosts 52 | crywebber.github.io 53 | azvjudwr.info 54 | host.d-ns.ga 55 | paris-.blogspot.it 56 | jroqvbvw.info 57 | securepubads.g.doubleclick.net 58 | ip6-loopback 59 | localhost.localdomain 60 | st.kjli.fi 61 | 1-1-1-.ib.adnxs.com 62 | jyhfuqoh.info 63 | cdn.rove.cl 64 | sexchat-.startspin.nl 65 | paris-.blogspot.com.es 66 | paris-.blogspot.de 67 | broadcasthost 68 | cdnfile.xyz 69 | xmr.-eu1.nanopool.org 70 | durl=px.moatads.com 71 | moherland.pl, 72 | 0.0.0.0 73 | preview-.stripchat.com 74 | paris-.blogspot.pt 75 | -------------------------------------------------------------------------------- /output/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !__pyfunceble_origin__ -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !Analytic/ 4 | !domains/ 5 | !ips/ 6 | !hosts/ 7 | !logs/ 8 | !splitted/ -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/Analytic/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !/ACTIVE/ 4 | !/POTENTIALLY_ACTIVE/ 5 | !/POTENTIALLY_INACTIVE/ 6 | !/SUSPICIOUS/ 7 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/Analytic/ACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/Analytic/POTENTIALLY_ACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/Analytic/POTENTIALLY_INACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/Analytic/SUSPICIOUS/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/domains/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !/ACTIVE/ 4 | !/INACTIVE/ 5 | !/INVALID/ 6 | !/MALICIOUS/ 7 | !/SANE/ 8 | !/VALID/ 9 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/domains/ACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/domains/INACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/domains/INVALID/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/domains/MALICIOUS/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/domains/SANE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/domains/VALID/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/hosts/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !/ACTIVE/ 4 | !/INACTIVE/ 5 | !/INVALID/ 6 | !/MALICIOUS/ 7 | !/SANE/ 8 | !/VALID/ 9 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/hosts/ACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/hosts/INACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/hosts/INVALID/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/hosts/MALICIOUS/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/hosts/SANE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/hosts/VALID/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/ips/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !/ACTIVE/ 4 | !/INACTIVE/ 5 | !/INVALID/ 6 | !/MALICIOUS/ 7 | !/SANE/ 8 | !/VALID/ 9 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/ips/ACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/ips/INACTIVE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/ips/INVALID/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/ips/MALICIOUS/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/ips/SANE/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/ips/VALID/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !/date_format/ 4 | !/no_referrer/ 5 | !/percentage/ 6 | !/whois/ 7 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/logs/percentage/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /output/__pyfunceble_origin__/splitted/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /requirements.dev.txt: -------------------------------------------------------------------------------- 1 | black 2 | flake8 3 | isort 4 | pylint -------------------------------------------------------------------------------- /requirements.docs.txt: -------------------------------------------------------------------------------- 1 | # Mkdocs 2 | mkdocs~=1.5 3 | mkdocstrings[python]~=0.26 4 | mkdocs-material~=9.5 5 | mkdocs-git-revision-date-localized-plugin~=1.2 6 | mkdocs-gen-files~=0.5 7 | mkdocs-literate-nav~=0.6 8 | mkdocs-section-index~=0.3 9 | mkdocs-git-authors-plugin~=0.9 10 | mkdocs-macros-plugin~=1.2 11 | pymdown-extensions~=10.9 12 | zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability -------------------------------------------------------------------------------- /requirements.test.txt: -------------------------------------------------------------------------------- 1 | tox 2 | coverage 3 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | alembic 2 | colorama 3 | dnspython[DOH]~=2.6.0 4 | domain2idna~=1.12.0 5 | inflection 6 | packaging 7 | PyMySQL 8 | python-box[all]~=6.0.0 9 | python-dotenv 10 | PyYAML 11 | requests[socks]<3 12 | setuptools>=65.5.1 13 | shtab 14 | SQLAlchemy~=2.0 15 | pyfunceble-process-manager==1.0.10 -------------------------------------------------------------------------------- /requirements.win.txt: -------------------------------------------------------------------------------- 1 | alembic 2 | colorama 3 | dnspython[DOH]~=2.6.0 4 | domain2idna~=1.12.0 5 | inflection 6 | packaging 7 | PyMySQL 8 | python-box[all]~=6.0.0 9 | python-dotenv 10 | PyYAML 11 | requests<3 12 | setuptools>=65.5.1 13 | shtab 14 | SQLAlchemy~=2.0 15 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [isort] 2 | profile = black 3 | 4 | [flake8] 5 | max-line-length = 88 6 | extend-ignore = E203 7 | 8 | [pylint] 9 | max-line-length = 88 10 | 11 | [pylint.'MESSAGES CONTROL'] 12 | disable = 13 | abstract-method, 14 | consider-using-f-string, 15 | consider-using-with, 16 | too-few-public-methods, 17 | too-many-arguments, 18 | too-many-branches, 19 | too-many-function-args, 20 | too-many-instance-attributes, 21 | too-many-public-methods, 22 | too-many-positional-arguments, 23 | cyclic-import 24 | 25 | [pylint.'SIMILARITIES'] 26 | min-similarity-lines = 40 -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | The tool to check the availability or syntax of domain, IP or URL. 3 | 4 | :: 5 | 6 | 7 | ██████╗ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗ ██████╗███████╗██████╗ ██╗ ███████╗ 8 | ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝██╔══██╗██║ ██╔════╝ 9 | ██████╔╝ ╚████╔╝ █████╗ ██║ ██║██╔██╗ ██║██║ █████╗ ██████╔╝██║ █████╗ 10 | ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║██║╚██╗██║██║ ██╔══╝ ██╔══██╗██║ ██╔══╝ 11 | ██║ ██║ ██║ ╚██████╔╝██║ ╚████║╚██████╗███████╗██████╔╝███████╗███████╗ 12 | ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝ ╚══════╝╚══════╝ 13 | 14 | Provides our tests. 15 | 16 | Author: 17 | Nissar Chababy, @funilrys, contactTATAfunilrysTODTODcom 18 | 19 | Special thanks: 20 | https://pyfunceble.github.io/special-thanks.html 21 | 22 | Contributors: 23 | https://pyfunceble.github.io/contributors.html 24 | 25 | Project link: 26 | https://github.com/funilrys/PyFunceble 27 | 28 | Project documentation: 29 | https://docs.pyfunceble.com 30 | 31 | Project homepage: 32 | https://pyfunceble.github.io/ 33 | 34 | License: 35 | :: 36 | 37 | 38 | Copyright 2017, 2018, 2019, 2020, 2022, 2023, 2024, 2025 Nissar Chababy 39 | 40 | Licensed under the Apache License, Version 2.0 (the "License"); 41 | you may not use this file except in compliance with the License. 42 | You may obtain a copy of the License at 43 | 44 | https://www.apache.org/licenses/LICENSE-2.0 45 | 46 | Unless required by applicable law or agreed to in writing, software 47 | distributed under the License is distributed on an "AS IS" BASIS, 48 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 | See the License for the specific language governing permissions and 50 | limitations under the License. 51 | """ 52 | -------------------------------------------------------------------------------- /tests/checker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/checker/__init__.py -------------------------------------------------------------------------------- /tests/checker/availability/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/checker/availability/__init__.py -------------------------------------------------------------------------------- /tests/checker/reputation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/checker/reputation/__init__.py -------------------------------------------------------------------------------- /tests/checker/syntax/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/checker/syntax/__init__.py -------------------------------------------------------------------------------- /tests/checker/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/checker/utils/__init__.py -------------------------------------------------------------------------------- /tests/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/config/__init__.py -------------------------------------------------------------------------------- /tests/converter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/converter/__init__.py -------------------------------------------------------------------------------- /tests/dataset/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/dataset/__init__.py -------------------------------------------------------------------------------- /tests/helpers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/helpers/__init__.py -------------------------------------------------------------------------------- /tests/query/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/query/__init__.py -------------------------------------------------------------------------------- /tests/query/dnss/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/query/dnss/__init__.py -------------------------------------------------------------------------------- /tests/query/netinfo/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/query/netinfo/__init__.py -------------------------------------------------------------------------------- /tests/query/whois/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/query/whois/__init__.py -------------------------------------------------------------------------------- /tests/query/whois/converter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/query/whois/converter/__init__.py -------------------------------------------------------------------------------- /tests/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/funilrys/PyFunceble/6fc0974a65e0987945afdfaed9e7a21dc6ad9894/tests/utils/__init__.py -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | recreate = True 3 | 4 | [testenv] 5 | setenv = 6 | PYFUNCEBLE_AUTO_CONFIGURATION = YES 7 | PYFUNCEBLE_CONFIG_DIR = /tmp/pyfunceble 8 | PYTHONIOENCODING = utf-8 9 | 10 | deps = 11 | -rrequirements.txt 12 | -rrequirements.test.txt 13 | commands = 14 | coverage run -m unittest discover tests 15 | coverage xml 16 | coverage html 17 | coverage report -m -------------------------------------------------------------------------------- /tox_run.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | recreate = True 3 | 4 | [testenv] 5 | setenv = 6 | PYFUNCEBLE_AUTO_CONFIGURATION = YES 7 | DEBUG_PYFUNCEBLE_ON_SCREEN=yes 8 | PYFUNCEBLE_LOGGING_LVL=critical 9 | PYFUNCEBLE_CONFIG_DIR = {toxinidir}/tests_dir 10 | PYFUNCEBLE_INSTALL_HELPERS = yes 11 | PYTHONIOENCODING = utf-8 12 | 13 | passenv = PYFUNCEBLE_* 14 | 15 | deps = -rrequirements.txt 16 | changedir = {toxinidir}/tests_dir 17 | commands = 18 | public-suffix-pyfunceble 19 | clean-pyfunceble --all 20 | PyFunceble -v 21 | PyFunceble -t 3 -ex -d github.com --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical 22 | PyFunceble -t 3 -ex -s -f {toxinidir}/examples/lists/simple --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical 23 | PyFunceble -t 3 -ex --syntax -f {toxinidir}/examples/lists/simple --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical 24 | PyFunceble -t 3 -ex -f {toxinidir}/examples/lists/simple --plain --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical 25 | PyFunceble -t 3 -ex -f {toxinidir}/examples/lists/simple --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical # Normally, all inactive are not tested anymore. 26 | PyFunceble -t 3 -ex --inactive-db -f {toxinidir}/examples/lists/simple --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical # And they will be retested. 27 | PyFunceble -t 3 -ex --inactive-db --filter ".info$" -f {toxinidir}/examples/lists/simple --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical # Only .info domains should be tested. 28 | PyFunceble -t 3 -ex --adblock -a -f {toxinidir}/examples/lists/adblock --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical 29 | PyFunceble -t 3 -ex -f https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts --dns 9.9.9.10 149.112.112.10 --dots --logging-level critical 30 | python {toxinidir}/examples/api_usage/basic.py 31 | python {toxinidir}/examples/api_usage/basic_syntax.py 32 | python {toxinidir}/examples/api_usage/advanced.py 33 | python {toxinidir}/examples/api_usage/loop.py 34 | python {toxinidir}/examples/api_usage/custom_configuration.py 35 | python {toxinidir}/examples/api_usage/file_generation.py 36 | python {toxinidir}/examples/api_usage/reputation.py 37 | -------------------------------------------------------------------------------- /version.yaml: -------------------------------------------------------------------------------- 1 | current_version: '4.3.0a23.dev (Blue Duckling: Tulip)' 2 | deprecated: 3 | - 3.0.21 4 | - 3.1.20 5 | - 3.2.13 6 | - 4.0.0a1 7 | - 4.1.0b1 8 | - 4.2.0a1 9 | - 4.3.0a1 10 | force_update: 11 | minimal_version: 12 | - 2.58.0 13 | status: true 14 | messages: 15 | 1.0.0: 16 | - message: '🎉🌠 Happy New Year! 🌠🎉 17 | 18 | Best wishes to you and your beloved ones. 19 | 20 | ' 21 | type: info 22 | until_date: '2021-02-01T00:01:00+00:00' 23 | 4.0.0a1: 24 | - message: 'You are using the Alpha version of PyFunceble 4.0.0! 25 | 26 | Please take the time to communicate with us when you notice 27 | 28 | something unusual. 29 | 30 | ' 31 | type: info 32 | until: 4.0.0b1 33 | 4.0.0b1: 34 | - message: 'You are using the Beta version of PyFunceble 4.0.0! 35 | 36 | Please take the time to communicate with us when you notice 37 | 38 | something unusual. 39 | 40 | ' 41 | type: info 42 | until: 4.0.0 43 | --------------------------------------------------------------------------------