#!/bin/bash

read request
echo $request >> /tmp/rexec.log

# DISPLAYR=$(ps a | grep /usr/bin/X | awk '{print $6}' | grep ^:)
# if [ -z "$DISPLAYR" ]; then
#     DISPLAYR=":0"
# fi

PRINTER="";
SERVER="127.0.0.1"

if [ -f "/etc/opt/bukazs/bukazs.cfg" ]; then
  PRINTER=`cat '/etc/opt/bukazs/bukazs.cfg' | tr -d ' ' | grep ^PRINTER | cut -d '#' -f1 | cut -d '=' -f2`
  if [ ! -z "$PRINTER" ]; then
    PRINTER="-d $PRINTER"
  fi
  if [ ! -z `cat '/etc/opt/bukazs/bukazs.cfg' | tr -d ' ' | grep ^SERVER | cut -d '#' -f1 | grep '\.'` ]; then
    SERVER=`cat '/etc/opt/bukazs/bukazs.cfg' | tr -d ' ' | grep ^SERVER | cut -d '#' -f1 | grep '\.' | cut -d '=' -f2`
  fi
fi

if [ -f "/etc/opt/bukwserver/config.cfg" ]; then
  if [ ! -z `cat '/etc/opt/bukwserver/config.cfg' | tr -d ' ' | grep ^HOST | cut -d '#' -f1 | cut -d '=' -f2` ]; then
    SERVER=`cat '/etc/opt/bukwserver/config.cfg' | tr -d ' ' | grep ^HOST | cut -d '#' -f1 | cut -d '=' -f2`
  fi
fi

# REMOTE_ADDR=`perl -le 'use Socket; ($port,$addr) = sockaddr_in(getpeername(STDIN)); print inet_ntoa($addr);'`
# if [ "$REMOTE_ADDR" != "$SERVER" ]; then
#   exit 1
# fi


LEN=$(expr length "${request}")
# Печать
if [ ! -z "$(echo ${request} | grep ^print)" ]; then
  if [ "$LEN" -gt 6 ]; then
    request=${request:6}
  
    PRINTERNAME=""
    if [ ! -z "PRINTER" ]; then
      PRINTERNAME="pr=$PRINTER"
    fi
    
    LANDSCAPE=""
    if [ "${request:0:1}" == "1" ]; then
      LANDSCAPE="-O landscape"
    fi
    request=${request:2}
    
    if [ ! -d /tmp/bukprint ]; then
      mkdir /tmp/bukprint
      chmod -R 777 /tmp/bukprint
    fi
    
    TIME=$(date +%s%N)
    
    request=`echo ${request} | tr -d '\r'`
    echo "wkhtmltopdf ${LANDSCAPE} \"http://$SERVER:50000/pgdb/${request}\" /tmp/bukprint/toprint${TIME}.pdf &>>/tmp/log.err" >> /tmp/rexec.log
    
    wkhtmltopdf ${LANDSCAPE} "http://$SERVER:50000/pgdb/${request}" /tmp/bukprint/toprint${TIME}.pdf &>>/tmp/log.err
    lp $PRINTER -o media=a4 /tmp/bukprint/toprint${TIME}.pdf
  fi
fi

if [ ! -z "$(echo ${request} | grep ^pr-conf)" ]; then
  if [ "$LEN" -gt 7 ]; then
    request=${request:7}
  
    PRINTERNAME=""
    if [ ! -z "PRINTER" ]; then
      PRINTERNAME="pr=$PRINTER"
    fi
    
    LANDSCAPE=""
    if [ "${request:0:1}" == "1" ]; then
      LANDSCAPE="-O landscape"
    fi
    request=${request:2}
    
    if [ ! -d /tmp/bukprint ]; then
      mkdir /tmp/bukprint
      chmod -R 777 /tmp/bukprint
    fi
    
    TIME=$(date +%s%N)
    
    request=`echo ${request} | tr -d '\r'`
    echo "wkhtmltopdf ${LANDSCAPE} \"http://$SERVER:8009/${request}\" /tmp/bukprint/toprint${TIME}.pdf &>>/tmp/log.err" >> /tmp/rexec.log
    
    wkhtmltopdf ${LANDSCAPE} "http://$SERVER:8009/${request}" /tmp/bukprint/toprint${TIME}.pdf &>>/tmp/log.err
    lp $PRINTER -o media=a4 /tmp/bukprint/toprint${TIME}.pdf
  fi
