initial commit
This commit is contained in:
commit
8e45625fc1
26
.gitignore
vendored
Normal file
26
.gitignore
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# Python #
|
||||
# Virtual Environment
|
||||
/.venv/
|
||||
|
||||
# Cache
|
||||
__pycache__/
|
||||
|
||||
# Build
|
||||
/dist/
|
||||
*.egg-info/
|
||||
/build/
|
||||
|
||||
# Tools
|
||||
/.pytest_cache/
|
||||
/.mypy_cache/
|
||||
|
||||
# Nix #
|
||||
/result
|
||||
|
||||
# Direnv #
|
||||
/.direnv/
|
||||
|
||||
# Project specific files #
|
||||
config.json
|
||||
*.key
|
||||
*.jsonl
|
98
README.md
Normal file
98
README.md
Normal file
@ -0,0 +1,98 @@
|
||||
# Cloudns - A Cloudflare Dynamic DNS Solution
|
||||
|
||||
A DNS record updater for [Cloudflare's DNS](https://developers.cloudflare.com/api/resources/dns/) API.
|
||||
|
||||
## How it works
|
||||
|
||||
This script determines the the current IP address by querying the resolvers defined in the config file.
|
||||
It then queries the subdomains' A records off of Cloudflare and compares their IP addresses to the current IP address.
|
||||
Should the IP address of a subdomain's A record not match your current IP address it will be updated. The subdomain's A record will be created should it not already exist.
|
||||
|
||||
## Notes
|
||||
|
||||
Every invocation of the script causes at least 1 request to a resolver specified and 1 API call to Cloudflare per domain.
|
||||
Updating a subdomain's A record is 1 API request per subdomain, even if they share the same domain.
|
||||
Resolvers are queried in the order specified until one returns a valid IP address.
|
||||
It is also possible to define a path to a file with the API key written in it.
|
||||
This is good for environments where the config file has to be shared like in a nix project.
|
||||
|
||||
## Usage
|
||||
|
||||
First, get your User API Token from https://dash.cloudflare.com/profile/api-tokens.
|
||||
The token need the following permissions:
|
||||
|
||||
* **Edit DNS**
|
||||
|
||||
```json
|
||||
{
|
||||
"api": {
|
||||
"API Key": {
|
||||
"example.com": [ "@", "www", "sub1" ],
|
||||
"example.org": [ "@", "www", "sub1", "sub2" ]
|
||||
},
|
||||
"/path/to/a/file/containing/api_key": {
|
||||
"example.at": [ "sub1" ],
|
||||
"example.au": [ "sub1", "sub2" ]
|
||||
}
|
||||
},
|
||||
"resolvers": [
|
||||
"https://ifconfig.me/ip",
|
||||
"https://me.gandi.net"
|
||||
],
|
||||
"log_path": "./log.jsonl"
|
||||
}
|
||||
```
|
||||
|
||||
## Nix
|
||||
|
||||
Add this to the modules.
|
||||
|
||||
```nix
|
||||
inputs = {
|
||||
cloudns.url = "git+https://git.krsnik.at/Kristian/cloudns";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
cloudns
|
||||
}: {
|
||||
...
|
||||
modules = [
|
||||
cloudns.nixosModules.default
|
||||
{
|
||||
cloudns.enable = true;
|
||||
cloudns.timer = 300;
|
||||
cloudns.settings = {
|
||||
api = {
|
||||
"/path/to/a/file/containing/api_key" = {
|
||||
"example.com" = ["@" "www"];
|
||||
};
|
||||
};
|
||||
resolvers = [
|
||||
"https://ifconfig.me/ip"
|
||||
"https://me.gandi.net"
|
||||
];
|
||||
log_path = "/path/to/log/file.jsonl";
|
||||
};
|
||||
}
|
||||
...
|
||||
];
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
Use `cloudns.nixosModules.default` for a NixOs module.
|
||||
|
||||
`cloudns.timer` specifies a timer in seconds when the script should be repeated.
|
||||
|
||||
## Features
|
||||
|
||||
* Support for arbitrarily many domains and subdomains through a nested data structure.
|
||||
* Small codebase
|
||||
* Logging
|
||||
* NixOS and home-manager modules
|
||||
|
||||
## Limitations
|
||||
|
||||
* Only IPv4 addresses are supported
|
27
flake.lock
generated
Normal file
27
flake.lock
generated
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1742422364,
|
||||
"narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
105
flake.nix
Normal file
105
flake.nix
Normal file
@ -0,0 +1,105 @@
|
||||
{
|
||||
description = "A Python Project Template.";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
} @ inputs: let
|
||||
supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
|
||||
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
|
||||
pkgs = forAllSystems (system: nixpkgs.legacyPackages.${system}.extend overlay);
|
||||
|
||||
overlay = final: prev: rec {
|
||||
python3Packages = prev.python3Packages.overrideScope (pfinal: pprev: {
|
||||
packageNameToDrv = x: builtins.getAttr (cleanPythonPackageName x) final.python3Packages;
|
||||
});
|
||||
|
||||
cleanPythonPackageName = x: let
|
||||
cleanName = builtins.match "([a-z,A-Z,0-9,_,-]+).*" x;
|
||||
in
|
||||
if cleanName != null
|
||||
then builtins.elemAt cleanName 0
|
||||
else builtins.warn "Could not determine package name from '${x}'" null;
|
||||
};
|
||||
|
||||
pyproject = builtins.fromTOML (builtins.readFile ./pyproject.toml);
|
||||
|
||||
buildDependencies = forAllSystems (system: builtins.map pkgs.${system}.python3Packages.packageNameToDrv pyproject.build-system.requires);
|
||||
runtimeDependencies = forAllSystems (system: builtins.map pkgs.${system}.python3Packages.packageNameToDrv pyproject.project.dependencies);
|
||||
optionalDependencies = forAllSystems (system: builtins.mapAttrs (name: value: builtins.map pkgs.${system}.python3Packages.packageNameToDrv value) pyproject.project.optional-dependencies);
|
||||
in {
|
||||
# `nix build`
|
||||
packages = forAllSystems (system: let
|
||||
buildProject = {skipCheck ? false}:
|
||||
pkgs.${system}.python3Packages.buildPythonPackage {
|
||||
pname = pyproject.project.name;
|
||||
version = pyproject.project.version;
|
||||
src = ./.;
|
||||
|
||||
pyproject = true;
|
||||
|
||||
build-system = buildDependencies.${system};
|
||||
|
||||
dependencies = runtimeDependencies.${system};
|
||||
|
||||
optional-dependencies = optionalDependencies.${system};
|
||||
|
||||
nativeCheckInputs = optionalDependencies.${system}.dev;
|
||||
|
||||
checkPhase = let
|
||||
dev = builtins.map (x: x.pname) optionalDependencies.${system}.dev;
|
||||
in ''
|
||||
${
|
||||
if builtins.elem "pytest" dev && !skipCheck
|
||||
then "pytest tests"
|
||||
else ""
|
||||
}
|
||||
${
|
||||
if builtins.elem "mypy" dev && !skipCheck
|
||||
then "mypy src"
|
||||
else ""
|
||||
}
|
||||
${
|
||||
if builtins.elem "pylint" dev && !skipCheck
|
||||
then "pylint src"
|
||||
else ""
|
||||
}
|
||||
'';
|
||||
};
|
||||
in {
|
||||
default = self.packages.${system}."${pyproject.project.name}";
|
||||
"${pyproject.project.name}" = buildProject {skipCheck = false;};
|
||||
quick = buildProject {skipCheck = true;};
|
||||
});
|
||||
|
||||
# `nix fmt`
|
||||
formatter = forAllSystems (system: pkgs.${system}.alejandra);
|
||||
|
||||
# `nix develop`
|
||||
devShells = forAllSystems (system: rec {
|
||||
default = venv;
|
||||
|
||||
venv = pkgs.${system}.mkShell {
|
||||
shellHook = ''
|
||||
if [ ! -d .venv/ ]; then
|
||||
echo "Creating Virtual Environment..."
|
||||
${pkgs.${system}.python3}/bin/python3 -m venv .venv
|
||||
fi
|
||||
|
||||
alias activate='source .venv/bin/activate'
|
||||
|
||||
echo "Entering Virtual Environment..."
|
||||
source .venv/bin/activate
|
||||
'';
|
||||
};
|
||||
});
|
||||
|
||||
# NixOS Module
|
||||
nixosModules.default = import ./nix/module.nix inputs;
|
||||
};
|
||||
}
|
323
log.txt
Normal file
323
log.txt
Normal file
@ -0,0 +1,323 @@
|
||||
{"timestamp": "2025-03-23T19:02:40.820577+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:02:40.822624+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:41.049484+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:41.050064+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:02:41.051262+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:41.881375+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:41.884549+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:02:41.887896+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:42.886719+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:42.887731+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:02:42.889305+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:43.615599+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:02:43.617942+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":1,\"total_count\":1,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:02:43.618521+00:00", "level": "INFO", "message": "Could not find an A record for '@.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "@.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:02:43.618708+00:00", "level": "INFO", "message": "IP for 'mail.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "mail.krezzlu.com", "content": "46.226.105.234"}
|
||||
{"timestamp": "2025-03-23T19:02:43.618862+00:00", "level": "INFO", "message": "Could not find an A record for 'sub1.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "sub1.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:04:16.981896+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:04:16.984037+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:17.179613+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:17.180233+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:04:17.181355+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:17.919486+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:17.923566+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:04:17.927387+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:18.860477+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:18.862809+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:04:18.866480+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:20.043042+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:20.045451+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":2,\"total_count\":2,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:04:20.045815+00:00", "level": "INFO", "message": "Could not find an A record for '@.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "@.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:04:20.045863+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:04:20.045897+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:04:49.633806+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:04:49.635982+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:49.814682+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:49.815261+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:04:49.816445+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:50.563412+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:50.564998+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:04:50.567207+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:51.763802+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:51.766234+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:04:51.770909+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:52.546914+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:04:52.549370+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":2,\"total_count\":2,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:04:52.550261+00:00", "level": "INFO", "message": "Could not find an A record for 'krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:04:52.550439+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:04:52.550580+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:05:13.627918+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:05:13.630369+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:13.811366+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:13.811970+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:05:13.813241+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:14.601694+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:14.602849+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:05:14.603893+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:15.562500+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:15.563871+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:05:15.565340+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:16.193842+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:16.195095+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":2,\"total_count\":2,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:05:16.195499+00:00", "level": "INFO", "message": "Could not find an A record for 'krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:05:16.195551+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:05:16.195586+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:05:46.612498+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:05:46.614861+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:47.005076+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:47.005701+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:05:47.007556+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:47.903021+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:47.906260+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:05:47.909823+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:49.120720+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:49.123962+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:05:49.128293+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:49.890004+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:05:49.893822+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":2,\"total_count\":2,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:05:49.894975+00:00", "level": "INFO", "message": "Could not find an A record for 'krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 90, "thread_name": "MainThread", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:05:49.895226+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:05:49.895402+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 90, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:06:53.096434+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:06:53.098582+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:53.276569+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:53.277182+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:06:53.278725+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:54.043122+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:54.044896+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:06:54.048379+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:54.933837+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:54.936439+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:06:54.940001+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:55.685084+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:06:55.687921+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":3,\"total_count\":3,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:06:55.689161+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "full_domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:06:55.689356+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:06:55.689507+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 90, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:09:24.888779+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:09:24.891150+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:25.381509+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:25.382106+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:09:25.383445+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:26.100370+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:26.103321+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:09:26.105513+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:27.105388+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:27.107861+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:09:27.112752+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:27.966080+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:09:27.968532+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":3,\"total_count\":3,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:09:27.969191+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:09:27.969381+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:09:27.969536+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:14:29.831093+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:14:29.833169+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:30.805727+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:30.806417+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:14:30.808623+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:31.533113+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:31.536076+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:14:31.537618+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:32.727340+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:32.730032+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:14:32.734312+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:33.543017+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:33.545451+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":3,\"total_count\":3,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:14:33.546190+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:14:33.546375+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:14:33.546557+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:14:33.546824+00:00", "level": "ERROR", "message": "too many values to unpack (expected 2)\nTraceback (most recent call last):\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/main.py\", line 103, in run\n for full_domain, id in zones:\n ^^^^^^^^^^^^^^^\nValueError: too many values to unpack (expected 2)", "logger": "root", "module": "main", "function": "run", "line": 107, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:49.039303+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:14:49.041304+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:49.234224+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:49.234796+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:14:49.235849+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:50.036450+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:50.039416+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:14:50.042516+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:51.614299+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:51.617241+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:14:51.620982+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:52.299902+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:14:52.302237+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":3,\"total_count\":3,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:14:52.302817+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:14:52.302939+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:14:52.303024+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:14:52.303391+00:00", "level": "ERROR", "message": "too many values to unpack (expected 2)\nTraceback (most recent call last):\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/main.py\", line 103, in run\n for full_domain, (zone_id, record_id) in zones:\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nValueError: too many values to unpack (expected 2)", "logger": "root", "module": "main", "function": "run", "line": 107, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:20.633329+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:15:20.635366+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:21.624602+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:21.625557+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:15:21.628046+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:22.415674+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:22.418525+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:15:22.422268+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:23.870930+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:23.872524+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:15:23.876695+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:24.631074+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:24.632516+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":3,\"total_count\":3,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:15:24.632937+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:15:24.633009+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:15:24.633048+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:15:24.633248+00:00", "level": "ERROR", "message": "too many values to unpack (expected 2)\nTraceback (most recent call last):\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/main.py\", line 103, in run\n for full_domain, (zone_id, record_id) in zones.items():\n ^^^^^^^^^^^^^^^^^^^^\nValueError: too many values to unpack (expected 2)", "logger": "root", "module": "main", "function": "run", "line": 107, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:36.214768+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:15:36.216717+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:36.395863+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:36.396496+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:15:36.398105+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:37.144652+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:37.146419+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "params": null, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:15:37.147714+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:38.044378+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:38.045851+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "params": {"name": "krezzlu.com"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:15:38.050740+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:38.949324+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:15:38.951624+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "params": {"type": "A"}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":3,\"total_count\":3,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:15:38.953120+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:15:38.953371+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 94, "thread_name": "MainThread", "full_domain": "test.krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:15:38.953561+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 89, "thread_name": "MainThread", "domain": "test2.krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:33:03.193012+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:33:03.195438+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:03.378099+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:03.378762+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:33:03.380345+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:04.147763+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:04.150945+00:00", "level": "ERROR", "message": "name 'params' is not defined\nTraceback (most recent call last):\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/main.py\", line 73, in run\n if not cloudns.api_key_is_valid(api_key):\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/cloudflare_dyn_dns.py\", line 75, in api_key_is_valid\n result = _cloudflare_api_request('GET', 'user/tokens/verify', api_key)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/cloudflare_dyn_dns.py\", line 60, in _cloudflare_api_request\n LOGGER.debug('Issued Cloudflare API request.', extra = { 'method': method, 'endpoint': endpoint, 'headers': headers, 'params': params, 'status_code': response.status_code, 'content': response.content })\n ^^^^^^\nNameError: name 'params' is not defined", "logger": "root", "module": "main", "function": "run", "line": 116, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:40.555055+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:33:40.556934+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:40.748454+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:40.749023+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:33:40.751353+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:41.522778+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:41.525800+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:33:41.528415+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:43.079317+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:43.080507+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:33:43.081788+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:43.866348+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:43.868605+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":3,\"total_count\":3,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:33:43.869215+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:33:43.869417+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:33:43.869577+00:00", "level": "INFO", "message": "Could not find an A record for 'test2.krezzlu.com'. Will be created.", "logger": "root", "module": "main", "function": "run", "line": 90, "thread_name": "MainThread", "sub": "test2", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:33:43.869732+00:00", "level": "INFO", "message": "'A record for 'krezzlu.com' updated.", "logger": "root", "module": "main", "function": "run", "line": 113, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:33:43.869877+00:00", "level": "INFO", "message": "'A record for 'test.krezzlu.com' updated.", "logger": "root", "module": "main", "function": "run", "line": 113, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:33:43.872970+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:44.541855+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"POST /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:33:44.544528+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "POST", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"json": {"type": "A", "name": "test2.krezzlu.com", "content": "62.178.168.183"}}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:33:44.545447+00:00", "level": "INFO", "message": "A record for 'test2.krezzlu.com' created.", "logger": "root", "module": "main", "function": "run", "line": 108, "thread_name": "MainThread", "sub": "test2", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:34:08.935710+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": ["--dry-run"]}
|
||||
{"timestamp": "2025-03-23T19:34:08.937463+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:09.117317+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:09.117949+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:34:09.119004+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:09.827502+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:09.829698+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:34:09.832708+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:10.641901+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:10.644541+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:34:10.646096+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:11.507715+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:34:11.510408+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":4,\"total_count\":4,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:34:11.511967+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:34:11.512224+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:36:18.350062+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": ["--dry-run"]}
|
||||
{"timestamp": "2025-03-23T19:36:18.351983+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:18.773750+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:18.774522+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:36:18.777175+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:19.487638+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:19.490733+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:36:19.492681+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:20.373479+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:20.375046+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:36:20.377818+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:21.286730+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:21.287762+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":4,\"total_count\":4,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:36:21.288317+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:36:21.288370+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:36:24.397524+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:36:24.399741+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:24.584900+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:24.585803+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:36:24.587641+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:25.329553+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:25.332482+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:36:25.335943+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:26.230673+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:26.233013+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:36:26.236659+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:26.849738+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:26.850999+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":4,\"total_count\":4,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:36:26.851421+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:36:26.851470+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:36:26.852735+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:27.480774+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"POST /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records HTTP/1.1\" 400 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:36:27.482966+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "POST", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"json": {"content": "62.178.168.183"}}, "status_code": 400, "content": "b'{\"result\":null,\"success\":false,\"errors\":[{\"code\":9000,\"message\":\"DNS name is invalid.\"}],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:36:27.483191+00:00", "level": "ERROR", "message": "", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 63, "thread_name": "MainThread", "status_code": 400, "content": "b'{\"result\":null,\"success\":false,\"errors\":[{\"code\":9000,\"message\":\"DNS name is invalid.\"}],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:36:27.483322+00:00", "level": "ERROR", "message": "b'{\"result\":null,\"success\":false,\"errors\":[{\"code\":9000,\"message\":\"DNS name is invalid.\"}],\"messages\":[]}'\nTraceback (most recent call last):\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/main.py\", line 112, in run\n cloudns.update_A_record(api_key, zone_id, record_id, current_ip)\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/cloudflare_dyn_dns.py\", line 104, in update_A_record\n _cloudflare_api_request(\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/cloudflare_dyn_dns.py\", line 64, in _cloudflare_api_request\n raise Exception(response.content)\nException: b'{\"result\":null,\"success\":false,\"errors\":[{\"code\":9000,\"message\":\"DNS name is invalid.\"}],\"messages\":[]}'", "logger": "root", "module": "main", "function": "run", "line": 116, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:43.330410+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:37:43.332434+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:43.540059+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:43.540771+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:37:43.541853+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:44.310987+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:44.317923+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:37:44.320779+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:45.310813+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:45.313365+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:37:45.316438+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:46.146942+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:46.148235+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":4,\"total_count\":4,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:37:46.148655+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:37:46.148704+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:37:46.148759+00:00", "level": "ERROR", "message": "name 'dns_record_id' is not defined\nTraceback (most recent call last):\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/main.py\", line 112, in run\n cloudns.update_A_record(api_key, zone_id, record_id, current_ip)\n File \"/home/kristian/Code/cloudflare-dyn-dns/src/my_project/cloudflare_dyn_dns.py\", line 106, in update_A_record\n f'/zones/{zone_id}/dns_records/{dns_record_id}',\n ^^^^^^^^^^^^^\nNameError: name 'dns_record_id' is not defined. Did you mean: 'record_id'?", "logger": "root", "module": "main", "function": "run", "line": 116, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:53.024963+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:37:53.027782+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:53.214828+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:53.215433+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:37:53.216552+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:53.958200+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:53.961222+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:37:53.964445+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:54.800554+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:54.803082+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:37:54.805488+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:55.391762+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:55.394507+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:06:47.202817Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"1.1.1.1\",\"proxiable\":false,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:03:26.528913Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":4,\"total_count\":4,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:37:55.395224+00:00", "level": "INFO", "message": "IP for 'test.krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:37:55.395347+00:00", "level": "INFO", "message": "IP for 'krezzlu.com' does not match current IP. Will be updated.", "logger": "root", "module": "main", "function": "run", "line": 95, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com", "content": "1.1.1.1"}
|
||||
{"timestamp": "2025-03-23T19:37:55.398712+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:56.031018+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"PATCH /client/v4//zones/e51e081fa6710843d7e605479cdd0567/dns_records/e2823b6fa044667bb91abe72490c6ac4 HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:56.033331+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "PATCH", "endpoint": "/zones/e51e081fa6710843d7e605479cdd0567/dns_records/e2823b6fa044667bb91abe72490c6ac4", "headers": null, "kwargs": {"json": {"content": "62.178.168.183"}}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:37:55.913022Z\"},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:37:56.033951+00:00", "level": "INFO", "message": "'A record for 'test.krezzlu.com' updated.", "logger": "root", "module": "main", "function": "run", "line": 113, "thread_name": "MainThread", "sub": "test", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:37:56.037170+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:56.724580+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"PATCH /client/v4//zones/e51e081fa6710843d7e605479cdd0567/dns_records/c224324c0fdd8b615b63e602e87f8cbc HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:37:56.726666+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "PATCH", "endpoint": "/zones/e51e081fa6710843d7e605479cdd0567/dns_records/c224324c0fdd8b615b63e602e87f8cbc", "headers": null, "kwargs": {"json": {"content": "62.178.168.183"}}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:37:56.612888Z\"},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:37:56.726973+00:00", "level": "INFO", "message": "'A record for 'krezzlu.com' updated.", "logger": "root", "module": "main", "function": "run", "line": 113, "thread_name": "MainThread", "sub": "@", "domain": "krezzlu.com"}
|
||||
{"timestamp": "2025-03-23T19:39:03.376395+00:00", "level": "DEBUG", "message": "Started program.", "logger": "root", "module": "main", "function": "run", "line": 67, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:39:03.379027+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:03.588173+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:03.588728+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "root", "module": "cloudflare_dyn_dns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:39:03.589704+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:04.277155+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:04.278743+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:39:04.279965+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:05.221869+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:05.222923+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:39:05.224357+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:05.993221+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:39:05.995897+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "root", "module": "cloudflare_dyn_dns", "function": "_cloudflare_api_request", "line": 60, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:37:56.612888Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:37:55.913022Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":4,\"total_count\":4,\"total_pages\":1}}'"}
|
||||
{"timestamp": "2025-03-23T19:51:23.276319+00:00", "level": "DEBUG", "message": "Started program.", "logger": "cloudns", "module": "main", "function": "run", "line": 69, "thread_name": "MainThread", "argv": []}
|
||||
{"timestamp": "2025-03-23T19:51:23.278996+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): ifconfig.me:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:23.489697+00:00", "level": "DEBUG", "message": "https://ifconfig.me:443 \"GET /ip HTTP/1.1\" 200 14", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:23.490363+00:00", "level": "DEBUG", "message": "[OK][https://ifconfig.me/ip] Current IP: '62.178.168.183'", "logger": "cloudns", "module": "cloudns", "function": "get_current_ip", "line": 42, "thread_name": "MainThread", "resolver": "https://ifconfig.me/ip", "current_ip": "62.178.168.183"}
|
||||
{"timestamp": "2025-03-23T19:51:23.491785+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:24.440365+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/user/tokens/verify HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:24.442405+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "cloudns", "module": "cloudns", "function": "_cloudflare_api_request", "line": 61, "thread_name": "MainThread", "method": "GET", "endpoint": "user/tokens/verify", "headers": null, "kwargs": {}, "status_code": 200, "content": "b'{\"result\":{\"id\":\"b22074c94e38ad609caa8ed3fe28563e\",\"status\":\"active\"},\"success\":true,\"errors\":[],\"messages\":[{\"code\":10000,\"message\":\"This API Token is valid and active\",\"type\":null}]}'"}
|
||||
{"timestamp": "2025-03-23T19:51:24.443584+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:25.511251+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones?name=krezzlu.com HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:25.513618+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "cloudns", "module": "cloudns", "function": "_cloudflare_api_request", "line": 61, "thread_name": "MainThread", "method": "GET", "endpoint": "zones", "headers": null, "kwargs": {"params": {"name": "krezzlu.com"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"e51e081fa6710843d7e605479cdd0567\",\"name\":\"krezzlu.com\",\"status\":\"active\",\"paused\":false,\"type\":\"full\",\"development_mode\":0,\"name_servers\":[\"clarissa.ns.cloudflare.com\",\"moura.ns.cloudflare.com\"],\"original_name_servers\":[\"ns-2-c.gandi.net\",\"ns-215-b.gandi.net\",\"ns-36-a.gandi.net\"],\"original_registrar\":\"hosting concepts b.v. d\\\\/b\\\\/a re (id: 1647)\",\"original_dnshost\":null,\"modified_on\":\"2025-03-23T15:40:10.835121Z\",\"created_on\":\"2025-03-23T15:30:18.867211Z\",\"activated_on\":\"2025-03-23T15:40:10.835121Z\",\"meta\":{\"step\":2,\"custom_certificate_quota\":0,\"page_rule_quota\":3,\"phishing_detected\":false},\"owner\":{\"id\":null,\"type\":\"user\",\"email\":null},\"account\":{\"id\":\"bdf6111f96b9a6f7fe2f9a4475f792d2\",\"name\":\"Kristian@krsnik.at\\'s Account\"},\"tenant\":{\"id\":null,\"name\":null},\"tenant_unit\":{\"id\":null},\"permissions\":[\"#dns_records:edit\",\"#dns_records:read\",\"#zone:read\"],\"plan\":{\"id\":\"0feeeeeeeeeeeeeeeeeeeeeeeeeeeeee\",\"name\":\"Free Website\",\"price\":0,\"currency\":\"USD\",\"frequency\":\"\",\"is_subscribed\":false,\"can_subscribe\":false,\"legacy_id\":\"free\",\"legacy_discount\":false,\"externally_managed\":false}}],\"result_info\":{\"page\":1,\"per_page\":20,\"total_pages\":1,\"count\":1,\"total_count\":1},\"success\":true,\"errors\":[],\"messages\":[]}'"}
|
||||
{"timestamp": "2025-03-23T19:51:25.517328+00:00", "level": "DEBUG", "message": "Starting new HTTPS connection (1): api.cloudflare.com:443", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_new_conn", "line": 1049, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:26.420577+00:00", "level": "DEBUG", "message": "https://api.cloudflare.com:443 \"GET /client/v4/zones/e51e081fa6710843d7e605479cdd0567/dns_records?type=A HTTP/1.1\" 200 None", "logger": "urllib3.connectionpool", "module": "connectionpool", "function": "_make_request", "line": 544, "thread_name": "MainThread"}
|
||||
{"timestamp": "2025-03-23T19:51:26.422985+00:00", "level": "DEBUG", "message": "Issued Cloudflare API request.", "logger": "cloudns", "module": "cloudns", "function": "_cloudflare_api_request", "line": 61, "thread_name": "MainThread", "method": "GET", "endpoint": "zones/e51e081fa6710843d7e605479cdd0567/dns_records", "headers": null, "kwargs": {"params": {"type": "A"}}, "status_code": 200, "content": "b'{\"result\":[{\"id\":\"c224324c0fdd8b615b63e602e87f8cbc\",\"name\":\"krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:06:47.202817Z\",\"modified_on\":\"2025-03-23T19:37:56.612888Z\"},{\"id\":\"23545739cd359530d6b893feda71187a\",\"name\":\"mail.krezzlu.com\",\"type\":\"A\",\"content\":\"46.226.105.234\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T15:30:22.811109Z\",\"modified_on\":\"2025-03-23T15:50:15.099369Z\"},{\"id\":\"630573f07ad4c4bf587dd32dce40658a\",\"name\":\"test2.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:33:44.430884Z\",\"modified_on\":\"2025-03-23T19:33:44.430884Z\"},{\"id\":\"e2823b6fa044667bb91abe72490c6ac4\",\"name\":\"test.krezzlu.com\",\"type\":\"A\",\"content\":\"62.178.168.183\",\"proxiable\":true,\"proxied\":false,\"ttl\":1,\"settings\":{},\"meta\":{},\"comment\":null,\"tags\":[],\"created_on\":\"2025-03-23T19:03:26.528913Z\",\"modified_on\":\"2025-03-23T19:37:55.913022Z\"}],\"success\":true,\"errors\":[],\"messages\":[],\"result_info\":{\"page\":1,\"per_page\":100,\"count\":4,\"total_count\":4,\"total_pages\":1}}'"}
|
63
nix/module.nix
Normal file
63
nix/module.nix
Normal file
@ -0,0 +1,63 @@
|
||||
inputs: {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.cloudns;
|
||||
package = inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||
inherit (lib) mkIf mkEnableOption mkOption types;
|
||||
|
||||
format = pkgs.formats.json {};
|
||||
configFile = format.generate "config.json" cfg.settings;
|
||||
in {
|
||||
options.cloudns = {
|
||||
enable = mkEnableOption "cloudns";
|
||||
|
||||
timer = lib.mkOption {
|
||||
type = types.nullOr types.int;
|
||||
default = null;
|
||||
description = lib.mdDoc ''
|
||||
The time interval in seconds the script should be repeated.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = with types; let
|
||||
valueType = nullOr (oneOf [
|
||||
# TODO: restrict type to actual config file structure
|
||||
bool
|
||||
int
|
||||
float
|
||||
str
|
||||
path
|
||||
(attrsOf valueType)
|
||||
(listOf valueType)
|
||||
]);
|
||||
in
|
||||
valueType;
|
||||
default = throw "Please specify cloudns.settings";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [package];
|
||||
|
||||
systemd.services.cloudns = mkIf (cfg.timer != null) {
|
||||
script = "${package}/bin/cloudns --config ${configFile}";
|
||||
requires = ["network-online.target"];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.timers.cloudns = mkIf (cfg.timer != null) {
|
||||
wantedBy = ["timers.target"];
|
||||
timerConfig = {
|
||||
OnBootSec = "0s";
|
||||
OnUnitActiveSec = "${toString cfg.timer}s";
|
||||
Unit = "dcloudns.service";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
40
pyproject.toml
Normal file
40
pyproject.toml
Normal file
@ -0,0 +1,40 @@
|
||||
[project]
|
||||
name = "cloudns"
|
||||
version = "0.1.0"
|
||||
requires-python = "~=3.12, <4"
|
||||
dependencies = ["requests~=2.32.3", "pydantic~=2.10.5"]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"pytest~=8.3",
|
||||
"mypy~=1.13",
|
||||
"pylint~=3.3",
|
||||
"types-requests~=2.32.0.20241016",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
cloudns = "cloudns.main:main"
|
||||
|
||||
[build-system]
|
||||
requires = ["setuptools~=75.1"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
where = ["src"]
|
||||
|
||||
[tool.setuptools.package-data]
|
||||
cloudns = ["py.typed"]
|
||||
|
||||
[tool.autopep8]
|
||||
max_line_length = 150
|
||||
|
||||
[tool.pylint.'MESSAGES CONTROL']
|
||||
disable = [
|
||||
"line-too-long",
|
||||
"missing-module-docstring",
|
||||
"missing-class-docstring",
|
||||
"missing-function-docstring",
|
||||
"too-few-public-methods",
|
||||
"broad-exception-caught",
|
||||
"logging-fstring-interpolation",
|
||||
]
|
1
src/cloudns/__init__.py
Normal file
1
src/cloudns/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .main import run
|
3
src/cloudns/__main__.py
Normal file
3
src/cloudns/__main__.py
Normal file
@ -0,0 +1,3 @@
|
||||
from .main import main
|
||||
|
||||
main()
|
110
src/cloudns/cloudns.py
Normal file
110
src/cloudns/cloudns.py
Normal file
@ -0,0 +1,110 @@
|
||||
import re
|
||||
from typing import Iterable, Literal
|
||||
|
||||
import requests
|
||||
|
||||
from .logger import getLogger
|
||||
|
||||
|
||||
LOGGER = getLogger('cloudns')
|
||||
|
||||
|
||||
class ZoneNotFoundError(Exception):
|
||||
pass
|
||||
|
||||
class CouldNotGetIPError(Exception):
|
||||
pass
|
||||
|
||||
class APIError(Exception):
|
||||
pass
|
||||
|
||||
def get_current_ip(resolvers: Iterable[str]) -> str:
|
||||
'''
|
||||
Go through resolvers until one returns an IP.
|
||||
|
||||
`resolvers` A list of IP resolvers.
|
||||
|
||||
`log` A function which takes a string and logs it.
|
||||
'''
|
||||
|
||||
for resolver in resolvers:
|
||||
response = requests.get(resolver, timeout = 5)
|
||||
|
||||
if not response.ok:
|
||||
LOGGER.warning(f"[ERROR][{resolver}][{response.status_code}] {response.text}", extra = { 'resolver': resolver, 'status_code': response.status_code, 'content': response.content })
|
||||
|
||||
current_ip = response.text.strip()
|
||||
|
||||
# It suffices to check whether the search is not None since the regex matches from beginning to end.
|
||||
is_ipv4 = re.search(r'^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$', current_ip) is not None
|
||||
|
||||
if is_ipv4:
|
||||
LOGGER.debug(f"[OK][{resolver}] Current IP: '{current_ip}'", extra = { 'resolver': resolver, 'current_ip': current_ip })
|
||||
return current_ip # Break if we have found our IP
|
||||
|
||||
LOGGER.warning(f"[WARNING][{resolver}] '{current_ip}' is not IPv4", extra = { 'resolver': resolver, 'ip': current_ip })
|
||||
|
||||
raise CouldNotGetIPError('Could not get IP.')
|
||||
|
||||
def _cloudflare_api_request(method: Literal['GET', 'OPTIONS', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'], endpoint: str, api_key: str, headers: dict | None = None, timeout: int | None = 5, **kwargs) -> dict:
|
||||
response = requests.request(
|
||||
method,
|
||||
f'https://api.cloudflare.com/client/v4/{endpoint}',
|
||||
headers = {
|
||||
'Authorization': f'Bearer {api_key}',
|
||||
'Content-Type': 'application/json'
|
||||
} | (headers or {}),
|
||||
timeout = timeout,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
LOGGER.debug('Issued Cloudflare API request.', extra = { 'method': method, 'endpoint': endpoint, 'headers': headers, 'kwargs': kwargs, 'status_code': response.status_code, 'content': response.content })
|
||||
|
||||
if not response.ok:
|
||||
LOGGER.error('', extra = { 'status_code': response.status_code, 'content': response.content })
|
||||
raise APIError(response.content)
|
||||
|
||||
result = response.json()
|
||||
|
||||
if not result['success']:
|
||||
LOGGER.error('API call was not successful.', extra = { 'status_code': response.status_code, 'content': response.content })
|
||||
raise APIError('API call was not successful.')
|
||||
|
||||
return result['result']
|
||||
|
||||
def api_key_is_valid(api_key: str) -> bool:
|
||||
result = _cloudflare_api_request('GET', 'user/tokens/verify', api_key)
|
||||
return result['status'] == 'active'
|
||||
|
||||
def get_zone_id(api_key: str, domain: str) -> str:
|
||||
result = _cloudflare_api_request('GET', 'zones', api_key, params = { 'name': domain })
|
||||
|
||||
if len(result) != 1:
|
||||
message = f"Expected a list of length '1' but got length '{len(result)}'"
|
||||
raise ZoneNotFoundError(message)
|
||||
|
||||
return result[0]['id']
|
||||
|
||||
def get_A_records(api_key: str, zone_id: str) -> dict: # pylint: disable=invalid-name
|
||||
result = _cloudflare_api_request('GET', f'zones/{zone_id}/dns_records', api_key, params = { 'type': 'A' })
|
||||
return result
|
||||
|
||||
def create_A_record(api_key: str, zone_id: str, name: str, value: str) -> None: # pylint: disable=invalid-name
|
||||
_cloudflare_api_request(
|
||||
'POST',
|
||||
f'zones/{zone_id}/dns_records',
|
||||
api_key,
|
||||
json = {
|
||||
'type': 'A',
|
||||
'name': name,
|
||||
'content': value
|
||||
}
|
||||
)
|
||||
|
||||
def update_A_record(api_key: str, zone_id: str, record_id: str, value: str) -> None: # pylint: disable=invalid-name
|
||||
_cloudflare_api_request(
|
||||
'PATCH',
|
||||
f'/zones/{zone_id}/dns_records/{record_id}',
|
||||
api_key,
|
||||
json = { 'content': value }
|
||||
)
|
3
src/cloudns/logger/__init__.py
Normal file
3
src/cloudns/logger/__init__.py
Normal file
@ -0,0 +1,3 @@
|
||||
from logging import Logger, getLogger
|
||||
|
||||
from .logger import setup_logging
|
175
src/cloudns/logger/logger.py
Normal file
175
src/cloudns/logger/logger.py
Normal file
@ -0,0 +1,175 @@
|
||||
import sys
|
||||
import json
|
||||
import logging
|
||||
import logging.config
|
||||
import logging.handlers
|
||||
import atexit
|
||||
from datetime import datetime, timezone
|
||||
from typing_extensions import override
|
||||
|
||||
|
||||
|
||||
LOG_RECORD_BUILTIN_ATTRS = {
|
||||
"args",
|
||||
"asctime",
|
||||
"created",
|
||||
"exc_info",
|
||||
"exc_text",
|
||||
"filename",
|
||||
"funcName",
|
||||
"levelname",
|
||||
"levelno",
|
||||
"lineno",
|
||||
"module",
|
||||
"msecs",
|
||||
"message",
|
||||
"msg",
|
||||
"name",
|
||||
"pathname",
|
||||
"process",
|
||||
"processName",
|
||||
"relativeCreated",
|
||||
"stack_info",
|
||||
"thread",
|
||||
"threadName",
|
||||
"taskName",
|
||||
}
|
||||
|
||||
|
||||
class JSONFormatter(logging.Formatter):
|
||||
|
||||
def __init__(self, *, fmt_keys: dict[str, str] | None = None):
|
||||
super().__init__()
|
||||
self.fmt_keys = fmt_keys if fmt_keys is not None else {}
|
||||
|
||||
@override
|
||||
def format(self, record: logging.LogRecord) -> str:
|
||||
message = self._prepare_log_dict(record)
|
||||
return json.dumps(message, default=str)
|
||||
|
||||
def _prepare_log_dict(self, record: logging.LogRecord) -> dict:
|
||||
always_fields = {
|
||||
'message': record.getMessage(),
|
||||
'timestamp': datetime.fromtimestamp(
|
||||
record.created, tz=timezone.utc
|
||||
).isoformat()
|
||||
}
|
||||
|
||||
if record.exc_info is not None:
|
||||
always_fields['exc_info'] = self.formatException(record.exc_info)
|
||||
|
||||
if record.stack_info is not None:
|
||||
always_fields['stack_info'] = self.formatStack(record.stack_info)
|
||||
|
||||
message = {
|
||||
key: msg_value
|
||||
if (msg_value := always_fields.pop(value, None)) is not None
|
||||
else getattr(record, value)
|
||||
for key, value in self.fmt_keys.items()
|
||||
}
|
||||
|
||||
message.update(always_fields)
|
||||
|
||||
for key, value in record.__dict__.items():
|
||||
if key not in LOG_RECORD_BUILTIN_ATTRS:
|
||||
message[key] = value
|
||||
|
||||
return message
|
||||
|
||||
|
||||
class NonErrorFilter(logging.Filter):
|
||||
@override
|
||||
def filter(self, record: logging.LogRecord) -> bool | logging.LogRecord:
|
||||
return record.levelno <= logging.INFO
|
||||
|
||||
|
||||
def generate_log_config(log_path: str | None = None, backup_count: int = 3, max_bytes: int = 1024 * 1024 * 10) -> dict:
|
||||
logger_config: dict = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
'filters': {
|
||||
'no_errors': {
|
||||
"()": NonErrorFilter
|
||||
}
|
||||
},
|
||||
'formatters': {
|
||||
'simple': {
|
||||
'format': '[%(asctime)s][%(levelname)s] %(message)s',
|
||||
'datefmt': '%Y-%m-%d %H:%M:%S'
|
||||
},
|
||||
'detailed': {
|
||||
'format': '[%(asctime)s][%(levelname)s] %(message)s',
|
||||
'datefmt': '%Y-%m-%dT%H:%M:%S%z' # ISO-8601 Timestamp
|
||||
},
|
||||
'json': {
|
||||
'()': JSONFormatter,
|
||||
'fmt_keys': {
|
||||
'timestamp': 'timestamp',
|
||||
'level': 'levelname',
|
||||
'message': 'message',
|
||||
'logger': 'name',
|
||||
'module': 'module',
|
||||
'function': 'funcName',
|
||||
'line': 'lineno',
|
||||
'thread_name': 'threadName'
|
||||
},
|
||||
}
|
||||
},
|
||||
'handlers': {
|
||||
'stdout': {
|
||||
'class': logging.StreamHandler,
|
||||
'level': 'DEBUG',
|
||||
'filters': ['no_errors'],
|
||||
'formatter': 'simple',
|
||||
'stream': 'ext://sys.stdout'
|
||||
},
|
||||
'stderr': {
|
||||
'class': logging.StreamHandler,
|
||||
'level': 'WARNING',
|
||||
'formatter': 'simple',
|
||||
'stream': 'ext://sys.stderr'
|
||||
}
|
||||
} | ({'file': {
|
||||
'class': logging.handlers.RotatingFileHandler,
|
||||
'level': 'DEBUG',
|
||||
'formatter': 'json',
|
||||
'filename': log_path,
|
||||
'maxBytes': max_bytes,
|
||||
'backupCount': backup_count
|
||||
}} if log_path is not None else {}),
|
||||
'loggers': {
|
||||
'root': {
|
||||
'level': 'DEBUG',
|
||||
'handlers': [
|
||||
'stdout',
|
||||
'stderr'
|
||||
] + (['file'] if log_path is not None else []),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if sys.version_info >= (3, 12): # Python 3.12+
|
||||
logger_config['handlers']['queue_handler'] = {
|
||||
'class': logging.handlers.QueueHandler,
|
||||
'respect_handler_level': True,
|
||||
'handlers': [
|
||||
'stdout',
|
||||
'stderr'
|
||||
] + (['file'] if log_path is not None else []),
|
||||
}
|
||||
|
||||
logger_config['loggers']['root']['handlers'] = ['queue_handler']
|
||||
|
||||
return logger_config
|
||||
|
||||
|
||||
def setup_logging(log_path: str | None = None, backup_count: int = 3, max_bytes: int = 1024 * 1024 * 10) -> None:
|
||||
log_config = generate_log_config(
|
||||
log_path if log_path != '-' else None, backup_count, max_bytes)
|
||||
logging.config.dictConfig(log_config)
|
||||
|
||||
if sys.version_info >= (3, 12): # Python 3.12+
|
||||
queue_handler = logging.getHandlerByName('queue_handler')
|
||||
if queue_handler is not None:
|
||||
queue_handler.listener.start() # type: ignore
|
||||
atexit.register(queue_handler.listener.stop) # type: ignore
|
123
src/cloudns/main.py
Normal file
123
src/cloudns/main.py
Normal file
@ -0,0 +1,123 @@
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import shutil
|
||||
from typing import Any
|
||||
|
||||
from typing_extensions import Sequence
|
||||
|
||||
from .logger import setup_logging, getLogger
|
||||
from .types import Config
|
||||
from . import cloudns
|
||||
|
||||
|
||||
def parse_args(args: Sequence[str]):
|
||||
|
||||
class EnvDefault(argparse.Action):
|
||||
# Custom action to enable environment variables
|
||||
# https://stackoverflow.com/questions/10551117/setting-options-from-environment-variables-when-using-argparse/10551190#10551190
|
||||
def __init__(self, envvar: str, const: Any | None = None, default: Any = None, required: bool = True, **kwargs):
|
||||
if envvar in os.environ:
|
||||
default = os.environ[envvar] if const is None else const
|
||||
|
||||
if const is not None:
|
||||
required = False
|
||||
kwargs['const'] = const
|
||||
kwargs['nargs'] = 0 # no additional arguments are expected
|
||||
|
||||
# Make the argument optional if a default is determined
|
||||
if default is not None:
|
||||
required = False
|
||||
|
||||
super().__init__(default=default, required=required, metavar=envvar, **kwargs)
|
||||
|
||||
def __call__(self, parser, namespace, values, option_string=None):
|
||||
# If const is defined (store_const behavior), set it directly
|
||||
setattr(namespace, self.dest, self.const if self.const is not None else values)
|
||||
|
||||
def formatter(prog):
|
||||
return argparse.ArgumentDefaultsHelpFormatter(prog, max_help_position=shutil.get_terminal_size().columns)
|
||||
|
||||
parser = argparse.ArgumentParser(formatter_class=formatter)
|
||||
|
||||
parser.add_argument(
|
||||
'-c', '--config', type = argparse.FileType('r'),
|
||||
action = EnvDefault, envvar = 'CLOUDNS_CONFIG',
|
||||
default = './config.json',
|
||||
help = 'Path to config file in JSON format.'
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'-d', '--dry-run', type = bool,
|
||||
action = EnvDefault, envvar = 'CLOUDNS_DRY_RUN',
|
||||
const = True, default = False,
|
||||
help = 'Do not commit any changes'
|
||||
)
|
||||
|
||||
return parser.parse_args(args)
|
||||
|
||||
|
||||
def run(argv: Sequence[str]) -> None: # pylint: disable=too-many-locals
|
||||
# Parse command-line parameters
|
||||
args = parse_args(argv) # pylint: disable=unused-variable
|
||||
|
||||
config = Config.model_validate_json(args.config.read())
|
||||
|
||||
print(config.log_path)
|
||||
setup_logging(config.log_path)
|
||||
logger = getLogger('cloudns')
|
||||
logger.debug('Started program.', extra = { 'argv': argv })
|
||||
|
||||
try:
|
||||
current_ip = cloudns.get_current_ip(config.resolvers)
|
||||
|
||||
for api_key, domains in config.api.items():
|
||||
if not cloudns.api_key_is_valid(api_key):
|
||||
logger.error(f"API key ending in '{api_key[-4:]}' is not active.")
|
||||
continue
|
||||
|
||||
zones = {}
|
||||
for domain in domains:
|
||||
try:
|
||||
zones[domain] = cloudns.get_zone_id(api_key, domain)
|
||||
except cloudns.ZoneNotFoundError as err:
|
||||
logger.exception(err)
|
||||
|
||||
records_to_update = {} # { ('sub_domain', 'domain'): ('zone_id', 'record_id' | None) }
|
||||
for domain, zone_id in zones.items():
|
||||
records = { record['name']: record for record in cloudns.get_A_records(api_key, zone_id) }
|
||||
for sub_domain in domains[domain]:
|
||||
full_domain = f'{sub_domain}.{domain}' if sub_domain != '@' else domain
|
||||
if full_domain not in records:
|
||||
logger.info(f"Could not find an A record for '{full_domain}'. Will be created.", extra = { 'sub': sub_domain, 'domain': domain })
|
||||
records_to_update[(sub_domain, domain)] = (zone_id, None)
|
||||
continue
|
||||
|
||||
if (record := records[full_domain])['content'] != current_ip:
|
||||
logger.info(f"IP for '{full_domain}' does not match current IP. Will be updated.", extra = { 'sub': sub_domain, 'domain': domain, 'content': record['content'] })
|
||||
records_to_update[(sub_domain, domain)] = (zone_id, record['id'])
|
||||
|
||||
# Update/Create A Records #
|
||||
if args.dry_run:
|
||||
continue
|
||||
|
||||
for (sub, domain), (zone_id, record_id) in records_to_update.items():
|
||||
full_domain = f'{sub}.{domain}' if sub != '@' else domain
|
||||
|
||||
if record_id is None:
|
||||
# Create record
|
||||
cloudns.create_A_record(api_key, zone_id, full_domain, current_ip)
|
||||
logger.info(f"A record for '{full_domain}' created.", extra = { 'sub': sub, 'domain': domain })
|
||||
continue
|
||||
|
||||
# Update Record
|
||||
cloudns.update_A_record(api_key, zone_id, record_id, current_ip)
|
||||
logger.info(f"'A record for '{full_domain}' updated.", extra = { 'sub': sub, 'domain': domain })
|
||||
|
||||
except Exception as err:
|
||||
logger.exception(err)
|
||||
raise err from err
|
||||
|
||||
|
||||
def main() -> None:
|
||||
run(sys.argv[1:])
|
0
src/cloudns/py.typed
Normal file
0
src/cloudns/py.typed
Normal file
19
src/cloudns/types.py
Normal file
19
src/cloudns/types.py
Normal file
@ -0,0 +1,19 @@
|
||||
from os import path
|
||||
|
||||
from typing_extensions import Self
|
||||
from pydantic import BaseModel, Field, model_validator
|
||||
|
||||
class Config(BaseModel):
|
||||
api: dict[str, dict[str, set[str]]]
|
||||
resolvers: list[str]
|
||||
log_path: str | None = Field(alias = 'log-path', default = None)
|
||||
|
||||
@model_validator(mode = 'after')
|
||||
def check_if_api_key_is_path(self) -> Self:
|
||||
for key in set(self.api.keys()):
|
||||
if path.exists(key):
|
||||
with open(key, encoding = 'utf-8') as file:
|
||||
api_key = file.read().strip()
|
||||
self.api[api_key] = self.api.pop(key)
|
||||
|
||||
return self
|
5
tests/__main__.py
Normal file
5
tests/__main__.py
Normal file
@ -0,0 +1,5 @@
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
retcode = pytest.main(sys.argv[1:])
|
2
tests/test_imports.py
Normal file
2
tests/test_imports.py
Normal file
@ -0,0 +1,2 @@
|
||||
def test_import():
|
||||
import cloudns # pylint: disable=unused-import,import-outside-toplevel
|
Loading…
Reference in New Issue
Block a user