#!/bin/bash PROGRAM="$(basename $0)" time_started=$(date -u +%s.%N) ss=$(echo $time_started | cut -d '.' -f 1) nss=$(echo $time_started | cut -d '.' -f 2) # Check if there are enough arguments if [ $# -lt 1 ] then echo "Error: Not enough arguments provided" echo "Give a zblock's IPFS CID v0 as an argument" exit 1 fi if [ -n "$1" ] then TEST="$(echo -n "$1" | grep -v '^Qm[A-Za-z0-9]\{44\}$')" if [ -n "$TEST" ] then echo not ok exit 1 fi fi arg="$(mktemp)" ak-enter -l 1 "$1" | jq '.[]' > $arg ( \ # Create HTML document echo "<!DOCTYPE html>" echo "<html>" echo "<head>" echo " <title>Arching Kaos Chain Data</title>" echo ' <meta charset="UTF-8">' echo ' <meta name="viewport" content="width=device-width, initial-scale=1">' echo ' <style> body { background-color: #000; color: lightgreen; padding: 2%; width: auto; font-family: monospace; font-size: 1rem; } h1, h2, h3, h4 { text-align: left; } pre { text-align: initial; background-color: #090909; border: 1px dashed #444; font-size: 1rem; padding: 1vh 1vw; margin: 0; } a, p, summary { background: #061624; border: 1px solid #827c7c; padding: 1vh 1vw; margin: 0; color: lightgreen; font-style: normal; text-decoration: none; } details { /*! padding: 1vh 1vw; */ border: 1px dotted; background-color: #1d4055; } footer { text-align: center; } </style>' echo "</head>" echo "<body>" # Iterate through each argument and parse data if [ -f "$arg" ] then # Extract data from argument zblock=$(cat $arg | jq -r '.zblock') block=$(cat $arg | jq -r '.block') timestamp=$(cat $arg | jq -r '.timestamp') block_signature=$(cat $arg | jq -r '.block_signature') detach=$(cat $arg | jq -r '.detach') data=$(cat $arg | jq -r '.data') module=$(cat $arg | jq -r '.module') action=$(cat $arg | jq -r '.action') gpg=$(cat $arg | jq -r '.gpg') previous=$(cat $arg | jq -r '.previous') datablock=$(cat $arg | jq -r ".$data") # Output data in HTML format echo " <h1>$PROGRAM</h1>" echo " <h2>🔎 $zblock</h2>" echo " <table>" echo " <tr>" echo " <td>" echo " <pre>📦 ZBLOCK</pre>" echo " </td>" echo " <td>" echo " <details>" echo " <summary>$zblock</summary>" echo " <pre>$(ak-ipfs-cat $zblock | jq)</pre>" echo " </details>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>📦 BLOCK</pre>" echo " </td>" echo " <td>" echo " <details>" echo " <summary>$block</summary>" echo " <pre>$(ak-ipfs-cat $block | jq)</pre>" echo " </details>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>🔏 BLOCK SIGNATURE</pre>" echo " </td>" echo " <td>" echo " <details>" echo " <summary>$block_signature</summary>" echo " <pre>$(ak-ipfs-cat $block_signature)</pre>" echo " </details>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>⌚ TIMESTAMP</pre>" echo " </td>" echo " <td>" echo " <p>$timestamp</p>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>🔌 MODULE</pre>" echo " </td>" echo " <td>" echo " <p>$module</p>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>🪧 ACTION</pre>" echo " </td>" echo " <td>" echo " <p>$action</p>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>🔑 GPG</pre>" echo " </td>" echo " <td>" echo " <details>" echo " <summary>$gpg</summary>" echo " <pre>$(ak-ipfs-cat $gpg)</pre>" echo " </details>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>📦 PREVIOUS</pre>" echo " </td>" echo " <td>" echo ' <a target="_blank" href="http://z.kaotisk-hund.com/files/zblocks-as-html/zblock-'$previous'.html">🔗 '$previous'</a>' echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>📦 DATA</pre>" echo " </td>" echo " <td>" echo " <details>" echo " <summary>$data</summary>" echo " <pre>$datablock</pre>" echo " </details>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>🔏 DATA_SIGNATURE</pre>" echo " </td>" echo " <td>" echo " <details>" echo " <summary>$detach</summary>" echo " <pre>$(ak-ipfs-cat $detach)</pre>" echo " </details>" echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>📄 ipfs</pre>" echo " </td>" echo " <td>" echo ' <a target="_blank" href="http://gw.ipfs.z.kaotisk-hund.com/ipfs/'$(echo $datablock | jq -r '.ipfs')'">'🔗 $(echo $datablock | jq -r '.ipfs')'</a>' echo " </td>" echo " </tr>" echo " <tr>" echo " <td>" echo " <pre>🔏 detach</pre>" echo " </td>" echo " <td>" echo " <details>" echo " <summary>$(echo $datablock | jq -r '.detach')</summary>" echo " <pre>$(ak-ipfs-cat $(echo $datablock | jq -r '.detach'))</pre>" echo " </details>" echo " </td>" echo " </tr>" echo " </table>" echo " <pre>📃 Rendered ZBLOCK</pre>" echo " <pre>$(cat $arg | jq)</pre>" fi time_ended=$(date -u +%s.%N) se=$(echo $time_ended | cut -d '.' -f 1) nse=$(echo $time_ended | cut -d '.' -f 2) echo " <hr>" echo -n " <footer>Generated by $PROGRAM on $(datehuman) in $(( $se - $ss ))." if [ $nse -lt $nss ] then echo "$(( 1$nse - $nss )) seconds</footer>" else echo "$(( $nse - $(echo -n $nss|sed 's/^0*//') )) seconds</footer>" fi echo "</body>" echo "</html>" ) > zblock-$1.html rm $arg