Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python2.5
- # -*- coding: utf-8 -*-
- #
- # Name: autochange.py
- # Desc: domain ip changer for 2domains.ru registrator
- # Author: Bushmanov Efim
- # Date: 17.11.2014
- # Release: 0.1beta
- # Site: http://seo-coding.ru/2015/01/avtomatizatsiya-smenyi-ip-v-adminke-2domains/
- #
- #
- import os
- import sys
- import time
- import re
- import urllib
- import urllib2
- import cookielib
- import httplib
- COOKIE_FILE_TMPL = ".cookies/%s/cookie.txt"
- COOKIE_DIR_TMPL = ".cookies/"
- DEBUG = 0
- DEBUG_REPLY = 0
- #
- # do_login function
- #
- def do_login(cmsuser, cmspass):
- #
- # load main page with form
- #
- reqUrl = 'https://reg.2domains.ru/'
- f = urllib2.urlopen(reqUrl)
- data = f.read()
- if (DEBUG):
- print "MAIN PAGE"
- #print data
- #
- # request N1 (POST QUERY)
- #
- refererUrl = 'https://reg.2domains.ru/login.php'
- reqUrl = 'https://reg.2domains.ru/login.php'
- reqData = urllib.urlencode({'ret': '/',
- 'email': cmsuser,
- 'passwd': cmspass,
- 'login': 'Войти'}
- )
- req = urllib2.Request(url=reqUrl, data=reqData)
- req.add_header('Referer', refererUrl)
- f = urllib2.urlopen(req)
- data = f.read()
- if (DEBUG):
- print "LOGIN ANSWER\n"
- print data
- re_getbackurl = re.compile(r'logout.php')
- m = re.search(re_getbackurl, data)
- if (m):
- print "Login success: " + cmsuser
- else:
- print "Login fail, check login and pass"
- return "fail"
- return "ok"
- #
- # do_add_dnsname function
- #
- def do_add_dnsname(domain_id, d_name, d_ip):
- refererUrl = 'https://reg.2domains.ru/zone_control/index.php?domain_id=' + domain_id
- reqUrl = 'https://reg.2domains.ru/zone_control/index.php'
- reqData = urllib.urlencode({
- 'domain_id': domain_id,
- 'service_id': 0,
- 'subname_1': d_name,
- 'rectype_1': "A",
- 'data_1': d_ip,
- 'subname_2': "",
- 'rectype_2': "A",
- 'data_2': "",
- 'subname_3': "",
- 'rectype_3': "A",
- 'data_3': "",
- 'subname_4': "",
- 'rectype_4': "A",
- 'data_4': "",
- 'subname_5': "",
- 'rectype_5': "A",
- 'data_5': "",
- 'zone_add': 'Добавить',
- })
- req = urllib2.Request(url=reqUrl, data=reqData)
- req.add_header('Referer', refererUrl)
- f = urllib2.urlopen(req)
- data = f.read()
- if (DEBUG):
- f = open("_domain_add.txt", "w")
- f.write(data)
- f.close()
- if (DEBUG):
- print "NAME ADD ANSWER\n"
- print data
- return "ok"
- #
- #
- #
- def do_del_record(delstr):
- posturl = "https://reg.2domains.ru/zone_control/del.php?data="+delstr;
- print posturl
- reqUrl = posturl
- f = urllib2.urlopen(reqUrl)
- data = f.read()
- if (DEBUG):
- print "DO DEL RECORD"
- #print data
- print "OK"
- return
- #
- # do get plaintext domains
- #
- def do_get_textdomains(posturl):
- reqUrl = posturl
- f = urllib2.urlopen(reqUrl)
- data = f.read()
- if (DEBUG):
- print "LOAD TEXT DOMAINS"
- print data
- domains = data.split("\n")
- # show all domains
- for d in domains:
- print d
- return
- #
- # do get domains
- #
- def do_get_domains(posturl):
- reqUrl = posturl
- f = urllib2.urlopen(reqUrl)
- data = f.read()
- if (DEBUG):
- print "LOAD DOMAINS"
- print data
- re_getdomains = re.compile(r'domain_param_tt.php\?c_page=1&domain_id=(\d+).+?<b>(.+?)</b></a>', re.DOTALL|re.MULTILINE)
- domains = re.findall(re_getdomains, data)
- for d in domains:
- print d[1]+": "+d[0]
- return domains
- #
- # do get dnsname
- #
- def do_del_dnsname(posturl):
- reqUrl = posturl
- f = urllib2.urlopen(reqUrl)
- data = f.read()
- if (DEBUG):
- print "LOAD DNSNAME"
- print data
- re_getblock = re.compile(r'<table class="b-profiles.+?">(.+?)</table>', re.DOTALL|re.MULTILINE)
- m = re.search(re_getblock, data)
- if (m):
- block = m.group(1)
- else:
- print "List block with table not found"
- return "fail"
- fields = '<tr.+?>\s+'
- fields+= '<td class="b-table__cell.*?first">(.*?)</td>\s+'
- fields+= '<td class="b-table__cell.*?">(.*?)</td>\s+'
- fields+= '<td class="b-table__cell.*?">(.*?)</td>\s+'
- fields+= '<td class="b-table__cell.*?">(.*?)</td>\s+'
- fields+= '<td class="b-table__cell.*?last">(.*?)</td>\s+'
- fields+= '</tr>'
- re_getdns = re.compile(fields, re.DOTALL|re.MULTILINE)
- list = re.findall(re_getdns, block)
- for p in list:
- delstr = ""
- re_getdelstr = re.compile(r'validate_del_dns_record\(\'(.*?)\'\);')
- mstr = re.search(re_getdelstr, p[4])
- if (mstr):
- delstr_value = mstr.group(1)
- delstr = urllib.pathname2url(delstr_value)
- d_name = p[0]
- d_type = p[1]
- d_ip = p[2]
- d_mx = p[3]
- if (d_type == "A"):
- print "Deleting: "+d_name+" | "+d_type+" | "+d_ip+" | "+d_mx
- do_del_record(delstr)
- f = open("./del_log.txt", "a")
- f.write(d_name+" | "+d_type+" | "+d_ip+" | "+d_mx+"\n")
- f.close()
- return
- #
- # Main process code
- #
- def main_process(cmsuser, cmspass, action, add_ip = None):
- #
- # make ".cookies" dir
- #
- cookies_dir = os.path.join(os.getcwd(), COOKIE_DIR_TMPL)
- if (not(os.path.exists(cookies_dir))):
- os.mkdir(cookies_dir)
- #
- # prepare request cookies
- #
- COOKIE_FILE_PATH = COOKIE_FILE_TMPL % cmsuser
- cookie_file = os.path.join(os.getcwd(), COOKIE_FILE_PATH)
- cj = cookielib.CookieJar()
- cj = cookielib.MozillaCookieJar()
- if (not(os.path.exists(cookie_file))):
- if (not(os.path.exists(os.path.dirname(cookie_file)))):
- os.mkdir(os.path.dirname(cookie_file))
- cj.save(cookie_file)
- cj.load(cookie_file)
- opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
- opener.addheaders = [('User-agent', 'Mozilla/5.0')]
- urllib2.install_opener(opener)
- #
- # Login
- #
- ret = do_login(cmsuser, cmspass)
- if ret == "fail":
- print "Login failed"
- exit(1)
- #
- # List domains
- #
- domains = do_get_domains("https://reg.2domains.ru/domains/?p_page=500")
- if len(domains) == 0:
- print "Get domains failed"
- exit(1)
- #
- # for delete case
- #
- if (action == "delete"):
- for d in domains:
- url = 'https://reg.2domains.ru/zone_control/index.php?domain_id=' + d[0]
- print "Domain: " + d[1] + " "+ d[0]
- f = open("./del_log.txt", "a")
- f.write("Domain: " + d[1] + " "+ d[0] + "\n")
- f.close()
- ret = do_del_dnsname(url)
- if ret == "fail":
- print "Get domains failed"
- exit(1)
- #exit()
- if (action == "add"):
- d_ip = add_ip
- for d in domains:
- url = 'https://reg.2domains.ru/zone_control/index.php?domain_id=' + d[0]
- print "Domain: " + d[1] + " "+ d[0]
- f = open("./add_log.txt", "a")
- f.write("Domain: " + d[1] + " "+ " " + d_ip + "\n")
- f.close()
- print "Add @ " + d_ip;
- ret = do_add_dnsname(d[0], "", d_ip)
- print "Add www " + d_ip;
- ret = do_add_dnsname(d[0], "www", d_ip)
- print "Add ftp " + d_ip;
- ret = do_add_dnsname(d[0], "ftp", d_ip)
- return
- def main():
- """
- cmsuser="your.email@aaaaa.ru"
- cmspass="PASS"
- main_process(cmsuser, cmspass, "delete")
- """
- cmsuser="your.email@aaaaa.ru"
- cmspass="PASS"
- main_process(cmsuser, cmspass, "delete")
- main_process(cmsuser, cmspass, "add", "91.91.100.121")
- return
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement