URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 43925
[ Назад ]

Исходное сообщение
"DrWeb update"

Отправлено Dumid , 13-Май-04 18:08 
Приветствую ALL!!!
Маленькая трабла, FreeBSD 5.2+DrWeb 4.31.3 не обновляется, ни руками, ни как иначе, пишет Permission deny, причем update ходит через проксю на другом серваке, точнее хотелось бы чтоб так было. Чо делать?

Содержание

Сообщения в этом обсуждении
"DrWeb update"
Отправлено Chris , 13-Май-04 18:10 
У меня на 4.8 из портов поставленый не запускается вообще :-)

"DrWeb update"
Отправлено Dumid , 13-Май-04 18:16 
>У меня на 4.8 из портов поставленый не запускается вообще :-)


Да, кстати забыл добавить у меня там CGP 4.1.8 стоит


"DrWeb update"
Отправлено LinaS , 13-Май-04 19:41 
>Приветствую ALL!!!
>Маленькая трабла, FreeBSD 5.2+DrWeb 4.31.3 не обновляется, ни руками, ни как иначе,
>пишет Permission deny, причем update ходит через проксю на другом серваке,
>точнее хотелось бы чтоб так было. Чо делать?

а можно конкретнее, что делаешь и что дословно говорит?
1. может, банально права на файлы баз не те
2. может прокся не пускает

так - мало информации


"DrWeb update"
Отправлено MoHaX , 14-Май-04 04:16 

>а можно конкретнее, что делаешь и что дословно говорит?
>1. может, банально права на файлы баз не те
>2. может прокся не пускает
>
>так - мало информации

Или firewall на самой фрюхе...


"DrWeb update"
Отправлено Dumid , 14-Май-04 09:11 
>
>>а можно конкретнее, что делаешь и что дословно говорит?
>>1. может, банально права на файлы баз не те
>>2. может прокся не пускает
>>
>>так - мало информации
>
>Или firewall на самой фрюхе...


На проксе стоит 5.2 в данный момент там крутится почта + DrWeb, на тестовой почте тоже самое + DrWeb, на проксе все проходит нормально, на тестовом серваке не идет, настройка прав на базу такая же как и на проксе, причем на тестовом поставил lynx и он нормально работает, может где нить в конфиге DrWeb надо сказать что он через проксю апдейтится?


"DrWeb update"
Отправлено hromach , 14-Май-04 09:27 
тебе-же ясно написали - доступ запрешен
разрешения на файлы проставь



"DrWeb update"
Отправлено Dumid , 14-Май-04 12:32 
>тебе-же ясно написали - доступ запрешен
>разрешения на файлы проставь


-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
bash-2.05b# ./update.pl
fetch: http://ypdates.drweb.ru/free/freebsd4/drweb32.lst: Permission denied

Что это?


"DrWeb update"
Отправлено LinaS , 14-Май-04 12:50 
>>тебе-же ясно написали - доступ запрешен
>>разрешения на файлы проставь
>
>
>-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
>bash-2.05b# ./update.pl
>fetch: http://ypdates.drweb.ru/free/freebsd4/drweb32.lst: Permission denied
>
>Что это?

а почему он не исполняемый?


"DrWeb update"
Отправлено Dumid , 14-Май-04 12:56 

>а почему он не исполняемый?


В смысле? Вообще-то он исполняемый


"DrWeb update"
Отправлено LinaS , 14-Май-04 13:30 
>
>>а почему он не исполняемый?
>
>
>В смысле? Вообще-то он исполняемый

-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl

так - не испольняемый.
если попробовать запустить:
$ perl ./update.pl

что скажет


"DrWeb update"
Отправлено Dumid , 14-Май-04 13:38 
>>
>>>а почему он не исполняемый?
>>
>>
>>В смысле? Вообще-то он исполняемый
>
>-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
>
>так - не испольняемый.
>если попробовать запустить:
>$ perl ./update.pl
>
>что скажет


Тоже самое, он мне это говорит вообще на любое действо


"DrWeb update"
Отправлено LinaS , 14-Май-04 13:48 
>>>
>>>>а почему он не исполняемый?
>>>
>>>
>>>В смысле? Вообще-то он исполняемый
>>
>>-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
>>
>>так - не испольняемый.
>>если попробовать запустить:
>>$ perl ./update.pl
>>
>>что скажет
>
>
>Тоже самое, он мне это говорит вообще на любое действо

ну ок
а что в самом update.pl
если попробовать запустить эту команду fetch из него вручную?
fetch смотрит переменную HTTP_PROXY - она определена?


"DrWeb update"
Отправлено Dumid , 14-Май-04 15:24 
>>>>
>>>>>а почему он не исполняемый?
>>>>
>>>>
>>>>В смысле? Вообще-то он исполняемый
>>>
>>>-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
>>>
>>>так - не испольняемый.
>>>если попробовать запустить:
>>>$ perl ./update.pl
>>>
>>>что скажет
>>
>>
>>Тоже самое, он мне это говорит вообще на любое действо
>
>ну ок
>а что в самом update.pl
>если попробовать запустить эту команду fetch из него вручную?
>fetch смотрит переменную HTTP_PROXY - она определена?


Где это посмотреть?


"DrWeb update"
Отправлено Dumid , 14-Май-04 15:29 
update.pl

#! /usr/bin/perl
#------------------------------------------------------------------------------
# drwebd update script, version 1.01
#------------------------------------------------------------------------------
#
# ChangeLog
#
# 24-11-2002, Vsevolod Lutovinov <vla@drweb.ru>
#    
#    * CRC32 implementation, no more String::CRC32 needed
#    * fetch or wget search rewritten
#
#------------------------------------------------------------------------------
#use strict;

#------------------------------------------------------------------------------
my $TEMP = "/tmp";

my $system = '';
$system = "linux" if( $^O =~ /Linux/i );
$system = "freebsd4" if( $^O =~ /FreeBSD/i );
$system = "openbsd" if( $^O =~ /OpenBSD/i );
$system = "solaris" if( $^O =~ /Solaris/i );
$system = "netbsd" if( $^O =~ /NetBSD/i );
die "Unsupported OS!\n" unless $system;

my @urls =
(
#
# commercial URL example:
# "http://LOGIN:PASSWORD\@updates.drweb.ru/$system/drweb32.lst"
#
  # main URL:
  "http://updates.drweb.ru/free/$system/drweb32.lst",
  # emergency URL's:
  "http://www.dials.ru/drweb/$system/drweb32.lst"
  # ...
  # ...
);

my $ini = $ARGV[0];
if( $ini eq '' )
{
  $ini = '/usr/local/etc/drweb/drweb32.ini' if $^O =~ /BSD/i;  
  $ini = '/etc/drweb/drweb32.ini' if $ini eq '';    
}

my $fetch = `which fetch 2>&1`;

