Литмир - Электронная Библиотека

· $server=«FH»;

· $server=~ s/\n//;

· $group=«FH»;

· $group =~ s/\n//;

·}

· else

· {

· print "fail\n";

·}

·

· print "Server [$server]:";

· $tmp=«»; if (length($tmp)»2) {$server=$tmp; $server=~ s/\n//;}

·

·

· print "Command (MSG|LIST|EXIT):";

· $tmp=«»;

·

· if ($tmp=~/MSG\n/)

· {

· print "Group [$group]:";

· $tmp=«»;

· if (length($tmp)»2) {$group=$tmp; $group=~ s/\n//;}

· getmsg();

·}

·

· if ($tmp=~/LIST\n/)

· {

· LIST();

·}

·

· if ($tmp=~/EXIT\n/)

· {

· EXIT();

·}

·

· #Сохраняем настойки в файле

· if (open(FH,"»nr.cfg"))

· {

· print FH "$server\n";

· print FH "$group\n";

·}

· close (FH);

·

·

· sub getmsg()

· {

·

· $cmdcount=0;

· print "Connecting to $server…";

· socket(NNTP, PF_INET(), SOCK_STREAM(), getprotobyname("tcp") || 6);

· connect(NNTP, sockaddr_in(119,inet_aton($server))) || die;

· print "ok!\n";

·

· recv(NNTP,$rc,200,0); # Приглашение сервеа

· print "$rc\n";

·

· send(NNTP,"GROUP $group\r\n",0); # Выбор группы

· $group_res=«NNTP»;

· if(substr($group_res,0,3)-411)

· {

· print "$group_res\n";

· die;

·}

· print "$group_res\n";

·

· open(FH,"»$msgfile"); # Открыть файл сообщений

· print FH "$group_res\n";

· $cmdcount=0;

·

· $reader=1; # цикл

· $msgdone=0; # Сообщений прочитано

·

· while($reader)

· {

· send(NNTP,"ARTICLE\r\n",0); # Новая статья

·

· while(substr(($rc=«NNTP»),0,3)!~/\.\r\n/)

· {# Чтение статьи

·

· if (!$rc) {print "Close connection\n";die;}

· print FH $rc;

·}

· print FH $rc;

· $msgdone++; # Следующее сообщение

· print "=$msgdone;\r"; # Протокол на экран

·

· send(NNTP,"NEXT\r\n",0); # Следующее сообщение

· $nx=«NNTP»;

·

· $add=1;

· while($add)

· {

· if (substr($nx,0,1)!~/\./){$add=0;}

· if (substr($nx,0,1)=~/\./){$nx=«NNTP»;}

·

·}

· $nx++;

·

· if ($nx-422) {$reader=0;} # Выход из цикла

·}

·

· close (FH);

·

· if (open(CF,"$msgfile.gz")) # Удалить файл если он уже есть!

· {

· close(CF);

· unlink("$msgfile.gz");

·}

·

· open(FG,"|gzip $msgfile"); # Сжать!

· print "Done\n";

· close(NNTP);

·}

·

· sub LIST()

· {

· print "Connect to $server…";

· socket(NNTP, PF_INET(), SOCK_STREAM(), getprotobyname("tcp") || 6);

· connect(NNTP, sockaddr_in(119,inet_aton($server))) || die;

· print "ok\n";

·

· recv(NNTP,$rc,200,0);

· print $rc;

·

· print "»LIST\n";

· send(NNTP,"LIST\r\n",0);

·

· open(FH,"»$listfile");

· print FH "Server: $server \nLIST:\n";

·

· $cmdcount=0;

·

30
{"b":"837821","o":1}