Skip to content

Instantly share code, notes, and snippets.

@alastairmccormack
Created January 21, 2016 14:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alastairmccormack/c6665981c8f899e7a5fb to your computer and use it in GitHub Desktop.
Save alastairmccormack/c6665981c8f899e7a5fb to your computer and use it in GitHub Desktop.
Migrate 123-reg DNS entries to AWS Route53
import boto.route53
import boto.regioninfo
import requests
import logging
DOMAIN = ""
USERNAME_123REG = ""
PASSWORD_123REG = ""
AWS_ACCESS = ""
AWS_SECRET = ""
AWS_REGION = "eu-west-1"
# Init
logging.basicConfig(level=logging.INFO)
## 123-reg
### Setup
session = requests.session()
base_page_resp = session.get("https://www.123-reg.co.uk")
xss_token = ( base_page_resp.cookies["PSGI-XSRF-Token"])
### Login
login_headers = {"PSGI-XSRF-Token": xss_token}
login_params = {"username": USERNAME_123REG,
"password": PASSWORD_123REG,
"X-CSRF-Token": xss_token,
"login": "Log Me In",
"login_submit": None}
login_resp = session.post("https://www.123-reg.co.uk/public/login", data=login_params)
login_resp.raise_for_status()
### Domain data
dns_entries_resp = session.post("https://www.123-reg.co.uk/secure/cpanel/manage-dns/get_dns", data={"domain": DOMAIN})
dns_entries_resp.raise_for_status()
dns_entries = dns_entries_resp.json()["json"]["dns"]["records"]
### AWS
r53_conn = boto.route53.connect_to_region(region_name=AWS_REGION, aws_access_key_id=AWS_ACCESS, aws_secret_access_key=AWS_SECRET)
# Main
zone = r53_conn.get_zone(DOMAIN)
if not zone:
logging.info("Creating new zone for: %s", DOMAIN)
zone = r53_conn.create_zone(DOMAIN)
for record in dns_entries:
if record["type"] not in ["NS","SOA"]:
rname = record["host"].strip(".") + "." + DOMAIN
logging.info("Creating: type:{resource_type}, name:{name}, value:{value}, ttl:{ttl}".format( resource_type=record["type"],
name=rname,
value=record["data"],
ttl=record["record_ttl"]))
zone.add_record(resource_type=record["type"], name=rname, value=record["data"], ttl=record["record_ttl"],
comment="imported from 123-reg")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment