
#!/bin/bash
#set -x
# File	: ran-strip3-v.sh
# By	: MaartenDeBoer.nl, 181127, 231110
# Subject	: Script to create stiped (web)page with randomized colors
#
# RANDOM Each time this parameter is referenced, a random integer between
#              0 and 32767 is generated.  The sequence of random numbers may be
#              initialized by assigning a value to RANDOM.  If RANDOM is unset,
#              it  loses  its  special  properties,  even if it is subsequently
#              reset.
#+ https://linuxconfig.org/generating-random-numbers-in-bash-with-examples
# From : ran-br1ck.sh
#(0.2),240817	: Mod: BORDERs, Added TD's
#(0.3),240819	: Changed better Horizontal stripes with colspan
#(0.4),240819	: Made Vertical stripes
#(0.5),240820	: Check double colors RAND_
PGM=`basename $0|cut -d\. -f1`
VER="0.5"
TMP="/tmp/${PGM}.$$"
HOSTNAME=`hostname | cut -d\. -f1`
RCFILE="${HOME}/etc/${PGM}.rc"
LCK="/tmp/${PGM}.lck"
TMP_PAGE="${TMP}.page"

#PAGE="/var/www/vhosts/${PGM}.agrarix.it/html/index.html"
PAGE="/mnt/nas/WWW/domains/${PGM}.maartendeboer.nl/pages/index.html"

INFOPAGE="info/"
# page-refresh-time in sec.
# '<meta http-equiv="refresh"
PAGE_REFRESH=60

BORDER_H=0
BORDER_1=1
BORDER_B=0
HDR_SIZE=10
HGT=10
TRMAX=20
TDMAX=20


RAND_HEX_COLOR()
{
# Check if COLOR is unique
  EC=1
  while [ ${EC} -ne 0 ];
  do
    FORS="1 2 3 4 5 6"
    for F in ${FORS}
    do
      R=$(( ${RANDOM} * 16 /32767 ))
      case ${R} in
        0) H[${F}]="0" ;;
        1) H[${F}]="1" ;;
        2) H[${F}]="2" ;;
        3) H[${F}]="3" ;;
        4) H[${F}]="4" ;;
        5) H[${F}]="5" ;;
        6) H[${F}]="6" ;;
        7) H[${F}]="7" ;;
        8) H[${F}]="8" ;;
        9) H[${F}]="9" ;;
        10) H[${F}]="A" ;;
        11) H[${F}]="B" ;;
        12) H[${F}]="C" ;;
        13) H[${F}]="D" ;;
        14) H[${F}]="E" ;;
        15) H[${F}]="F" ;;
      esac
#      echo -n "(${F}) ${H[${F}]}"
    done  # for
    COLOR="#${H[1]}${H[2]}${H[3]}${H[4]}${H[5]}${H[6]}"
    echo "${COLOR}" >> ${TMP}.color
    grep ${COLOR} ${TMP}.color 1> /dev/null 2>&1
    EC=${?}
    echo -n "+"
  done  # EC = 0
}


echo "`date`: Start ${PGM} v${VER}"
if [ ! -f ${PAGE} ]; then
  echo "  NO PAGE (${PAGE}) found. Exiting ..."|tee -a ${LOG}
  exit 3
fi
if [ -f ${RCFILE} ]; then
  echo "  Using RCfile (${RCFILE}) ... "
  . ${RCFILE}
fi
if [ -f ${LCK} ]; then
  echo "  LOCK-file (${LCK}) found. Exiting ..."|tee -a ${LOG}
  exit 2
fi
echo "  BORDER_H=${BORDER_H}"
echo "  BORDER_1=${BORDER_1}"
echo "  BORDER_B=${BORDER_B}"
echo "  HDR_SIZE=${HDR_SIZE}"
echo "  HGT=${HGT}"
echo "  TRMAX=${TRMAX}"
echo "  TDMAX=${TDMAX}"
echo "  PAGE=${PAGE}"
sleep 1

touch ${LCK} ${TMP} ${TMP_PAGE}

echo "<HTML>" > ${TMP_PAGE}
echo "<BODY>" >> ${TMP_PAGE}
echo "<meta http-equiv=\"refresh\" content=\"${PAGE_REFRESH}\" /> " >> ${TMP_PAGE}
echo "<meta name=\"generator\" content=\"${PGM} v${VER}\" /> " >> ${TMP_PAGE}

echo "</BODY>" >> ${TMP_PAGE}

RAND_HEX_COLOR
BGCOLOR=${COLOR}
echo "${COLOR}" >> ${TMP}
RAND_HEX_COLOR
echo "${COLOR}" >> ${TMP}

HDR_COLOR=${COLOR}
echo "  BGCOLOR=${BGCOLOR} COLOR=${COLOR}"

# Head
echo "<TABLE border=${BORDER_H} class=table-class1 width='100%' cellpadding='0' cellspacing='0'>" >> ${TMP_PAGE}
echo "  <TR>" >> ${TMP_PAGE}
echo "    <TD BGCOLOR=${BGCOLOR} HEIGHT=${HGT} align=center>" >> ${TMP_PAGE}
echo "      <FONT size=${HDR_SIZE} color=${HDR_COLOR} face=Ariel>" >> ${TMP_PAGE}
echo "        <A HREF=${INFOPAGE}>[${PGM} info]</A>" >> ${TMP_PAGE}
echo "      </FONT>" >> ${TMP_PAGE}
echo "    </TD>" >> ${TMP_PAGE}
echo "  </TR>" >> ${TMP_PAGE}
echo "</TABLE>" >> ${TMP_PAGE}

# Body
echo "<TABLE border=${BORDER_1} class=table-class2 width='100%' cellpadding='0' cellspacing='0'>" >> ${TMP_PAGE}

