#!perl
# Copyright 1999 by Alexey Vladimirov {avladimr@uic.rsu.ru}
# Скрипт, добавляющий новости, введенные через форму.

$homedir='../www/paraldey';
$newsfile = '../www/paraldey/news.txt'; #база новостей
$passfile = '../www/paraldey/pswrd.txt'; #файл с паролем редактора новостей
$article=time();

#Декодирование данных
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
@allow = ('a', 'b', 'i');
foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);
  $name =~ tr/+/ /;
  $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $name =~ s/<!--(.|\n)*-->//g;
  $name =~ s/<([^>]|\n)*>//g;
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g;
  $value =~ s/\n/<br>/g; #переносим как положено
  $value =~ s/\n/ /g; #объединяем в одну строку
  $value =~ s/\r/ /g;
  $FORM{$name} = $value;
  }
#Сверяем пароль
open PASS,"$passfile";
while(<PASS>) {
  ($password) = split(':');
  }
close(PASS);
$date = $FORM{localdate};
$teaser = $FORM{teaser};
$author = $FORM{author};
$title = $FORM{title};
$description = $FORM{description};
$keywords = $FORM{keywords};
$body = $FORM{body};

if ($FORM{pass} eq $password) {
#  system "cp $homedir/statia.tpl $homedir/$article";
  system("copy $homedir/statia.tpl $homedir/$article > nul");
  process_file("$homedir/$article");

#  system "cp $homedir/last.tpl $homedir/last";
  system("copy $homedir/last.tpl $homedir/last > nul");
  process_file("$homedir/last");

  &add_news;
  exit;
  }
else {
  print "Content-type: text/html\n\n";
  print "<h3>Неверный пароль!</h3>";
  }

#Добавляем в базу новостей новую запись
sub add_news
{
$newnews = "$date"."::"."$title"."::"."$article".".shtml"."::"."\n";
open NEWS,"+<$newsfile" || die "Cannot open $newsfile $!\n";
@NEWSDATA=<NEWS>;
@NEWSDATA=($newnews,@NEWSDATA);
seek(NEWS,0,0); #позиционируем в начале файла
print NEWS @NEWSDATA;
close NEWS;
#Уведомление
print "Content-type: text/html\n\n";
print "Добавлена запись \"$title\" от $date";
}

sub process_file($)
{
my $filename=shift;

open(IN, "<$filename");
open(OUT, ">$filename.shtml");

while (<IN>) {
  s/<!-- article -->/$article/gi;
  s/<!-- date -->/$date/gi;
  s/<!-- teaser -->/$teaser/gi;
  s/<!-- description -->/$description/gi;
  s/<!-- author -->/$author/gi;
  s/<!-- title -->/$title/gi;
  s/<!-- body -->/$body/gi;
  print OUT $_;
  }

close(OUT);
close(IN);
unlink( $filename);
#$rm="rm $filename";
#system($rm);
}