if( $fetch =~ /^\// )
{
    chomp( $fetch ); $fetch = "$fetch -q -o";
}
else
{
    $fetch = `which wget 2>&1`;
    if( $fetch =~ /^\// )
    {
       chomp( $fetch ); $fetch = "$fetch -q -O";
    }
    else
    {
       $fetch = '';
    }
}

if( $fetch eq '' )
{
    print( "Please, install wget or fetch\n" ); exit;
}

my $engine = '';
my $bases = '';
my $update = '';
my $pidFile = '';

   readIniFile( $ini );
   die "Engine is not defined!" unless $engine;
   die "Bases path is not defined!" unless $bases;
   die "Update path is not defined!" unless $update;
  
   $pidFile = "/var/drweb/run/drwebd.pid" if( $pidFile eq '' );

my $version = readVersion( $engine );
   die "Engine version error (invalid engine?)" unless $version;

my %Paths = ();

   $engine =~ s/\/[\d\w\*\?\.]*$//;
   $Paths{ "vdb\$" } = "$bases";
   $Paths{ "dll\$" } = "$engine";

   foreach my $url ( @urls )
   {
     next if $url !~ m/^(.*)\/([\w.]+)$/o; # invalid URL
     my ( $b_url, $l_url ) = ( $1, $2 );

     open FH, "$fetch - $url |" or next;
     my $my_section = 0;

     while ( <FH> )
     {
       tr/\012\015//d;
       $my_section = ($1 eq $version) if /^\[(.+)\]/o;
       next unless $my_section;
       last; # section is found
     }

     my $mask = ".*";   # all files in your version section
     my чl; my ╜d; my ╜ded;

     while ( <FH> )
     {
       tr/\012\015//d;
      
       next if /txt/;        # 1.01 // COMMENT THIS LINE FOR drw*.txt FILES UPDATE
      
       last if /^\[---\]/o;  # no more sections for this versions
       $mask = 'drw.*\.vdb', next if /^\[(.+)\]/o; # new version, *.vdb only
       if( /$mask/ )
       {
         $del{$1} = hex($2) || '', next
         if /^\-(\w[\w\.\-]*)[, \t]*([a-fA-F\d]*)/o;
         $del{$1} = $add{$1} = hex($2) || '', next
           if /^\=(\w[\w\.\-]*)[, \t]*([a-fA-F\d]*)/o;
         $add{$1} = hex($2) || '', next
           if /^\+?(\w[\w\.\-]*)[, \t]*([a-fA-F\d]*)/o;
       }
     }

     close FH;

     foreach my $file ( keys чl )
     {
        my $full = fullPath( $file );
        next unless -e $full;
        unlink $full or warn "Can't delete $full $!";
     }

     foreach my $file ( keys ╜d )
     {
        my $full = fullPath( $file );

        if ( -e $full )
        {
           next if $add{$file} ne '' and $add{$file} == &filecrc32($full);
        }

        my $newfile = "$TEMP/$file".rand();
        system( "$fetch $newfile $b_url/$file" );    
        warn "Can't get $file" unless -e "$newfile";
        $added{ fullPath( $file ) } = $newfile, next if $add{$file} ne '' and $add{$file} == &filecrc32( "$newfile" );
        warn "Can't get $file with valid CRC32";
        unlink "$newfile";
     }

     my $updated = 0;
     foreach my $file ( keys ╜ded )
     {
       my $add_file = $added{ $file };
       if( -e( $add_file ) )
       {
           `mv $add_file $file`
       };
       $updated++;
     }
    
     if( $updated > 0 )
     {
        open( FH, "$pidFile" ) || die "Can not open $pidFile: $!\n";
        my $pid = <FH>;
        close( FH );
        chomp( $pid );
        kill 'HUP', $pid;
     }
     exit;
   }


#------------------------------------------------------------------------------
sub readVersion
{
  open( FH, "$_[0]" ) || die "Can not open $_[0]!";
  seek( FH, 0x400, 0 );
  my $ver = 0;
  read( FH, $ver, 4 );
  close( FH );
  return unpack( "I", $ver );
}

#------------------------------------------------------------------------------
sub readIniFile
{
  my $section = 'Daemon'; # 'Scanner'

  open( FH, "$_[0]" ) || die "Can not open $_[0]!";

  my $my_section = '';

  while( <FH> )
  {
    tr/\012\015//d;
    s/^[\t ]*//g;
    $my_section = ($1 eq $section), next if /^\[(.+)\]/o;
    next unless $my_section;
    if( /^EnginePath/ )
    {
      my ( $k, $v ) = split( 'EnginePath' );
      if( $v ne '' )
      {
        $engine = $v;
        $engine =~ s/^[\"\t =]*//g;
        $engine =~ s/[\" \t]*$//g;      
      }
    }
    elsif( /^PidFile/ )
    {
      my ( $k, $v ) = split( 'PidFile' );
      if( $v ne '' )
      {
        $pidFile= $v;
        $pidFile =~ s/^[\"\t =]*//g;
        $pidFile =~ s/[\" \t]*$//g;      
      }
    }
    elsif( /^VirusBase/ && $bases eq '' ) # first base path only
    {
      my ( $k, $v ) = split( 'VirusBase' );
      if( $v ne '' )
      {
        $bases = $v;

        $bases =~ s/^[\"\t =]*//g;
        $bases =~ s/,.*$//;
        $bases =~ s/[\" \t]*$//g;    
    $bases =~ s/\/[\d\w\*\?\.]*$//;
      }
    }
    elsif( /^UpdatePath/ )
    {
      my ( $k, $v ) = split( 'UpdatePath' );
      if( $v ne '' )
      {
        $update = $v;
        $update =~ s/^[\"\t =]*//g;
        $update =~ s/[\" \t]*$//g;      
      }
    }
  }
  close( FH );
}

#------------------------------------------------------------------------------
sub fullPath
{
  my $file = $_[0];

  foreach my $template ( keys %Paths )
  {
     if( $file =~ /$template/ )
     {
          return "$Paths{ $template }/$file";
     }
  }

  return "$update/$file";
}

#----------------------------------------------------------------------------
sub crc32
{
  my $s = $_[0];
  my $n = 0;
  my $c = 0xffffffff;

  my @crc32t =
  (
  0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
  0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
  0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
  0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
  0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
  0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
  0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
  0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
  0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
  0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
  0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
  0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
  0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
  0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
  0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
  0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
  0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
  0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
  0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
  0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
  0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
  0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
  0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
  0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
  0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
  0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
  0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
  0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
  0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
  0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
  0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
  0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
  0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
  0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
  0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
  0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
  0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
  0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
  0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
  0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
  0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
  0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
  0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
  0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
  0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
  0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
  0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
  0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
  0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
  0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
  0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
  0x2d02ef8d
  );

  while( $n < length( $s ) )
  {    
    $c = $crc32t[ ( $c ^ ord( substr( $s, $n, 1 ) ) ) & 0xFF ] ^ ( $c >> 8 );
    $n++;
  }
  return $c ^ 0xffffffff;
}

#----------------------------------------------------------------------------
sub filecrc32
{
  if( !open( F, $_[0] ) )
  {
     warn( "Can not open $_[0] ($!)!" ); return 0;
  }
  binmode( F );
  my $c = crc32( join( "", <F> ) );
  close( F );
  return $c;
}

#----------------------------------------------------------------------------