Все мои изыскания с openfire закончились тем, что я признал его слишком прожорливым для моего слабенького сервера. Короче, в один прекрасный день (то есть ночь) был произведен перевод на ejabberd. Не долго поковырялся, поставил нужные библиотеки... Короче, ejabberd + mysql вполне адекватно завелись.
После этого возник вопрос об использовании icq-транспорта. Ну, выбор не большой - pyicq-t (второго даже название не помню).
Установка прошла, вроде как, без ошибок. Сконфигурировал на работу с mysql. Создал базу и пользователя, залил дамп, установил mysql-python. Но pyicq-t не стартует, последние строчки лога:
[2010-03-09 20:40:39] Starting factory <twisted.words.protocols.jabber.xmlstream.XmlStreamFactory object at 0xb74ba2cc>
[2010-03-09 20:40:39] INFO :: :: PyTransport :: componentConnected :: {'xmlstream': <twisted.words.protocols.jabber.xmlstream.XmlStream instance at 0x9efc1cc>} ::
[2010-03-09 20:40:40] Received SIGTERM, shutting down.
[2010-03-09 20:40:40] INFO :: :: PyTransport :: removeMe :: {} ::
[2010-03-09 20:40:43] INFO :: :: PyTransport :: componentDisconnected :: {} ::
[2010-03-09 20:40:43] <twisted.internet.tcp.Connector instance at 0x9efc12c> will retry in 2 seconds
[2010-03-09 20:40:43] Stopping factory <twisted.words.protocols.jabber.xmlstream.XmlStreamFactory object at 0xb74ba2cc>
[2010-03-09 20:40:43] Main loop terminated.конфиг ejabberd:
override_global.
override_local.
override_acls.
{loglevel, 4}.
{hosts, ["retechorg.ru"]}.
{listen,
[
{5222, ejabberd_c2s, [
{certfile, "/etc/jabber/ssl.pem"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},
{8888, ejabberd_service, [
{access, all},
{shaper_rule, fast},
{ip, {127,0,0,1}},
{hosts, ["icq.retechorg.ru", "sms.retechorg.ru"],
[{password, "pass2"}]
}
]},
{5280, ejabberd_http, [
http_poll,
web_admin
]}
]}.
{s2s_use_starttls, true}.
{s2s_certfile, "/etc/jabber/ssl.pem"}.
{auth_method, odbc}.
{odbc_server, {mysql, "127.0.0.1", "ejabberd", "ejabberd", "ejabberd"}}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, admin, {user, "nay", "retechorg.ru"}}.
{acl, local, {user_regexp, ""}}.
{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.
{access, register, [{allow, all}]}.
{language, "ru"}.
{modules,
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]}, % recommends mod_adhoc
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_disco, []},
%%{mod_echo, [{host, "echo.localhost"}]},
{mod_irc, []},
{mod_last_odbc, []},
{mod_muc, [
%%{host, "conference.@HOST@"},
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin}
]},
%%{mod_muc_log,[]},
{mod_offline_odbc, []},
{mod_privacy, []},
{mod_private, []},
%%{mod_proxy65,[]},
{mod_pubsub, [ % requires mod_caps
{access_createnode, pubsub_createnode},
{plugins, ["default", "pep"]}
]},
{mod_register, [
{welcome_message, {"Welcome!",
"Hi\nWelcome The ReTech.Org Jabber server."}},
{registration_watchers, ["nay@retechorg.ru"]},
{access, register}
]},
{mod_roster_odbc, []},
%%{mod_service_log,[]},
{mod_shared_roster,[]},
{mod_stats, []},
{mod_time, []},
{mod_vcard_odbc, [{search, true},{matches, infinity}, {allow_return_all, true}]},
{mod_version, []}
]}.конфиг pyicq-t
<pyicqt>
<!-- The JabberID of the transport. -->
<jid>icq.retechorg.ru</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/jabber</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/jabber/pyicq-t.pid</pid>
<!-- The IP address of the main Jabberd server -->
<mainServer>127.0.0.1</mainServer>
<!-- The JID of the main Jabber server -->
<mainServerJID>retechorg.ru</mainServerJID>
<!-- The website of the Jabber service -->
<website>http://retechorg.ru</website>
<!-- The website of the transport service -->
<!-- <transportWebsite></transportWebsite> -->
<!-- The support room on your server -->
<!-- <supportRoom></supportRoom> -->
<!-- The JID of a service admin or helpdesk -->
<!-- <supportJid></supportJid> -->
<!-- The TCP port to connect to the Jabber server on -->
<!-- (this is the default for Jabberd2) -->
<port>8888</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>icqpassw</secret>
<!-- The default language to use (for error/status messages) -->
<lang>ru</lang>
<!-- Default one-byte message encoding to use -->
<encoding>cp1251</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>
<!-- Enable it if you want md5 authentication -->
<usemd5auth/>
<!-- 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 to user on transport stop/restart -->
<enableShutdownMessage/>
<!-- Custom shutdown message -->
<!-- <customShutdownMessage></customShutdownMessage> -->
<!-- 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/> -->
<!-- Support for x-statuses -->
<!-- <xstatusessupport/> -->
<!-- Try detect Unicode:
0 - never
1 - in offline messages
2 - and in nicknames
Attention: this solution can be slowly on high-load servers
-->
<detectunicode>1</detectunicode>
<!-- 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>nay@retechorg.ru</jid>
<!--<jid>admin@host.com</jid>-->
</admins>
<!-- You can select which event loop PyICQt 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>
<!-- 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>
<!-- Default Ad-Hoc settings -->
<adhocDefaults>
<user> <!-- ... for new users - they can change these settings later -->
<xstatus_receiving_mode>0</xstatus_receiving_mode> <!-- 0 - disable x-status receiving, 1 - receive as ICQ 5.1, 2 - as ICQ 6, 3 - combined -->
<xstatus_sending_mode>0</xstatus_sending_mode> <!-- 0 - disable x-status sending, 1 - send as ICQ 5.1, 2 - as ICQ 6, 3 - combined -->
<xstatus_saving_enabled>1</xstatus_saving_enabled> <!-- 1 - restore latest x-status after login, 0 - do not restore -->
<xstatus_option_smooth>1</xstatus_option_smooth> <!-- 1 - allow partial interconnect between ICQ 5.1 and ICQ 6 x-statuses -->
<xstatus_display_icon_as_PEP>1</xstatus_display_icon_as_PEP> <!-- 1 - display x-status icon as User Mood/Activity/Tune -->
<xstatus_display_text_as_PEP>1</xstatus_display_text_as_PEP> <!-- 1 - Try interpret x-status text as User Mood/Activity/Tune -->
<xstatus_icon_for_transport>0</xstatus_icon_for_transport> <!-- 1 - show self x-status icon as User Mood/Activity/Tune for transport (works for Gajim when transport displayed in roster) -->
<away_messages_receiving>1</away_messages_receiving> <!-- 1 - ask contacts for Away messages -->
<away_messages_sending>1</away_messages_sending> <!-- 1 - allow own Away Message sending -->
<clist_show_phantombuddies>0</clist_show_phantombuddies> <!-- 1 - show old deleted contacts without authorization in roster -->
<clist_deny_all_auth_requests>0</clist_deny_all_auth_requests> <!-- 1 - auto send 'Deny' reply on any authorization request -->
<utf8_messages_sendmode>2</utf8_messages_sendmode> <!-- 0 - never send messages in Unicode, 1 - only when contact sends messages in Unicode, 2 - send always -->
<offline_messages_sendenc>2</offline_messages_sendenc> <!-- 0 - send offline messages in Unicode, 1 - in default message encoding (see above), 2 - auto detect -->
<msgconfirm_sendmode>2</msgconfirm_sendmode> <!-- 0 - never send message confirmations, 1 - send for Unicode messages, 2 - for all messages -->
<msgconfirm_recvmode>1</msgconfirm_recvmode> <!-- 1 - receive message confirmations -->
<user_mood_receiving>1</user_mood_receiving> <!-- 1 - transport should send User Mood/Activity/Tune events to connected user -->
<user_activity_receiving>1</user_activity_receiving> <!-- (requirted for x-status as icon displaying) -->
<user_mood_receiving>1</user_mood_receiving> <!-- set options if most of users has client with support of these PEP events -->
<autoanswer_enable>0</autoanswer_enable> <!-- enable auto answer as reply on any incoming message -->
<autoanswer_hide_dialog>0</autoanswer_hide_dialog> <!-- hide incoming messages when autoanswer enabled -->
</user>
</adhocDefaults>
</pyicqt>Некоторые из закомментированных строчки удалены в целях сокращения текста.
Возможно, кто-то уже сталкивался с подобной проблемой?
