You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					129 lines
				
				3.4 KiB
			
		
		
			
		
	
	
					129 lines
				
				3.4 KiB
			| 
								 
											2 years ago
										 
									 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								# info: list hestia ssl certificate
							 | 
						||
| 
								 | 
							
								# options: [FORMAT]
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# example: v-list-sys-hestia-ssl
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This function of obtaining hestia ssl files.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------#
							 | 
						||
| 
								 | 
							
								#                Variables & Functions                     #
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Argument definition
							 | 
						||
| 
								 | 
							
								format=${1-shell}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Includes
							 | 
						||
| 
								 | 
							
								# shellcheck source=/etc/hestiacp/hestia.conf
							 | 
						||
| 
								 | 
							
								source /etc/hestiacp/hestia.conf
							 | 
						||
| 
								 | 
							
								# shellcheck source=/usr/local/hestia/func/main.sh
							 | 
						||
| 
								 | 
							
								source $HESTIA/func/main.sh
							 | 
						||
| 
								 | 
							
								# load config file
							 | 
						||
| 
								 | 
							
								source_conf "$HESTIA/conf/hestia.conf"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# JSON list function
							 | 
						||
| 
								 | 
							
								json_list() {
							 | 
						||
| 
								 | 
							
									echo '{'
							 | 
						||
| 
								 | 
							
									echo -e "\t\"HESTIA\": {"
							 | 
						||
| 
								 | 
							
									echo "        \"CRT\": \"$crt\","
							 | 
						||
| 
								 | 
							
									echo "        \"KEY\": \"$key\","
							 | 
						||
| 
								 | 
							
									echo "        \"CA\": \"$ca\","
							 | 
						||
| 
								 | 
							
									echo "        \"SUBJECT\": \"$subj\","
							 | 
						||
| 
								 | 
							
									echo "        \"ALIASES\": \"$alt_dns\","
							 | 
						||
| 
								 | 
							
									echo "        \"NOT_BEFORE\": \"$before\","
							 | 
						||
| 
								 | 
							
									echo "        \"NOT_AFTER\": \"$after\","
							 | 
						||
| 
								 | 
							
									echo "        \"SIGNATURE\": \"$signature\","
							 | 
						||
| 
								 | 
							
									echo "        \"PUB_KEY\": \"$pub_key\","
							 | 
						||
| 
								 | 
							
									echo "        \"ISSUER\": \"$issuer\""
							 | 
						||
| 
								 | 
							
									echo -e "\t}\n}"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# SHELL list function
							 | 
						||
| 
								 | 
							
								shell_list() {
							 | 
						||
| 
								 | 
							
									if [ -n "$crt" ]; then
							 | 
						||
| 
								 | 
							
										echo -e "$crt"
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									if [ -n "$key" ]; then
							 | 
						||
| 
								 | 
							
										echo -e "\n$key"
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									if [ -n "$crt" ]; then
							 | 
						||
| 
								 | 
							
										echo
							 | 
						||
| 
								 | 
							
										echo
							 | 
						||
| 
								 | 
							
										echo "SUBJECT:        $subj"
							 | 
						||
| 
								 | 
							
										if [ -n "$alt_dns" ]; then
							 | 
						||
| 
								 | 
							
											echo "ALIASES:        ${alt_dns//,/ }"
							 | 
						||
| 
								 | 
							
										fi
							 | 
						||
| 
								 | 
							
										echo "VALID FROM:     $before"
							 | 
						||
| 
								 | 
							
										echo "VALID TIL:      $after"
							 | 
						||
| 
								 | 
							
										echo "SIGNATURE:      $signature"
							 | 
						||
| 
								 | 
							
										echo "PUB_KEY:        $pub_key"
							 | 
						||
| 
								 | 
							
										echo "ISSUER:         $issuer"
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# PLAIN list function
							 | 
						||
| 
								 | 
							
								plain_list() {
							 | 
						||
| 
								 | 
							
									if [ -n "$crt" ]; then
							 | 
						||
| 
								 | 
							
										echo -e "$crt"
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									if [ -n "$key" ]; then
							 | 
						||
| 
								 | 
							
										echo -e "\n$key"
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									if [ -n "$ca" ]; then
							 | 
						||
| 
								 | 
							
										echo -e "\n$ca"
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
									if [ -n "$crt" ]; then
							 | 
						||
| 
								 | 
							
										echo "$subj"
							 | 
						||
| 
								 | 
							
										echo "${alt_dns//,/ }"
							 | 
						||
| 
								 | 
							
										echo "$before"
							 | 
						||
| 
								 | 
							
										echo "$after"
							 | 
						||
| 
								 | 
							
										echo "$signature"
							 | 
						||
| 
								 | 
							
										echo "$pub_key"
							 | 
						||
| 
								 | 
							
										echo "$issuer"
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# CSV list function
							 | 
						||
| 
								 | 
							
								csv_list() {
							 | 
						||
| 
								 | 
							
									echo -n "CRT,KEY,CA,SUBJECT,ALIASES,NOT_BEFORE,NOT_AFTER,SIGNATURE,"
							 | 
						||
| 
								 | 
							
									echo "PUB_KEY,ISSUER"
							 | 
						||
| 
								 | 
							
									echo -n "\"$crt\",\"$key\",\"$ca\",\"$subj\",\"${alt_dns//,/ }\","
							 | 
						||
| 
								 | 
							
									echo "\"$before\",\"$after\",\"$signature\",\"$pub_key\",\"$issuer\""
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------#
							 | 
						||
| 
								 | 
							
								#                       Action                             #
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Parsing SSL certificate
							 | 
						||
| 
								 | 
							
								crt=$(cat $HESTIA/ssl/certificate.crt | sed ':a;N;$!ba;s/\n/\\n/g')
							 | 
						||
| 
								 | 
							
								key=$(cat $HESTIA/ssl/certificate.key | sed ':a;N;$!ba;s/\n/\\n/g')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Parsing SSL certificate details without CA
							 | 
						||
| 
								 | 
							
								info=$(openssl x509 -text -in $HESTIA/ssl/certificate.crt)
							 | 
						||
| 
								 | 
							
								subj=$(echo "$info" | grep Subject: | cut -f 2 -d =)
							 | 
						||
| 
								 | 
							
								before=$(echo "$info" | grep Before: | sed -e "s/.*Before: //")
							 | 
						||
| 
								 | 
							
								after=$(echo "$info" | grep "After :" | sed -e "s/.*After : //")
							 | 
						||
| 
								 | 
							
								signature=$(echo "$info" | grep "Algorithm:" | head -n1)
							 | 
						||
| 
								 | 
							
								signature=$(echo "$signature" | sed -e "s/.*Algorithm: //")
							 | 
						||
| 
								 | 
							
								pub_key=$(echo "$info" | grep Public-Key: | cut -f2 -d \( | tr -d \))
							 | 
						||
| 
								 | 
							
								issuer=$(echo "$info" | grep Issuer: | sed -e "s/.*Issuer: //")
							 | 
						||
| 
								 | 
							
								alt_dns=$(echo "$info" | grep DNS | sed -e 's/DNS:/\n/g' | tr -d ',')
							 | 
						||
| 
								 | 
							
								alt_dns=$(echo "$alt_dns" | tr -d ' ' | sed -e "/^$/d")
							 | 
						||
| 
								 | 
							
								alt_dns=$(echo "$alt_dns" | sed -e ':a;N;$!ba;s/\n/,/g')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Listing data
							 | 
						||
| 
								 | 
							
								case $format in
							 | 
						||
| 
								 | 
							
									json) json_list ;;
							 | 
						||
| 
								 | 
							
									plain) plain_list ;;
							 | 
						||
| 
								 | 
							
									csv) csv_list ;;
							 | 
						||
| 
								 | 
							
									shell) shell_list ;;
							 | 
						||
| 
								 | 
							
								esac
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------#
							 | 
						||
| 
								 | 
							
								#                       Hestia                             #
							 | 
						||
| 
								 | 
							
								#----------------------------------------------------------#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exit
							 |