Compare commits

..

3 Commits

2 changed files with 245 additions and 14 deletions

View File

@@ -23,8 +23,8 @@ The following API endpoints are the ones that will be supported, the currently i
- [ ] [Domain Delete Url Forward](https://porkbun.com/api/json/v3/documentation#Domain%20Delete%20URL%20Forward) - [ ] [Domain Delete Url Forward](https://porkbun.com/api/json/v3/documentation#Domain%20Delete%20URL%20Forward)
- DNS - DNS
- [x] [DNS Create Record](https://porkbun.com/api/json/v3/documentation#DNS%20Create%20Record) - [x] [DNS Create Record](https://porkbun.com/api/json/v3/documentation#DNS%20Create%20Record)
- [ ] [DNS Edit Record by Domain and ID](https://porkbun.com/api/json/v3/documentation#DNS%20Edit%20Record%20by%20Domain%20and%20ID) - [x] [DNS Edit Record by Domain and ID](https://porkbun.com/api/json/v3/documentation#DNS%20Edit%20Record%20by%20Domain%20and%20ID)
- [ ] [DNS Edit Records by Domain, Subdomain and Type](https://porkbun.com/api/json/v3/documentation#DNS%20Edit%20Record%20by%20Domain,%20Subdomain%20and%20Type) - [x] [DNS Edit Records by Domain, Subdomain and Type](https://porkbun.com/api/json/v3/documentation#DNS%20Edit%20Record%20by%20Domain,%20Subdomain%20and%20Type)
- [x] [DNS Delete Record by Domain and ID](https://porkbun.com/api/json/v3/documentation#DNS%20Delete%20Record%20by%20Domain%20and%20ID) - [x] [DNS Delete Record by Domain and ID](https://porkbun.com/api/json/v3/documentation#DNS%20Delete%20Record%20by%20Domain%20and%20ID)
- [ ] [DNS Delete Records by Domain, Subdomain and Type](https://porkbun.com/api/json/v3/documentation#DNS%20Delete%20Records%20by%20Domain,%20Subdomain%20and%20Type) - [ ] [DNS Delete Records by Domain, Subdomain and Type](https://porkbun.com/api/json/v3/documentation#DNS%20Delete%20Records%20by%20Domain,%20Subdomain%20and%20Type)
- [ ] [DNS Retrieve Records by Domain or ID](https://porkbun.com/api/json/v3/documentation#DNS%20Retrieve%20Records%20by%20Domain%20or%20ID) - [ ] [DNS Retrieve Records by Domain or ID](https://porkbun.com/api/json/v3/documentation#DNS%20Retrieve%20Records%20by%20Domain%20or%20ID)

View File

@@ -8,7 +8,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# Environment file with API_KEY and SECRET_KEY # Environment file with API_KEY and SECRET_KEY
ENV_FILE="$SCRIPT_DIR/.env" ENV_FILE="$SCRIPT_DIR/.env"
VERSION="0.2.0" VERSION="0.3.0"
# Porkbun API base url # Porkbun API base url
BASE_URL=https://api.porkbun.com/api/json/v3 BASE_URL=https://api.porkbun.com/api/json/v3
@@ -196,22 +196,12 @@ function ping {
echo $(request "$BASE_URL/ping") echo $(request "$BASE_URL/ping")
} }
# TODO: implement method
function ping_help {
echo "TODO"
}
HANDLE_PING_IPV4="ping-ipv4" HANDLE_PING_IPV4="ping-ipv4"
function ping_ipv4 { function ping_ipv4 {
echo $(request "$BASE_URL_IPV4/ping") echo $(request "$BASE_URL_IPV4/ping")
} }
# TODO: implement method
function ping_ipv4_help {
echo "TODO"
}
# endregion # endregion
################################################### ###################################################
@@ -306,6 +296,11 @@ function handle_dns {
$PARAM_HELP_SHORT|$PARAM_HELP) $PARAM_HELP_SHORT|$PARAM_HELP)
handle_dns_help handle_dns_help
;; ;;
$HANDLE_DNS_EDIT)
shift
handle_dns_edit $@
;;
$DNS_CREATE_RECORD) $DNS_CREATE_RECORD)
shift shift
@@ -330,9 +325,246 @@ function handle_dns_help {
echo echo
echo "Commands:" echo "Commands:"
echo " $DNS_CREATE_RECORD Create a DNS record" echo " $DNS_CREATE_RECORD Create a DNS record"
echo " $HANDLE_DNS_EDIT Edit DNS record(s)"
echo " $DNS_DELETE_RECORD Delete a DNS record" echo " $DNS_DELETE_RECORD Delete a DNS record"
} }
HANDLE_DNS_EDIT="edit"
function handle_dns_edit {
case $1 in
$PARAM_HELP_SHORT|$PARAM_HELP)
handle_dns_edit_help
;;
$DNS_EDIT_RECORD)
shift
handle_show_help_on_error dns_edit_record $@
;;
$DNS_EDIT_RECORDS)
shift
handle_show_help_on_error dns_edit_records $@
;;
*)
handle_dns_edit_help
exit 1
;;
esac
}
function handle_dns_edit_help {
echo "Usage: $0 $HANDLE_DNS $HANDLE_DNS_EDIT <command>"
echo
echo "Commands:"
echo " $DNS_EDIT_RECORD Edit a DNS record by Domain and ID"
echo " $DNS_EDIT_RECORDS Edit DNS records by Domain, Subdomain, and Type"
}
DNS_EDIT_RECORD="record"
function dns_edit_record {
while [[ $# -gt 0 ]]; do
case $1 in
$PARAM_DOMAIN_SHORT|$PARAM_DOMAIN)
DOMAIN="$2"
shift
shift
;;
$PARAM_ID_SHORT|$PARAM_ID)
ID="$2"
shift
shift
;;
$PARAM_NAME_SHORT|$PARAM_NAME)
NAME="$2"
shift
shift
;;
$PARAM_TYPE_SHORT|$PARAM_TYPE)
TYPE="$2"
shift
shift
;;
$PARAM_CONTENT_SHORT|$PARAM_CONTENT)
CONTENT="$2"
shift
shift
;;
$PARAM_TTL_SHORT|$PARAM_TTL)
TTL="$2"
shift
shift
;;
$PARAM_PRIORITY_SHORT|$PARAM_PRIORITY)
PRIORITY="$2"
shift
shift
;;
-*|--*)
echo "Unknown option $1"
exit 1
;;
*)
shift
;;
esac
done
if [[ -z $DOMAIN || -z $ID || -z $TYPE || -z $CONTENT ]]; then
echo "Missing domain, id, type, or content parameters"
exit 1
fi
PAYLOAD="
\"type\": \"$TYPE\",
\"content\": \"$CONTENT\"
"
if [[ ! -z $NAME ]]; then
PAYLOAD="
$PAYLOAD,
\"name\": \"$NAME\"
"
fi
if [[ ! -z $TTL ]]; then
PAYLOAD="
$PAYLOAD,
\"ttl\": \"$TTL\"
"
fi
if [[ ! -z $PRIORITY ]]; then
PAYLOAD="
$PAYLOAD,
\"prio\": \"$PRIORITY\"
"
fi
echo $(request "$BASE_URL/dns/edit/$DOMAIN/$ID" "$PAYLOAD")
}
function dns_edit_record_help {
echo "Usage: $0 $HANDLE_DNS $HANDLE_DNS_EDIT $DNS_EDIT_RECORD [OPTIONS]"
echo
echo "Options:"
echo " $PARAM_DOMAIN_SHORT, $PARAM_DOMAIN"
echo " The domain for the record being created."
echo " $PARAM_ID_SHORT, $PARAM_ID"
echo " The ID of the record."
echo " $PARAM_NAME_SHORT, $PARAM_NAME (optional)"
echo " The subdomain for the record being created, not including the domain itself. Leave blank to create a record on the root domain. Use * to create a wildcard record."
echo " $PARAM_TYPE_SHORT, $PARAM_TYPE"
echo " The type of record being created. Valid types are: A, MX, CNAME, ALIAS, TXT, NS, AAAA, SRV, TLSA, CAA"
echo " $PARAM_CONTENT_SHORT, $PARAM_CONTENT"
echo " The answer content for the record. Please see the DNS management popup from the domain management console for proper formatting of each record type."
echo " $PARAM_TTL_SHORT, $PARAM_TTL (optional)"
echo " The time to live in seconds for the record. The minimum and the default is 600 seconds."
echo " $PARAM_PRIORITY_SHORT, $PARAM_PRIORITY (optional)"
echo " The priority of the record for those that support it."
}
DNS_EDIT_RECORDS="records"
function dns_edit_records {
while [[ $# -gt 0 ]]; do
case $1 in
$PARAM_DOMAIN_SHORT|$PARAM_DOMAIN)
DOMAIN="$2"
shift
shift
;;
$PARAM_TYPE_SHORT|$PARAM_TYPE)
TYPE="$2"
shift
shift
;;
$PARAM_NAME_SHORT|$PARAM_NAME)
NAME="$2"
shift
shift
;;
$PARAM_CONTENT_SHORT|$PARAM_CONTENT)
CONTENT="$2"
shift
shift
;;
$PARAM_TTL_SHORT|$PARAM_TTL)
TTL="$2"
shift
shift
;;
$PARAM_PRIORITY_SHORT|$PARAM_PRIORITY)
PRIORITY="$2"
shift
shift
;;
-*|--*)
echo "Unknown option $1"
exit 1
;;
*)
shift
;;
esac
done
if [[ -z $DOMAIN || -z $TYPE || -z $CONTENT ]]; then
echo "Missing domain, type, or content parameters"
exit 1
fi
URL="$BASE_URL/dns/editByNameType/$DOMAIN/$TYPE"
PAYLOAD="
\"content\": \"$CONTENT\"
"
if [[ ! -z $NAME ]]; then
URL="$URL/$NAME"
fi
if [[ ! -z $TTL ]]; then
PAYLOAD="
$PAYLOAD,
\"ttl\": \"$TTL\"
"
fi
if [[ ! -z $PRIORITY ]]; then
PAYLOAD="
$PAYLOAD,
\"prio\": \"$PRIORITY\"
"
fi
echo $(request "$URL" "$PAYLOAD")
}
function dns_edit_records_help {
echo "Usage: $0 $HANDLE_DNS $HANDLE_DNS_EDIT $DNS_EDIT_RECORDS [OPTIONS]"
echo
echo "Options:"
echo " $PARAM_DOMAIN_SHORT, $PARAM_DOMAIN"
echo " The domain for the record being created."
echo " $PARAM_TYPE_SHORT, $PARAM_TYPE"
echo " The type of record being created. Valid types are: A, MX, CNAME, ALIAS, TXT, NS, AAAA, SRV, TLSA, CAA"
echo " $PARAM_NAME_SHORT, $PARAM_NAME (optional)"
echo " The subdomain for the record being created, not including the domain itself. Leave blank to create a record on the root domain. Use * to create a wildcard record."
echo " $PARAM_CONTENT_SHORT, $PARAM_CONTENT"
echo " The answer content for the record. Please see the DNS management popup from the domain management console for proper formatting of each record type."
echo " $PARAM_TTL_SHORT, $PARAM_TTL (optional)"
echo " The time to live in seconds for the record. The minimum and the default is 600 seconds."
echo " $PARAM_PRIORITY_SHORT, $PARAM_PRIORITY (optional)"
echo " The priority of the record for those that support it."
}
DNS_CREATE_RECORD="create" DNS_CREATE_RECORD="create"
function dns_create_record { function dns_create_record {
@@ -414,7 +646,6 @@ function dns_create_record {
echo $(request "$BASE_URL/dns/create/$DOMAIN" "$PAYLOAD") echo $(request "$BASE_URL/dns/create/$DOMAIN" "$PAYLOAD")
} }
function dns_create_record_help { function dns_create_record_help {
echo "Usage: $0 $HANDLE_DNS $DNS_CREATE_RECORD [OPTIONS]" echo "Usage: $0 $HANDLE_DNS $DNS_CREATE_RECORD [OPTIONS]"
echo echo