executable_mjru-dns 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env python3
  2. import requests
  3. import argparse
  4. import os
  5. import json
  6. import sys
  7. import time
  8. from random import choice
  9. from string import ascii_letters, digits
  10. # Ссылка на API Majordomo
  11. api_url = 'https://api.majordomo.ru'
  12. # Авторизация по паре логин-пароль
  13. def get_hms_token(hms_login, hms_passwd):
  14. response = requests.post(api_url + "/oauth/token",
  15. data={'grant_type': 'password',
  16. 'client_id': 'service',
  17. 'client_secret': 'service_secret',
  18. 'username':hms_login,
  19. 'password':hms_passwd})
  20. return json.loads(response.text)
  21. def main():
  22. parser = argparse.ArgumentParser(description="Добавление dns-записей на веб-странице https://hms.majordomo.ru/domain")
  23. parser.add_argument('-i', '--login', required=True,
  24. help='логин вводимый на веб-странице https://www.majordomo.ru/login')
  25. parser.add_argument('-p', '--password', required=True,
  26. help='пароль вводимый на веб-странице https://www.majordomo.ru/login')
  27. parser.add_argument('-d', '--domain', required=True,
  28. help='Имя домена, для которого создается запись, например example.ru')
  29. parser.add_argument('-o', '--owner', required=True,
  30. help='Fully qualified domain name (FQDN), например test.example.ru')
  31. parser.add_argument('-t', '--type', required=True,
  32. help='Type, тип dns-записи ("A", "MX", "TEXT", "CNAME" и т.д.)')
  33. parser.add_argument('-v', '--value', required=True,
  34. help='Значение dns-записи')
  35. parser.add_argument('-T', '--ttl', default='3600',
  36. help='TTL dns-записи')
  37. parser.add_argument('-P', '--prio', default='10',
  38. help='Приоритет dns-записи, по умолчанию отсутствует')
  39. parser.add_argument('-q', '--quite', action='store_true',
  40. help='Режим тишины. Скрывает предупреждения и диагностические сообщения')
  41. args = parser.parse_args()
  42. token = get_hms_token(args.login, args.password)
  43. not args.quite and print(token) # Вывод полученого токена или ошибки
  44. user_token = token['access_token']
  45. # Отправка DNS записи API
  46. response = requests.post(api_url + "/dns-record",
  47. headers={'Authorization': 'Bearer {}'.format(user_token)},
  48. json={"operationIdentity": None,
  49. "params": {"ownerName": args.owner,
  50. "type": args.type,
  51. "data": args.value,
  52. "ttl": int(args.ttl),
  53. "prio": int(args.prio),
  54. "name": args.domain}})
  55. # Вывод состояния операции
  56. not args.quite and print(json.loads(response.text))
  57. if __name__ == "__main__":
  58. main()