v-list-web-domain-ssl 4.1 KB

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