Initial Commit

This commit is contained in:
Neill Cox 2024-08-10 14:13:07 +10:00
commit 05c2e5e81f
17 changed files with 1197 additions and 0 deletions

87
ah_tools/main.py Normal file
View file

@ -0,0 +1,87 @@
# Script to check the details of an ah-hosted domain.
# Check NS, www adress, domain A records, MX records
import argparse
import dns.resolver
AH_SERVERS = {
"159.203.100.138":"platypus-2",
"128.199.219.144":"wp-01.ace-hosting.com.au",
"172.104.183.16:":"kultarra.ace-hosting.com.au/wp-02.ace-hosting.com.au",
"198.199.121.45":"wp-03.ace-hosting.com.au",
"112.213.34.61":"wp-04.ace-hosting.com.au",
"170.64.172.115":"wp-05.ace-hosting.com.au",
"43.229.63.127":"wp-06.ace-hosting.com.au",
"172.104.61.71": "makinmattresses.com.au",
}
def get_ah_server_name(ip):
try:
name = AH_SERVERS[ip]
except KeyError:
name = "is not an Ace Server"
return name
def parse_arguments():
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--domain", type=str, required=True, help="The domain to check")
parser.add_argument("-f", "--output-format", type=str, choices=["text", "json"], default="text", help="Output format. Text of json")
args = parser.parse_args()
return args
def lookup_a_record_for_mx(mx):
answer = dns.resolver.resolve(mx, "A")[0]
return get_ah_server_name(answer.address)
def main():
# Use a breakpoint in the code line below to debug your script.
args = parse_arguments()
try:
answers = dns.resolver.resolve(args.domain, "NS")
for rdata in answers:
ip = rdata.to_text()
print(f"NS record for {args.domain} = {ip}")
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
print(f"NS record for {args.domain} Not found")
try:
answers = dns.resolver.resolve(args.domain, "A")
for rdata in answers:
ip = rdata.to_text()
print(f"A record for {args.domain} = {ip}({get_ah_server_name(ip)})")
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
print(f"A record for {args.domain} Not found")
try:
answers = dns.resolver.resolve("www." + args.domain, "A")
for rdata in answers:
for rdata in answers:
ip = rdata.to_text()
print(f"A record for {'www.' + args.domain} = {ip}({get_ah_server_name(ip)})")
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
print(f"A record for {'www.' + args.domain} not found")
try:
answers = dns.resolver.resolve(args.domain, "MX")
for rdata in answers:
host = rdata.exchange
# preference = rdata.preference
if "google" in str(host):
print ("MX: google")
elif "outlook" in str(host):
print ("MX: outlook")
else:
print(f"MX: {host}({lookup_a_record_for_mx(host)})")
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
print(f"MX record for {args.domain} not found")
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
main()