All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Bump
requests
to 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.md
for more information. - Cloudflare support is now mandatory.
- Removed
pyyaml
and 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
requests
and its dependencies.
- Updated
urllib3
.
- Updated
urllib3
.
- The project has been linted with
Flake8
andmypy
.
- Updated
pyyaml
for dependabot alerts.
- Branch
cloudflare
is 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_ENABLED
isTrue
. - Versioning since 1.2.0 now omits the
-cf
to 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.InvalidConfigError
now subclassesRuntimeError
instead of an extraneous custom exception.process.py
was renamed main.py.- The code that existed under
if __name__ == 'main':
now exists in its own function. ipaddr.APIResponseError
now 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.py
and either supplying a list of subdomains separated by spaces or one time interactively. The resulting ID will be saved into config.yaml.
- Use
RotatingFileHandler
for 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
requests
import to ifttt.py - On changing Cloudflare DNS records, changed the
data=
parameter tojson=
. Would not work withdata=
.
- Cloudflare update via API
StreamHandler
is 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.InvalidConfigError
is raised
- Initial version