@@ -5804,7 +5804,7 @@ list() {
58045804 _sep=" |"
58055805 if [ " $_raw " ]; then
58065806 if [ -z " $_domain " ]; then
5807- printf " %s\n" " Main_Domain${_sep} KeyLength${_sep} SAN_Domains${_sep} CA${_sep} Created${_sep} Renew"
5807+ printf " %s\n" " Main_Domain${_sep} KeyLength${_sep} SAN_Domains${_sep} Profile ${_sep} CA${_sep} Created${_sep} Renew"
58085808 fi
58095809 for di in " ${CERT_HOME} " /* .* /; do
58105810 d=$( basename " $di " )
@@ -5819,7 +5819,7 @@ list() {
58195819 . " $DOMAIN_CONF "
58205820 _ca=" $( _getCAShortName " $Le_API " ) "
58215821 if [ -z " $_domain " ]; then
5822- printf " %s\n" " $Le_Domain ${_sep} \" $Le_Keylength \" ${_sep} $Le_Alt ${_sep} $_ca ${_sep} $Le_CertCreateTimeStr ${_sep} $Le_NextRenewTimeStr "
5822+ printf " %s\n" " $Le_Domain ${_sep} \" $Le_Keylength \" ${_sep} $Le_Alt ${_sep} $Le_Certificate_Profile ${_sep} $ _ca${_sep} $Le_CertCreateTimeStr ${_sep} $Le_NextRenewTimeStr "
58235823 else
58245824 if [ " $_domain " = " $d " ]; then
58255825 cat " $DOMAIN_CONF "
@@ -5838,6 +5838,48 @@ list() {
58385838
58395839}
58405840
5841+ list_profiles () {
5842+ _initpath
5843+ _initAPI
5844+
5845+ _l_server_url=" $ACME_DIRECTORY "
5846+ _l_server_name=" $( _getCAShortName " $_l_server_url " ) "
5847+ _info " Fetching profiles from $_l_server_name ($_l_server_url )..."
5848+
5849+ response=$( _get " $_l_server_url " " " 10)
5850+ if [ " $? " != " 0" ]; then
5851+ _err " Failed to connect to CA directory: $_l_server_url "
5852+ return 1
5853+ fi
5854+
5855+ normalized_response=$( echo " $response " | _normalizeJson)
5856+ profiles_json=$( echo " $normalized_response " | _egrep_o ' "profiles" *: *\{[^\}]*\}' )
5857+
5858+ if [ -z " $profiles_json " ]; then
5859+ _info " The CA '$_l_server_name ' does not publish certificate profiles via its directory endpoint."
5860+ return 0
5861+ fi
5862+
5863+ # Strip the outer layer to get the key-value pairs
5864+ profiles_kv=$( echo " $profiles_json " | sed ' s/"profiles" *: *{//' | sed ' s/}$//' | tr ' ,' ' \n' )
5865+
5866+ printf " \n%-15s %s\n" " name" " info"
5867+ printf -- " --------------------------------------------------------------------\n"
5868+
5869+ _old_IFS=" $IFS "
5870+ IFS='
5871+ '
5872+ for pair in $profiles_kv ; do
5873+ # Trim quotes and whitespace
5874+ _name=$( echo " $pair " | cut -d: -f1 | tr -d ' " \t' )
5875+ _info_url=$( echo " $pair " | cut -d: -f2- | sed ' s/^ *//' | tr -d ' "' )
5876+ printf " %-15s %s\n" " $_name " " $_info_url "
5877+ done
5878+ IFS=" $_old_IFS "
5879+
5880+ return 0
5881+ }
5882+
58415883_deploy () {
58425884 _d=" $1 "
58435885 _hooks=" $2 "
@@ -7498,6 +7540,9 @@ _process() {
74987540 --set-default-chain)
74997541 _CMD=" setdefaultchain"
75007542 ;;
7543+ --list-profiles)
7544+ _CMD=" list_profiles"
7545+ ;;
75017546 -d | --domain)
75027547 _dvalue=" $2 "
75037548
@@ -8063,6 +8108,9 @@ _process() {
80638108 setdefaultchain)
80648109 setdefaultchain " $_preferred_chain "
80658110 ;;
8111+ list_profiles)
8112+ list_profiles
8113+ ;;
80668114 * )
80678115 if [ " $_CMD " ]; then
80688116 _err " Invalid command: $_CMD "
0 commit comments