#!/usr/bin/perl

$login="admin"; #Это ваш логин
$pass="pass"; #Это ваш пароль

#==========================================

$filerazdel="razdel.blt";
$filehdr="header.blt";
$fileend="end.blt";

#Get data from memory --------
if ($ENV{'REQUEST_METHOD'} eq "POST")
    {
      read(STDIN, $bufer, $ENV{'CONTENT_LENGTH'});
    }
else
    {
      $bufer=$ENV{'QUERY_STRING'};
    }    
#End -------------------------
# Decode data ----------------
@pairs = split(/&/, $bufer);
foreach $pair (@pairs)
      {
	      	
	        ($name, $value) = split(/=/, $pair);
	        $name =~ tr/+/ /;
	        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	        $value =~ tr/+/ /;
	        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	        
	        $FORM{$name} = $value;
      }      
# End ------------------------   

&html;
if($bufer eq ""){&showpass;}
if($FORM{action} eq "Редактировать"){&edit;}
elsif($FORM{action} eq "checkpass"){&checkpass;}
elsif($FORM{action} eq "Удалить"){&del;}
elsif($FORM{action} eq "Готово"){&addedit;}
elsif($FORM{action} eq "newrazdel"){&newrazdel;}
elsif($FORM{action} eq "Добавить"){&addrazdel;}
elsif($FORM{action} eq "delrazdel"){&delrazdel;}
elsif($FORM{action} eq "delet"){&delet;}
elsif($FORM{action} eq "setup"){&setup;}
else{&razdel;}
&htmlend;



#############################################



sub checkpass
  {
  	if($FORM{login} eq $login && $FORM{pass} eq $pass)
  	  {&empty;}
  	else
  	  {
  	  	print "Неправильно введён login или пароль.<br><br><br>\n";
  	  	&showpass;
  	  }	  
  }	

sub showpass
  {
  	print "<form action=admin.pl method=POST>";
  	print "<table width=300 border=0>";
  	print "<tr><td>";
  	print "Введите login:<br>";
  	print "<input type=text size=25 name=login><br>";
  	print "Введите пароль:<br>";
  	print "<input type=password size=25 name=pass><br><br>";
  	print "<input type=hidden name=action value=checkpass>";
  	print "<input type=submit value=Отправить>";
  	print "</td></tr>";
  	print "</table></form>";
  }	

sub delet
  {
  	open (NEW,">zman.blt");
  	open (OLD,"$filerazdel");
	  	
  	while (<OLD>)
  	  {
  	  	($kod,$name)=split("=",$_);
  	  	
  	  	if($kod ne $FORM{raz})
  	  	  {
  	  	  	print NEW $_;
  	  	  }
  	  	
  	  }	
	
	close(OLD);
	close(NEW);
	rename($filerazdel,"old.bak");
	rename("zman.blt",$filerazdel);
	print "Раздел удален<br>\n";
	&empty;
  }	

sub delrazdel
  {
  	open (RAZDEL,"$filerazdel");
  	@RAZDEL=<RAZDEL>;
  	close(RAZDEL);
  	
  	print "Удаление раздела";
  	print "<form action=admin.pl method=POST><table width=400>";
  	print "Раздел: <br><select name=raz>";
  	foreach $pair (@RAZDEL)
  	  {
  	  	($kod,$op)=split("=",$pair);
  	  	print "<option value=$kod>$op";
  	  }
	print "</select><br>";
	print "<input type=hidden name=action value=delet>";
	print "<input type=submit value=Удалить>";
	print "</table></form>";  	
  }	

sub addrazdel
  {
  	if ($FORM{namerazdel} eq ""){&error;} 
  	if ($FORM{kodrazdel} eq ""){&error;}
  	open(FILE,">>$filerazdel");
  	print FILE "$FORM{kodrazdel}=$FORM{namerazdel}\n";
  	close (FILE);
  	$newfile="$FORM{kodrazdel}.blt";
  	open (NEW,">$newfile");
  	close (NEW);
  	print "Добавлен новый раздел";
  	&empty; 
  }	

sub newrazdel
  {
  	print "Добавление нового раздела<br>";
  	print "<form action=admin.pl method=POST><table width=400>";
  	print "<tr><td>";
  	print "Название раздела:<br><input type=text name=namerazdel size=40><br>";
  	print "Код раздела (англиийскими буквами):<br>";
  	print "Например: Спорт - sport , Развлечение - razvl , и т.п.<br>";
  	print "<input type=text name=kodrazdel size=40><br><br>";
  	print "<input type=submit name=action value=Добавить>";
  	print "</td></tr>";
  	print "</table></form>";
  }	

