
#!/bin/bash
# File	: ran-d0m.sh
# By	: MaartenDeBoer.nl, 181127
# Subject	: Script to create randomized a (web)page (ran-d0m.com)
#
# 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.
#(0.2)	: Added title
#(0.3)	: Added .rc
#(0.4)	: Added, # rows(TRLINES) & col''s (TDLINES) > 5.
#(0.5)	: Added Better HEX random, R_SIZE
#(1.0)	: Added T[DR]MIN, T[DR]MAX -> R[DR]LINES, DEVIDER -> T[DR]MAX (So can be set in RC-file)
#(1.1)	: Changed Rand TD's
#(2.0)	: Added TR height
#(3.0),181210	: Added 1 single TABLE in single cell, added RAND_HEX_COLOR
#(3.1),181210	: Added more TABLE
#(3.2).181210	: Changed TRMIN
#(3.3),181212	: Fixed TR-size (TRSIZE)
#(3.5),181212   : Added LOCK-file
#(4.0),181212	: Added random TD
#(4.1),181213	: Mod. Ran-don link + info] + refresh" content="15"
#(4.2),181226	: Mod. Check unique colorcodes (in TMP)
#(4.3),181226	: Rem TRMIN, TRMAX
#(4.4),201223	: Added copy to TMP_PAGE first. echo of VAR's after RCFILE
PGM=`basename $0|cut -d\. -f1`
VER="4.4"
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/ran-d0m.agrarix.it/html/index.html"
#PAGE="/mnt/nas/www/domains/ran-d0m.agrarix.net/pages/index.html"
TDMIN=2
TDMAX=20
INFOPAGE="info/"
# page-refresh-time in sec.
# '<meta http-equiv="refresh"
PAGE_REFRESH=60

MAXTRSIZE=500
# TRSIZE = TRLINES x HGT
TRSIZE=0
MAX_R_HGT=100

RAND_HEX_COLOR()
{
  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} ... "
}

echo "`date`: Start ${PGM} v${VER}"
if [ -f ${LCK} ]; then
  echo "  LOCK-file (${LCK}) found. Exiting ..."
  exit 2
fi
touch ${LCK} ${TMP} ${TMP_PAGE}

if [ -f ${RCFILE} ]; then
  echo "  Using RCfile (${RCFILE}) ... "
  . ${RCFILE}
fi
echo "  MAXTRSIZE=${MAXTRSIZE}"
echo "  MAX_R_HGT=${MAX_R_HGT}"
echo "  PAGE=${PAGE}"
echo "  TDMAX=${TDMAX}"
echo "  TDMIN=${TDMIN}"
sleep 1

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}

# Random Height (1-MAX_R_HGT)
#R_HGT=$(( ${RANDOM} * ${MAX_R_HGT} /32767 + 1 ))

# 1st row
# Random 0-15(F)
R=$(( ${RANDOM} * 16 /32767 ))
# Change from Dec -> Hex
case ${R} in
  0) H="0" ;;
  1) H="1" ;;
  2) H="2" ;;
  3) H="3" ;;
  4) H="4" ;;
  5) H="5" ;;
  6) H="6" ;;
  7) H="7" ;;
  8) H="8" ;;
  9) H="9" ;;
  10) H="A" ;;
  11) H="B" ;;
  12) H="C" ;;
  13) H="D" ;;
  14) H="E" ;;
  15) H="F" ;;
esac

if [ ${R} -lt 8 ]; then
  COLOR="white"
else
  COLOR="black"
fi
BGCOLOR="${H}${H}${H}${H}${H}${H}"
R_SIZE=$(( ${RANDOM} * 40 /32767 ))
#echo "  BGCOLOR=${BGCOLOR} COLOR=${COLOR} R_HGT=${R_HGT} R_SIZE=${R_SIZE}"
echo "  BGCOLOR=${BGCOLOR} COLOR=${COLOR} R_SIZE=${R_SIZE}"

echo "<TABLE border=0 width='100%' cellpadding='0' cellspacing='0'>" >> ${TMP_PAGE}
echo "  <TR>" >> ${TMP_PAGE}
echo "    <TD BGCOLOR=${BGCOLOR} align=center>" >> ${TMP_PAGE}
echo "      <FONT size=${R_SIZE} color=${COLOR} face=Ariel>" >> ${TMP_PAGE}
echo "        <A HREF=${INFOPAGE}>[Ran-d0m info]</A>" >> ${TMP_PAGE}
echo "      </FONT>" >> ${TMP_PAGE}
echo "    </TD>" >> ${TMP_PAGE}
echo "  </TR>" >> ${TMP_PAGE}
echo "</TABLE>" >> ${TMP_PAGE}

