· $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;
·