52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
"""
|
|
Update my DANE TLSA record
|
|
"""
|
|
import argparse
|
|
import sys
|
|
from api import get_iway_token, logout_iway_token, update_dns_record
|
|
# Call the function to get your token
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Update iWay DNS records via API")
|
|
# Define the required arguments
|
|
parser.add_argument("--domain", required=True, help="The zone domain (e.g., dasbaum.ch)")
|
|
parser.add_argument("--name", required=True, help="Full record name (e.g., _25._tcp.mail.dasbaum.ch)")
|
|
parser.add_argument("--type", required=True, help="Record type (e.g., TLSA, TXT, A, AAAA, CAA)")
|
|
parser.add_argument("--value", required=True, help="The new content/value for the record")
|
|
|
|
# Optional: allow path to config file
|
|
parser.add_argument("--config", default="iway-certbot-dns-auth.yml", help="Path to YAML config")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# 1. Login
|
|
print(f"Authenticating for {args.domain}...")
|
|
auth_token, csrf_token = get_iway_token(args.config)
|
|
if not auth_token or not csrf_token:
|
|
print("Error: Could not obtain authentication tokens.")
|
|
sys.exit(1)
|
|
|
|
try:
|
|
# 2. Perform the update using the arguments
|
|
print(f"Updating {args.type} record for {args.name}...")
|
|
success = update_dns_record(
|
|
domain=args.domain,
|
|
record_name=args.name,
|
|
record_type=args.type,
|
|
new_content=args.value,
|
|
auth_token=auth_token,
|
|
csrf_token=csrf_token
|
|
)
|
|
|
|
if success:
|
|
print("DNS record updated successfully.")
|
|
else:
|
|
print("Failed to update DNS record.")
|
|
sys.exit(1)
|
|
finally:
|
|
# 3. Always try to logout to keep the API session clean
|
|
logout_iway_token(auth_token, csrf_token)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|