Poe :: Komponente :: server :: nnTp

Eine PoE-Komponente, die NNTP-Serverfunktionalität bietet
Jetzt downloaden

Poe :: Komponente :: server :: nnTp Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Chris Williams
  • Website des Verlags:
  • http://search.cpan.org/~bingos/

Poe :: Komponente :: server :: nnTp Stichworte


Poe :: Komponente :: server :: nnTp Beschreibung

Eine Komponente, die POE NNTP-Server-Funktionalität bietet POE :: Component :: Server :: NNTP ist ein Perl-Modul, dass Geräte eine RFC 977 http://www.faqs.org/rfcs/rfc977.html NNTP-Server. Es ist der Begleiter Komponente POE :: Component :: Client-:: NNTP, die implementiert NNTP-Client functionality.You einen NNTP-Server-Komponente erzeugen, erstellen Sie Ihre POE Sitzungen dann Ihre Sitzung registrieren Ereignisse zu empfangen. Jedes Mal, wenn Clients eine Verbindung herstellen, trennen oder gültige NNTP-Protokollbefehle senden Sie ein Ereignis und eine eindeutige Client-ID erhalten. Sie dann analysieren und die gegebenen Befehle verarbeiten und anwendbar NNTP responses.This Komponente implementiert nicht die Nachrichten-Datenbank zurückschicken und als solche ist nicht von selbst ein kompletter NNTP-Daemon implementation.SYNOPSIS use strict; Verwendung POE qw (Component :: Server :: NNTP); my% Gruppen; while () {chomp; Push @ {$ Gruppen { 'perl.cpan.testers'} -> { ''}}, $ _; } My $ nntpd = POE :: Component :: Server :: NNTP-> spawn (alias => 'nntpd', Eintrag => 0, port => 10119,); POE :: Session-> create (package_states => ] Optionen => {trace => 0},); $ poe_kernel-> run (); Ausfahrt 0; SUB _START {MY ($ KERNEL, $ Heap) = @_ ; $ Heap -> {clients} = {}; $ Kernel-> post ( 'nntpd', 'registrieren', 'all'); Rückkehr; } Sub nntpd_connection {my ($ Kernel, $ heap, $ client_id) = @_ ; $ Heap -> {clients} -> {$ client_id} = {}; Rückkehr; } Sub nntpd_disconnected {my ($ Kernel, $ heap, $ client_id) = @_ ; löschen $ heap -> {clients} -> {$ client_id}; Rückkehr; } Sub nntpd_cmd_slave {my ($ Kernel, $ sender, $ client_id) = @_ ; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, '202 Slave-Status festgestellt'); Rückkehr; } Sub nntpd_cmd_post {my ($ Kernel, $ sender, $ client_id) = @_ ; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, '440 Posting nicht erlaubt'); Rückkehr; } Sub nntpd_cmd_ihave {my ($ Kernel, $ sender, $ client_id) = @_ ; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, '435 Artikel nicht gesucht'); Rückkehr; } Sub nntpd_cmd_newnews {my ($ Kernel, $ sender, $ client_id) = @_ ; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, '230-Liste von neuen Artikeln folgt'); $ Kernel-> post ($ sender, 'send_to_client', $ client_id, ''); Rückkehr; } Sub nntpd_cmd_newgroups {my ($ Kernel, $ sender, $ client_id) = @_ ; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, '231 Liste der neuen Newsgroups folgt'); $ Kernel-> post ($ sender, 'send_to_client', $ client_id, ''); Rückkehr; } Sub nntpd_cmd_list {my ($ Kernel, $ sender, $ client_id) = @_ ; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, '215 Liste der Newsgroups folgt'); foreach my $ Gruppe (keys% Gruppen) {my $ Antwort = join '', $ Gruppe, skalare Schlüssel% {$ Gruppen {$ group}}, 1, 'n'; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, $ reply); } $ Kernel-> post ($ sender, 'send_to_client', $ client_id, ''); Rückkehr; } Sub nntpd_cmd_group {my ($ Kernel, $ sender, $ client_id, $ group) = @_ ; es sei denn, ($ Gruppe oder existiert $ Gruppen {lc $ group}) {$ Kernel-> post ($ sender, 'send_to_client', $ client_id, '411 keine solche News-Gruppe'); Rückkehr; } $ Group = lc $ Gruppe; $ Kernel-> Post ($ sender, 'send_to_client', $ client_id "211, 11 1 $ Gruppe ausgewählt"); $ _ -> {clients} -> {$ client_id} = {group => $ group}; Rückkehr; } Sub nntpd_cmd_article {my ($ Kernel, $ sender, $ client_id, $ Artikel) = @_ ; my $ group = 'perl.cpan.testers'; if (! $ Artikel und definiert $ _ -> {clients} -> {$ client_id} -> {Gruppe}) {$ Kernel-> post ($ sender, 'send_to_client', $ client_id, 412 keine Newsgroup ausgewählt); Rückkehr; } $ Article = 1, es sei denn $ Artikel; if ($ Artikel \ / ^ $ / und $ Artikel ne '1'!) {$ Kernel-> post ($ sender, 'send_to_client', $ client_id, '423 keine solche Artikel-Nummer'); Rückkehr; } If ($ article = ~ / ^ $ / und definiert $ Gruppen {$ group} -> {$ article}) {$ Kernel-> post ($ sender, 'send_to_client', $ client_id, 430 kein solcher Artikel GEFUNDEN '); Rückkehr; } My $ msg_id (keys% {$ Gruppen {$ group}}) {$ Kernel-> post ($ sender, 'send_to_client', $ client_id "220 $ 1 msg_id Artikel abgerufen - Kopf und Körper folgen") foreach; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, $ _) für @ {$ Gruppen {$ group} -> {$ msg_id}}; $ Kernel-> post ($ sender, 'send_to_client', $ client_id, ''); } Rückkehr; } Anforderungen: · Perl.


Poe :: Komponente :: server :: nnTp Zugehörige Software