#!/bin/perl #use CGI qw(:standard); #^ при запуске cgi.pm раскомментровать require "values.pl"; $rec_stat=""; $user_site_shows=0; $user_ban_shows=0; $user_ban_id=0; $shows_total=0; $src=0; $link=0; $user_id=0; $user_ban_st=0; &readform; #------------------------------------------------------------------------------ sub readform { if ($ENV{'REQUEST_METHOD'} eq "POST") {$mode = 0} if ($ENV{'REQUEST_METHOD'} eq "GET") {$mode = 1} if ($mode == 0) {read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'})} if ($mode == 1) {$buffer = $ENV{'QUERY_STRING'}} @pairs = split(/&/, $buffer); # if (@pairs[0] eq '') {¬hing;} foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($name eq 'gif') { $rcvd_gif = $value; } if ($name eq 'uid') { $rcvd_uid = $value; } if ($name eq 'id') { $rcvd_id = $value; if ($rcvd_gif eq 'act') { &show_pic; } &show; } } } #------------------------------------------------------------------------------ sub show_pic { # reading user file open USER, "user.pl"; @user_records = ; close USER; $count = int rand(@user_records); @user_info = split(/\|\|/, @user_records[$count]); foreach (@user_records) { @user_info = split(/\|\|/, $_); $id2uri{@user_info[3]} = @user_info[2]; } # reading uri's file open URI,"uri.db"; seek URI,0,0; @uri_stat = stat URI; #7 - size #$dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks sysread URI, $uri_records,@uri_stat[7],0; close URI; for ($uri_pos=0;$uri_pos<@uri_stat[7];$uri_pos+=30) { push @uri_records, (substr $uri_records, $uri_pos, 30); } my $move_to = 0; foreach (@uri_records) { if ($rcvd_uid == substr $_,0,4) { if ($rcvd_id == substr $_,14,4 ) {$user_ban_shows = substr $_,24,6; $ttime = time; if (length $ttime == 9) {$ttime = '0'.$ttime;} ++$user_ban_shows; for ($i_rec=length($user_ban_shows);$i_rec<=10-length($user_ban_shows);$i_rec++) {$user_ban_shows = "0".$user_ban_shows;} $rec_stat = ((substr $_,0,4).$ttime.(substr $_,14,4).(substr $_,18,6).$user_ban_shows); open URI, "+ 86400*$kill_day) { return 1; } #was -1 else { if ($lastdate-time > 86400*$wait_day) { return 1; } #was 0 else { if ($user_id == $rcvd_id) { return -2; } else { return 1; } } } } else { return -4; } } #------------------------------------------------------------------------------ sub separ($) { $ru = $_[0]; foreach (@uri_records) { if ($ru == substr $_,14,6) { $user_ban_shows+=substr $_,24,6; } } foreach (@uri_records) { if ($ru eq substr $_,0,4) { $user_site_shows+=substr $_,18,6; } } } #------------------------------------------------------------------------------ sub show { #$writeb=false; #^ #%vs = cookie('present'); #if (%vs) { @cook=%vs; # ($a,$b)=split(/-/,@cook[0]); # foreach (sort keys %vs) { # if ($a != 'active') { $writeb=true; } # }} # # #$the_cookie = cookie(-name=>'present', # -value=>'active', # -expires=>''); #print header(-cookie=>$the_cookie); #^ при запуске cgi.pm раскомментировать последние 12 строчек print "Content-type: text/html\n\n"; #^ при запуске cgi.pm закомментировать последнюю 1 строчку #print header(); # reading uri's file open URI,"uri.db"; seek URI,0,0; @uri_stat = stat URI; #7 - size #$dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks sysread URI, $uri_records,@uri_stat[7],0; close URI; for ($uri_pos=0;$uri_pos<@uri_stat[7];$uri_pos+=30) { push @uri_records, (substr $uri_records, $uri_pos, 30); } # reading user file open USER, "user.pl"; @user_records = ; close USER; # начало исправления while ($count ==0) {srand; $count = int rand(@user_records);} # конец исправления @user_info = split(/\|\|/, @user_records[$count]); $user_id=@user_info[3]; for ($i_rec=length($user_id);$i_rec<=6-length($user_id);$i_rec++) {$user_id = "0".$user_id;} for ($i_rec=length($rcvd_id);$i_rec<=6-length($rcvd_id);$i_rec++) {$rcvd_id = "0".$rcvd_id;} $user_ban_id=$user_id; $src=@user_info[4]; $link=$cgi_uri."show.cgi?gif=act&uid=$rcvd_id&id=$user_id"; ###### &separ($user_id); $chk_st = 0; foreach (@user_records) { @tet=split(/\|\|/, $_); $user_id_t=@tet[3]; if ($rcvd_id == $user_id_t) { $chk_st = 1; } } if ($chk_st == 0){ $user_id='0000'; $rcvd_id='0000'; $user_ban_id=$user_id; $src='banner.gif'; $link=$cgi_uri."show.cgi?gif=act&uid=$rcvd_id&id=$user_id"; } $check_result = ✓ print " "; #if ($check_result == 0) {print '7 days left';} #if ($check_result == -1) {print '30 days left';} if ($check_result == -2) {#print 'dupe'; $link=$cgi_uri."show.cgi?gif=act&uid=$rcvd_id&id=0000"; $src='banner.gif'; $user_ban_id='0000'; $user_ban_shows=0; $user_site_shows=0; &separ('0000'); print " \"$alt\""; } if ($check_result == -3) {#print 'show nothing'; $link=$cgi_uri."show.cgi?gif=act&uid=$rcvd_id&id=0000"; $src='banner.gif'; $user_ban_id='0000'; $user_ban_shows=0; $user_site_shows=0; &separ('0000'); print " \"$alt\""; } if ($check_result == -4) { $src='banner.gif'; $user_ban_id='0000'; $user_ban_shows=0; $user_site_shows=0; &separ('0000'); print " \"$alt\""; } if ($check_result == 1) { print " \"$alt\""; } print ""; #if (writeb) #{ #^ $move_to = &make_stat; open URI, "+check result: $check_result"; #print "\n
seek: $move_to"; #print "\n
record: $rec_stat"; #print "\n
length: ".(length $rec_stat); } #------------------------------------------------------------------------------ sub make_stat{ $cur_pos = 0; foreach (@uri_records) { if ($rcvd_id == substr $_,0,4) { if ($user_ban_id == substr $_,14,4) { $user_site_shows = substr $_,18,6; $ttime = time; if (length $ttime == 9) {$ttime = '0'.$ttime;} ++$user_site_shows; for ($i_rec=length($user_site_shows);$i_rec<=10-length($user_site_shows);$i_rec++) {$user_site_shows = "0".$user_site_shows;} for ($i_rec=length($user_ban_shows);$i_rec<=10-length($user_ban_shows);$i_rec++) {$user_ban_shows = "0".$user_ban_shows;} $rec_stat = ($rcvd_id.$ttime.(substr $_,14,4).$user_site_shows.(substr $_,24,6)); @rec_stat[0] = $rcvd_id; @rec_stat[1] = $ttime; @rec_stat[2] = substr $_,14,4; @rec_stat[3] = $user_site_shows; @rec_stat[4] = substr $_,24,6; return $cur_pos; } } $cur_pos+=30; } if ($cur_pos > 0) { $user_site_shows = substr $_,18,6; $user_ban_shows=0; $ttime = time; if (length $ttime == 9) {$ttime = '0'.$ttime;} ++$user_site_shows; for ($i_rec=length($user_site_shows);$i_rec<=10-length($user_site_shows);$i_rec++) {$user_site_shows = "0".$user_site_shows;} for ($i_rec=length($user_ban_shows);$i_rec<=10-length($user_ban_shows);$i_rec++) {$user_ban_shows = "0".$user_ban_shows;} $rec_stat = ($rcvd_id.$ttime.$user_ban_id.$user_site_shows.$user_ban_shows); @rec_stat[0] = $rcvd_id; @rec_stat[1] = $ttime; @rec_stat[2] = substr $_,14,4; @rec_stat[3] = $user_site_shows; @rec_stat[4] = $user_ban_shows; return @uri_stat[7]; } else { $user_site_shows = substr $_,18,6; $ttime = time; if (length $ttime == 9) {$ttime = '0'.$ttime;} ++$user_site_shows; for ($i_rec=length($user_site_shows);$i_rec<=10-length($user_site_shows);$i_rec++) {$user_site_shows = "0".$user_site_shows;} for ($i_rec=length($user_ban_shows);$i_rec<=10-length($user_ban_shows);$i_rec++) {$user_ban_shows = "0".$user_ban_shows;} $rec_stat = ($rcvd_id.$ttime.$user_ban_id.$user_site_shows.$user_ban_shows); @rec_stat[0] = $rcvd_id; @rec_stat[1] = $ttime; @rec_stat[2] = $user_ban_id; @rec_stat[3] = $user_site_shows; @rec_stat[4] = $user_ban_shows; return 0; } } 1;