Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. #! /usr/bin/perl
  2.  
  3. use strict;
  4. use IO::Socket;
  5. use Net::XMPP;
  6. use utf8;
  7.  
  8. my $hostName = 'jabber.alpari.org';
  9. my $portNumber = 5222;
  10. my $port = 4550;
  11. my $componentName = '';
  12. my $userName = 'unixbot';
  13. my $fullUserName= 'unixbot@jabber.alpari.org';
  14. my $passWord = 'unix123bot';
  15. my $resource = 'work';
  16. my $tls = 1;
  17. my $connectionType = 'tcpip';
  18. my $conferenceName = 'unix@conference.jabber.alpari.org';
  19. my $debugLevel = 1;
  20. my $bot = new Net::XMPP::Client(
  21. debuglevel => $debugLevel
  22. );
  23.  
  24. # Создаем сокет
  25. socket(SOCK, # Указатель сокета
  26. PF_INET, # коммуникационный домен
  27. SOCK_STREAM, # тип сокета
  28. getprotobyname('tcp') # протокол
  29. ) or die ("Не могу создать сокет!");
  30. setsockopt(SOCK, SOL_SOCKET, SO_REUSEADDR, 1);
  31.  
  32. # Связываем сокет с портом
  33. my $paddr = sockaddr_in($port, INADDR_ANY);
  34. bind(SOCK, $paddr) or die("Не могу привязать порт");
  35. # Ждем подключений клиентов
  36. print "Ожидаем подключения...\n";
  37. listen(SOCK, SOMAXCONN);
  38.  
  39. $bot->SetCallBacks(
  40. onconnect => \&connectedCB,
  41. onauth => \&authedCB,
  42. ondisconnect => \&disconnectedCB
  43. );
  44.  
  45. $bot->Execute(
  46. hostname => $hostName,
  47. port => $portNumber,
  48. tls => $tls,
  49. username => $userName,
  50. password => $passWord,
  51. resource => $resource,
  52. register => 0,
  53. connectiontype => $connectionType
  54. );
  55.  
  56. sub connectedCB {
  57. print "Connected\n";
  58. }
  59.  
  60. sub authedCB {
  61. print "Authed\n";
  62. $bot->PresenceSend(show=>"available");
  63. $bot->PresenceSend(to=>$conferenceName."/".$userName);
  64. while (my $client_addr = accept(CLIENT, SOCK)){
  65. my $data;
  66. my $count = sysread(CLIENT, $data, 1024);
  67. chomp($data);
  68. print CLIENT "$data";
  69. $bot->MessageSend(to => $conferenceName,body=> $data,type=>"groupchat");
  70. print CLIENT "Hello, world\n";
  71. close(CLIENT);
  72.  
  73. }
  74. }
  75.  
  76. $bot->Disconnect();
  77.  
  78. sub disconnectedCB {
  79. print "Disconnected\n";
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement