Всем привет.
Возникла ситуация, которую сама не могу решить.
ejabberd 1.1.2
FreeBSD_6.2-RELEASE
pymsn-t 0.11.2
pyicq-t 0.8a
транспорты собирались из портов
Покажу кусочек конфига ejabberd.cfg
{5280, ejabberd_http, [http_poll, web_admin]},
%% This is an example on how to define an external service/transport:
{5347, ejabberd_service, [{access, all}, {host, "icq.example.net", [{password, "secret"}]}]},
{5351, ejabberd_service, [{access, all}, {host, "msn.example.net", [{password, "secret"}]}]},
]}.
теперь pymsn-t
<pymsnt>
<!-- This file contains options to be configured by the server administrator. -->
<!-- Please read through all the options in this file -->
<!-- The JabberID of the transport -->
<jid>msn.sibnsk.net</jid>
<!-- The public IP or DNS name of the machine the transport is running on -->
<!-- This is needed for file transfer!! -->
<!--<host>xx.xx.xx.xx</host> -->
<!-- The component JID of the transport. Unless you're doing clustering, leave this alone -->
<!-- <compjid>msn1</compjid> -->
<!-- The name of the transport in the service discovery list. -->
<discoName>MSN Transport</discoName>
<!-- The location of the spool directory.. if relative, relative to the PyMSNt dir.
Do not include the jid of the transport -->
<spooldir>/var/spool/pymsn</spooldir>
<!-- The location of the PID file, relative to the PyMSNt directory -->
<pid>/var/run/pymsn/PyMSNt.pid</pid>
<!-- If set, the transport will background itself when run -->
<background/>
<!-- The Twisted reactor to choose. Pick poll or epoll on Linux, kqueue on BSD. Or leave as default (best found) -->
<!-- <reactor>poll</reactor> -->
<!-- The IP address of the main Jabber server to connect to -->
<mainServer>xx.xx.xx.xx</mainServer>
<!-- The TCP port to connect to the Jabber server on (this is the default for Jabberd2) -->
<port>5351</port>
<!-- The authentication token to use when connecting to the Jabber server -->
<secret>secret</secret>
<!-- Use Jabber.com's XCP component protocol extensions. -->
<!-- <useXCP/> -->
<!-- The default language to use -->
<lang>ru</lang>
<!-- The website of the Jabber service -->
<website>http://www.example.net</website>
<!-- Comment out the following options to disable them, or uncomment them to enable them -->
<!-- Send email notification messages to users -->
<mailNotifications/>
<!-- Send greeting on login -->
<!-- <sessionGreeting>You have just started a session with PyMSNt</sessionGreeting> -->
<!--Send message on successful registration -->
<registerMessage>Поздравляем с успешной регистрацией на транспорте MSN</registerMessage>
<!-- Allow users to register with this transport -->
<allowRegister/>
<!-- Get all avatars. If this is set to true then avatars are grabbed for all your contacts immediately. If false then avatars are only grabbed when you're in a chat with a contact -->
<getAllAvatars/>
<!-- The amount of time a user has to join a groupchat they are invited to before the transport makes them leave the room. (MSN protocol requires autojoining of groupchats) -->
<!-- <groupchatTimeout>120</groupchatTimeout> -->
<!-- File transfer settings -->
<!-- The maximum size of a file transfer (in bytes). For unlimited, comment out, or set to 0 -->
<!-- <ftSizeLimit>524288</ftSizeLimit> -->
<!-- The maximum rate for file transfer (in bytes). For unlimited, comment out, or set to 0 -->
<!--<ftRateLimit>2048</ftRateLimit> -->
<!-- Please give the port to listen for Jabber socks5 transfers on. -->
<!--<ftJabberPort>8010</ftJabberPort> -->
<!-- Please give the port to listen for HTTP GETs here (Used in old-style OOB file transfers. Best to leave this disabled unless you know you need it.) -->
<!--<ftOOBPort>8011</ftOOBPort>-->
<!-- Please give the root URL the transport should send to clients. (You can use an Apache reverse proxy to put this on your ordinary website) -->
<!-- Eg, the transport will listen on port 8011 for HTTP GETs to /RANDOM_FILE.ext. You can set apache to forward any requests to to . This saves you from opening extra ports. -->
<!--<ftOOBRoot>http://host.com/msn/files/</ftOOBRoot>-->
<!-- You can choose which users you wish to have as administrators. These users can perform some tasks with Ad-Hoc commands that others cannot -->
<admins>
<jid>admin@example.net</jid>
</admins>
<!-- Log settings -->
<!-- The logging level
0 -> No logging
1 -> Log tracebacks
2 -> Log tracebacks, warnings and errors
3 -> Log all sorts of informational (mostly useless stuff)
4 -> Log the MSN protocol code sent
-->
<!-- <debugLevel>0</debugLevel> -->
<!-- The file to log to. Leave this disabled for stdout -->
<!-- <debugFile>debug.log</debugFile> -->
</pymsnt>
и еще pyicq
<pyicqt>
<!-- The JabberID of the transport. -->
<jid>icq.example.net</jid>
<!-- The component JID of the transport. Unless you're doing clustering, leave this alone -->
<!-- <compjid>icq1</compjid> -->
<!-- The location of the spool directory.. if relative, relative to -->
<!-- this directory. Do not include the jid of the transport. -->
<spooldir>/var/spool/pyicq</spooldir>
<!-- The location of the PID file.. if relative, relative to this dir. -->
<!-- Comment out if you do not want a pid file -->
<pid>/var/run/pyicq/PyICQt.pid</pid>
<!-- The IP address of the main Jabberd server -->
<mainServer>xx.xx.xx.xx</mainServer>
<!-- The JID of the main Jabber server -->
<mainServerJID>/var/spool/pyicq/PyICQ.pid</mainServerJID>
<!-- The website of the Jabber service -->
<website>http://www.example.net/</website>
<!-- The TCP port to connect to the Jabber server on -->
<!-- (this is the default for Jabberd2) -->
<port>5347</port>
<!-- The TCP port that the web admin interface will answer on -->
<!-- (uncomment to enable) -->
<!-- <webport>12345</webport> -->
<!-- The authentication token to use when connecting to the Jabber server -->
<secret>nfylth,thl16vjpbkk</secret>
<!-- The default language to use (for error/status messages) -->
<lang>ru</lang>
<!-- Default message encoding to use -->
<encoding>windows-1251</encoding>
<!-- The hostname of the ICQ server you wish to connect to -->
<icqServer>login.icq.com</icqServer>
<!-- The port of the ICQ server you wish to connect to -->
<icqPort>5190</icqPort>
<!-- The name of Socks Proxy if connecting thru a proxy -->
<!-- <socksProxyServer>im-proxy2</socksProxyServer> -->
<!-- The Socks Proxy port to use when connecting thru a proxy -->
<!-- <socksProxyPort>1080</socksProxyPort> -->
<!-- Send greeting on login (enter text to be sent to users here) -->
<!-- <sessionGreeting>enter message here</sessionGreeting> -->
<!-- Send message on successful registration -->
<!-- <registerMessage>You have successfully registered with PyICQt</registerMessage> -->
<!-- Allow users of ICQ gateway to chat with AIM users -->
<!-- (uncomment to enable) -->
<!-- <crossChat/> -->
<!-- Disable registration with the transport -->
<!-- (uncomment to disable) -->
<!-- <disableRegister/> -->
<!-- Enable automatic invitation to reconnect on restart -->
<!-- (uncomment to enable) -->
<!-- <enableAutoInvite/> -->
<!-- Disable xhtml support (messages with fonts and colors) -->
<!-- (uncomment to disable) -->
<!-- <disableXHTML/> -->
<!-- Disable mail notifications -->
<!-- (uncomment to disable) -->
<!-- <disableMailNotifications/> -->
<!-- Disable use of default avatar if none is specified -->
<!-- (uncomment to disable) -->
<!-- <disableDefaultAvatar/> -->
<!-- Disable use of iq-based avatars (JEP-0008) -->
<!-- (uncomment to disable) -->
<!-- <disableIQAvatars/> -->
<!-- Disable use of vcard-based avatars (JEP-0153) -->
<!-- (uncomment to disable) -->
<!-- <disableVCardAvatars/> -->
<!-- Disable use of PEP-based avatars (JEP-0084) -->
<!-- (uncomment to disable) -->
<!-- NOT IMPLEMENTED YET -->
<!-- <disablePEPAvatars/> -->
<!-- You can choose which users you wish to have as administrators. These users can perform some tasks with Ad-Hoc commands that others cannot -->
<admins>
<jid>amphee@sibnsk.net</jid>
</admins>
<!-- You can select which event loop PyAIMt will use. It's probably safe to leave this as the default -->
<!-- Use epoll for high-load Linux servers running kernel 2.6 or above -->
<!--<reactor>epoll</reactor>-->
<!-- Use kqueue for high-load FreeBSD servers -->
<!--<reactor>kqueue</reactor>-->
<!-- Use poll for high-load Unix servers -->
<!--<reactor>poll</reactor>-->
<!-- You can select which spool storage method you wish to use -->
<!-- Available methods are: -->
<!-- xmlfiles: single xml files in the spool directory in hashed dirs (default)-->
<!-- legacyaimtransport: compatible with c-based aim transport, less functionality -->
<!-- legacyjittransport: compatible with JIT transport, less functionality -->
<!-- mysql: registration information stored in a MySQL database -->
<!--<xdbDriver>xmlfiles</xdbDriver>-->
<!-- For MySQL -->
<!--<xdbDriver>mysql</xdbDriver>-->
<!--<xdbDriver_mysql>-->
<!--<username>pyicqt</username>-->
<!--<password>pyicqt</password>-->
<!--<database>pyicqt</database>-->
<!--<server>localhost</server>-->
<!--<format>encrypted</format>--> <!-- Enable encryption of passwords -->
<!--</xdbDriver_mysql>-->
<!-- For XMLFiles -->
<!--<xdbDriver>xmlfiles</xdbDriver>-->
<!--<xdbDriver_xmlfiles>-->
<!--<format>encrypted</format>--> <!-- Enable encryption of passwords -->
<!--</xdbDriver_xmlfiles>-->
<!-- Only grab avatars when a chat is initiated. -->
<!-- <avatarsOnlyOnChat/> -->
<!-- Disable all avatar functionality. Might be necessary if you -->
<!-- do not have PIL installed. -->
<!-- <disableAvatars/> -->
<!-- Enable web presence indicator. This can increase ICQ spam. -->
<!-- <enableWebPresence/> -->
<!-- Disable automatic send (via im) of away message when away set. -->
<!-- Note that away messages are -in addition to- the away status -->
<!-- message. -->
<!-- <disableAwayMessage/> -->
<!-- Use Jabber.com's XCP component protocol extensions. -->
<!-- <useXCP/> -->
<!-- SASL username used to bind to Jabber server. -->
<!-- secret, above, is used for sasl password -->
<!-- NOTE: This does not work with Twisted > 2.2.0. -->
<!-- <saslUsername>username</saslUsername> -->
<!-- Use external component binding. -->
<!-- This dodges the need to manually configure all jids that talk to this transport. -->
<!-- Jabberd2 requires saslUsername and useRouteWrap for this to work. -->
<!-- Wildfire as of 2.6.0 requires just this. -->
<!-- <useComponentBinding/> -->
<!-- Wrap stanzas in <route> stanza. -->
<!-- Jabberd2 requires this for useComponentBinding. -->
<!-- <useRouteWrap/> -->
<!-- JID of message archive service -->
<!-- <messageArchiveJID>datasink.example.org</messageArchiveJID> -->
<!-- If registration authentication is used, enter the method -->
<!-- Auth configs often require additional options to be specified. -->
<!-- See associated config entries per authRegister example. -->
<!-- NOTE: limited to LDAP for now -->
<!-- THIS IS UNTESTED AS OF YET -->
<!-- <authRegister>LDAP</authRegister> -->
<!-- For LDAP auth, make sure to uncomment <authRegister_LDAP> -->
<!-- and </authRegister_LDAP> and fill out the options in between. -->
<!-- <authRegister_LDAP> -->
<!-- The fqdn or ip address of the LDAP server -->
<!-- <server>ldap.example.org</server> -->
<!-- The Root DN to be used to perform LDAP searches -->
<!-- <rootDN>CN=Administrator,CN=Users,DC=example,DC=org</rootDN> -->
<!-- The password for the Root DN -->
<!-- <password>SECRET</password> -->
<!-- The Base DN to search for users -->
<!-- <baseDN>DC=example,DC=org</baseDN> -->
<!-- The attribute to search for the user ID. -->
<!-- 'samAccountname' in Windows, 'uid' on most other systems -->
<!-- <uidAttr>samAccountname</uidAttr> -->
<!-- </authRegister_LDAP> -->
</pyicqt>
ejabberd стартует спокойно, я логинюсь и болтаю.
затем я стартую pymsn
sapphire# cd ******/transports/MSN/
sapphire# ./PyMSNt.py
sapphire# Вот тут, ничего не сообщив, pymsn как бы захлопывается, хотя если судить о топе, питон от нее висит.
PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
1242 root 1 96 0 12868K 11708K select 0:01 0.05% python2.4
1220 root 4 20 0 33436K 28776K kserel 0:08 0.00% beam
1089 admin 1 96 0 6228K 3332K select 0:01 0.00% sshd
648 root 1 96 0 1504K 980K select 0:01 0.00% natd
1221 root 5 20 0 7280K 5952K kserel 0:00 0.00% sulci
1092 root 1 20 0 4952K 3072K pause 0:00 0.00% cshНо если сделать ps -ef |grep python я ничего не получаю
с pyicq дело обстоит немного по другому.
Запускаю я pyicq
sapphire# cd *****/transports/ICQ/
sapphire# ./PyICQt.py
*(тут пустая строка)*Пустая строка олицетворяет выполнение скрипта. Значит Pyicq запущен и работает. Это и top показывает
PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
1220 root 4 20 0 33436K 28784K kserel 0:09 0.00% beam
1242 root 1 96 0 12920K 11784K select 0:02 0.00% python2.4
1266 root 1 96 0 11956K 10564K select 0:01 0.00% python2.4
1089 admin 1 96 0 6228K 3332K select 0:01 0.00% sshd
648 root 1 96 0 1504K 980K select 0:01 0.00% natd
1221 root 5 20 0 7280K 5952K kserel 0:00 0.00% sulciВот, уже висят два питона.
А ps -ef |grep python показывает следующее
sapphire# ps -ef |grep python
ps: Process environment requires procfs(5)
1266 p0 S+ 0:01.19 /usr/local/bin/python2.4 ./PyICQt.py
1296 p1 R+ 0:00.00 grep pythonпитон висит и pyicq тоже. Значит РАБОТАЕТ!)
НО......(
Захожу я в service discovery и ничего не вижу, думая что icq.example.net появится, но нифига.
задаюсь вопросом, а открыт ли прописаный транспорты порт что нибудь? Смотрю
telnet example.net 5347
Trying 127.0.0.1...
Connected to localhost.example.net.
Escape character is '^]'.открыт ведь. Так что я не так сделала? голова уже ничего не соображает. Хелп?
я не знаток БСД
я не знаток БСД но када я делал тоже с gentoo то стартовал и каталога с pyicq-t, от правильного юзера примерно так:
python ./pyicq-t.py -b -c /etc/jabber/pyicq-t.xml -l /var/log/jabber/pyicq-t.log
это из скрипта, а для дебага я вроде стартовал
python ./pyicq-t.py -c /etc/jabber/pyicq-t.xml -d
вроде в папке с сырцами от pyicq-t есть примеры скриптов.
Имена узлов
Имена узлов сервисов из конфига ёжика не совпадают с именами узлов сервисов из конфигов этих сервисов.
ну с PyICQt всё
ну с PyICQt всё понятно - не совпадает пароль. В конфиге джаббера у тебя написано:
{5347, ejabberd_service, [{access, all}, {host, "icq.example.net", [{password, "secret"}]}]},Так вот, вместо secret должен быть пароль из конфига это самой письки:
<!-- The authentication token to use when connecting to the Jabber server -- ><secret>nfylth,thl16vjpbkk</secret>
А в MSN JID-ы не
А в MSN JID-ы не совпадают...