All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Bump
requeststo 2.31.0.
- Added multiple webhook support.
- User-configurable messages are allowed for webhooks now.
- Added additional APIs for retrieving IP addresses. (Resolves #2.)
- Added initial support for IPv6 addresses. However, two API sources do not have a way to force IPv4/IPv6, so it depends on their detection. (Resolves #3.)
- The configuration is subtly changed -- for Cloudflare, subdomains are instead placed in a list in the configuration. Check
README.mdfor more information. - Cloudflare support is now mandatory.
- Removed
pyyamland all YAML files. JSON is in the standard library and the configuration file isn't complex enough to warrant staying with YAML. For information on migrating old configuration to the new JSON-based configuration, checkREADME.md. - Removed hard-coded IFTTT support. Instead, general webhooks are supported.
- Updated
requestsand its dependencies.
- Updated
urllib3.
- Updated
urllib3.
- The project has been linted with
Flake8andmypy.
- Updated
pyyamlfor dependabot alerts.
- Branch
cloudflareis merged withmaster. This is to simplify the code base, as the resulting features were not as divergent as previously thought. - Because IFTTT is now mandatory to match branch
master, the logger level for errors loading ifttt.py is nowerror, notwarn. - Likewise, the error levels associated with Cloudflare are now
warn, noterror, in config.py. In main.py, Cloudflare functionality is enabled only ifconfig.CF_ENABLEDisTrue. - Versioning since 1.2.0 now omits the
-cfto reflect the merged branches.
- Project name is now "I've moved", as "public_ipaddr_check" is wordy and not fully accurate to its purpose (at a minimum, checks and alerts).
config.InvalidConfigErrornow subclassesRuntimeErrorinstead of an extraneous custom exception.process.pywas renamed main.py.- The code that existed under
if __name__ == 'main':now exists in its own function. ipaddr.APIResponseErrornow subclassesValueError, in the same vein asconfig.InvalidConfigError.- Assigned some hard-coded strings as variables instead, in case they ever need changing.
- Updated license years.
- In config.yaml, subdomains are now nested directly under
'subdomains'instead of elements of a list/array. - You can now retrieve IDs of new subdomains in Cloudflare by calling
python cloudflare.pyand either supplying a list of subdomains separated by spaces or one time interactively. The resulting ID will be saved into config.yaml.
- Use
RotatingFileHandlerfor logs - Very minor changes to readme and syntactic changes to code
- Fixed issue when ipify returns an application error. Added an error to raise.
- Fixed missing argument in cloudflare.py
update_subdomain - Fixed
config['domain']->config.DOMAIN - Added missing
requestsimport to ifttt.py - On changing Cloudflare DNS records, changed the
data=parameter tojson=. Would not work withdata=.
- Cloudflare update via API
StreamHandleris set toINFO, to output messages tostdout/stderr
- Blank/invalid IP addresses should no longer be ignored
- logging; accessed in config.py
- Broke up main process.py into:
- Instead of
sys.exit(1),config.InvalidConfigErroris raised
- Initial version