# Define Rand Vert. color switch and colors
TDCNT=1
while [ ${TDCNT} -le ${TDMAX} ]; 
do
#    echo -n "."
# ROWNR[<col-nr done by TDCNT>]
# NR of Row where color switch is needed
ROWNR[${TDCNT}]=$(( ${RANDOM} % ${TRMAX} +1 ))
echo "ROWNR[${TDCNT}]=${ROWNR[${TDCNT}]}"

  RAND_HEX_COLOR
  TRCOLOR1[${TDCNT}]=${COLOR}
  echo "TRCOLOR1[${TDCNT}]=${TRCOLOR1[${TDCNT}]}"
  RAND_HEX_COLOR
  TRCOLOR2[${TDCNT}]=${COLOR}
  echo "TRCOLOR2[${TDCNT}]=${TRCOLOR2[${TDCNT}]}"

  TDCNT=`expr ${TDCNT} + 1`
done  # TD
# -------------------------------------------------

# row 0
echo "  <TR>" >> ${TMP_PAGE}
TRCNT=1
#1st Col
RAND_HEX_COLOR
FIRST_ROW_COLOR=${COLOR}
#echo "    <TD BGCOLOR=white height=${HGT} > ${TRCNT} </TD>" >> ${TMP_PAGE}
echo "    <TD BGCOLOR=${FIRST_ROW_COLOR} height=${HGT} ></TD>" >> ${TMP_PAGE}

# 1st ROW (row 0
# 2nd (TD-)loop
TDCNT=1
while [ ${TDCNT} -le ${TDMAX} ]; 
do
  COLORNR=${TRCOLOR1[${TDCNT}]}
  COLORNR=""
  echo "    <TD BGCOLOR=${TRCOLOR1[${TDCNT}]} height=${HGT} rowspan=${ROWNR[${TDCNT}]} >${COLORNR}</TD>" >> ${TMP_PAGE}
  TDCNT=`expr ${TDCNT} + 1`
done  # TD-loop
echo "  </TR>" >> ${TMP_PAGE}

# 1st (TR-)loop from 2nd row
TRCNT=2
while [ ${TRCNT} -le ${TRMAX} ]; 
do
  echo "  <TR>" >> ${TMP_PAGE}
#  echo "    <TD BGCOLOR=white height=${HGT} > ${TRCNT} </TD>" >> ${TMP_PAGE}
  echo "    <TD BGCOLOR=${FIRST_ROW_COLOR} height=${HGT} ></TD>" >> ${TMP_PAGE}
#  echo "  TRCNT=${TRCNT}"

# 2nd (TD-)loop
  TDCNT=1
  while [ ${TDCNT} -le ${TDMAX} ]; 
  do
#    echo "TRCNT=${TRCNT} TDCNT=${TDCNT} ROWNR[${TDCNT}]=${ROWNR[${TDCNT}]} TRBGCOLOR1=${TRCOLOR1[${TDCNT}]} TRBGCOLOR2=${TRCOLOR2[${TDCNT}]} "
    echo -n "."

    COLOR_SWITCH_ROW=`expr ${ROWNR[${TDCNT}]} + 1`
    if [ ${TRCNT} -eq ${COLOR_SWITCH_ROW} ]; then
      TRREST=`expr ${TRMAX} - ${ROWNR[${TDCNT}]}`
#      echo "  TDCNT=ROWNR NEW color (${TRCOLOR2[${TDCNT}]}) TRREST=${TRREST}"

# Last row (TRCNT) NOT
      if [ ${TRREST} -gt 1 ]; then
        COLORNR=${TRCOLOR2[${TDCNT}]}
        COLORNR=""
        echo "    <TD BGCOLOR=${TRCOLOR2[${TDCNT}]} height=${HGT} rowspan=${TRREST} >${COLORNR}</TD>" >> ${TMP_PAGE}
      else
        COLORNR=${TRCOLOR1[${TDCNT}]}
        COLORNR=""
        echo "    <TD BGCOLOR=${TRCOLOR1[${TDCNT}]} height=${HGT} >${COLORNR}</TD>" >> ${TMP_PAGE}
      fi  # TRREST > 0

    fi  # TDCNT < TDNR

    TDCNT=`expr ${TDCNT} + 1`
  done  # TD-loop

  echo "  </TR>" >> ${TMP_PAGE}
  TRCNT=`expr ${TRCNT} + 1`
done  # TR-loop

echo "</TABLE>" >> ${TMP_PAGE}

# Bottom
echo "<TABLE border=${BORDER_B} class=table-class3 width='100%' cellpadding='0' cellspacing='0'>" >> ${TMP_PAGE}
echo "  <TR>" >> ${TMP_PAGE}
echo "    <TD BGCOLOR=white align=center>" >> ${TMP_PAGE}
echo "      <FONT size=1 color=black face=Ariel>" >> ${TMP_PAGE}
echo "        `date` @ ${HOSTNAME} (${VER}) " >> ${TMP_PAGE}
echo "  [ TRMAX=${TRMAX} TDMAX=${TDMAX} HGT=${HGT} ]" | tee -a ${TMP_PAGE}
echo "      </FONT>" >> ${TMP_PAGE}
echo "    </TD>" >> ${TMP_PAGE}
echo "  </TR>" >> ${TMP_PAGE}
echo "</TABLE>" >> ${TMP_PAGE}

echo "</HTML>" >> ${TMP_PAGE}

cp ${TMP_PAGE} ${PAGE}
cp ${TMP} /tmp/${PGM}.tmp
echo "  Writen to ${PAGE}"

rm ${LCK} ${TMP} ${TMP_PAGE}
echo "`date`: Done"
exit 0

