[pve-devel] [Patch V2 acme 05/12] Implement feature setup and teardown functionality.

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Apr 1 15:26:30 CEST 2020


On March 31, 2020 12:08 pm, Wolfgang Link wrote:
> We use these functions to add and remove a txt record via the dnsapi.
> 
> Signed-off-by: Wolfgang Link <w.link at proxmox.com>
> ---
>  src/proxmox-acme | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 68 insertions(+)
> 
> diff --git a/src/proxmox-acme b/src/proxmox-acme
> index f7a6757..1cfb8f6 100644
> --- a/src/proxmox-acme
> +++ b/src/proxmox-acme
> @@ -1,5 +1,12 @@
>  #!/usr/bin/env sh
>  
> +VER=0.9
> +
> +PROJECT_NAME="ProxmoxACME"
> +
> +USER_AGENT="$PROJECT_NAME/$VER"
> +
> +DNS_PLUGIN_PATH="/usr/share/proxmox-ve/proxmox-acme/dnsapi"
>  HTTP_HEADER="$(mktemp)"
>  
>  _base64() {
> @@ -581,3 +588,64 @@ _load_plugin_config() {
>  	index="$(_math "$index" - 1)"
>      done
>  }
> +
> +# call setup and teardown direct
> +# the parameter must be set in the correct order
> +# $1 <String> DNS Plugin name
> +# $2 <String> Fully Qualified Domain Name
> +# $3 <String> value for TXT record
> +# $4 <String> DNS plugin auth and config parameter separated by ","

potentially brittle, as "," could be contained in some variable. 
alternative: encode the full multiline key-value string as base64? or 
pass it in via STDIN here?

> +
> +setup() {
> +  dns_plugin="dns_$1"
> +  dns_plugin_path="${DNS_PLUGIN_PATH}/${dns_plugin}.sh"
> +  fqdn="_acme-challenge.$2"
> +  txtvalue=$3
> +  plugin_conf_sting=$4

s/sting/string

> +
> +  _load_plugin_config
> +
> +  if ! . "$dns_plugin_path"; then
> +    _err "Load file $dns_plugin error."
> +    return 1
> +  fi
> +
> +  addcommand="${dns_plugin}_add"
> +  if ! _exists "$addcommand"; then
> +    _err "It seems that your api file is not correct, it must have a function named: $addcommand"
> +    return 1
> +  fi
> +
> +  if ! $addcommand "$fqdn" "$txtvalue"; then
> +    _err "Error add txt for domain:$fulldomain"
> +    return 1
> +  fi
> +}
> +
> +teardown() {
> +  dns_plugin="dns_$1"
> +  dns_plugin_path="${DNS_PLUGIN_PATH}/${dns_plugin}.sh"
> +  fqdn="_acme-challenge.$2"
> +  txtvalue=$3
> +  plugin_conf_sting=$4

s/sting/string

same as above ;)

> +
> +  _load_plugin_config
> +
> +  if ! . "$dns_plugin_path"; then
> +    _err "Load file $dns_plugin error."
> +    return 1
> +  fi
> +
> +  rmcommand="${dns_plugin}_rm"
> +  if ! _exists "$rmcommand"; then
> +    _err "It seems that your api file is not correct, it must have a function named: $rmcommand"
> +    return 1
> +  fi
> +
> +  if ! $rmcommand "$fqdn" "$txtvalue"; then
> +    _err "Error add txt for domain:$fulldomain"
> +    return 1
> +  fi
> +}
> +
> +"$@"
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 




More information about the pve-devel mailing list