Witajcie,
Chcąc "rozszerzyć" moje community o nowe funkcje zainstalowałem na dedyku OpenFire http://www.igniterealtime.org/projects/openfire/index.jsp
OpenFire jest to serwer instant messagging który może posługiwać się zewnętrzną bazą danych w celu autentykacji użytkownika (read-only).
Konfiguracja odbywa się w ten sposób:
<jive>
...
<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 user_account WHERE username=?</passwordSQL>
<passwordType>plain</passwordType>
</jdbcAuthProvider>
<jdbcUserProvider>
<loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL>
<userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL>
<allUsersSQL>SELECT username FROM myUser</allUsersSQL>
<searchSQL>SELECT username FROM myUser WHERE</searchSQL>
<usernameField>username</usernameField>
<nameField>name</nameField>
<emailField>email</emailField>
</jdbcUserProvider>
...
</jive>
Oczywiście jest to tylko przykład a mój problem polega na ułożeniu w odpowiedni sposób zapytań do bazy IPB 3.4.6
1. hasło: SELECT password FROM user_account WHERE username=? 2. typ hasła (pewnie będzie md5)
3. user: SELECT name,email FROM myUser WHERE username=? 4. user count: SELECT COUNT(*) FROM myUser 5. wyszukiwanie usera: SELECT username FROM myUser 6. wyszukiwanie: SELECT username FROM myUser WHERE
Poczytałem trochę http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-integration-guide.html ale jak wiadomo IPB nie trzyma hasel w plain text tylko:
Gdyby to był plain text to pewnie byłoby to proste:
<passwordSQL>SELECT members_pass_hash FROM members WHERE members_l_username=?</passwordSQL>
ale nie wiem jak złożyć takie zapytanie biorąc pod uwagę sposób w jaki przechowuje hasła IPB.
Doradzicie jak napisać te zapytania ?