| | #!/usr/bin/env python |
---|
| | #!/usr/bin/env python3 |
---|
| | # -*- encoding: UTF8 -*- |
---|
| | |
---|
| | # author: Pascal Gollor (https://gitbucket.pgollor.de) |
---|
| | # author: InterNetworX, info →AT→ inwx.de |
---|
| | |
---|
| | |
---|
| | from inwx.inwx import domrobot#, prettyprint |
---|
| | from inwx.configuration import get_account_data |
---|
| | from INWX.Domrobot import ApiClient |
---|
| | from configuration import get_account_data |
---|
| | import argparse |
---|
| | |
---|
| | |
---|
| | def main(args): |
---|
| |
---|
| | # split domain |
---|
| | h = domain.split('.') |
---|
| | if (len(h) < 3): |
---|
| | raise ValueError("invalid subdomain") |
---|
| | # end if |
---|
| | sub = h[0] |
---|
| | for i in range(1, len(h)-2): |
---|
| | sub += '.' + h[i] |
---|
| | domain = h[-2] + '.' + h[-1] |
---|
| | |
---|
| | if (args.debug): |
---|
| | print(args) |
---|
| | # end if |
---|
| | |
---|
| | api_url, username, password, shared_secret = get_account_data(True, config_file=args.config_file, config_section=args.config_section) |
---|
| | inwx_conn = domrobot(api_url, False) |
---|
| | ret = inwx_conn.account.login({'lang': args.language, 'user': username, 'pass': password}) |
---|
| | # get config and login |
---|
| | username, password, shared_secret = get_account_data(True, config_file=args.config_file, config_section=args.config_section) |
---|
| | debug_mode = False |
---|
| | api_url = ApiClient.API_LIVE_URL |
---|
| | if (args.config_section == "ote"): |
---|
| | debug_mode = True |
---|
| | api_url = ApiClient.API_OTE_URL |
---|
| | api_client = ApiClient(api_url=api_url, debug_mode=debug_mode) |
---|
| | ret = api_client.login(username, password) |
---|
| | if (ret['code'] != 1000): |
---|
| | raise RuntimeError('Api login error. Code: ' + str(ret['code']) + ' Message: ' + ret['msg']) |
---|
| | if (verbose): |
---|
| | print("login: " + str(ret)) |
---|
| | # end if |
---|
| | print("login: ", ret) |
---|
| | |
---|
| | |
---|
| | # check domain |
---|
| | ret = inwx_conn.nameserver.list({'domain': domain}) |
---|
| | ret = api_client.call_api(api_method='nameserver.list', method_params={'domain': domain}) |
---|
| | if (verbose): |
---|
| | print('list: ' + str(ret)) |
---|
| | # end if |
---|
| | print('list: ', ret) |
---|
| | if (ret['code'] != 1000): |
---|
| | raise RuntimeError('Api call error. Code: ' + str(ret['code']) + ' Message: ' + ret['msg']) |
---|
| | if (ret['resData']['count'] == 0): |
---|
| | raise RuntimeError("You are not user of this domain.") |
---|
| | # end if |
---|
| | |
---|
| | |
---|
| | # looking if subdomain exists |
---|
| | subId = -1 |
---|
| | ret = inwx_conn.nameserver.info({'domain': domain}) |
---|
| | ret = api_client.call_api(api_method='nameserver.info', method_params={'domain': domain}) |
---|
| | if (ret['code'] != 1000): |
---|
| | raise RuntimeError('Api call error. Code: ' + str(ret['code']) + ' Message: ' + ret['msg']) |
---|
| | records = ret['resData']['record'] |
---|
| | |
---|
| | for r in records: |
---|
| | if (r['name'] == args.domain and r['type'] == args.record_type): |
---|
| | subId = r['id'] |
---|
| | if (verbose): |
---|
| | print(r) |
---|
| | # end if |
---|
| | break |
---|
| | # end if |
---|
| | # end for |
---|
| | |
---|
| | if (args.delete): |
---|
| | if (subId >= 0): |
---|
| | if (verbose): |
---|
| | print ("delete id: " + str(subId)) |
---|
| | # end if |
---|
| | ret = inwx_conn.nameserver.deleteRecord({'id': subId}) |
---|
| | print ("delete id: ", subId) |
---|
| | ret = api_client.call_api(api_method='nameserver.deleteRecord', method_params={'id': subId}) |
---|
| | if (ret['code'] != 1000): |
---|
| | raise RuntimeError('Api call error. Code: ' + str(ret['code']) + ' Message: ' + ret['msg']) |
---|
| | else: |
---|
| | ret = None |
---|
| | # end if |
---|
| | else: |
---|
| | if (not args.update or subId < 0): |
---|
| | ret = inwx_conn.nameserver.createRecord({'domain': domain, 'name': sub, 'type': args.record_type, 'content': str(args.content), 'ttl': args.ttl}) |
---|
| | ret = api_client.call_api(api_method='nameserver.createRecord', method_params={'domain': domain, 'name': sub, 'type': args.record_type, 'content': str(args.content), 'ttl': args.ttl}) |
---|
| | if (ret['code'] != 1000): |
---|
| | raise RuntimeError('Api call error. Code: ' + str(ret['code']) + ' Message: ' + ret['msg']) |
---|
| | if (verbose): |
---|
| | print('create: ' + str(ret)) |
---|
| | # end if |
---|
| | print('create: ', ret) |
---|
| | else: |
---|
| | ret = inwx_conn.nameserver.updateRecord({'id': subId, 'type': args.record_type, 'content': str(args.content), 'ttl': args.ttl}) |
---|
| | ret = api_client.call_api(api_method='nameserver.updateRecord', method_params={'id': subId, 'type': args.record_type, 'content': str(args.content), 'ttl': args.ttl}) |
---|
| | if (ret['code'] != 1000): |
---|
| | raise RuntimeError('Api call error. Code: ' + str(ret['code']) + ' Message: ' + ret['msg']) |
---|
| | if (verbose): |
---|
| | print('update: ' + str(ret)) |
---|
| | # end if |
---|
| | print('update: ', ret) |
---|
| | # end if |
---|
| | # end if |
---|
| | |
---|
| | api_client.logout() |
---|
| | |
---|
| | # end main |
---|
| | |
---|
| | |
---|
| |
---|
| | try: |
---|
| | main(args) |
---|
| | except NameError as e: |
---|
| | print(e.args[0]) |
---|
| | except RuntimeError as e: |
---|
| | print(e.args[0]) |
---|
| | # end try |
---|
| | # end if |
---|
| | |
---|
| | # end if |
---|
| | |