<?php

$selfreference = "http://magnet.octagram.name/dcls/dclsgen.php";


// check the method

if ($_SERVER['REQUEST_METHOD'] != "POST") {
   if (array_key_exists('errormsg', $_GET)) {
      ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Произошла ошибка</title>
</head>
<body>
<pre><?php echo htmlspecialchars((string) ($_GET['errormsg'])); ?></pre>
</body>
</html>
      <?php
   } else  {
      header ("302 Temporary redirect");
      header ("Location: http://p2p.toom.su/dclsgen");
      exit;
   }
}

// check the arguments

$filename = '';
$filecontent = '';
$errormsg = '';

function redirectwitherror ($errormsg) {
   header ("303 Bullshit detected");
   header ("Location: ".$selfreference."?errormsg=".urlencode($errormsg));
   exit;
}

//  Почитал особенности поддержки Content-Disposition, решил
//  сделать так: .../dclsgen.php/Русское имя.dcls

if (!array_key_exists('filename', $_POST)) {
   $errormsg .= "В запросе POST отсутствует поле filename\n";
} else {
   $filename = ((string) $_POST['filename']);
   if ('' == $filename) {
      $errormsg .= "В запросе POST есть поле filename, но оно пустое\n";
   }
}

if (!array_key_exists('filecontent', $_POST)) {
   $errormsg .= "В запросе POST отсутствует поле filecontent\n";
} else {
   $filecontent = ((string) $_POST['filecontent']);
   if ("" == $filecontent) {
      $errormsg .= "В запросе POST есть поле filecontent, но оно пустое\n";
   }
}

if ('' != $errormsg) {
   redirectwitherror ($errormsg);
}

if (array_key_exists('HTTP_USER_AGENT', $_SERVER)) {
   if (FALSE !== stripos($_SERVER['HTTP_USER_AGENT'], 'msie/')) {
      $filename = iconv("utf-8", "windows-1251", $filename);
   }
   //if (FALSE !== stripos($_SERVER['HTTP_USER_AGENT'], 'opera/')) {
   //   $filename = urlencode($filename);
   //}
}

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');

echo bzcompress($filecontent, 9);

?>