_ak_html
1 #!/usr/bin/env bash 2 ### 3 ### arching-kaos-tools 4 ### Tools to interact and build an Arching Kaos Infochain 5 ### Copyright (C) 2021 - 2026 kaotisk 6 ### 7 ### This program is free software: you can redistribute it and/or modify 8 ### it under the terms of the GNU General Public License as published by 9 ### the Free Software Foundation, either version 3 of the License, or 10 ### (at your option) any later version. 11 ### 12 ### This program is distributed in the hope that it will be useful, 13 ### but WITHOUT ANY WARRANTY; without even the implied warranty of 14 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 ### GNU General Public License for more details. 16 ### 17 ### You should have received a copy of the GNU General Public License 18 ### along with this program. If not, see <http://www.gnu.org/licenses/>. 19 ### 20 source $AK_LIBDIR/_ak_lib_load 21 _ak_lib_load _ak_log 22 23 function _ak_generate_html_header(){ 24 printf '<!DOCTYPE html>\n<html>\n<head>\n' 25 printf '<title>Arching Kaos Chain Data</title>\n' 26 printf ' <meta charset="UTF-8">\n' 27 printf ' <meta name="viewport" content="width=device-width, initial-scale=1">\n' 28 printf ' <style>\n' 29 printf ' body {\n' 30 printf ' background-color: #000;\n' 31 printf ' color: lightgreen;\n' 32 printf ' padding: 2%%;\n' 33 printf ' width: auto;\n' 34 printf ' font-family: monospace;\n' 35 printf ' font-size: 1rem;\n' 36 printf ' }\n' 37 printf ' h1, h2, h3, h4 {\n' 38 printf ' text-align: left;\n' 39 printf ' }\n' 40 printf ' td {\n' 41 printf ' text-align: initial;\n' 42 printf ' background-color: #090909;\n' 43 printf ' border: 1px dashed #444;\n' 44 printf ' font-size: 1rem;\n' 45 printf ' padding: 1vh 1vw;\n' 46 printf ' margin: 0;\n' 47 printf ' }\n' 48 printf ' p, summary {\n' 49 printf ' background: #061624;\n' 50 printf ' border: 1px solid #827c7c;\n' 51 printf ' padding: 1vh 1vw;\n' 52 printf ' margin: 0;\n' 53 printf ' color: lightgreen;\n' 54 printf ' font-style: normal;\n' 55 printf ' text-decoration: none;\n' 56 printf ' }\n' 57 printf ' summary:hover {\n' 58 printf ' background: lightgreen;\n' 59 printf ' color: #061624;\n' 60 printf ' }\n' 61 printf ' a {\n' 62 printf ' color: #042746;\n' 63 printf ' background-color: lightyellow;\n' 64 printf ' border: 1px solid #827c7c;\n' 65 printf ' padding: 1vh 1vw;\n' 66 printf ' margin: 0;\n' 67 printf ' font-style: normal;\n' 68 printf ' text-decoration: none;\n' 69 printf ' }\n' 70 printf ' a:hover {\n' 71 printf ' background-color: lightgreen;\n' 72 printf ' color: #042746;\n' 73 printf ' }\n' 74 printf ' details {\n' 75 printf ' border: 1px dotted;\n' 76 printf ' background-color: #1d4055;\n' 77 printf ' }\n' 78 printf ' footer {\n' 79 printf ' text-align: center;\n' 80 printf ' }\n' 81 printf ' </style>\n' 82 printf '</head>\n' 83 printf '<body>\n' 84 } 85 86 function _ak_generate_html_zblock(){ 87 if [ ! -z $1 ] && [ -n "$1" ] 88 then 89 arg="$1" 90 else 91 _ak_log_error "No argument given" 92 exit 1 93 fi 94 # Iterate through each argument and parse data 95 if [ -f "$arg" ] 96 then 97 # Extract data from argument 98 zblock=$(cat $arg | jq -r '.zblock') 99 if [ ! -n "$zblock" ] 100 then 101 _ak_log_error "Empty zblock value" 102 exit 1 103 fi 104 block=$(cat $arg | jq -r '.block') 105 if [ ! -n "$block" ] 106 then 107 _ak_log_error "Empty block value" 108 exit 1 109 fi 110 timestamp=$(cat $arg | jq -r '.timestamp') 111 if [ ! -n "$timestamp" ] 112 then 113 _ak_log_error "Empty timestamp value" 114 exit 1 115 fi 116 block_signature=$(cat $arg | jq -r '.block_signature') 117 if [ ! -n "$block_signature" ] 118 then 119 _ak_log_error "Empty block_signature value" 120 exit 1 121 fi 122 detach=$(cat $arg | jq -r '.detach') 123 if [ ! -n "$detach" ] 124 then 125 _ak_log_error "Empty detach value" 126 exit 1 127 fi 128 data=$(cat $arg | jq -r '.data') 129 if [ ! -n "$data" ] 130 then 131 _ak_log_error "Empty data value" 132 exit 1 133 fi 134 module=$(cat $arg | jq -r '.module') 135 if [ ! -n "$module" ] 136 then 137 _ak_log_error "Empty module value" 138 exit 1 139 fi 140 action=$(cat $arg | jq -r '.action') 141 if [ ! -n "$action" ] 142 then 143 _ak_log_error "Empty action value" 144 exit 1 145 fi 146 gpg=$(cat $arg | jq -r '.gpg') 147 if [ ! -n "$gpg" ] 148 then 149 _ak_log_error "Empty gpg value" 150 exit 1 151 fi 152 previous=$(cat $arg | jq -r '.previous') 153 if [ ! -n "$previous" ] 154 then 155 _ak_log_error "Empty previous value" 156 exit 1 157 fi 158 datablock=$(cat $arg | jq -r ".$data") 159 if [ ! -n "$datablock" ] 160 then 161 _ak_log_error "Empty datablock value" 162 exit 1 163 fi 164 # Output data in HTML format 165 printf ' <h1>%s</h1>\n' "$PROGRAM" 166 printf ' <h2>đ %szblock</h2>\n' "$zblock" 167 if [ -f $AK_MODULESDIR/$module/main.sh ] && [ "$action" == "add" ] 168 then 169 ak -m $module -x $zblock > /dev/null 2>&1 170 if [ $? -eq 0 ] 171 then 172 ak -m $module -x $zblock 173 fi 174 fi 175 printf ' <h2>âšī¸ %s</h2>\n' "$zblock" 176 printf ' <table>\n' 177 printf ' <tr>\n' 178 printf ' <td>\n' 179 printf ' <pre>đĻ ZBLOCK</pre>\n' 180 printf ' </td>\n' 181 printf ' <td>\n' 182 printf ' <details>\n' 183 printf ' <summary>%s</summary>\n' "$zblock" 184 printf ' <pre>%s</pre>' "$(_ak_ipfs_cat $zblock | jq)" 185 printf ' </details>\n' 186 printf ' </td>\n' 187 printf ' </tr>\n' 188 printf ' <tr>\n' 189 printf ' <td>\n' 190 printf ' <pre>đĻ BLOCK</pre>\n' 191 printf ' </td>\n' 192 printf ' <td>\n' 193 printf ' <details>\n' 194 printf ' <summary>%s</summary>\n' "$block" 195 printf ' <pre>%s</pre>\n' "$(_ak_ipfs_cat $block | jq)" 196 printf ' </details>\n' 197 printf ' </td>\n' 198 printf ' </tr>\n' 199 printf ' <tr>\n' 200 printf ' <td>\n' 201 printf ' <pre>đ BLOCK SIGNATURE</pre>\n' 202 printf ' </td>\n' 203 printf ' <td>\n' 204 printf ' <details>\n' 205 printf ' <summary>%s</summary>\n' "$block_signature" 206 printf ' <pre>%s</pre>\n' "$(_ak_ipfs_cat $block_signature)" 207 printf ' </details>\n' 208 printf ' </td>\n' 209 printf ' </tr>\n' 210 printf ' <tr>\n' 211 printf ' <td>\n' 212 printf ' <pre>â TIMESTAMP</pre>\n' 213 printf ' </td>\n' 214 printf ' <td>\n' 215 printf ' <p>%s</p>\n' "$timestamp" 216 printf ' </td>\n' 217 printf ' </tr>\n' 218 printf ' <tr>\n' 219 printf ' <td>\n' 220 printf ' <pre>đ MODULE</pre>\n' 221 printf ' </td>\n' 222 printf ' <td>\n' 223 printf ' <p>%s</p>\n' "$module" 224 printf ' </td>\n' 225 printf ' </tr>\n' 226 printf ' <tr>\n' 227 printf ' <td>\n' 228 printf ' <pre>đǧ ACTION</pre>\n' 229 printf ' </td>\n' 230 printf ' <td>\n' 231 printf ' <p>%s</p>\n' "$action" 232 printf ' </td>\n' 233 printf ' </tr>\n' 234 printf ' <tr>\n' 235 printf ' <td>\n' 236 printf ' <pre>đ GPG</pre>\n' 237 printf ' </td>\n' 238 printf ' <td>\n' 239 printf ' <details>\n' 240 printf ' <summary>%s</summary>\n' "$gpg" 241 printf ' <pre>%s</pre>\n' "$(_ak_ipfs_cat $gpg)" 242 printf ' </details>\n' 243 printf ' </td>\n' 244 printf ' </tr>\n' 245 printf ' <tr>\n' 246 printf ' <td>\n' 247 printf ' <pre>đĻ PREVIOUS</pre>\n' 248 printf ' </td>\n' 249 printf ' <td>\n' 250 printf ' <a target="_blank" href="./zblock-%s.html">đ %s</a>\n' "$previous" "$previous" 251 printf ' </td>\n' 252 printf ' </tr>\n' 253 printf ' <tr>\n' 254 printf ' <td>\n' 255 printf ' <pre>đĻ DATA</pre>\n' 256 printf ' </td>\n' 257 printf ' <td>\n' 258 printf ' <details>\n' 259 printf ' <summary>%s</summary>\n' "$data" 260 printf ' <pre>%s</pre>\n' "$datablock" 261 printf ' </details>\n' 262 printf ' </td>\n' 263 printf ' </tr>\n' 264 printf ' <tr>\n' 265 printf ' <td>\n' 266 printf ' <pre>đ DATA_SIGNATURE</pre>\n' 267 printf ' </td>\n' 268 printf ' <td>\n' 269 printf ' <details>\n' 270 printf ' <summary>%s</summary>\n' "$detach" 271 printf ' <pre>%s</pre>\n' "$(_ak_ipfs_cat $detach)" 272 printf ' </details>\n' 273 printf ' </td>\n' 274 printf ' </tr>\n' 275 printf ' <tr>\n' 276 printf ' <td>\n' 277 printf ' <pre>đ ipfs</pre>\n' 278 printf ' </td>\n' 279 printf ' <td>\n' 280 printf ' <a target="_blank" href="http://gw.ipfs.z.kaotisk-hund.com/ipfs/%s">đ %s</a>\n' "$(echo $datablock | jq -r '.ipfs')" "$(echo $datablock | jq -r '.ipfs')" 281 printf ' </td>\n' 282 printf ' </tr>\n' 283 printf ' <tr>\n' 284 printf ' <td>\n' 285 printf ' <pre>đ detach</pre>\n' 286 printf ' </td>\n' 287 printf ' <td>\n' 288 printf ' <details>\n' 289 printf ' <summary>%s</summary>\n' "$(echo $datablock | jq -r '.detach')" 290 printf ' <pre>%s</pre>\n' "$(_ak_ipfs_cat $(echo $datablock | jq -r '.detach'))" 291 printf ' </details>\n' 292 printf ' </td>\n' 293 printf ' </tr>\n' 294 printf ' </table>\n' 295 printf ' <table>\n' 296 printf ' <tr>\n' 297 printf ' <td>\n' 298 printf ' <pre>đ Rendered ZBLOCK</pre>\n' 299 printf ' </td>\n' 300 printf ' </tr>\n' 301 printf ' <tr>\n' 302 printf ' <td>\n' 303 printf ' <pre>%s</pre>\n' "$(cat $arg | jq)" 304 printf ' </td>\n' 305 printf ' </tr>\n' 306 printf ' </table>\n' 307 fi 308 } 309 310 _ak_log_debug "_ak_html loaded $(caller)"