Mam problem z integracją użytkowników z CakePHP (2.6.3) i serwerem OpenFire (3.10.0 / 3.9.3). Chcę kożystać z bazy użytkowników z tabeli users z CakePHP.
Podążając za wskazówkami z dokumentacji OpenFire'ya, doszedłem do sytuacji w której po restarcie serwera z pliku konfiguracyjnego "openfire.xml", znikają ustawienia zewnętrznej bazy (poniżej kod źródłowy).
openfire.xml (conf)
<jive>
...
<!-- Custom DB -->
<jdbcProvider>
<driver>com.mysql.jdbc.Driver</driver>
<connectionString>jdbc:mysql://localhost/my_db?user=root&password=pass</connectionString>
</jdbcProvider>
<!-- integrate with users from "my_db" database -->
<provider>
<auth>
<className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
</auth>
<user>
<className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
</user>
</provider>
<jdbcAuthProvider>
<passwordSQL>SELECT password FROM users WHERE name=?</passwordSQL>
<passwordType>md5</passwordType>
</jdbcAuthProvider>
<jdbcUserProvider>
<loadUserSQL>SELECT id,email FROM users WHERE name=?</loadUserSQL>
<userCountSQL>SELECT COUNT(*) FROM users</userCountSQL>
<allUsersSQL>SELECT name FROM users</allUsersSQL>
<searchSQL>SELECT name FROM users WHERE</searchSQL>
<usernameField>name</usernameField>
<nameField>id</nameField>
<emailField>email</emailField>
</jdbcUserProvider>
<!-- custom admin names -->
<admin>test</admin>
<setup>true</setup>
</jive>
OpenFire tabela "ofProperty":
('adminConsole.port', '9090'),
('adminConsole.securePort', '9091'),
('connectionProvider.className', 'org.jivesoftware.database.DefaultConnectionProvider'),
('database..connectionTimeout', '1.0'),
...
# defaultProvider settings
...
('jdbcAuthProvider.passwordSQL', 'SELECT password FROM users WHERE name=?'),
('jdbcAuthProvider.passwordType', 'md5'),
('jdbcProvider.connectionString', 'jdbc:mysql://localhost/my_db?user=root&password=pass'),
('jdbcProvider.driver', 'com.mysql.jdbc.Driver'),
('jdbcUserProvider.allUsersSQL', 'SELECT name FROM users'),
('jdbcUserProvider.emailField', 'email'),
('jdbcUserProvider.loadUserSQL', 'SELECT id,email FROM users WHERE name=?'),
('jdbcUserProvider.nameField', 'id'),
('jdbcUserProvider.searchSQL', 'SELECT name FROM users WHERE'),
('jdbcUserProvider.userCountSQL', 'SELECT COUNT(*) FROM users'),
('jdbcUserProvider.usernameField', 'name'),
('locale', 'pl_PL'),
('passwordKey', 'xxx'),
('provider.admin.className', 'org.jivesoftware.openfire.admin.DefaultAdminProvider'),
('provider.auth.className', 'org.jivesoftware.openfire.auth.JDBCAuthProvider'),
('provider.group.className', 'org.jivesoftware.openfire.group.DefaultGroupProvider'),
('provider.lockout.className', 'org.jivesoftware.openfire.lockout.DefaultLockOutProvider'),
('provider.securityAudit.className', 'org.jivesoftware.openfire.security.DefaultSecurityAuditProvider'),
('provider.user.className', 'org.jivesoftware.openfire.user.JDBCUserProvider'),
('provider.vcard.className', 'org.jivesoftware.openfire.vcard.DefaultVCardProvider'),
...