v-list-web-domain-ssl 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #!/bin/bash
  2. # info: list web domain ssl certificate
  3. # options: USER DOMAIN [FORMAT]
  4. #
  5. # The function of obtaining domain ssl files.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. user=$1
  11. domain=$2
  12. format=${3-shell}
  13. # Includes
  14. source $HESTIA/func/main.sh
  15. # JSON list function
  16. json_list() {
  17. issuer=$(echo "$issuer" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
  18. echo '{'
  19. echo -e "\t\"$domain\": {"
  20. echo " \"CRT\": \"$crt\","
  21. echo " \"KEY\": \"$key\","
  22. echo " \"CA\": \"$ca\","
  23. echo " \"SUBJECT\": \"$subj\","
  24. echo " \"ALIASES\": \"$alt_dns\","
  25. echo " \"NOT_BEFORE\": \"$before\","
  26. echo " \"NOT_AFTER\": \"$after\","
  27. echo " \"SIGNATURE\": \"$signature\","
  28. echo " \"PUB_KEY\": \"$pub_key\","
  29. echo " \"ISSUER\": \"$issuer\","
  30. echo " \"SSL_FORCE\": \"$SSL_FORCE\""
  31. echo -e "\t}\n}"
  32. }
  33. # SHELL list function
  34. shell_list() {
  35. if [ ! -z "$crt" ]; then
  36. echo -e "$crt"
  37. fi
  38. if [ ! -z "$key" ]; then
  39. echo -e "\n$key"
  40. fi
  41. if [ ! -z "$ca" ]; then
  42. echo -e "\n$ca"
  43. fi
  44. if [ ! -z "$crt" ]; then
  45. echo
  46. echo
  47. echo "SUBJECT: $subj"
  48. if [ ! -z "$alt_dns" ]; then
  49. echo "ALIASES: ${alt_dns//,/ }"
  50. fi
  51. echo "VALID FROM: $before"
  52. echo "VALID TIL: $after"
  53. echo "SIGNATURE: $signature"
  54. echo "PUB_KEY: $pub_key"
  55. echo "ISSUER: $issuer"
  56. echo "SSL_FORCE: $SSL_FORCE"
  57. fi
  58. }
  59. # PLAIN list function
  60. plain_list() {
  61. if [ ! -z "$crt" ]; then
  62. echo -e "$crt"
  63. fi
  64. if [ ! -z "$key" ]; then
  65. echo -e "\n$key"
  66. fi
  67. if [ ! -z "$ca" ]; then
  68. echo -e "\n$ca"
  69. fi
  70. if [ ! -z "$crt" ]; then
  71. echo "$subj"
  72. echo "${alt_dns//,/ }"
  73. echo "$before"
  74. echo "$after"
  75. echo "$signature"
  76. echo "$pub_key"
  77. echo "$issuer"
  78. echo "$SSL_FORCE"
  79. fi
  80. }
  81. # CSV list function
  82. csv_list() {
  83. echo -n "CRT,KEY,CA,SUBJECT,ALIASES,NOT_BEFORE,NOT_AFTER,SIGNATURE,"
  84. echo "PUB_KEY,ISSUER,SSL_FORCE"
  85. echo -n "\"$crt\",\"$key\",\"$ca\",\"$subj\",\"${alt_dns//,/ }\","
  86. echo "\"$before\",\"$after\",\"$signature\",\"$pub_key\",\"$issuer\",\"$SSL_FORCE\""
  87. }
  88. #----------------------------------------------------------#
  89. # Verifications #
  90. #----------------------------------------------------------#
  91. check_args '2' "$#" 'USER DOMAIN [FORMAT]'
  92. is_format_valid 'user' 'domain'
  93. is_object_valid 'user' 'USER' "$user"
  94. is_object_valid 'web' 'DOMAIN' "$domain"
  95. #----------------------------------------------------------#
  96. # Action #
  97. #----------------------------------------------------------#
  98. # Load domain data
  99. eval $(grep "DOMAIN='$domain'" $USER_DATA/web.conf)
  100. # Parsing domain SSL certificate
  101. if [ -e "$USER_DATA/ssl/$domain.crt" ]; then
  102. crt=$(cat $USER_DATA/ssl/$domain.crt |sed ':a;N;$!ba;s/\n/\\n/g')
  103. info=$(openssl x509 -text -in $USER_DATA/ssl/$domain.crt)
  104. subj=$(echo "$info" |grep Subject: |sed -e "s/\"//g" -e "s/.*= //")
  105. before=$(echo "$info" |grep Before: |sed -e "s/.*Before: //")
  106. after=$(echo "$info" |grep "After :" |sed -e "s/.*After : //")
  107. signature=$(echo "$info" |grep "Algorithm:" |head -n1 )
  108. signature=$(echo "$signature"| sed -e "s/.*Algorithm: //")
  109. pub_key=$(echo "$info" |grep Public-Key: |cut -f2 -d \( | tr -d \))
  110. issuer=$(echo "$info" |grep Issuer: |sed -e "s/.*Issuer: //")
  111. alt_dns=$(echo "$info" |grep DNS |sed -e 's/DNS:/\n/g' |tr -d ',')
  112. alt_dns=$(echo "$alt_dns" |tr -d ' ' |sed -e "/^$/d")
  113. alt_dns=$(echo "$alt_dns" |sed -e ':a;N;$!ba;s/\n/,/g')
  114. fi
  115. if [ -e "$USER_DATA/ssl/$domain.key" ]; then
  116. key=$(cat $USER_DATA/ssl/$domain.key |sed ':a;N;$!ba;s/\n/\\n/g')
  117. fi
  118. if [ -e "$USER_DATA/ssl/$domain.ca" ]; then
  119. ca=$(cat $USER_DATA/ssl/$domain.ca |sed ':a;N;$!ba;s/\n/\\n/g')
  120. fi
  121. # Listing data
  122. case $format in
  123. json) json_list ;;
  124. plain) plain_list ;;
  125. csv) csv_list ;;
  126. shell) shell_list ;;
  127. esac
  128. #----------------------------------------------------------#
  129. # Hestia #
  130. #----------------------------------------------------------#
  131. exit