echo "<TABLE border=0 width='100%' cellpadding='0' cellspacing='0'>" >> ${TMP_PAGE}

# Lines (Rows, TR)
# 1st LOOP
TRSIZE=0
while [ ${TRSIZE} -lt ${MAXTRSIZE} ]; 
do
  TRCNT=`expr ${TRCNT} + 1`
  echo "  <TR>" >> ${TMP_PAGE}

# Cols (TD's)
  TDLINES=0
  while [ ${TDLINES} -lt ${TDMIN} ];
  do
    TDLINES=$(( ${RANDOM} * ${TDMAX} /32767 ))
  done
  R_HGT=$(( ${RANDOM} * ${MAX_R_HGT} /32767 + 1 ))
  TRSIZE=$(( ${TRSIZE} + ${R_HGT} ))
  echo "  TRSIZE=${TRSIZE} TDLINES=${TDLINES} R_HGT=${R_HGT}"
  TDCNT=0
  echo "    <TABLE border=0 width='100%' cellpadding='0' cellspacing='0'>" >> ${TMP_PAGE}
  echo "      <TR>" >> ${TMP_PAGE}
# 2nd LOOP
  while [ ${TDCNT} -lt ${TDLINES} ]; 
  do
    TDCNT=`expr ${TDCNT} + 1`
# Check if COLOR is unique
    EC=0
# 3rd (mini)LOOP
    while [ ${EC} -eq 0 ]; 
    do
      RAND_HEX_COLOR
      grep ${COLOR} ${TMP}
      EC=${?}
#      echo "${COLOR}=${EC}"
    done
    echo "${COLOR}" >> ${TMP}

#    echo "    <TD BGCOLOR=${COLOR} height=${R_HGT}>" >> ${TMP_PAGE}
    echo "    <TD BGCOLOR=${COLOR} >" >> ${TMP_PAGE}

# If Height > 5 then new table    
    if [ ${R_HGT} -gt 10 ]; then
      TA2LINES=$(( ${RANDOM} * 10 /32767 + 1 ))
#      TA2LINES=$(( ${RANDOM} * ${R_HGT} /32767 + 1 ))
      TA2CNT=0
# 3rd LOOP
      while [ ${TA2CNT} -lt ${TA2LINES} ]; 
      do
        TA2CNT=`expr ${TA2CNT} + 1`

        echo "      <TABLE border=0 width='100%' cellpadding='0' cellspacing='0'>" >> ${TMP_PAGE}

        echo "        <TR>" >> ${TMP_PAGE}

        TD2LINES=$(( ${RANDOM} * 10 /32767 + 1 ))
        TD2CNT=0
        R2_HGT=$(( ${RANDOM} * ${TDMAX} /32767 + 1 ))
#        TRSIZE=$(( ${TRSIZE} + ${R2_HGT} ))
#        echo "  TD2LINES=${TD2LINES}"
        while [ ${TD2CNT} -lt ${TD2LINES} ]; 
        do
          TD2CNT=`expr ${TD2CNT} + 1`

# Check if COLOR is unique
    EC=0
    while [ ${EC} -eq 0 ]; 
    do
      RAND_HEX_COLOR
      grep ${COLOR} ${TMP}
      EC=${?}
#      echo "${COLOR}=${EC}"
    done
    echo "${COLOR}" >> ${TMP}

          echo "          <TD BGCOLOR=${COLOR} height=${R2_HGT}>" >> ${TMP_PAGE}
          echo "          </TD>" >> ${TMP_PAGE}
        done  # TD2's

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

      done  # TA2's

      echo "    </TD>" >> ${TMP_PAGE}
    fi  # R_HGT > 10

  done  # while TDCNT
  echo "      </TR>" >> ${TMP_PAGE}

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

done  # while TRCNT

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

echo "<TABLE border=0 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 "  [ MAXTRSIZE=${MAXTRSIZE} TDMIN=${TDMIN} TDMAX=${TDMAX} MAX_R_HGT=${MAX_R_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}

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

