Приветствую ALL!!!
Маленькая трабла, FreeBSD 5.2+DrWeb 4.31.3 не обновляется, ни руками, ни как иначе, пишет Permission deny, причем update ходит через проксю на другом серваке, точнее хотелось бы чтоб так было. Чо делать?
У меня на 4.8 из портов поставленый не запускается вообще :-)
>У меня на 4.8 из портов поставленый не запускается вообще :-)
Да, кстати забыл добавить у меня там CGP 4.1.8 стоит
>Приветствую ALL!!!
>Маленькая трабла, FreeBSD 5.2+DrWeb 4.31.3 не обновляется, ни руками, ни как иначе,
>пишет Permission deny, причем update ходит через проксю на другом серваке,
>точнее хотелось бы чтоб так было. Чо делать?а можно конкретнее, что делаешь и что дословно говорит?
1. может, банально права на файлы баз не те
2. может прокся не пускаеттак - мало информации
>а можно конкретнее, что делаешь и что дословно говорит?
>1. может, банально права на файлы баз не те
>2. может прокся не пускает
>
>так - мало информацииИли firewall на самой фрюхе...
>
>>а можно конкретнее, что делаешь и что дословно говорит?
>>1. может, банально права на файлы баз не те
>>2. может прокся не пускает
>>
>>так - мало информации
>
>Или firewall на самой фрюхе...
На проксе стоит 5.2 в данный момент там крутится почта + DrWeb, на тестовой почте тоже самое + DrWeb, на проксе все проходит нормально, на тестовом серваке не идет, настройка прав на базу такая же как и на проксе, причем на тестовом поставил lynx и он нормально работает, может где нить в конфиге DrWeb надо сказать что он через проксю апдейтится?
тебе-же ясно написали - доступ запрешен
разрешения на файлы проставь
>тебе-же ясно написали - доступ запрешен
>разрешения на файлы проставь
-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Что это?
>>тебе-же ясно написали - доступ запрешен
>>разрешения на файлы проставь
>
>
>-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
>
>Что это?а почему он не исполняемый?
>а почему он не исполняемый?
В смысле? Вообще-то он исполняемый
>
>>а почему он не исполняемый?
>
>
>В смысле? Вообще-то он исполняемый-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
так - не испольняемый.
если попробовать запустить:
$ perl ./update.plчто скажет
>>
>>>а почему он не исполняемый?
>>
>>
>>В смысле? Вообще-то он исполняемый
>
>-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
>
>так - не испольняемый.
>если попробовать запустить:
>$ perl ./update.pl
>
>что скажет
Тоже самое, он мне это говорит вообще на любое действо
>>>
>>>>а почему он не исполняемый?
>>>
>>>
>>>В смысле? Вообще-то он исполняемый
>>
>>-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
>>
>>так - не испольняемый.
>>если попробовать запустить:
>>$ perl ./update.pl
>>
>>что скажет
>
>
>Тоже самое, он мне это говорит вообще на любое действону ок
а что в самом update.pl
если попробовать запустить эту команду fetch из него вручную?
fetch смотрит переменную HTTP_PROXY - она определена?
>>>>
>>>>>а почему он не исполняемый?
>>>>
>>>>
>>>>В смысле? Вообще-то он исполняемый
>>>
>>>-rw-r--r-- 1 drweb drweb 10196 Mar 9 22:16 update.pl
>>>
>>>так - не испольняемый.
>>>если попробовать запустить:
>>>$ perl ./update.pl
>>>
>>>что скажет
>>
>>
>>Тоже самое, он мне это говорит вообще на любое действо
>
>ну ок
>а что в самом update.pl
>если попробовать запустить эту команду fetch из него вручную?
>fetch смотрит переменную HTTP_PROXY - она определена?
Где это посмотреть?
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;
}#----------------------------------------------------------------------------