fi

# Обобразить сообщение
if [ ! -z "$(echo ${request} | grep ^msg)" ]; then
  if [ "$LEN" -gt 4 ]; then
    request=${request:4}
  
    TIME=$(date +%s%N)
  
    request2=`echo -e ${request}`
  
    if [ -d /var/opt/bukwserver/msg ]; then
      echo ${request} > /var/opt/bukwserver/msg/toshow${TIME}.txt
      chmod 666 /var/opt/bukwserver/msg/toshow${TIME}.txt
    fi
  fi
fi

# Получение текущей даты и времени
if [ ! -z "$(echo ${request} | grep ^getdatetime)" ]; then
  date "+%H:%M %d-%m-%Y"
fi

# Установка текущей даты и времени
if [ ! -z "$(echo ${request} | grep ^setdatetime)" ]; then
  if [ "$LEN" -gt 12 ]; then
    request=${request:12}    
    sudo date -s "${request:0:16}" +"%Y-%m-%d %H:%M"
    echo "OK"
  fi
fi

# Переход в сервисный режим
if [ ! -z "$(echo ${request} | grep ^servicemode)" ]; then
  if [ -x /home/bukts/wdesktop/bin/switchdesk ]; then
    sudo /home/bukts/wdesktop/bin/switchdesk admin
  fi
fi

# Перезапуск сервера bukts
if [ ! -z "$(echo ${request} | grep ^bukrestart)" ]; then
  /home/bukts/bin/bukrestart
fi

if [ ! -z "$(echo ${request} | grep ^reboot)" ]; then
  sudo /usr/sbin/reboot
fi

if [ ! -z "$(echo ${request} | grep ^shutdown)" ]; then
  sudo /usr/sbin/shutdown -h 0
fi

if [ ! -z "$(echo ${request} | grep ^readcompinfo)" ]; then
  if [ -x /opt/bukkey/azsjinfo ]; then
    /opt/bukkey/azsjinfo
    echo "OK"
  fi
fi

# Создать файл о необходимости перечивать event
if [ ! -z "$(echo ${request} | grep ^eventread)" ]; then
  touch /var/opt/bukwserver/run/readevent
  chmod 666 /var/opt/bukwserver/run/readevent
fi

# Проврка откуда берется настройка
if [ ! -z "$(echo ${request} | grep ^getwhereisconf)" ]; then
  if [ -f /etc/opt/bukts/conf/.enabled ]; then
    echo "DB"
  else
    echo "files"
  fi
fi

# Переключить откуда читать настройку
if [ ! -z "$(echo ${request} | grep ^setwhereisconf)" ]; then
  if [ "$LEN" -gt 15 ]; then
    request=${request:15}
    request=${request//[$'\t\r\n']}
    
    if [ "${request}" = "DB" ]; then
      mkdir -p /etc/opt/bukts/conf/
      touch /etc/opt/bukts/conf/.enabled
    fi
    if [ "${request}" = "files" ]; then
      if [ -f /etc/opt/bukts/conf/.enabled ]; then 
        rm /etc/opt/bukts/conf/.enabled
      fi
    fi
  fi
  echo "OK"
fi

# Создать файл о необходимости перечивать на все рабочии места
if [ ! -z "$(echo ${request} | grep ^eventreadall)" ]; then
  UBUK_BDNAME=ubuk
  UBUK_BDUSER=bukts
  UBUK_HOST=127.0.0.1
  
  psql $UBUK_BDNAME -U $UBUK_BDUSER -h $UBUK_HOST -qAt --field-separator ' ' -c "SELECT ip FROM sd_placelist WHERE typ IN (0, 1)" |while read IP ; do
    echo "eventread" > /dev/tcp/${IP}/65500 &
  done
fi

exit 0
