From b3e1fb80fd156b6fa3d73792fc3e50df8cb10d5a Mon Sep 17 00:00:00 2001 From: taishan69 Date: Tue, 21 Feb 2017 09:04:11 -0600 Subject: [PATCH] Add Infoblox DNS API support Written in concert with one of my colleagues, this script adds Infoblox API support to acme.sh --- dns_infoblox.sh | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 dns_infoblox.sh diff --git a/dns_infoblox.sh b/dns_infoblox.sh new file mode 100644 index 00000000..a91f2127 --- /dev/null +++ b/dns_infoblox.sh @@ -0,0 +1,78 @@ + +#!/usr/bin/env sh + +dns_infoblox_add() { + + fulldomain=$1 + txtvalue=$2 + baseurlnObject="https://$Infoblox_Server/wapi/v2.2.2/record:txt?name=$fulldomain&text=$txtvalue" + _info "Using Infoblox API" + _debug fulldomain "$fulldomain" + _debug txtvalue "$txtvalue" + #_err "Not implemented!" + + if [ -z "$Infoblox_Creds" ] || [ -z "$Infoblox_Server" ]; then + Infoblox_Creds="" + Infoblox_Server="" + _err "You didn't specify the credentials or server yet (Infoblox_Creds and Infoblox_Server)." + _err "Please set them via EXPORT ([username:password] and [ip or hostname]) and try again." + return 1 + fi + + #save the login info to the account conf file. + _saveaccountconf Infoblox_Creds "$Infoblox_Creds" + _saveaccountconf Infoblox_Server "$Infoblox_Server" + +result=`curl -k -u $Infoblox_Creds -X POST $baseurlnObject` + +if [[ $result =~ record:txt/.*:.*/default ]]; then + echo "Successfully created the txt record" + return 0 +else + echo "Error encountered during record addition" + echo $result + _err $result + return 1 +fi + +} + +dns_infoblox_rm() { + + fulldomain=$1 + txtvalue=$2 + _info "Using Infoblox API" + _debug fulldomain "$fulldomain" + _debug txtvalue "$txtvalue" + + # Does the record exist? +baseurlnObject="https://$Infoblox_Server/wapi/v2.2.2/record:txt?name=$fulldomain&text=$txtvalue&_return_type=xml-pretty" +echo $baseurlnObject + +result=`curl -k -u $Infoblox_Creds -X GET $baseurlnObject` + +if [[ $result =~ record:txt/.*:.*/default ]]; then + # Extract object ref + objRef=`grep -Po 'record:txt/.*:.*/default' <<< $result` + objRmUrl="https://$Infoblox_Server/wapi/v2.2.2/$objRef" + rmResult=`curl -k -u $Infoblox_Creds -X DELETE $objRmUrl` + # Check if rm succeeded + if [[ $rmResult =~ record:txt/.*:.*/default ]]; then + echo "Successfully deleted $objRef" + return 0 + else + echo "Error occurred during txt record delete" + echo $rmResult + _err $rmResult + return 1 + fi +else + echo "Record to delete didn't match an existing record" + echo $result + _err $result + return 1 +fi + +} + +#################### Private functions below ##################################