Wildfire

Материал из OpenWiki
Перейти к: навигация, поиск

Базовые настройки

Проект wildfire был переименован в openfire

Собственно, конфиг для интеграции wildfire(openfire) с доменом Windows2003 и хранением пользователей в mysql. Особое внимание следует уделить параметрам: <adminDN> admin@test.off </adminDN> - это именно для 2003 домена и <authorizedJIDs> admin@jab.test.off </authorizedJIDs> - это для возможности администрирования через веб. В режиме интеграции с AD, сервер не поддерживает пользователей не содержащихся там.

<?xml version="1.0" encoding="UTF-8"?>

<!--
    This file stores bootstrap properties needed by Wildfire.
    Property names must be in the format: "prop.name.is.blah=value"
    That will be stored as:
        <prop>
            <name>
                <is>
                    <blah>value</blah>
                </is>
            </name>
        </prop>

    Most properties are stored in the Wildfire database. A
        property viewer and editor is included in the admin console.
-->
<!-- root element, all properties must be under this element -->
<jive>
  <adminConsole>
    <!-- Disable either port by setting the value to -1 -->
    <port>9090</port>
    <securePort>9091</securePort>
  </adminConsole>
  <admin>
    <!-- Use this section to define users that will have admin privileges. Below,
          you will find two ways to specify which users are admins. Admins will
          have access to the admin console (only local users) and may have also access
          to other functionalities like ad-hoc commands. -->
    <!-- By default, only the user with the username "admin" can login
         to the admin console. Alternatively, you can specify a comma-delimitted
         list usernames that should be authorized to login to the admin console
         by setting the <authorizedUsernames> field below. -->
    <!-- <authorizedUsernames></authorizedUsernames> -->
    <!-- Comma-delimitted list of bare JIDs. The JIDs may belong to local
         or remote users. -->
    <authorizedJIDs>admin@jab.test.off</authorizedJIDs>
  </admin>
  <locale>en</locale>
  <!-- Network settings. By default, Wildfire will bind to all network interfaces.
      Alternatively, you can specify a specific network interfaces that the server
      will listen on. For example, 127.0.0.1. This setting is generally only useful
       on multi-homed servers. -->
  <!--
    <network>
        <interface></interface>
    </network>
    -->
  <!-- Example LDAP settings -->
  <!-- Note, for Active Directory, try usernameField=sAMAccountName, nameField=displayName,
         emailField=mail -->
  <ldap>
    <host>ad.test.off</host>
    <port>389</port>
    <usernameField>sAMAccountName</usernameField>
    <nameField>displayName</nameField>
    <emailField>mail</emailField>
    <baseDN>dc=test;dc=off</baseDN>
    <adminDN>admin@test.off</adminDN>
    <adminPassword>xxx</adminPassword>
    <vcard-mapping> <![CDATA[
        <vCard xmlns='vcard-temp'>
          <FN attrs="displayName">{0}</FN>
          <NICKNAME attrs="uid">{0}</NICKNAME>
          <BDAY attrs="dob">{0}</BDAY>
          <ADR>
            <HOME/>
            <EXTADR>1</EXTADR>
            <STREET>street</STREET>
            <LOCALITY>Moskow</LOCALITY>
            <REGION>Center</REGION>
            <PCODE></PCODE>
            <CTRY>RUSSIA</CTRY>
          </ADR>
          <TEL>
            <HOME/>
            <VOICE/>
            <NUMBER attrs="telephoneNumber">{0}</NUMBER>
          </TEL>
          <EMAIL>
            <INTERNET/>
            <USERID attrs="mail">{0}</USERID>
          </EMAIL>
          <TITLE attrs="title">{0}</TITLE>
          <ROLE attrs="">{0}</ROLE>
          <ORG>
            <ORGNAME attrs="o">{0}</ORGNAME>
            <ORGUNIT attrs="">{0}</ORGUNIT>
          </ORG>
          <URL attrs="labeledURI">{0}</URL>
          <DESC attrs="uidNumber,homeDirectory,loginShell">
              uid: {0} home: {1} shell: {2}
          </DESC>
        </vCard>
      ]]> </vcard-mapping>
  </ldap>
  <provider>
    <user>
      <className>org.jivesoftware.wildfire.ldap.LdapUserProvider</className>
    </user>
    <auth>
      <className>org.jivesoftware.wildfire.ldap.LdapAuthProvider</className>
    </auth>
    <group>
      <className>org.jivesoftware.wildfire.ldap.LdapGroupProvider</className>
    </group>
    <vcard>
      <className>org.jivesoftware.wildfire.ldap.LdapVCardProvider</className>
    </vcard>
  </provider>
  <log>
    <debug>
      <enabled>true</enabled>
    </debug>
  </log>
  <!-- End example LDAP settings -->
  <connectionProvider>
    <className>org.jivesoftware.database.DefaultConnectionProvider</className>
  </connectionProvider>
  <database>
    <defaultProvider>
      <driver>com.mysql.jdbc.Driver</driver>
      <serverURL>jdbc:mysql://localhost:3306/wildfire</serverURL>
      <username>wildfire</username>
      <password>wildfire</password>
      <minConnections>5</minConnections>
      <maxConnections>15</maxConnections>
      <connectionTimeout>1.0</connectionTimeout>
    </defaultProvider>
  </database>
  <setup>true</setup>
</jive>

Для полного счастья, осталось прикрутить транспорты. Делается всё это достаточно просто: скачать pyicqt, pymsnt, pyaimt. Добавить через административный интерфейс Wildfire в меню "External Components" -> "Service Enabled" -> Enabled, Port: 5347 и пароль. Запустить демоны транспортов и радоваться жизни.

Кластер

При использовании плагина Enterprise можно объеденить несколько openfire в кластер. По умолчанию для связи между узлами кластера используется мультикаст. В этом случае достаточно просто включить кластеризацию через web-интерфейс и все заработает. Если необходим юникаст, то его можно включить в файле plugins/enterprise/tangosol-coherence-override.xml:

<cluster-config>
    <unicast-listener>
      <machine-id>xmpp-server1</machine-id>
      <address>192.168.0.1</address>
      <well-known-addresses>
        <socket-address id="1">
          <address>192.168.0.1</address>
          <port>8088</port>
        </socket-address>
        <socket-address id="2">
          <address>192.168.1.1</address>
          <port>8088</port>
        </socket-address>
      </well-known-addresses>
    </unicast-listener>
  </cluster-config>

При этом:

  • на разных узлах кластера меняются только атрибуты machine-id и address.
  • идентификатор socket-address у каждого узла уникальный
  • узел с наименьшим идентификатором socket-address становится главным, т.е. при инициализации кластера база реплицируется с этого узла на все остальные

После организации кластера необходимо сторонними методами обеспечить балансировку нагрузки. Например, с помощью CISCO SLB.