From 8bb9b508af7611a71a0d153e540da8726e173fc8 Mon Sep 17 00:00:00 2001
From: Ivor Barhansky <w@lopar.space>
Date: Tue, 27 Sep 2022 11:03:30 +0300
Subject: [PATCH] wip

---
 dns_admtools.sh | 86 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)
 create mode 100644 dns_admtools.sh

diff --git a/dns_admtools.sh b/dns_admtools.sh
new file mode 100644
index 0000000..36db8b5
--- /dev/null
+++ b/dns_admtools.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env sh
+
+## DNSAPI for Acme.sh to work with Ukraine.com.ua (Adm.Tools) API.
+## Author: Ivor 'lopar' Barhansky <me@lopar.space>
+##
+## API Authorization works using Bearer token.
+## Required variable:
+## AT_TOKEN="t8zpe56g8kj8qy8etx6vgo6hokycdrwgw34hufounf97uv4mvo5d8vpy5zpqnw73"
+
+# https://github.com/acmesh-official/acme.sh/wiki/DNS-API-Dev-Guide
+# https://github.com/acmesh-official/acme.sh/blob/master/dnsapi/dns_bunny.sh
+# postman
+
+########  Public functions #####################
+
+## Create the text record for validation.
+## Usage: add _acme-challenge.www.domain.com "XKrxpRBosdIKFzxW_CT3KLZNf6q0HG9i01zxXp5CPBs"
+dns_ukrainecomua_add() {
+  fulldomain=$1
+  txtvalue=$2
+
+    AT_TOKEN="${AT_TOKEN:-$(_readaccountconf_mutable AT_TOKEN)}"
+  if [ -z "$AT_TOKEN" ]; then
+    AT_TOKEN=""
+    _err "You don't specify Adm.Tools API token yet."
+    _err "How to get Api Token: https://www.ukraine.com.ua/wiki/account/api/"
+    return 1
+  fi
+
+  _info "Adm.Tools (Ukraine.com.ua) dns validation - add txt record"
+  _debug fulldomain "$fulldomain"
+  _debug txtvalue "$txtvalue"
+
+  #save the credentials to the account conf file.
+  _saveaccountconf_mutable AT_TOKEN "$AT_TOKEN"
+
+  #Headers
+  export _H1="Accept: application/json"
+  export _H2="Authorization: Bearer $AT_TOKEN"
+  export _H3="Content-Type: application/json"
+  POSTURL="https://adm.tools/action/dns/record_add/"
+  POSTBODY='{"domain_id":'$_domain_id',"type":"'TXT'","record":"'_acme-challenge'","data":"'$txtvalue'"}'
+
+  _debug POSTURL "$POSTURL"
+  _debug POSTBODY "$POSTBODY"
+
+  response="$(_post "$POSTBODY" "$POSTURL")"
+
+
+  #  $post = [
+  #  	'domain_id' => 1348160,
+  #  	'type' => 'TXT',
+  #  	'record' => 'qwester',
+  #  	'priority' => 0,
+  #  	'data' => 'honkeyt-ponkeyt',
+  #
+}
+
+dns_ukrainecomua_rm() {
+  fulldomain=$1
+    txtvalue=$2
+
+      AT_TOKEN="${AT_TOKEN:-$(_readaccountconf_mutable AT_TOKEN)}"
+    if [ -z "$AT_TOKEN" ]; then
+      AT_TOKEN=""
+      _err "You don't specify Adm.Tools API token yet."
+      _err "How to get Api Token: https://www.ukraine.com.ua/wiki/account/api/"
+      return 1
+    fi
+
+    _info "Adm.Tools (Ukraine.com.ua) dns validation - remove txt record"
+    _debug fulldomain "$fulldomain"
+    _debug txtvalue "$txtvalue"
+
+    #Headers
+    export _H1="Accept: application/json"
+    export _H2="Authorization: Bearer $AT_TOKEN"
+    export _H3="Content-Type: application/json"
+    POSTURL="https://adm.tools/action/dns/record_delete/"
+    POSTBODY='{"subdomain_id":'$_subdomain_id'}'
+
+    _debug POSTURL "$POSTURL"
+    _debug POSTBODY "$POSTBODY"
+}
+
+####################  Private functions below ##################################