certs/generate.sh
DevMiner 56baffb242
Some checks failed
Build Docker images / docker (push) Failing after 13m58s
refactor: dynamically generate website
2023-12-01 14:25:32 +01:00

84 lines
1.9 KiB
Bash

#!/bin/sh
mkdir -p /static/certificates
CERT_HTML=$(
cat <<EOF
<li>
<a href="/certificates/{{FILENAME}}" download>
<h2>{{NAME}}</h2>
<span>{{DESCRIPTION}}</span>
<div class="chips">
<div class="chip">
<span>
<span>Expiry</span>
</span>
<span class="local-date-time" data-timestamp="{{EXPIRY_TIMESTAMP}}">{{EXPIRY}}</span>
</div>
<div class="chip">
<span>
<span>SHA256</span>
</span>
<span>
<code>{{SHA256}}</code>
</span>
</div>
<div class="chip">
<span>
<span>SHA1</span>
</span>
<span>
<code>{{SHA1}}</code>
</span>
</div>
<div class="chip">
<span>
<span>MD5</span>
</span>
<span>
<code>{{MD5}}</code>
</span>
</div>
</div>
</a>
</li>
EOF
)
set -e
HTML=""
for CERT in /certs/*; do
file="$CERT/cert.crt"
certname=$(basename "$CERT")
description=$(cat "$CERT/description.txt")
expire_time=$(openssl x509 -enddate -noout -in "$file" | cut -d= -f2)
expire_epoch=$(date -d "$expire_time" +%s)
sha256=$(openssl x509 -in "$file" -noout -sha256 -fingerprint | cut -d= -f2)
sha1=$(openssl x509 -in "$file" -noout -sha1 -fingerprint | cut -d= -f2)
md5=$(openssl x509 -in "$file" -noout -md5 -fingerprint | cut -d= -f2)
component=$(
echo $CERT_HTML |
sed "s|{{NAME}}|$certname|g" |
sed "s|{{FILENAME}}|${certname}.crt|g" |
sed "s|{{DESCRIPTION}}|$description|g" |
sed "s|{{EXPIRY_TIMESTAMP}}|$expire_epoch|g" |
sed "s|{{EXPIRY}}|$expire_time|g" |
sed "s|{{SHA256}}|$sha256|g" |
sed "s|{{SHA1}}|$sha1|g" |
sed "s|{{MD5}}|$md5|g"
)
HTML="$HTML$component"
cp "$file" "/static/certificates/$certname.crt"
done
# replace html
sed -i "s|{{HTML}}|$HTML|g" /static/index.html