<?
#include "appinit.php3";
$USE_MCRYPT=1;
include "config.php3";
include "mysql.php3";
include "urlwrapper.php3";
$conn=sqlconn("localhost","root","neuro","kenshin_oekaki");
$date=date('Y-m-d H:i:s');
/*
`echo "TEST repl[$eca] nfpc[$nfpc] pictureid[$pictureid] str[$str]" >> debug.log`;
*/
// Flood check
if (!$nfpc) {
$res=sqlexec("SELECT count( * )
FROM pictures
WHERE UNIX_TIMESTAMP(
STOP ) > UNIX_TIMESTAMP( now( ) ) - 600
and ipaddress='$REMOTE_ADDR' and notfinished=0");
list($prevrecpic)=sqlgetrow($res);
if ($prevrecpic>0) {
#  `echo "flood on $pictureid" >> debug.log`;
  sqlexec("update pictures set flood=1 where pictureid=$pictureid");
}
}
if (!$eca) {
sqlexec("update pictures set stop='$date' where pictureid=$pictureid");
}
$filename=$pictureid.".png";

// $file_name, $thumbnail_name

$buffer=$HTTP_RAW_POST_DATA;

if ($buffer[0] == "P") {
// Advanced mode
  // open debug file
  
  $fp2=fopen("test.txt","a");
  #if ($eca) {
#  fwrite($fp2,"advpost - firstchar[".$buffer[0]."] buffer[$buffer]\n");
  #}
  // start
  $ds=(int)substr($buffer,1,8);
  $ptr=9;
  if ($ds) {
    $exphead=(int)substr($buffer,$ptr,$ds);
    $ptr+=$ds;    
  }
  $ptr+=2;
  $ds=(int)substr($buffer,$ptr,8);
  $ptr+=8;
  if ($ds) {
    if ($usingspainter) {
      $ptr+=10;
    }
    $file=substr($buffer,$ptr,$ds);
    if ($eca) {
      // file is the orginal picture
      unlink("data/$filename");
      $fp=fopen("data/$filename","w");
      fwrite($fp,"");
      fclose($fp);
    }
    $fp=fopen("data/$filename","w");
    fwrite($fp,$file);
    fclose($fp);
    $ptr+=$ds;
  }
  // more data?
  if (strlen($buffer) > $ptr) {
    $ds=(int)substr($buffer,$ptr,8); $ptr+=8;
    if ($ds) {
      $thumbnail=substr($buffer,$ptr,$ds);
      $ptr+=$ds;
    if ($eca) {
      // file is the orginal picture
      unlink("data/".$pictureid.".pch");
      $fp=fopen("data/".$pictureid.".pch","w");
      fwrite($fp,"");
      fclose($fp);
    }
      $fp=fopen("data/".$pictureid.".pch","w");
      fwrite($fp,$thumbnail);
      fclose($fp);
    }
  }

fwrite($fp2,"advpost - pictureid[$pictureid] eca[$eca] exphead[$exphead] usp[$usingspainter]\n");
fwrite($fp2,"advpost - stored[data/$filename] [".strlen($file)."]\n");
fclose($fp2);
} elseif ($buffer[0]=="S"){
  $fp2=fopen("test.txt","a");
  fwrite($fp2,"shipost - start $pictureid\n");
  $sections=array('header','image','thumb1','thumb2');
  $ptr=1; // after S
  while(list($key,$sec)=each($sections)) {
    $debug=substr($buffer,$ptr-8,24); // grab 16bytes for dbg
    $seclen=(int)substr($buffer,$ptr,8); // grab 8bytes = size
    /*
    if (($seclen==0) && (substr($buffer,$ptr,8)!='00000000')) {
      $pos=strpos($buffer,'0',$ptr);
      if ($pos===false) {
        // not found 
        // to end of file
          $left=strlen($buffer)-$ptr;
          fwrite($fp2,"shipost - to eof! $left bytes @[$ptr/".strlen($buffer)."] adding to ".$sections[$key-1]."\n");
          $section[$sections[$key-1]].=substr($buffer,$ptr);
	  $ptr+=$left;
      } else {
        if ($pos==0) {
          // too far
          fwrite($fp2,"shipost - too far!\n");
        } else {
          // too soon
          fwrite($fp2,"shipost - too soon by $pos!\n");
          $section[$sections[$key-1]].=substr($buffer,$ptr,$pos);
          $ptr+=$pos;
        }
      }
    }
    */
    $ptr+=8;
    if ($sec=="image") $ptr+=2; // \r\n hack
    if ($seclen) {
      fwrite($fp2,"shipost - writing $seclen from buffer[$ptr] to section[$sec]\n");
      $section[$sec]=substr($buffer,$ptr,$seclen);
      $ptr+=$seclen;
    }
    fwrite($fp2,"shipost - $sec [$seclen from $debug]\n");
  }
  // replace it
  if ($eca) {
    // file is the orginal picture
    unlink("data/$filename");
  }
  if (file_exists("data/".$pictureid.".png")) {
    // Major Error
    // Backup data
    fwrite($fp2,"shipost - DUP $pictureid\n");
    writefile($section['image'],"data/".$pictureid.".png.dup");  
    writefile($section['thumb1'],"data/".$pictureid.".pch.dup");    
  } else {
    writefile($section['image'],"data/".$pictureid.".png");  
    writefile($section['thumb1'],"data/".$pictureid.".pch");
  }
  sqlexec("update pictures set usespainter=1 where pictureid=$pictureid");
  fwrite($fp2,"shipost - ".strlen($section['image'])." bytes to $pictureid.png\n");
  fwrite($fp2,"shipost - ".strlen($section['thumb1'])." bytes to $pictureid.pch\n");
  fclose($fp2);
} else {

$start = strpos($buffer , "\n");
$end = 5;
$PNGlength = strlen($buffer) - $end;
  if ($usingspainter) {
    $end+=13;
    $PNGlength-=13;
  }
$PNGdata = substr($buffer,$end + 1 ,$PNGlength);

$fp=fopen("data/$filename","w");
fwrite($fp,$PNGdata);
fclose($fp);

/*
$fp=fopen("test.txt","a");
fwrite($fp,"std post len[$PNGlength]br\n");
fwrite($fp,"std post type[".$buffer[0]."]br\n");
fwrite($fp,"stdpost - pictureid[$pictureid] eca[$eca] usingspainter[$usingspainter]\n");
fwrite($fp,"stdpost - stored[data/$filename] size[".strlen($PNGdata)."]\n");
fclose($fp);
*/

}

function writefile($data,$file) {
$fp=fopen($file,"w");
fwrite($fp,$data);
fclose($fp);
}

?>