sub addedit
  {
  	
  	if ($FORM{razdel} ne ""){$file="$FORM{razdel}.blt";}
  	else{&error;}
  	if ($FORM{name} eq ""){&error;} 
  	if ($FORM{url} eq ""){&error;}
  	if ($FORM{sol} eq ""){&error;}
  	else{$FORM{sol}=~ s/\n/<br>/g;}
  	open(FILE,"$file");
  	@DATA=<FILE>;
  	close (FILE);
  	
  	for($i=0;$i<@DATA;$i++)
  	  {
  	  	if($i eq $FORM{id})
  	  	  {
  	  	  	@DATA[$i]= "$FORM{name}\:\:$FORM{url}\:\:$FORM{sol}\n";
  	  	  }
  	  	
  	  }	
  	open(FILE,">$file");  
	for($i=0;$i<@DATA;$i++)
	  {
	  	print FILE "@DATA[$i]";
	  }	
	close (FILE);  
	&razdel;	  	
  }	

sub del
  {
  	$filename="$FORM{razdel}.blt";
  	open (NEW,">zman.blt");
  	open (OLD,"$filename");
	$i=0;  	  	
  	while (<OLD>)
  	  {
  	  	
  	  	if($i ne $FORM{id})
  	  	  {
  	  	  	print NEW $_;
  	  	  }
  	  	$i++;  	
  	  }	
	
	close(OLD);
	close(NEW);
	rename($filename,"old.bak");
	rename("zman.blt",$filename);
	print "Ссылка удалена";
	&razdel;
  }	

sub edit
  {
  	$filename="$FORM{razdel}.blt";
  	open(FILE,"$filename");
  	@DATA=<FILE>;
  	close (FILE);
  	($name,$url,$sol)=split("::",@DATA[$FORM{id}]);
  	$sol=~ s/<br>/\n/g;
  	print "Редактирование ссылки";
  	print "<form action=admin.pl method=POST>";
  	print "<table width=400>";
  	print "<tr><td>";
  	print "Название:<br><input type=text name=name value=$name><br><br>";
  	print "URL:<br><input type=text name=url value=$url><br><br>";
  	print "Описание<br><textarea cols=30 rows=5 name=sol>$sol</textarea><br>";
  	print "<input type=hidden name=id value=$FORM{id}><br>";
  	print "<input type=hidden name=razdel value=$FORM{razdel}><br>";
  	print "<input type=submit name=action value=Готово><br>";
  	print "</table></form>";
  }	

sub razdel
  {
  	
  	if($FORM{razdel} ne ""){$file="$FORM{razdel}.blt";}
  	else{exit;}
  	open(FILE,"$file");
  	@DATA=<FILE>;
  	close (FILE);
  	
  	
  	for($i=0;$i<@DATA;$i++)
  	  {
  	  	print "<form action=admin.pl method=POST>";
  	  	print "<table width=400>";
  	  	($name,$url,$sol)=split("::",@DATA[$i]);
  	  	print "<tr><td>\n";
  	  	print "<b>$name</b><br>";
  	  	print "Url - <a href=http://$url>$url</a><br>";
  	  	print "$sol<br>";
  	  	 	  	
  	  	print "<input type=hidden name=razdel value=$FORM{razdel}>";
  	  	print "<input type=hidden name=id value=$i>";
  	  	print "<input type=submit value=Редактировать name=action>&nbsp<input type=submit name=action value=Удалить>";
  	  	print "</td></tr>\n";
  	  	print "</table>";
  	  	print "</form>";
  	  }	
  	
  	print "<br><br><br>";
  	&empty;
  }	

sub empty
  {
  	open (RAZDEL,"$filerazdel");
  	@RAZDEL=<RAZDEL>;
  	close(RAZDEL);
  	
  	print "<B>РАЗДЕЛЫ</B><br><br>";
  	print "<table width=300>";
  	for($i=0;$i<=@RAZDEL;$i++)
  	  {
  	  	($kod,$zn)=split("=",@RAZDEL[$i]);
  	  	print "<tr><td align=center>\n";
  	  	print "<a href=admin.pl?razdel=$kod>$zn</a>";
  	  	print "</td><td align=center>\n";
  	  	$i++;
  	  	($kod,$zn)=split("=",@RAZDEL[$i]);
  	  	print "<a href=admin.pl?razdel=$kod>$zn</a>";
  	  	print "</td></tr>\n";
  	  }	
	print <<EOF;  
	  <tr>
	        <td align=center width=50%></td>
	        <td align=center><font size=-1><br><br><br>
	          <a href=admin.pl?action=newrazdel>Добавить раздел</a><br>
	          <a href=admin.pl?action=delrazdel>Удалить раздел</a><br>
	          
	        </font></td>
	  </tr>
EOF
  	print "</table>";
  }
  
sub html
  {
  	print "Content-type: text/html\n\n";
  	open (HEADER,"$filehdr");
  	while (<HEADER>)
  	  {print "$_";}
  	close (HEADER); 
  	print "<center>";
  }
  
sub htmlend
  {
  	print "</center>";
  	open (SOF,"$fileend");
  	while (<SOF>)
  	  {print "$_";}
  	close (SOF); 
  	
  }	  	  	