#!/bin/bash
#------------------------------------------------
#appxpralog 1.0.0-3
#2018/03/02
#Copyright J's Communication co.,ltd.
#------------------------------------------------

xprafile='/tmp/:100.log'

mkdir /tmp/uploadfilelog
INTERVAL=1
lasttime=`ls --full-time $xprafile | awk '{print$6"-"$7}'`

while true ;
do
  sleep $INTERVAL
  currenttime=`ls --full-time $xprafile | awk '{print$6"-"$7}'`

  # bash起動時の更新時間ではない場合
  if [ $lasttime != $currenttime ];then
    lasttime="$currenttime"
    loaddate=`cat "$xprafile" | grep 'load_contents' | grep 'bytes'`
    # windowsでの操作、ファイルパスを取得
    winpath=`echo "$loaddate" | sed -e 's/^.*filename=//g' | cut -f 1 -d ',' | sed -e 's/\\\/|/g'`
    i=1;filelogdir='/tmp/uploadfilelog/ulfile'

    # 行数分繰り返し処理
    echo "$winpath" | while read line
    do
      if [ ! -e "$filelogdir$i.log" ];then
        starttime=`echo "$loaddate" | awk NR==$i | awk '{print$1" "$2}' | cut -d "," -f 1`
        filename=`echo "$winpath" | awk NR==$i | rev | cut -f 1 -d '|' | rev`
        filenamedb="$filename"
        extension=${filename##*.}
        filename=`echo $filename | sed -e 's/\.'$extension'//g'`
        filename=`ls -l -rt /root/ | grep "$filename" | tail -n 1 | awk '{for(i=9;i<NF;++i){printf("%s ",$i)}print $NF}'`

        # ファイルサイズを取得
        winfilesize=`echo "$loaddate" | awk NR==$i | cut -f 3 -d ',' | sed -e 's/[^0-9]//g'`
        winfilesizelen=`echo ${#winfilesize}`

        # ファイルサイズをkbyte単位へ変換　1k以下なら1kbyteとする
        if [ 3 -lt $winfilesizelen ];then
          filesize=`echo "$winfilesize" | rev | cut -c 1-3 | rev`
          filesize=`echo "$winfilesize" | sed -e "s/$filesize//g"`
        else
          filesize=1
        fi

        filetype=`echo "$filename" | rev | cut -d '.' -f 1 | rev`
        outpath=`echo "${line}" | sed -e 's/|/\//g'`

        if [ ! -z "$filename" -a ! -z "$starttime" -a ! -z "$outpath" ];then
          checklog=`cat $filelogdir$i.log | grep 'endtime' | sed -e 's/endtime  >>//g'`
          if [ -z "$checklog" ];then
            h=0
            [ -z "$filesize" ] &&  filesize=1
            echo "startime >> $starttime" > $filelogdir$i.log
            echo "fullpath >> $outpath" >> $filelogdir$i.log
            echo "filename >> $filename" >> $filelogdir$i.log
            echo "filetype >> $filetype" >> $filelogdir$i.log
            echo "filesize >> $filesize" >> $filelogdir$i.log

            while :
            do
              endtime=`cat $xprafile | grep "/root/$filename" | awk 'END{print}' | awk '{print$1" "$2}' | cut -d ',' -f 1`
              startdate=`echo "$starttime" | sed -e 's/[^0-9]//g'` 
              if [ ! -z "$endtime" -a "$endtime" != " " ];then
                enddate=`echo "$endtime" | sed -e 's/[^0-9]//g'`
                if [ $enddate -ge $startdate ];then break ;fi
              else
                nfilesize=`cat $xprafile | grep 'load_contents' | grep 'bytes' | grep "$filename" | cut -f 7 -d ' ' | awk 'END{print}'`
                endtime=`cat $xprafile | grep 'downloaded' | grep "$nfilesize" | awk 'END{print}' | awk '{print$1" "$2}' | cut -d ',' -f 1`
                if [ ! -z "$endtime" -a "$endtime" != " " ];then
                  enddate=`echo "$endtime" | sed -e 's/[^0-9]//g'`
                  if [ ! -z "$startdate" -a ! -z "$enddate" ];then
                    if [ $enddate -ge $startdate ];then break ;fi
                  fi
                fi
                errcheck=`cat $xprafile | grep 'Error: cannot find the file transfer id'`
                checkdate=`echo "$errcheck" | awk 'END{print}' | awk '{print$1" "$2}' | cut -d ',' -f 1`
                if [ -z "$checkdate" ];then checkdate=`echo "$errcheck" | awk '{print$1" "$2}' | cut -d ',' -f 1` ;fi
                checkdate2=`echo "$checkdate" | sed -e 's/[^0-9]//g'`

                if [ ! -z "$checkdate" -a $checkdate2 -ge $startdate ];then 
                  h=1 ;break 
                fi

#                if [ ! -z "$errcheck" ];then
#                  h=1;break
#                elif [ `cat $xprafile | grep 'Warning' | grep "$filename"` ];then
#                  h=1;break
#                fi
              fi
            done
            if [ $h -eq 0 ];then
              eltime=$(expr `date -d"$endtime" +%s` - `date -d"$starttime" +%s`)
            else
              endtime='0000-00-00 00:00:00' ; eltime='Error'
            fi
            echo "endtime  >> $endtime" >> $filelogdir$i.log
            echo "eltime   >> $eltime" >> $filelogdir$i.log

            /.scv/appupload $starttime "$outpath" "$filename" "$filetype" "$filesize" $endtime "$eltime"
          fi
        fi
      fi
      i=$(expr $i + 1)
    done
  fi
done
