:tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2:
Hello, World!
After more than a year of development and testing (in beta),
I'm glad and happy to deliver and distribute the first release of PyFunceble!
To the newcomers, welcome in the boat! Let me invite you to follow [our documentation](https://pyfunceble.readthedocs.io/en/dev/) for more information about PyFunceble, what can we do and how we work!
To those who were there on beta, thanks for staying in the boat! I hope that the update/upgrade from the beta version will not be too _brutal_ for you!
I hope that you will all like this first version out of beta!
Let me know if you meet an issue, have any questions or if you simply have an improvement idea.
I wish you all a healthy start into the New Year.
:tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2::tada: :star2:
PyFunceble in action
[![PyFunceble](https://github.com/PyFunceble/gifs/raw/master/domain.gif)](https://github.com/PyFunceble/gifs/raw/master/domain.gif)
_Please follow [the documentation](https://pyfunceble.readthedocs.io/en/master/in-action.html) for more GIF._
---
What can PyFunceble do?
- Test of the availability of a domain.
- Test of the availability of an IPv4.
- Test of the availability of an URL.
- Test of the availability of a domain/DNS name in a private or local network.
- Test of the availability of an IPv4 in a private or local network.
- Test of the availability of an URL in a private or local network.
- Test of the syntax of a domain.
- Test of the syntax of an IPv4.
- Test of the syntax of an URL.
- Test of domain or IP which are present into an Adblock formatted file.
- Test from a given raw link.
- Save test result(s) on file(s) (hosts file, plain text and/or JSON format).
- Show test result(s) on screen.
- Show the percentage of each status (`ACTIVE`, `INACTIVE`, `INVALID`)
- Sort outputs hierarchically.
- "Mining" of domain or IP which are related to the tested element.
- Auto-continuation of tests in case of system crash or script stop.
- Filtering of file content.
- This feature will let us for example test all blogspot domain of the given file no matter the content of the file.
- Set the user-agent to use for the tests.
- Give some analytic depending on the HTTP status code (`ACTIVE`, `POTENTIALLY_ACTIVE`, `POTENTIALLY_INACTIVE`, `SUSPICIOUS`).
- Retest overtime of `INACTIVE` and `INVALID` domains.
- Print the execution time on screen and file.
- Customization of the different option via command-line arguments or configuration file.
- Continuous tests under Travis CI with the help of an auto saving and database system.
- Set branch to push the result to for the autosaving system.
- Set the minimal time before we autosave in order to avoid Travis CI limitation.
- Set a command to execute at the end of the test.
- Set the commit message for the autosaving system.
- ... and a lot more!
---
What was fixed?
- Hours in the execution time which was not correct.
- Inconsistent/incomplete paths.
- IP testing which always returned `ACTIVE`.
- Test of URL as an imported file which was not implemented properly.
- Typos in documentation, README and source code.
What was improved?
- The contribution guidelines.
- The docstrings.
- The flowcharts which simplify the representation of what we do.
- The source code documentation.
- The tests.
- The way we check for the URL syntax.
- The way we decode AdBlock filter list.
- The way we extract the expiration date from the WHOIS record.
- The way we format/sort lists.
- The way we generate all our files.
- The way we log information.
- The way we test subdomains.
- The way we work with epoch/timestamp.
- The way we work with the execution time.
- The way we work/generate our inactive database.
What is new?
- (option) "Mining" method.
- (option) Clean of **all** generated file(s).
- (option) Conversion to Punycode/IDNA.
- (option) Custom command at the end of each commits (except the final one) under Travis CI.
- (option) Custom configuration location with an environment variable.
- (option) Disable SSL/TLS certificate checking.
- (option) Hierarchical sorting/testing of a file.
- (option) JSON output
- (option) Syntax (instead of the default availability) check mode.
- (option) Test of a local/private DNS name.
- `SUSPICIOUS` analytic status.
- Arch User Repository package.
- Automatic update of the `output` directory structure.
- Better handling of keyboard interruption.
- Global and session execution time.
- Inline comments.
- Merge of upstream and local configuration file if a configuration key is missing.
- Output of more information (when needed) if we are used as an imported module.
- Python 3.7 CI tests.
- Reduction of the number of WHOIS record requests over time.
What is coming?
- Addition of features proposed by individuals or organizations via GitHub issue, GitHub comments, email, [Keybase (Personal)](https://keybase.io/funilrys) or [Keybase (PyFunceble Chat)](https://keybase.io/team/pyfunceble).
- Fix of reported issues.
- Improvement of the actual features.
- Review of the tests.
---
Contributors
I would like to renew my thanks to those awesome people for their past or current contribution in making PyFunceble a better tool!
- dnmTX - [dnmTX](https://github.com/dnmTX)
- jawz101 - [jawz101](https://github.com/jawz101)
- Mitchell Krog - [mitchellkrogza](https://github.com/mitchellkrogza)
- Odyseus - [Odyseus](https://github.com/Odyseus)
- Reza Rizqullah - [ybreza](https://github.com/ybreza)
- ScriptTiger - [ScriptTiger](https://github.com/ScriptTiger)
- WaLLy3K - [WaLLy3K](https://github.com/WaLLy3K)
- xxcriticxx - [xxcriticxx](https://github.com/xxcriticxx)
Special thanks
I would also like to renew my special and big thanks to those awesome people or organization for
- Their awesome documentation
- Their awesome repository
- Their awesome tool/software/source code
- Their breaking reports
- Their contributions
- Their current work/purpose
- Their promotion of Py-Funceble
- Their support
- Their testings reports
which helped and/or still help me build, test and or make PyFunceble a better tool.
- Adam Warner - [PromoFaux](https://github.com/PromoFaux)
- Adblock Plus - [adblockplus](https://github.com/adblockplus)
- Mitchell Krog - [mitchellkrogza](https://github.com/mitchellkrogza)
- Mohammad Fares - [faressoft](https://github.com/faressoft)
- Pi-Hole - [pi-hole](https://github.com/pi-hole/pi-hole)
- Public Suffix List - [publicsuffix](https://github.com/publicsuffix)
- Reza Rizqullah - [ybreza](https://github.com/ybreza)
- ScriptTiger - [ScriptTiger](https://github.com/ScriptTiger)
- SMed79 - [SMed79](https://github.com/SMed79)
- [IANA](https://www.iana.org/) - [ICANN](https://www.icann.org/)
- [yEd Graph Editor](https://www.yworks.com/products/yed)
- [yWorks](https://www.yworks.com/company)